/* Do not modify this file. Changes will be overwritten. */ /* Generated automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-e2ap.c */ /* asn2wrs.py -p e2ap -c ./e2ap.cnf -s ./packet-e2ap-template -D . -O ../.. E2AP-CommonDataTypes.asn E2AP-Constants.asn E2AP-Containers.asn E2AP-IEs.asn E2AP-PDU-Contents.asn E2AP-PDU-Descriptions.asn e2sm-kpm-v1.asn */ /* Input file: packet-e2ap-template.c */ #line 1 "./asn1/e2ap/packet-e2ap-template.c" /* packet-e2ap.c * Routines for E2APApplication Protocol (e2ap) packet dissection * Copyright 2021, Martin Mathieson * * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1998 Gerald Combs * * SPDX-License-Identifier: GPL-2.0-or-later * * References: ORAN-WG3.E2AP-v01.00, ORAN-WG3.E2SM-KPM-v01.00 */ #include "config.h" #include #include #include #include #include #include #include #include #include #include #include #include "packet-e2ap.h" #include "packet-per.h" #define PNAME "E2 Application Protocol" #define PSNAME "E2AP" #define PFNAME "e2ap" /* Dissector will use SCTP PPID 18 or SCTP port. IANA assigned port = 37464 */ #define SCTP_PORT_E2AP 37464 void proto_register_e2ap(void); void proto_reg_handoff_e2ap(void); static dissector_handle_t e2ap_handle; /*--- Included file: packet-e2ap-val.h ---*/ #line 1 "./asn1/e2ap/packet-e2ap-val.h" #define maxProtocolIEs 65535 #define maxnoofErrors 256 #define maxofRANfunctionID 256 #define maxofRICactionID 16 #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 typedef enum _ProcedureCode_enum { id_E2setup = 1, id_ErrorIndication = 2, id_Reset = 3, id_RICcontrol = 4, id_RICindication = 5, id_RICserviceQuery = 6, id_RICserviceUpdate = 7, id_RICsubscription = 8, id_RICsubscriptionDelete = 9 } ProcedureCode_enum; typedef enum _ProtocolIE_ID_enum { id_Cause = 1, id_CriticalityDiagnostics = 2, id_GlobalE2node_ID = 3, id_GlobalRIC_ID = 4, id_RANfunctionID = 5, id_RANfunctionID_Item = 6, id_RANfunctionIEcause_Item = 7, id_RANfunction_Item = 8, id_RANfunctionsAccepted = 9, id_RANfunctionsAdded = 10, id_RANfunctionsDeleted = 11, id_RANfunctionsModified = 12, id_RANfunctionsRejected = 13, id_RICaction_Admitted_Item = 14, id_RICactionID = 15, id_RICaction_NotAdmitted_Item = 16, id_RICactions_Admitted = 17, id_RICactions_NotAdmitted = 18, id_RICaction_ToBeSetup_Item = 19, id_RICcallProcessID = 20, id_RICcontrolAckRequest = 21, id_RICcontrolHeader = 22, id_RICcontrolMessage = 23, id_RICcontrolStatus = 24, id_RICindicationHeader = 25, id_RICindicationMessage = 26, id_RICindicationSN = 27, id_RICindicationType = 28, id_RICrequestID = 29, id_RICsubscriptionDetails = 30, id_TimeToWait = 31, id_RICcontrolOutcome = 32 } ProtocolIE_ID_enum; /*--- End of included file: packet-e2ap-val.h ---*/ #line 43 "./asn1/e2ap/packet-e2ap-template.c" /* Initialize the protocol and registered fields */ static int proto_e2ap = -1; /*--- Included file: packet-e2ap-hf.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-hf.c" static int hf_e2ap_Cause_PDU = -1; /* Cause */ static int hf_e2ap_CriticalityDiagnostics_PDU = -1; /* CriticalityDiagnostics */ static int hf_e2ap_GlobalE2node_ID_PDU = -1; /* GlobalE2node_ID */ static int hf_e2ap_GlobalRIC_ID_PDU = -1; /* GlobalRIC_ID */ static int hf_e2ap_RANfunctionID_PDU = -1; /* RANfunctionID */ static int hf_e2ap_RICactionID_PDU = -1; /* RICactionID */ static int hf_e2ap_RICcallProcessID_PDU = -1; /* RICcallProcessID */ static int hf_e2ap_RICcontrolAckRequest_PDU = -1; /* RICcontrolAckRequest */ static int hf_e2ap_RICcontrolHeader_PDU = -1; /* RICcontrolHeader */ static int hf_e2ap_RICcontrolMessage_PDU = -1; /* RICcontrolMessage */ static int hf_e2ap_RICcontrolOutcome_PDU = -1; /* RICcontrolOutcome */ static int hf_e2ap_RICcontrolStatus_PDU = -1; /* RICcontrolStatus */ static int hf_e2ap_RICindicationHeader_PDU = -1; /* RICindicationHeader */ static int hf_e2ap_RICindicationMessage_PDU = -1; /* RICindicationMessage */ static int hf_e2ap_RICindicationSN_PDU = -1; /* RICindicationSN */ static int hf_e2ap_RICindicationType_PDU = -1; /* RICindicationType */ static int hf_e2ap_RICrequestID_PDU = -1; /* RICrequestID */ static int hf_e2ap_TimeToWait_PDU = -1; /* TimeToWait */ static int hf_e2ap_RICsubscriptionRequest_PDU = -1; /* RICsubscriptionRequest */ static int hf_e2ap_RICsubscriptionDetails_PDU = -1; /* RICsubscriptionDetails */ static int hf_e2ap_RICaction_ToBeSetup_Item_PDU = -1; /* RICaction_ToBeSetup_Item */ static int hf_e2ap_RICsubscriptionResponse_PDU = -1; /* RICsubscriptionResponse */ static int hf_e2ap_RICaction_Admitted_List_PDU = -1; /* RICaction_Admitted_List */ static int hf_e2ap_RICaction_Admitted_Item_PDU = -1; /* RICaction_Admitted_Item */ static int hf_e2ap_RICaction_NotAdmitted_List_PDU = -1; /* RICaction_NotAdmitted_List */ static int hf_e2ap_RICaction_NotAdmitted_Item_PDU = -1; /* RICaction_NotAdmitted_Item */ static int hf_e2ap_RICsubscriptionFailure_PDU = -1; /* RICsubscriptionFailure */ static int hf_e2ap_RICsubscriptionDeleteRequest_PDU = -1; /* RICsubscriptionDeleteRequest */ static int hf_e2ap_RICsubscriptionDeleteResponse_PDU = -1; /* RICsubscriptionDeleteResponse */ static int hf_e2ap_RICsubscriptionDeleteFailure_PDU = -1; /* RICsubscriptionDeleteFailure */ static int hf_e2ap_RICindication_PDU = -1; /* RICindication */ static int hf_e2ap_RICcontrolRequest_PDU = -1; /* RICcontrolRequest */ static int hf_e2ap_RICcontrolAcknowledge_PDU = -1; /* RICcontrolAcknowledge */ static int hf_e2ap_RICcontrolFailure_PDU = -1; /* RICcontrolFailure */ static int hf_e2ap_ErrorIndication_PDU = -1; /* ErrorIndication */ static int hf_e2ap_E2setupRequest_PDU = -1; /* E2setupRequest */ static int hf_e2ap_E2setupResponse_PDU = -1; /* E2setupResponse */ static int hf_e2ap_E2setupFailure_PDU = -1; /* E2setupFailure */ static int hf_e2ap_ResetRequest_PDU = -1; /* ResetRequest */ static int hf_e2ap_ResetResponse_PDU = -1; /* ResetResponse */ static int hf_e2ap_RICserviceUpdate_PDU = -1; /* RICserviceUpdate */ static int hf_e2ap_RANfunctions_List_PDU = -1; /* RANfunctions_List */ static int hf_e2ap_RANfunction_Item_PDU = -1; /* RANfunction_Item */ static int hf_e2ap_RANfunctionsID_List_PDU = -1; /* RANfunctionsID_List */ static int hf_e2ap_RANfunctionID_Item_PDU = -1; /* RANfunctionID_Item */ static int hf_e2ap_RICserviceUpdateAcknowledge_PDU = -1; /* RICserviceUpdateAcknowledge */ static int hf_e2ap_RANfunctionsIDcause_List_PDU = -1; /* RANfunctionsIDcause_List */ static int hf_e2ap_RANfunctionIDcause_Item_PDU = -1; /* RANfunctionIDcause_Item */ static int hf_e2ap_RICserviceUpdateFailure_PDU = -1; /* RICserviceUpdateFailure */ static int hf_e2ap_RICserviceQuery_PDU = -1; /* RICserviceQuery */ static int hf_e2ap_E2AP_PDU_PDU = -1; /* E2AP_PDU */ static int hf_e2ap_E2SM_KPM_EventTriggerDefinition_PDU = -1; /* E2SM_KPM_EventTriggerDefinition */ static int hf_e2ap_E2SM_KPM_ActionDefinition_PDU = -1; /* E2SM_KPM_ActionDefinition */ static int hf_e2ap_E2SM_KPM_IndicationHeader_PDU = -1; /* E2SM_KPM_IndicationHeader */ static int hf_e2ap_E2SM_KPM_IndicationMessage_Format1_PDU = -1; /* E2SM_KPM_IndicationMessage_Format1 */ static int hf_e2ap_E2SM_KPM_RANfunction_Description_PDU = -1; /* E2SM_KPM_RANfunction_Description */ static int hf_e2ap_RANcallProcess_ID_string_PDU = -1; /* RANcallProcess_ID_string */ static int hf_e2ap_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */ static int hf_e2ap_id = -1; /* ProtocolIE_ID */ static int hf_e2ap_criticality = -1; /* Criticality */ static int hf_e2ap_value = -1; /* T_value */ static int hf_e2ap_ricRequest = -1; /* CauseRIC */ static int hf_e2ap_ricService = -1; /* CauseRICservice */ static int hf_e2ap_transport = -1; /* CauseTransport */ static int hf_e2ap_protocol = -1; /* CauseProtocol */ static int hf_e2ap_misc = -1; /* CauseMisc */ static int hf_e2ap_procedureCode = -1; /* ProcedureCode */ static int hf_e2ap_triggeringMessage = -1; /* TriggeringMessage */ static int hf_e2ap_procedureCriticality = -1; /* Criticality */ static int hf_e2ap_ricRequestorID = -1; /* RICrequestID */ static int hf_e2ap_iEsCriticalityDiagnostics = -1; /* CriticalityDiagnostics_IE_List */ static int hf_e2ap_CriticalityDiagnostics_IE_List_item = -1; /* CriticalityDiagnostics_IE_Item */ static int hf_e2ap_iECriticality = -1; /* Criticality */ static int hf_e2ap_iE_ID = -1; /* ProtocolIE_ID */ static int hf_e2ap_typeOfError = -1; /* TypeOfError */ static int hf_e2ap_macro_eNB_ID = -1; /* BIT_STRING_SIZE_20 */ static int hf_e2ap_home_eNB_ID = -1; /* BIT_STRING_SIZE_28 */ static int hf_e2ap_short_Macro_eNB_ID = -1; /* BIT_STRING_SIZE_18 */ static int hf_e2ap_long_Macro_eNB_ID = -1; /* BIT_STRING_SIZE_21 */ static int hf_e2ap_enb_ID_macro = -1; /* BIT_STRING_SIZE_20 */ static int hf_e2ap_enb_ID_shortmacro = -1; /* BIT_STRING_SIZE_18 */ static int hf_e2ap_enb_ID_longmacro = -1; /* BIT_STRING_SIZE_21 */ static int hf_e2ap_gNB_ID = -1; /* BIT_STRING_SIZE_22_32 */ static int hf_e2ap_gNB = -1; /* GlobalE2node_gNB_ID */ static int hf_e2ap_en_gNB = -1; /* GlobalE2node_en_gNB_ID */ static int hf_e2ap_ng_eNB = -1; /* GlobalE2node_ng_eNB_ID */ static int hf_e2ap_eNB = -1; /* GlobalE2node_eNB_ID */ static int hf_e2ap_global_gNB_ID = -1; /* GlobalenGNB_ID */ static int hf_e2ap_global_eNB_ID = -1; /* GlobalENB_ID */ static int hf_e2ap_global_gNB_ID_01 = -1; /* GlobalgNB_ID */ static int hf_e2ap_gNB_CU_UP_ID = -1; /* GNB_CU_UP_ID */ static int hf_e2ap_gNB_DU_ID = -1; /* GNB_DU_ID */ static int hf_e2ap_global_ng_eNB_ID = -1; /* GlobalngeNB_ID */ static int hf_e2ap_pLMN_Identity = -1; /* PLMN_Identity */ static int hf_e2ap_eNB_ID = -1; /* ENB_ID */ static int hf_e2ap_gNB_ID_01 = -1; /* ENGNB_ID */ static int hf_e2ap_plmn_id = -1; /* PLMN_Identity */ static int hf_e2ap_gnb_id = -1; /* GNB_ID_Choice */ static int hf_e2ap_enb_id = -1; /* ENB_ID_Choice */ static int hf_e2ap_ric_ID = -1; /* BIT_STRING_SIZE_20 */ static int hf_e2ap_gnb_ID = -1; /* BIT_STRING_SIZE_22_32 */ static int hf_e2ap_ricRequestorID_01 = -1; /* INTEGER_0_65535 */ static int hf_e2ap_ricInstanceID = -1; /* INTEGER_0_65535 */ static int hf_e2ap_ricSubsequentActionType = -1; /* RICsubsequentActionType */ static int hf_e2ap_ricTimeToWait = -1; /* RICtimeToWait */ static int hf_e2ap_protocolIEs = -1; /* ProtocolIE_Container */ static int hf_e2ap_ricEventTriggerDefinition = -1; /* RICeventTriggerDefinition */ static int hf_e2ap_ricAction_ToBeSetup_List = -1; /* RICactions_ToBeSetup_List */ static int hf_e2ap_RICactions_ToBeSetup_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_ricActionID = -1; /* RICactionID */ static int hf_e2ap_ricActionType = -1; /* RICactionType */ static int hf_e2ap_ricActionDefinition = -1; /* RICactionDefinition */ static int hf_e2ap_ricSubsequentAction = -1; /* RICsubsequentAction */ static int hf_e2ap_RICaction_Admitted_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_RICaction_NotAdmitted_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_cause = -1; /* Cause */ static int hf_e2ap_RANfunctions_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_ranFunctionID = -1; /* RANfunctionID */ static int hf_e2ap_ranFunctionDefinition = -1; /* RANfunctionDefinition */ static int hf_e2ap_ranFunctionRevision = -1; /* RANfunctionRevision */ static int hf_e2ap_RANfunctionsID_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_RANfunctionsIDcause_List_item = -1; /* ProtocolIE_SingleContainer */ static int hf_e2ap_initiatingMessage = -1; /* InitiatingMessage */ static int hf_e2ap_successfulOutcome = -1; /* SuccessfulOutcome */ static int hf_e2ap_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */ static int hf_e2ap_initiatingMessagevalue = -1; /* InitiatingMessage_value */ static int hf_e2ap_successfulOutcome_value = -1; /* SuccessfulOutcome_value */ static int hf_e2ap_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */ static int hf_e2ap_gNB_01 = -1; /* GlobalKPMnode_gNB_ID */ static int hf_e2ap_en_gNB_01 = -1; /* GlobalKPMnode_en_gNB_ID */ static int hf_e2ap_ng_eNB_01 = -1; /* GlobalKPMnode_ng_eNB_ID */ static int hf_e2ap_eNB_01 = -1; /* GlobalKPMnode_eNB_ID */ static int hf_e2ap_nRCellIdentity = -1; /* NRCellIdentity */ static int hf_e2ap_sST = -1; /* OCTET_STRING_SIZE_1 */ static int hf_e2ap_sD = -1; /* OCTET_STRING_SIZE_3 */ static int hf_e2ap_eventDefinition_Format1 = -1; /* E2SM_KPM_EventTriggerDefinition_Format1 */ static int hf_e2ap_policyTest_List = -1; /* SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item */ static int hf_e2ap_policyTest_List_item = -1; /* Trigger_ConditionIE_Item */ static int hf_e2ap_ric_Style_Type = -1; /* RIC_Style_Type */ static int hf_e2ap_indicationHeader_Format1 = -1; /* E2SM_KPM_IndicationHeader_Format1 */ static int hf_e2ap_id_GlobalKPMnode_ID = -1; /* GlobalKPMnode_ID */ static int hf_e2ap_nRCGI = -1; /* NRCGI */ static int hf_e2ap_sliceID = -1; /* SNSSAI */ static int hf_e2ap_fiveQI = -1; /* INTEGER_0_255 */ static int hf_e2ap_qci = -1; /* INTEGER_0_255 */ static int hf_e2ap_pm_Containers = -1; /* SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List */ static int hf_e2ap_pm_Containers_item = -1; /* PM_Containers_List */ static int hf_e2ap_performanceContainer = -1; /* PF_Container */ static int hf_e2ap_theRANContainer = -1; /* RAN_Container */ static int hf_e2ap_ranFunction_Name = -1; /* RANfunction_Name */ static int hf_e2ap_e2SM_KPM_RANfunction_Item = -1; /* T_e2SM_KPM_RANfunction_Item */ static int hf_e2ap_ric_EventTriggerStyle_List = -1; /* SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List */ static int hf_e2ap_ric_EventTriggerStyle_List_item = -1; /* RIC_EventTriggerStyle_List */ static int hf_e2ap_ric_ReportStyle_List = -1; /* SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List */ static int hf_e2ap_ric_ReportStyle_List_item = -1; /* RIC_ReportStyle_List */ static int hf_e2ap_report_Period_IE = -1; /* RT_Period_IE */ static int hf_e2ap_ranFunction_ShortName = -1; /* PrintableString_SIZE_1_150_ */ static int hf_e2ap_ranFunction_E2SM_OID = -1; /* PrintableString_SIZE_1_1000_ */ static int hf_e2ap_ranFunction_Description = -1; /* PrintableString_SIZE_1_150_ */ static int hf_e2ap_ranFunction_Instance = -1; /* INTEGER */ static int hf_e2ap_ric_EventTriggerStyle_Type = -1; /* RIC_Style_Type */ static int hf_e2ap_ric_EventTriggerStyle_Name = -1; /* RIC_Style_Name */ static int hf_e2ap_ric_EventTriggerFormat_Type = -1; /* RIC_Format_Type */ static int hf_e2ap_ric_ReportStyle_Type = -1; /* RIC_Style_Type */ static int hf_e2ap_ric_ReportStyle_Name = -1; /* RIC_Style_Name */ static int hf_e2ap_ric_IndicationHeaderFormat_Type = -1; /* RIC_Format_Type */ static int hf_e2ap_ric_IndicationMessageFormat_Type = -1; /* RIC_Format_Type */ static int hf_e2ap_oDU = -1; /* ODU_PF_Container */ static int hf_e2ap_oCU_CP = -1; /* OCUCP_PF_Container */ static int hf_e2ap_oCU_UP = -1; /* OCUUP_PF_Container */ static int hf_e2ap_cellResourceReportList = -1; /* SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem */ static int hf_e2ap_cellResourceReportList_item = -1; /* CellResourceReportListItem */ static int hf_e2ap_dl_TotalofAvailablePRBs = -1; /* INTEGER_0_273 */ static int hf_e2ap_ul_TotalofAvailablePRBs = -1; /* INTEGER_0_273 */ static int hf_e2ap_servedPlmnPerCellList = -1; /* SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem */ static int hf_e2ap_servedPlmnPerCellList_item = -1; /* ServedPlmnPerCellListItem */ static int hf_e2ap_du_PM_5GC = -1; /* FGC_DU_PM_Container */ static int hf_e2ap_du_PM_EPC = -1; /* EPC_DU_PM_Container */ static int hf_e2ap_slicePerPlmnPerCellList = -1; /* SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem */ static int hf_e2ap_slicePerPlmnPerCellList_item = -1; /* SlicePerPlmnPerCellListItem */ static int hf_e2ap_fQIPERSlicesPerPlmnPerCellList = -1; /* SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem */ static int hf_e2ap_fQIPERSlicesPerPlmnPerCellList_item = -1; /* FQIPERSlicesPerPlmnPerCellListItem */ static int hf_e2ap_dl_PRBUsage = -1; /* INTEGER_0_273 */ static int hf_e2ap_ul_PRBUsage = -1; /* INTEGER_0_273 */ static int hf_e2ap_perQCIReportList = -1; /* SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem */ static int hf_e2ap_perQCIReportList_item = -1; /* PerQCIReportListItem */ static int hf_e2ap_dl_PRBUsage_01 = -1; /* INTEGER_0_100 */ static int hf_e2ap_ul_PRBUsage_01 = -1; /* INTEGER_0_100 */ static int hf_e2ap_gNB_CU_CP_Name = -1; /* GNB_CU_CP_Name */ static int hf_e2ap_cu_CP_Resource_Status = -1; /* T_cu_CP_Resource_Status */ static int hf_e2ap_numberOfActive_UEs = -1; /* INTEGER_1_65536_ */ static int hf_e2ap_gNB_CU_UP_Name = -1; /* GNB_CU_UP_Name */ static int hf_e2ap_pf_ContainerList = -1; /* SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem */ static int hf_e2ap_pf_ContainerList_item = -1; /* PF_ContainerListItem */ static int hf_e2ap_interface_type = -1; /* NI_Type */ static int hf_e2ap_o_CU_UP_PM_Container = -1; /* CUUPMeasurement_Container */ static int hf_e2ap_plmnList = -1; /* SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List */ static int hf_e2ap_plmnList_item = -1; /* PlmnID_List */ static int hf_e2ap_cu_UP_PM_5GC = -1; /* FGC_CUUP_PM_Format */ static int hf_e2ap_cu_UP_PM_EPC = -1; /* EPC_CUUP_PM_Format */ static int hf_e2ap_sliceToReportList = -1; /* SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem */ static int hf_e2ap_sliceToReportList_item = -1; /* SliceToReportListItem */ static int hf_e2ap_fQIPERSlicesPerPlmnList = -1; /* SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem */ static int hf_e2ap_fQIPERSlicesPerPlmnList_item = -1; /* FQIPERSlicesPerPlmnListItem */ static int hf_e2ap_pDCPBytesDL = -1; /* INTEGER_0_10000000000_ */ static int hf_e2ap_pDCPBytesUL = -1; /* INTEGER_0_10000000000_ */ static int hf_e2ap_perQCIReportList_01 = -1; /* SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat */ static int hf_e2ap_perQCIReportList_item_01 = -1; /* PerQCIReportListItemFormat */ /*--- End of included file: packet-e2ap-hf.c ---*/ #line 47 "./asn1/e2ap/packet-e2ap-template.c" /* Initialize the subtree pointers */ static gint ett_e2ap = -1; /*--- Included file: packet-e2ap-ett.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-ett.c" static gint ett_e2ap_ProtocolIE_Container = -1; static gint ett_e2ap_ProtocolIE_Field = -1; static gint ett_e2ap_Cause = -1; static gint ett_e2ap_CriticalityDiagnostics = -1; static gint ett_e2ap_CriticalityDiagnostics_IE_List = -1; static gint ett_e2ap_CriticalityDiagnostics_IE_Item = -1; static gint ett_e2ap_ENB_ID = -1; static gint ett_e2ap_ENB_ID_Choice = -1; static gint ett_e2ap_ENGNB_ID = -1; static gint ett_e2ap_GlobalE2node_ID = -1; static gint ett_e2ap_GlobalE2node_en_gNB_ID = -1; static gint ett_e2ap_GlobalE2node_eNB_ID = -1; static gint ett_e2ap_GlobalE2node_gNB_ID = -1; static gint ett_e2ap_GlobalE2node_ng_eNB_ID = -1; static gint ett_e2ap_GlobalENB_ID = -1; static gint ett_e2ap_GlobalenGNB_ID = -1; static gint ett_e2ap_GlobalgNB_ID = -1; static gint ett_e2ap_GlobalngeNB_ID = -1; static gint ett_e2ap_GlobalRIC_ID = -1; static gint ett_e2ap_GNB_ID_Choice = -1; static gint ett_e2ap_RICrequestID = -1; static gint ett_e2ap_RICsubsequentAction = -1; static gint ett_e2ap_RICsubscriptionRequest = -1; static gint ett_e2ap_RICsubscriptionDetails = -1; static gint ett_e2ap_RICactions_ToBeSetup_List = -1; static gint ett_e2ap_RICaction_ToBeSetup_Item = -1; static gint ett_e2ap_RICsubscriptionResponse = -1; static gint ett_e2ap_RICaction_Admitted_List = -1; static gint ett_e2ap_RICaction_Admitted_Item = -1; static gint ett_e2ap_RICaction_NotAdmitted_List = -1; static gint ett_e2ap_RICaction_NotAdmitted_Item = -1; static gint ett_e2ap_RICsubscriptionFailure = -1; static gint ett_e2ap_RICsubscriptionDeleteRequest = -1; static gint ett_e2ap_RICsubscriptionDeleteResponse = -1; static gint ett_e2ap_RICsubscriptionDeleteFailure = -1; static gint ett_e2ap_RICindication = -1; static gint ett_e2ap_RICcontrolRequest = -1; static gint ett_e2ap_RICcontrolAcknowledge = -1; static gint ett_e2ap_RICcontrolFailure = -1; static gint ett_e2ap_ErrorIndication = -1; static gint ett_e2ap_E2setupRequest = -1; static gint ett_e2ap_E2setupResponse = -1; static gint ett_e2ap_E2setupFailure = -1; static gint ett_e2ap_ResetRequest = -1; static gint ett_e2ap_ResetResponse = -1; static gint ett_e2ap_RICserviceUpdate = -1; static gint ett_e2ap_RANfunctions_List = -1; static gint ett_e2ap_RANfunction_Item = -1; static gint ett_e2ap_RANfunctionsID_List = -1; static gint ett_e2ap_RANfunctionID_Item = -1; static gint ett_e2ap_RICserviceUpdateAcknowledge = -1; static gint ett_e2ap_RANfunctionsIDcause_List = -1; static gint ett_e2ap_RANfunctionIDcause_Item = -1; static gint ett_e2ap_RICserviceUpdateFailure = -1; static gint ett_e2ap_RICserviceQuery = -1; static gint ett_e2ap_E2AP_PDU = -1; static gint ett_e2ap_InitiatingMessage = -1; static gint ett_e2ap_SuccessfulOutcome = -1; static gint ett_e2ap_UnsuccessfulOutcome = -1; static gint ett_e2ap_GlobalKPMnode_ID = -1; static gint ett_e2ap_GlobalKPMnode_gNB_ID = -1; static gint ett_e2ap_GlobalKPMnode_en_gNB_ID = -1; static gint ett_e2ap_GlobalKPMnode_ng_eNB_ID = -1; static gint ett_e2ap_GlobalKPMnode_eNB_ID = -1; static gint ett_e2ap_NRCGI = -1; static gint ett_e2ap_SNSSAI = -1; static gint ett_e2ap_E2SM_KPM_EventTriggerDefinition = -1; static gint ett_e2ap_E2SM_KPM_EventTriggerDefinition_Format1 = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item = -1; static gint ett_e2ap_E2SM_KPM_ActionDefinition = -1; static gint ett_e2ap_E2SM_KPM_IndicationHeader = -1; static gint ett_e2ap_E2SM_KPM_IndicationHeader_Format1 = -1; static gint ett_e2ap_E2SM_KPM_IndicationMessage_Format1 = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List = -1; static gint ett_e2ap_PM_Containers_List = -1; static gint ett_e2ap_E2SM_KPM_RANfunction_Description = -1; static gint ett_e2ap_T_e2SM_KPM_RANfunction_Item = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List = -1; static gint ett_e2ap_Trigger_ConditionIE_Item = -1; static gint ett_e2ap_RANfunction_Name = -1; static gint ett_e2ap_RIC_EventTriggerStyle_List = -1; static gint ett_e2ap_RIC_ReportStyle_List = -1; static gint ett_e2ap_PF_Container = -1; static gint ett_e2ap_ODU_PF_Container = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem = -1; static gint ett_e2ap_CellResourceReportListItem = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem = -1; static gint ett_e2ap_ServedPlmnPerCellListItem = -1; static gint ett_e2ap_FGC_DU_PM_Container = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem = -1; static gint ett_e2ap_SlicePerPlmnPerCellListItem = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem = -1; static gint ett_e2ap_FQIPERSlicesPerPlmnPerCellListItem = -1; static gint ett_e2ap_EPC_DU_PM_Container = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem = -1; static gint ett_e2ap_PerQCIReportListItem = -1; static gint ett_e2ap_OCUCP_PF_Container = -1; static gint ett_e2ap_T_cu_CP_Resource_Status = -1; static gint ett_e2ap_OCUUP_PF_Container = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem = -1; static gint ett_e2ap_PF_ContainerListItem = -1; static gint ett_e2ap_CUUPMeasurement_Container = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List = -1; static gint ett_e2ap_PlmnID_List = -1; static gint ett_e2ap_FGC_CUUP_PM_Format = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem = -1; static gint ett_e2ap_SliceToReportListItem = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem = -1; static gint ett_e2ap_FQIPERSlicesPerPlmnListItem = -1; static gint ett_e2ap_EPC_CUUP_PM_Format = -1; static gint ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat = -1; static gint ett_e2ap_PerQCIReportListItemFormat = -1; /*--- End of included file: packet-e2ap-ett.c ---*/ #line 52 "./asn1/e2ap/packet-e2ap-template.c" enum{ INITIATING_MESSAGE, SUCCESSFUL_OUTCOME, UNSUCCESSFUL_OUTCOME }; typedef struct _e2ap_ctx_t { guint32 message_type; guint32 ProcedureCode; guint32 ProtocolIE_ID; guint32 ProtocolExtensionID; } e2ap_ctx_t; struct e2ap_private_data { guint32 procedure_code; guint32 protocol_ie_id; guint32 protocol_extension_id; guint32 message_type; guint32 ran_ue_e2ap_id; }; /* Global variables */ static guint gbl_e2apSctpPort = SCTP_PORT_E2AP; /* Dissector tables */ static dissector_table_t e2ap_ies_dissector_table; //static dissector_table_t e2ap_ies_p1_dissector_table; //static dissector_table_t e2ap_ies_p2_dissector_table; static dissector_table_t e2ap_extension_dissector_table; static dissector_table_t e2ap_proc_imsg_dissector_table; static dissector_table_t e2ap_proc_sout_dissector_table; static dissector_table_t e2ap_proc_uout_dissector_table; static dissector_table_t e2ap_n2_ie_type_dissector_table; static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); /* Currently not used static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); */ /* Forward declarations */ static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_RANcallProcess_ID_string_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_E2SM_KPM_IndicationMessage_Format1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); static struct e2ap_private_data* e2ap_get_private_data(packet_info *pinfo) { struct e2ap_private_data *e2ap_data = (struct e2ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_e2ap, 0); if (!e2ap_data) { e2ap_data = wmem_new0(pinfo->pool, struct e2ap_private_data); p_add_proto_data(pinfo->pool, pinfo, proto_e2ap, 0, e2ap_data); } return e2ap_data; } /*--- Included file: packet-e2ap-fn.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-fn.c" static const value_string e2ap_Criticality_vals[] = { { 0, "reject" }, { 1, "ignore" }, { 2, "notify" }, { 0, NULL } }; static int dissect_e2ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, FALSE, 0, NULL); return offset; } static const value_string e2ap_ProcedureCode_vals[] = { { id_E2setup, "id-E2setup" }, { id_ErrorIndication, "id-ErrorIndication" }, { id_Reset, "id-Reset" }, { id_RICcontrol, "id-RICcontrol" }, { id_RICindication, "id-RICindication" }, { id_RICserviceQuery, "id-RICserviceQuery" }, { id_RICserviceUpdate, "id-RICserviceUpdate" }, { id_RICsubscription, "id-RICsubscription" }, { id_RICsubscriptionDelete, "id-RICsubscriptionDelete" }, { 0, NULL } }; static value_string_ext e2ap_ProcedureCode_vals_ext = VALUE_STRING_EXT_INIT(e2ap_ProcedureCode_vals); static int dissect_e2ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 102 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, &e2ap_data->procedure_code, FALSE); //col_append_fstr(actx->pinfo->cinfo, COL_INFO, "%s", val_to_str(e2ap_data->procedure_code, e2ap_ProcedureCode_vals, "Unknown")); return offset; } static const value_string e2ap_ProtocolIE_ID_vals[] = { { id_Cause, "id-Cause" }, { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" }, { id_GlobalE2node_ID, "id-GlobalE2node-ID" }, { id_GlobalRIC_ID, "id-GlobalRIC-ID" }, { id_RANfunctionID, "id-RANfunctionID" }, { id_RANfunctionID_Item, "id-RANfunctionID-Item" }, { id_RANfunctionIEcause_Item, "id-RANfunctionIEcause-Item" }, { id_RANfunction_Item, "id-RANfunction-Item" }, { id_RANfunctionsAccepted, "id-RANfunctionsAccepted" }, { id_RANfunctionsAdded, "id-RANfunctionsAdded" }, { id_RANfunctionsDeleted, "id-RANfunctionsDeleted" }, { id_RANfunctionsModified, "id-RANfunctionsModified" }, { id_RANfunctionsRejected, "id-RANfunctionsRejected" }, { id_RICaction_Admitted_Item, "id-RICaction-Admitted-Item" }, { id_RICactionID, "id-RICactionID" }, { id_RICaction_NotAdmitted_Item, "id-RICaction-NotAdmitted-Item" }, { id_RICactions_Admitted, "id-RICactions-Admitted" }, { id_RICactions_NotAdmitted, "id-RICactions-NotAdmitted" }, { id_RICaction_ToBeSetup_Item, "id-RICaction-ToBeSetup-Item" }, { id_RICcallProcessID, "id-RICcallProcessID" }, { id_RICcontrolAckRequest, "id-RICcontrolAckRequest" }, { id_RICcontrolHeader, "id-RICcontrolHeader" }, { id_RICcontrolMessage, "id-RICcontrolMessage" }, { id_RICcontrolStatus, "id-RICcontrolStatus" }, { id_RICindicationHeader, "id-RICindicationHeader" }, { id_RICindicationMessage, "id-RICindicationMessage" }, { id_RICindicationSN, "id-RICindicationSN" }, { id_RICindicationType, "id-RICindicationType" }, { id_RICrequestID, "id-RICrequestID" }, { id_RICsubscriptionDetails, "id-RICsubscriptionDetails" }, { id_TimeToWait, "id-TimeToWait" }, { id_RICcontrolOutcome, "id-RICcontrolOutcome" }, { 0, NULL } }; static value_string_ext e2ap_ProtocolIE_ID_vals_ext = VALUE_STRING_EXT_INIT(e2ap_ProtocolIE_ID_vals); static int dissect_e2ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 75 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, &e2ap_data->protocol_ie_id, FALSE); #line 79 "./asn1/e2ap/e2ap.cnf" if (tree) { proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str_ext(e2ap_data->protocol_ie_id, &e2ap_ProtocolIE_ID_vals_ext, "unknown (%d)")); } return offset; } static const value_string e2ap_TriggeringMessage_vals[] = { { 0, "initiating-message" }, { 1, "successful-outcome" }, { 2, "unsuccessfull-outcome" }, { 0, NULL } }; static int dissect_e2ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, FALSE, 0, NULL); return offset; } static int dissect_e2ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); return offset; } static const per_sequence_t ProtocolIE_Field_sequence[] = { { &hf_e2ap_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_ID }, { &hf_e2ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_Criticality }, { &hf_e2ap_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_T_value }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ProtocolIE_Field, ProtocolIE_Field_sequence); return offset; } static const per_sequence_t ProtocolIE_Container_sequence_of[1] = { { &hf_e2ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Field }, }; static int dissect_e2ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of, 0, maxProtocolIEs, FALSE); return offset; } static int dissect_e2ap_ProtocolIE_SingleContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_e2ap_ProtocolIE_Field(tvb, offset, actx, tree, hf_index); return offset; } static const value_string e2ap_CauseRIC_vals[] = { { 0, "ran-function-id-Invalid" }, { 1, "action-not-supported" }, { 2, "excessive-actions" }, { 3, "duplicate-action" }, { 4, "duplicate-event" }, { 5, "function-resource-limit" }, { 6, "request-id-unknown" }, { 7, "inconsistent-action-subsequent-action-sequence" }, { 8, "control-message-invalid" }, { 9, "call-process-id-invalid" }, { 10, "unspecified" }, { 0, NULL } }; static int dissect_e2ap_CauseRIC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 11, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_CauseRICservice_vals[] = { { 0, "function-not-required" }, { 1, "excessive-functions" }, { 2, "ric-resource-limit" }, { 0, NULL } }; static int dissect_e2ap_CauseRICservice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_CauseTransport_vals[] = { { 0, "unspecified" }, { 1, "transport-resource-unavailable" }, { 0, NULL } }; static int dissect_e2ap_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_CauseProtocol_vals[] = { { 0, "transfer-syntax-error" }, { 1, "abstract-syntax-error-reject" }, { 2, "abstract-syntax-error-ignore-and-notify" }, { 3, "message-not-compatible-with-receiver-state" }, { 4, "semantic-error" }, { 5, "abstract-syntax-error-falsely-constructed-message" }, { 6, "unspecified" }, { 0, NULL } }; static int dissect_e2ap_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 7, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_CauseMisc_vals[] = { { 0, "control-processing-overload" }, { 1, "hardware-failure" }, { 2, "om-intervention" }, { 3, "unspecified" }, { 0, NULL } }; static int dissect_e2ap_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 4, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_Cause_vals[] = { { 0, "ricRequest" }, { 1, "ricService" }, { 2, "transport" }, { 3, "protocol" }, { 4, "misc" }, { 0, NULL } }; static const per_choice_t Cause_choice[] = { { 0, &hf_e2ap_ricRequest , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseRIC }, { 1, &hf_e2ap_ricService , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseRICservice }, { 2, &hf_e2ap_transport , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseTransport }, { 3, &hf_e2ap_protocol , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseProtocol }, { 4, &hf_e2ap_misc , ASN1_EXTENSION_ROOT , dissect_e2ap_CauseMisc }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_Cause, Cause_choice, NULL); return offset; } static int dissect_e2ap_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, NULL, FALSE); return offset; } static const per_sequence_t RICrequestID_sequence[] = { { &hf_e2ap_ricRequestorID_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_65535 }, { &hf_e2ap_ricInstanceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_65535 }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICrequestID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICrequestID, RICrequestID_sequence); return offset; } static const value_string e2ap_TypeOfError_vals[] = { { 0, "not-understood" }, { 1, "missing" }, { 0, NULL } }; static int dissect_e2ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, TRUE, 0, NULL); return offset; } static const per_sequence_t CriticalityDiagnostics_IE_Item_sequence[] = { { &hf_e2ap_iECriticality , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_Criticality }, { &hf_e2ap_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_ID }, { &hf_e2ap_typeOfError , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_TypeOfError }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_CriticalityDiagnostics_IE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_CriticalityDiagnostics_IE_Item, CriticalityDiagnostics_IE_Item_sequence); return offset; } static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = { { &hf_e2ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_CriticalityDiagnostics_IE_Item }, }; static int dissect_e2ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of, 1, maxnoofErrors, FALSE); return offset; } static const per_sequence_t CriticalityDiagnostics_sequence[] = { { &hf_e2ap_procedureCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_ProcedureCode }, { &hf_e2ap_triggeringMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_TriggeringMessage }, { &hf_e2ap_procedureCriticality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_Criticality }, { &hf_e2ap_ricRequestorID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RICrequestID }, { &hf_e2ap_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_CriticalityDiagnostics_IE_List }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_CriticalityDiagnostics, CriticalityDiagnostics_sequence); return offset; } static int dissect_e2ap_BIT_STRING_SIZE_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 20, 20, FALSE, NULL, 0, NULL, NULL); return offset; } static int dissect_e2ap_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 28, 28, FALSE, NULL, 0, NULL, NULL); return offset; } static int dissect_e2ap_BIT_STRING_SIZE_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 18, 18, FALSE, NULL, 0, NULL, NULL); return offset; } static int dissect_e2ap_BIT_STRING_SIZE_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 21, 21, FALSE, NULL, 0, NULL, NULL); return offset; } static const value_string e2ap_ENB_ID_vals[] = { { 0, "macro-eNB-ID" }, { 1, "home-eNB-ID" }, { 2, "short-Macro-eNB-ID" }, { 3, "long-Macro-eNB-ID" }, { 0, NULL } }; static const per_choice_t ENB_ID_choice[] = { { 0, &hf_e2ap_macro_eNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_20 }, { 1, &hf_e2ap_home_eNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_28 }, { 2, &hf_e2ap_short_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_BIT_STRING_SIZE_18 }, { 3, &hf_e2ap_long_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_e2ap_BIT_STRING_SIZE_21 }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_ENB_ID, ENB_ID_choice, NULL); return offset; } static const value_string e2ap_ENB_ID_Choice_vals[] = { { 0, "enb-ID-macro" }, { 1, "enb-ID-shortmacro" }, { 2, "enb-ID-longmacro" }, { 0, NULL } }; static const per_choice_t ENB_ID_Choice_choice[] = { { 0, &hf_e2ap_enb_ID_macro , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_20 }, { 1, &hf_e2ap_enb_ID_shortmacro, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_18 }, { 2, &hf_e2ap_enb_ID_longmacro, ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_21 }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_ENB_ID_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_ENB_ID_Choice, ENB_ID_Choice_choice, NULL); return offset; } static int dissect_e2ap_BIT_STRING_SIZE_22_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 22, 32, FALSE, NULL, 0, NULL, NULL); return offset; } static const value_string e2ap_ENGNB_ID_vals[] = { { 0, "gNB-ID" }, { 0, NULL } }; static const per_choice_t ENGNB_ID_choice[] = { { 0, &hf_e2ap_gNB_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_22_32 }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_ENGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_ENGNB_ID, ENGNB_ID_choice, NULL); return offset; } static int dissect_e2ap_PLMN_Identity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 3, FALSE, NULL); return offset; } static const value_string e2ap_GNB_ID_Choice_vals[] = { { 0, "gnb-ID" }, { 0, NULL } }; static const per_choice_t GNB_ID_Choice_choice[] = { { 0, &hf_e2ap_gnb_ID , ASN1_EXTENSION_ROOT , dissect_e2ap_BIT_STRING_SIZE_22_32 }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_GNB_ID_Choice(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_GNB_ID_Choice, GNB_ID_Choice_choice, NULL); return offset; } static const per_sequence_t GlobalgNB_ID_sequence[] = { { &hf_e2ap_plmn_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_gnb_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GNB_ID_Choice }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalgNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalgNB_ID, GlobalgNB_ID_sequence); return offset; } static int dissect_e2ap_GNB_CU_UP_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); return offset; } static int dissect_e2ap_GNB_DU_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, 0U, G_GUINT64_CONSTANT(68719476735), NULL, FALSE); return offset; } static const per_sequence_t GlobalE2node_gNB_ID_sequence[] = { { &hf_e2ap_global_gNB_ID_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalgNB_ID }, { &hf_e2ap_gNB_CU_UP_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_ID }, { &hf_e2ap_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_DU_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalE2node_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalE2node_gNB_ID, GlobalE2node_gNB_ID_sequence); return offset; } static const per_sequence_t GlobalenGNB_ID_sequence[] = { { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_gNB_ID_01 , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ENGNB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalenGNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalenGNB_ID, GlobalenGNB_ID_sequence); return offset; } static const per_sequence_t GlobalE2node_en_gNB_ID_sequence[] = { { &hf_e2ap_global_gNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalenGNB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalE2node_en_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalE2node_en_gNB_ID, GlobalE2node_en_gNB_ID_sequence); return offset; } static const per_sequence_t GlobalngeNB_ID_sequence[] = { { &hf_e2ap_plmn_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_enb_id , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ENB_ID_Choice }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalngeNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalngeNB_ID, GlobalngeNB_ID_sequence); return offset; } static const per_sequence_t GlobalE2node_ng_eNB_ID_sequence[] = { { &hf_e2ap_global_ng_eNB_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalngeNB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalE2node_ng_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalE2node_ng_eNB_ID, GlobalE2node_ng_eNB_ID_sequence); return offset; } static const per_sequence_t GlobalENB_ID_sequence[] = { { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ENB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalENB_ID, GlobalENB_ID_sequence); return offset; } static const per_sequence_t GlobalE2node_eNB_ID_sequence[] = { { &hf_e2ap_global_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalENB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalE2node_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalE2node_eNB_ID, GlobalE2node_eNB_ID_sequence); return offset; } static const value_string e2ap_GlobalE2node_ID_vals[] = { { 0, "gNB" }, { 1, "en-gNB" }, { 2, "ng-eNB" }, { 3, "eNB" }, { 0, NULL } }; static const per_choice_t GlobalE2node_ID_choice[] = { { 0, &hf_e2ap_gNB , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalE2node_gNB_ID }, { 1, &hf_e2ap_en_gNB , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalE2node_en_gNB_ID }, { 2, &hf_e2ap_ng_eNB , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalE2node_ng_eNB_ID }, { 3, &hf_e2ap_eNB , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalE2node_eNB_ID }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_GlobalE2node_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalE2node_ID, GlobalE2node_ID_choice, NULL); return offset; } static const per_sequence_t GlobalRIC_ID_sequence[] = { { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_ric_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_BIT_STRING_SIZE_20 }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalRIC_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalRIC_ID, GlobalRIC_ID_sequence); return offset; } static int dissect_e2ap_RANfunctionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 242 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); dissect_E2SM_KPM_RANfunction_Description_PDU(parameter_tvb, actx->pinfo, tree, NULL); return offset; } static int dissect_e2ap_RANfunctionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 4095U, NULL, FALSE); return offset; } static int dissect_e2ap_RANfunctionRevision(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 4095U, NULL, FALSE); return offset; } static int dissect_e2ap_RICactionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 221 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); dissect_E2SM_KPM_ActionDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL); return offset; } static int dissect_e2ap_RICactionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, NULL, FALSE); return offset; } static const value_string e2ap_RICactionType_vals[] = { { 0, "report" }, { 1, "insert" }, { 2, "policy" }, { 0, NULL } }; static int dissect_e2ap_RICactionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, TRUE, 0, NULL); return offset; } static int dissect_e2ap_RICcallProcessID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 247 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); dissect_RANcallProcess_ID_string_PDU(parameter_tvb, actx->pinfo, tree, NULL); return offset; } static const value_string e2ap_RICcontrolAckRequest_vals[] = { { 0, "noAck" }, { 1, "ack" }, { 2, "nAck" }, { 0, NULL } }; static int dissect_e2ap_RICcontrolAckRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, TRUE, 0, NULL); return offset; } static int dissect_e2ap_RICcontrolHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } static int dissect_e2ap_RICcontrolMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } static int dissect_e2ap_RICcontrolOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } static const value_string e2ap_RICcontrolStatus_vals[] = { { 0, "success" }, { 1, "rejected" }, { 2, "failed" }, { 0, NULL } }; static int dissect_e2ap_RICcontrolStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, TRUE, 0, NULL); return offset; } static int dissect_e2ap_RICeventTriggerDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 226 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); dissect_E2SM_KPM_EventTriggerDefinition_PDU(parameter_tvb, actx->pinfo, tree, NULL); return offset; } static int dissect_e2ap_RICindicationHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 231 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); dissect_E2SM_KPM_IndicationHeader_PDU(parameter_tvb, actx->pinfo, tree, NULL); return offset; } static int dissect_e2ap_RICindicationMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 236 "./asn1/e2ap/e2ap.cnf" tvbuff_t *parameter_tvb; offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, ¶meter_tvb); /* It is believed that this is an error in the ASN in V1 of the spec... */ dissect_E2SM_KPM_IndicationMessage_Format1_PDU(parameter_tvb, actx->pinfo, tree, NULL); return offset; } static int dissect_e2ap_RICindicationSN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 65535U, NULL, FALSE); return offset; } static const value_string e2ap_RICindicationType_vals[] = { { 0, "report" }, { 1, "insert" }, { 0, NULL } }; static int dissect_e2ap_RICindicationType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_RICsubsequentActionType_vals[] = { { 0, "continue" }, { 1, "wait" }, { 0, NULL } }; static int dissect_e2ap_RICsubsequentActionType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 2, NULL, TRUE, 0, NULL); return offset; } static const value_string e2ap_RICtimeToWait_vals[] = { { 0, "zero" }, { 1, "w1ms" }, { 2, "w2ms" }, { 3, "w5ms" }, { 4, "w10ms" }, { 5, "w20ms" }, { 6, "w30ms" }, { 7, "w40ms" }, { 8, "w50ms" }, { 9, "w100ms" }, { 10, "w200ms" }, { 11, "w500ms" }, { 12, "w1s" }, { 13, "w2s" }, { 14, "w5s" }, { 15, "w10s" }, { 16, "w20s" }, { 17, "w60s" }, { 0, NULL } }; static int dissect_e2ap_RICtimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 18, NULL, TRUE, 0, NULL); return offset; } static const per_sequence_t RICsubsequentAction_sequence[] = { { &hf_e2ap_ricSubsequentActionType, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICsubsequentActionType }, { &hf_e2ap_ricTimeToWait , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICtimeToWait }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubsequentAction(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubsequentAction, RICsubsequentAction_sequence); return offset; } static const value_string e2ap_TimeToWait_vals[] = { { 0, "v1s" }, { 1, "v2s" }, { 2, "v5s" }, { 3, "v10s" }, { 4, "v20s" }, { 5, "v60s" }, { 0, NULL } }; static int dissect_e2ap_TimeToWait(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 6, NULL, TRUE, 0, NULL); return offset; } static const per_sequence_t RICsubscriptionRequest_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubscriptionRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 500 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionRequest, RICsubscriptionRequest_sequence); return offset; } static const per_sequence_t RICactions_ToBeSetup_List_sequence_of[1] = { { &hf_e2ap_RICactions_ToBeSetup_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, }; static int dissect_e2ap_RICactions_ToBeSetup_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RICactions_ToBeSetup_List, RICactions_ToBeSetup_List_sequence_of, 1, maxofRICactionID, FALSE); return offset; } static const per_sequence_t RICsubscriptionDetails_sequence[] = { { &hf_e2ap_ricEventTriggerDefinition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICeventTriggerDefinition }, { &hf_e2ap_ricAction_ToBeSetup_List, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICactions_ToBeSetup_List }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubscriptionDetails(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionDetails, RICsubscriptionDetails_sequence); return offset; } static const per_sequence_t RICaction_ToBeSetup_Item_sequence[] = { { &hf_e2ap_ricActionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICactionID }, { &hf_e2ap_ricActionType , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICactionType }, { &hf_e2ap_ricActionDefinition, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RICactionDefinition }, { &hf_e2ap_ricSubsequentAction, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RICsubsequentAction }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICaction_ToBeSetup_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICaction_ToBeSetup_Item, RICaction_ToBeSetup_Item_sequence); return offset; } static const per_sequence_t RICsubscriptionResponse_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubscriptionResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 503 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionResponse, RICsubscriptionResponse_sequence); return offset; } static const per_sequence_t RICaction_Admitted_List_sequence_of[1] = { { &hf_e2ap_RICaction_Admitted_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, }; static int dissect_e2ap_RICaction_Admitted_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RICaction_Admitted_List, RICaction_Admitted_List_sequence_of, 1, maxofRICactionID, FALSE); return offset; } static const per_sequence_t RICaction_Admitted_Item_sequence[] = { { &hf_e2ap_ricActionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICactionID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICaction_Admitted_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICaction_Admitted_Item, RICaction_Admitted_Item_sequence); return offset; } static const per_sequence_t RICaction_NotAdmitted_List_sequence_of[1] = { { &hf_e2ap_RICaction_NotAdmitted_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, }; static int dissect_e2ap_RICaction_NotAdmitted_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RICaction_NotAdmitted_List, RICaction_NotAdmitted_List_sequence_of, 0, maxofRICactionID, FALSE); return offset; } static const per_sequence_t RICaction_NotAdmitted_Item_sequence[] = { { &hf_e2ap_ricActionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RICactionID }, { &hf_e2ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_Cause }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICaction_NotAdmitted_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICaction_NotAdmitted_Item, RICaction_NotAdmitted_Item_sequence); return offset; } static const per_sequence_t RICsubscriptionFailure_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubscriptionFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 497 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionFailure, RICsubscriptionFailure_sequence); return offset; } static const per_sequence_t RICsubscriptionDeleteRequest_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubscriptionDeleteRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 511 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionDeleteRequest, RICsubscriptionDeleteRequest_sequence); return offset; } static const per_sequence_t RICsubscriptionDeleteResponse_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubscriptionDeleteResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 514 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionDeleteResponse, RICsubscriptionDeleteResponse_sequence); return offset; } static const per_sequence_t RICsubscriptionDeleteFailure_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICsubscriptionDeleteFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 508 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICsubscriptionDeleteFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICsubscriptionDeleteFailure, RICsubscriptionDeleteFailure_sequence); return offset; } static const per_sequence_t RICindication_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICindication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 478 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICindication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICindication, RICindication_sequence); return offset; } static const per_sequence_t RICcontrolRequest_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICcontrolRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 475 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICcontrolRequest, RICcontrolRequest_sequence); return offset; } static const per_sequence_t RICcontrolAcknowledge_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICcontrolAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 467 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICcontrolAcknowledge, RICcontrolAcknowledge_sequence); return offset; } static const per_sequence_t RICcontrolFailure_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICcontrolFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 472 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICcontrolFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICcontrolFailure, RICcontrolFailure_sequence); return offset; } static const per_sequence_t ErrorIndication_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 458 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ErrorIndication"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ErrorIndication, ErrorIndication_sequence); return offset; } static const per_sequence_t E2setupRequest_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2setupRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 452 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2setupRequest, E2setupRequest_sequence); return offset; } static const per_sequence_t E2setupResponse_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2setupResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 455 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2setupResponse, E2setupResponse_sequence); return offset; } static const per_sequence_t E2setupFailure_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2setupFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 449 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "E2setupFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2setupFailure, E2setupFailure_sequence); return offset; } static const per_sequence_t ResetRequest_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_ResetRequest(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 461 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetRequest"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ResetRequest, ResetRequest_sequence); return offset; } static const per_sequence_t ResetResponse_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_ResetResponse(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 464 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "ResetResponse"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ResetResponse, ResetResponse_sequence); return offset; } static const per_sequence_t RICserviceUpdate_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICserviceUpdate(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 485 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdate"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICserviceUpdate, RICserviceUpdate_sequence); return offset; } static const per_sequence_t RANfunctions_List_sequence_of[1] = { { &hf_e2ap_RANfunctions_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, }; static int dissect_e2ap_RANfunctions_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctions_List, RANfunctions_List_sequence_of, 0, maxofRANfunctionID, FALSE); return offset; } static const per_sequence_t RANfunction_Item_sequence[] = { { &hf_e2ap_ranFunctionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionID }, { &hf_e2ap_ranFunctionDefinition, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionDefinition }, { &hf_e2ap_ranFunctionRevision, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionRevision }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RANfunction_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunction_Item, RANfunction_Item_sequence); return offset; } static const per_sequence_t RANfunctionsID_List_sequence_of[1] = { { &hf_e2ap_RANfunctionsID_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, }; static int dissect_e2ap_RANfunctionsID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctionsID_List, RANfunctionsID_List_sequence_of, 0, maxofRANfunctionID, FALSE); return offset; } static const per_sequence_t RANfunctionID_Item_sequence[] = { { &hf_e2ap_ranFunctionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionID }, { &hf_e2ap_ranFunctionRevision, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionRevision }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RANfunctionID_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctionID_Item, RANfunctionID_Item_sequence); return offset; } static const per_sequence_t RICserviceUpdateAcknowledge_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICserviceUpdateAcknowledge(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 489 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateAcknowledge"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICserviceUpdateAcknowledge, RICserviceUpdateAcknowledge_sequence); return offset; } static const per_sequence_t RANfunctionsIDcause_List_sequence_of[1] = { { &hf_e2ap_RANfunctionsIDcause_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_SingleContainer }, }; static int dissect_e2ap_RANfunctionsIDcause_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctionsIDcause_List, RANfunctionsIDcause_List_sequence_of, 0, maxofRANfunctionID, FALSE); return offset; } static const per_sequence_t RANfunctionIDcause_Item_sequence[] = { { &hf_e2ap_ranFunctionID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunctionID }, { &hf_e2ap_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_Cause }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RANfunctionIDcause_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunctionIDcause_Item, RANfunctionIDcause_Item_sequence); return offset; } static const per_sequence_t RICserviceUpdateFailure_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICserviceUpdateFailure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 492 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceUpdateFailure"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICserviceUpdateFailure, RICserviceUpdateFailure_sequence); return offset; } static const per_sequence_t RICserviceQuery_sequence[] = { { &hf_e2ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_ProtocolIE_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RICserviceQuery(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 482 "./asn1/e2ap/e2ap.cnf" col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "RICserviceQuery"); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RICserviceQuery, RICserviceQuery_sequence); return offset; } static int dissect_e2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 111 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); return offset; } static const per_sequence_t InitiatingMessage_sequence[] = { { &hf_e2ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProcedureCode }, { &hf_e2ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_Criticality }, { &hf_e2ap_initiatingMessagevalue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_InitiatingMessage_value }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_InitiatingMessage, InitiatingMessage_sequence); return offset; } static int dissect_e2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 115 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); return offset; } static const per_sequence_t SuccessfulOutcome_sequence[] = { { &hf_e2ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProcedureCode }, { &hf_e2ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_Criticality }, { &hf_e2ap_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_SuccessfulOutcome_value }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_SuccessfulOutcome, SuccessfulOutcome_sequence); return offset; } static int dissect_e2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { #line 119 "./asn1/e2ap/e2ap.cnf" struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = UNSUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); return offset; } static const per_sequence_t UnsuccessfulOutcome_sequence[] = { { &hf_e2ap_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ProcedureCode }, { &hf_e2ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_Criticality }, { &hf_e2ap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_UnsuccessfulOutcome_value }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence); return offset; } static const value_string e2ap_E2AP_PDU_vals[] = { { 0, "initiatingMessage" }, { 1, "successfulOutcome" }, { 2, "unsuccessfulOutcome" }, { 0, NULL } }; static const per_choice_t E2AP_PDU_choice[] = { { 0, &hf_e2ap_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_e2ap_InitiatingMessage }, { 1, &hf_e2ap_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_e2ap_SuccessfulOutcome }, { 2, &hf_e2ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_e2ap_UnsuccessfulOutcome }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_E2AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_E2AP_PDU, E2AP_PDU_choice, NULL); return offset; } static const per_sequence_t GlobalKPMnode_gNB_ID_sequence[] = { { &hf_e2ap_global_gNB_ID_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalgNB_ID }, { &hf_e2ap_gNB_CU_UP_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_ID }, { &hf_e2ap_gNB_DU_ID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_DU_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalKPMnode_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalKPMnode_gNB_ID, GlobalKPMnode_gNB_ID_sequence); return offset; } static const per_sequence_t GlobalKPMnode_en_gNB_ID_sequence[] = { { &hf_e2ap_global_gNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalenGNB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalKPMnode_en_gNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalKPMnode_en_gNB_ID, GlobalKPMnode_en_gNB_ID_sequence); return offset; } static const per_sequence_t GlobalKPMnode_ng_eNB_ID_sequence[] = { { &hf_e2ap_global_ng_eNB_ID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalngeNB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalKPMnode_ng_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalKPMnode_ng_eNB_ID, GlobalKPMnode_ng_eNB_ID_sequence); return offset; } static const per_sequence_t GlobalKPMnode_eNB_ID_sequence[] = { { &hf_e2ap_global_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_GlobalENB_ID }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_GlobalKPMnode_eNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalKPMnode_eNB_ID, GlobalKPMnode_eNB_ID_sequence); return offset; } static const value_string e2ap_GlobalKPMnode_ID_vals[] = { { 0, "gNB" }, { 1, "en-gNB" }, { 2, "ng-eNB" }, { 3, "eNB" }, { 0, NULL } }; static const per_choice_t GlobalKPMnode_ID_choice[] = { { 0, &hf_e2ap_gNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_gNB_ID }, { 1, &hf_e2ap_en_gNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_en_gNB_ID }, { 2, &hf_e2ap_ng_eNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_ng_eNB_ID }, { 3, &hf_e2ap_eNB_01 , ASN1_EXTENSION_ROOT , dissect_e2ap_GlobalKPMnode_eNB_ID }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_GlobalKPMnode_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_GlobalKPMnode_ID, GlobalKPMnode_ID_choice, NULL); return offset; } static int dissect_e2ap_NRCellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index, 36, 36, FALSE, NULL, 0, NULL, NULL); return offset; } static const per_sequence_t NRCGI_sequence[] = { { &hf_e2ap_pLMN_Identity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_nRCellIdentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_NRCellIdentity }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_NRCGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_NRCGI, NRCGI_sequence); return offset; } static int dissect_e2ap_OCTET_STRING_SIZE_1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 1, 1, FALSE, NULL); return offset; } static int dissect_e2ap_OCTET_STRING_SIZE_3(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, 3, 3, FALSE, NULL); return offset; } static const per_sequence_t SNSSAI_sequence[] = { { &hf_e2ap_sST , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_OCTET_STRING_SIZE_1 }, { &hf_e2ap_sD , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e2ap_OCTET_STRING_SIZE_3 }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_SNSSAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_SNSSAI, SNSSAI_sequence); return offset; } static int dissect_e2ap_RIC_Style_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); return offset; } static int dissect_e2ap_RIC_Style_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, 1, 150, TRUE); return offset; } static int dissect_e2ap_RIC_Format_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); return offset; } static const value_string e2ap_RT_Period_IE_vals[] = { { 0, "ms10" }, { 1, "ms20" }, { 2, "ms32" }, { 3, "ms40" }, { 4, "ms60" }, { 5, "ms64" }, { 6, "ms70" }, { 7, "ms80" }, { 8, "ms128" }, { 9, "ms160" }, { 10, "ms256" }, { 11, "ms320" }, { 12, "ms512" }, { 13, "ms640" }, { 14, "ms1024" }, { 15, "ms1280" }, { 16, "ms2048" }, { 17, "ms2560" }, { 18, "ms5120" }, { 19, "ms10240" }, { 0, NULL } }; static int dissect_e2ap_RT_Period_IE(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 20, NULL, TRUE, 0, NULL); return offset; } static const per_sequence_t Trigger_ConditionIE_Item_sequence[] = { { &hf_e2ap_report_Period_IE, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RT_Period_IE }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_Trigger_ConditionIE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_Trigger_ConditionIE_Item, Trigger_ConditionIE_Item_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item_sequence_of[1] = { { &hf_e2ap_policyTest_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_Trigger_ConditionIE_Item }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item, SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item_sequence_of, 1, maxofMessageProtocolTests, FALSE); return offset; } static const per_sequence_t E2SM_KPM_EventTriggerDefinition_Format1_sequence[] = { { &hf_e2ap_policyTest_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2SM_KPM_EventTriggerDefinition_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2SM_KPM_EventTriggerDefinition_Format1, E2SM_KPM_EventTriggerDefinition_Format1_sequence); return offset; } static const value_string e2ap_E2SM_KPM_EventTriggerDefinition_vals[] = { { 0, "eventDefinition-Format1" }, { 0, NULL } }; static const per_choice_t E2SM_KPM_EventTriggerDefinition_choice[] = { { 0, &hf_e2ap_eventDefinition_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_EventTriggerDefinition_Format1 }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_E2SM_KPM_EventTriggerDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_E2SM_KPM_EventTriggerDefinition, E2SM_KPM_EventTriggerDefinition_choice, NULL); return offset; } static const per_sequence_t E2SM_KPM_ActionDefinition_sequence[] = { { &hf_e2ap_ric_Style_Type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2SM_KPM_ActionDefinition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2SM_KPM_ActionDefinition, E2SM_KPM_ActionDefinition_sequence); return offset; } static int dissect_e2ap_INTEGER_0_255(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 255U, NULL, FALSE); return offset; } static const per_sequence_t E2SM_KPM_IndicationHeader_Format1_sequence[] = { { &hf_e2ap_id_GlobalKPMnode_ID, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GlobalKPMnode_ID }, { &hf_e2ap_nRCGI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_NRCGI }, { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PLMN_Identity }, { &hf_e2ap_sliceID , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SNSSAI }, { &hf_e2ap_fiveQI , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_255 }, { &hf_e2ap_qci , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_255 }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2SM_KPM_IndicationHeader_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2SM_KPM_IndicationHeader_Format1, E2SM_KPM_IndicationHeader_Format1_sequence); return offset; } static const value_string e2ap_E2SM_KPM_IndicationHeader_vals[] = { { 0, "indicationHeader-Format1" }, { 0, NULL } }; static const per_choice_t E2SM_KPM_IndicationHeader_choice[] = { { 0, &hf_e2ap_indicationHeader_Format1, ASN1_EXTENSION_ROOT , dissect_e2ap_E2SM_KPM_IndicationHeader_Format1 }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_E2SM_KPM_IndicationHeader(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_E2SM_KPM_IndicationHeader, E2SM_KPM_IndicationHeader_choice, NULL); return offset; } static int dissect_e2ap_INTEGER_0_273(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 273U, NULL, FALSE); return offset; } static const per_sequence_t FQIPERSlicesPerPlmnPerCellListItem_sequence[] = { { &hf_e2ap_fiveQI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, { &hf_e2ap_dl_PRBUsage , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, { &hf_e2ap_ul_PRBUsage , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_FQIPERSlicesPerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_FQIPERSlicesPerPlmnPerCellListItem, FQIPERSlicesPerPlmnPerCellListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem_sequence_of[1] = { { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_FQIPERSlicesPerPlmnPerCellListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem, SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem_sequence_of, 1, maxnoofQoSFlows, FALSE); return offset; } static const per_sequence_t SlicePerPlmnPerCellListItem_sequence[] = { { &hf_e2ap_sliceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SNSSAI }, { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_SlicePerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_SlicePerPlmnPerCellListItem, SlicePerPlmnPerCellListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem_sequence_of[1] = { { &hf_e2ap_slicePerPlmnPerCellList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_SlicePerPlmnPerCellListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem, SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem_sequence_of, 1, maxnoofSliceItems, FALSE); return offset; } static const per_sequence_t FGC_DU_PM_Container_sequence[] = { { &hf_e2ap_slicePerPlmnPerCellList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_FGC_DU_PM_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_FGC_DU_PM_Container, FGC_DU_PM_Container_sequence); return offset; } static int dissect_e2ap_INTEGER_0_100(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 0U, 100U, NULL, FALSE); return offset; } static const per_sequence_t PerQCIReportListItem_sequence[] = { { &hf_e2ap_qci , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, { &hf_e2ap_dl_PRBUsage_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_100 }, { &hf_e2ap_ul_PRBUsage_01 , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_100 }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_PerQCIReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_PerQCIReportListItem, PerQCIReportListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem_sequence_of[1] = { { &hf_e2ap_perQCIReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PerQCIReportListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem, SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem_sequence_of, 1, maxnoofQCI, FALSE); return offset; } static const per_sequence_t EPC_DU_PM_Container_sequence[] = { { &hf_e2ap_perQCIReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_EPC_DU_PM_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_EPC_DU_PM_Container, EPC_DU_PM_Container_sequence); return offset; } static const per_sequence_t ServedPlmnPerCellListItem_sequence[] = { { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_du_PM_5GC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_FGC_DU_PM_Container }, { &hf_e2ap_du_PM_EPC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EPC_DU_PM_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_ServedPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ServedPlmnPerCellListItem, ServedPlmnPerCellListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem_sequence_of[1] = { { &hf_e2ap_servedPlmnPerCellList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_ServedPlmnPerCellListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem, SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem_sequence_of, 1, maxPLMN, FALSE); return offset; } static const per_sequence_t CellResourceReportListItem_sequence[] = { { &hf_e2ap_nRCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NRCGI }, { &hf_e2ap_dl_TotalofAvailablePRBs, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, { &hf_e2ap_ul_TotalofAvailablePRBs, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_273 }, { &hf_e2ap_servedPlmnPerCellList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_CellResourceReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_CellResourceReportListItem, CellResourceReportListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem_sequence_of[1] = { { &hf_e2ap_cellResourceReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_CellResourceReportListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem, SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem_sequence_of, 1, maxCellingNBDU, FALSE); return offset; } static const per_sequence_t ODU_PF_Container_sequence[] = { { &hf_e2ap_cellResourceReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_ODU_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_ODU_PF_Container, ODU_PF_Container_sequence); return offset; } static int dissect_e2ap_GNB_CU_CP_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, 1, 150, TRUE); return offset; } static int dissect_e2ap_INTEGER_1_65536_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index, 1U, 65536U, NULL, TRUE); return offset; } static const per_sequence_t T_cu_CP_Resource_Status_sequence[] = { { &hf_e2ap_numberOfActive_UEs, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e2ap_INTEGER_1_65536_ }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_T_cu_CP_Resource_Status(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_T_cu_CP_Resource_Status, T_cu_CP_Resource_Status_sequence); return offset; } static const per_sequence_t OCUCP_PF_Container_sequence[] = { { &hf_e2ap_gNB_CU_CP_Name , ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_CP_Name }, { &hf_e2ap_cu_CP_Resource_Status, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_T_cu_CP_Resource_Status }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_OCUCP_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_OCUCP_PF_Container, OCUCP_PF_Container_sequence); return offset; } static int dissect_e2ap_GNB_CU_UP_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, 1, 150, TRUE); return offset; } static const value_string e2ap_NI_Type_vals[] = { { 0, "x2-u" }, { 1, "xn-u" }, { 2, "f1-u" }, { 0, NULL } }; static int dissect_e2ap_NI_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index, 3, NULL, TRUE, 0, NULL); return offset; } static int dissect_e2ap_INTEGER_0_10000000000_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index, 0U, G_GUINT64_CONSTANT(10000000000), NULL, TRUE); return offset; } static const per_sequence_t FQIPERSlicesPerPlmnListItem_sequence[] = { { &hf_e2ap_fiveQI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, { &hf_e2ap_pDCPBytesDL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, { &hf_e2ap_pDCPBytesUL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_FQIPERSlicesPerPlmnListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_FQIPERSlicesPerPlmnListItem, FQIPERSlicesPerPlmnListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem_sequence_of[1] = { { &hf_e2ap_fQIPERSlicesPerPlmnList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_FQIPERSlicesPerPlmnListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem, SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem_sequence_of, 1, maxnoofQoSFlows, FALSE); return offset; } static const per_sequence_t SliceToReportListItem_sequence[] = { { &hf_e2ap_sliceID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SNSSAI }, { &hf_e2ap_fQIPERSlicesPerPlmnList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_SliceToReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_SliceToReportListItem, SliceToReportListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem_sequence_of[1] = { { &hf_e2ap_sliceToReportList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_SliceToReportListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem, SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem_sequence_of, 1, maxnoofSliceItems, FALSE); return offset; } static const per_sequence_t FGC_CUUP_PM_Format_sequence[] = { { &hf_e2ap_sliceToReportList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_FGC_CUUP_PM_Format(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_FGC_CUUP_PM_Format, FGC_CUUP_PM_Format_sequence); return offset; } static const per_sequence_t PerQCIReportListItemFormat_sequence[] = { { &hf_e2ap_qci , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_INTEGER_0_255 }, { &hf_e2ap_pDCPBytesDL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, { &hf_e2ap_pDCPBytesUL , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER_0_10000000000_ }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_PerQCIReportListItemFormat(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_PerQCIReportListItemFormat, PerQCIReportListItemFormat_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat_sequence_of[1] = { { &hf_e2ap_perQCIReportList_item_01, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PerQCIReportListItemFormat }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat, SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat_sequence_of, 1, maxnoofQCI, FALSE); return offset; } static const per_sequence_t EPC_CUUP_PM_Format_sequence[] = { { &hf_e2ap_perQCIReportList_01, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_EPC_CUUP_PM_Format(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_EPC_CUUP_PM_Format, EPC_CUUP_PM_Format_sequence); return offset; } static const per_sequence_t PlmnID_List_sequence[] = { { &hf_e2ap_pLMN_Identity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PLMN_Identity }, { &hf_e2ap_cu_UP_PM_5GC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_FGC_CUUP_PM_Format }, { &hf_e2ap_cu_UP_PM_EPC , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_EPC_CUUP_PM_Format }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_PlmnID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_PlmnID_List, PlmnID_List_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List_sequence_of[1] = { { &hf_e2ap_plmnList_item , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PlmnID_List }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List, SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List_sequence_of, 1, maxPLMN, FALSE); return offset; } static const per_sequence_t CUUPMeasurement_Container_sequence[] = { { &hf_e2ap_plmnList , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_CUUPMeasurement_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_CUUPMeasurement_Container, CUUPMeasurement_Container_sequence); return offset; } static const per_sequence_t PF_ContainerListItem_sequence[] = { { &hf_e2ap_interface_type , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_NI_Type }, { &hf_e2ap_o_CU_UP_PM_Container, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_CUUPMeasurement_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_PF_ContainerListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_PF_ContainerListItem, PF_ContainerListItem_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem_sequence_of[1] = { { &hf_e2ap_pf_ContainerList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PF_ContainerListItem }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem, SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem_sequence_of, 1, maxnoofContainerListItems, FALSE); return offset; } static const per_sequence_t OCUUP_PF_Container_sequence[] = { { &hf_e2ap_gNB_CU_UP_Name , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_GNB_CU_UP_Name }, { &hf_e2ap_pf_ContainerList, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_OCUUP_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_OCUUP_PF_Container, OCUUP_PF_Container_sequence); return offset; } static const value_string e2ap_PF_Container_vals[] = { { 0, "oDU" }, { 1, "oCU-CP" }, { 2, "oCU-UP" }, { 0, NULL } }; static const per_choice_t PF_Container_choice[] = { { 0, &hf_e2ap_oDU , ASN1_NO_EXTENSIONS , dissect_e2ap_ODU_PF_Container }, { 1, &hf_e2ap_oCU_CP , ASN1_NO_EXTENSIONS , dissect_e2ap_OCUCP_PF_Container }, { 2, &hf_e2ap_oCU_UP , ASN1_NO_EXTENSIONS , dissect_e2ap_OCUUP_PF_Container }, { 0, NULL, 0, NULL } }; static int dissect_e2ap_PF_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_PF_Container, PF_Container_choice, NULL); return offset; } static int dissect_e2ap_RAN_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index, NO_BOUND, NO_BOUND, FALSE, NULL); return offset; } static const per_sequence_t PM_Containers_List_sequence[] = { { &hf_e2ap_performanceContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_PF_Container }, { &hf_e2ap_theRANContainer, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_RAN_Container }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_PM_Containers_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_PM_Containers_List, PM_Containers_List_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List_sequence_of[1] = { { &hf_e2ap_pm_Containers_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_PM_Containers_List }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List, SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List_sequence_of, 1, maxCellingNBDU, FALSE); return offset; } static const per_sequence_t E2SM_KPM_IndicationMessage_Format1_sequence[] = { { &hf_e2ap_pm_Containers , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2SM_KPM_IndicationMessage_Format1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2SM_KPM_IndicationMessage_Format1, E2SM_KPM_IndicationMessage_Format1_sequence); return offset; } static int dissect_e2ap_PrintableString_SIZE_1_150_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, 1, 150, TRUE); return offset; } static int dissect_e2ap_PrintableString_SIZE_1_1000_(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, 1, 1000, TRUE); return offset; } static int dissect_e2ap_INTEGER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL); return offset; } static const per_sequence_t RANfunction_Name_sequence[] = { { &hf_e2ap_ranFunction_ShortName, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_150_ }, { &hf_e2ap_ranFunction_E2SM_OID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_1000_ }, { &hf_e2ap_ranFunction_Description, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_PrintableString_SIZE_1_150_ }, { &hf_e2ap_ranFunction_Instance, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_INTEGER }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RANfunction_Name(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANfunction_Name, RANfunction_Name_sequence); return offset; } static const per_sequence_t RIC_EventTriggerStyle_List_sequence[] = { { &hf_e2ap_ric_EventTriggerStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, { &hf_e2ap_ric_EventTriggerStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, { &hf_e2ap_ric_EventTriggerFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RIC_EventTriggerStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RIC_EventTriggerStyle_List, RIC_EventTriggerStyle_List_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List_sequence_of[1] = { { &hf_e2ap_ric_EventTriggerStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_EventTriggerStyle_List }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List, SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List_sequence_of, 1, maxofRICstyles, FALSE); return offset; } static const per_sequence_t RIC_ReportStyle_List_sequence[] = { { &hf_e2ap_ric_ReportStyle_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Type }, { &hf_e2ap_ric_ReportStyle_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Style_Name }, { &hf_e2ap_ric_IndicationHeaderFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, { &hf_e2ap_ric_IndicationMessageFormat_Type, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_Format_Type }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_RIC_ReportStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RIC_ReportStyle_List, RIC_ReportStyle_List_sequence); return offset; } static const per_sequence_t SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List_sequence_of[1] = { { &hf_e2ap_ric_ReportStyle_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_e2ap_RIC_ReportStyle_List }, }; static int dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index, ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List, SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List_sequence_of, 1, maxofRICstyles, FALSE); return offset; } static const per_sequence_t T_e2SM_KPM_RANfunction_Item_sequence[] = { { &hf_e2ap_ric_EventTriggerStyle_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List }, { &hf_e2ap_ric_ReportStyle_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_T_e2SM_KPM_RANfunction_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_T_e2SM_KPM_RANfunction_Item, T_e2SM_KPM_RANfunction_Item_sequence); return offset; } static const per_sequence_t E2SM_KPM_RANfunction_Description_sequence[] = { { &hf_e2ap_ranFunction_Name, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_RANfunction_Name }, { &hf_e2ap_e2SM_KPM_RANfunction_Item, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_e2ap_T_e2SM_KPM_RANfunction_Item }, { NULL, 0, 0, NULL } }; static int dissect_e2ap_E2SM_KPM_RANfunction_Description(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_E2SM_KPM_RANfunction_Description, E2SM_KPM_RANfunction_Description_sequence); return offset; } static int dissect_e2ap_RANcallProcess_ID_string(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index, 1, 150, TRUE); return offset; } /*--- PDUs ---*/ static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_Cause(tvb, offset, &asn1_ctx, tree, hf_e2ap_Cause_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_e2ap_CriticalityDiagnostics_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_GlobalE2node_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_GlobalE2node_ID(tvb, offset, &asn1_ctx, tree, hf_e2ap_GlobalE2node_ID_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_GlobalRIC_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_GlobalRIC_ID(tvb, offset, &asn1_ctx, tree, hf_e2ap_GlobalRIC_ID_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANfunctionID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANfunctionID(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANfunctionID_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICactionID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICactionID(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICactionID_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcallProcessID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcallProcessID(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcallProcessID_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolAckRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolAckRequest(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolAckRequest_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolHeader(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolHeader_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolMessage(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolMessage_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolOutcome_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolOutcome(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolOutcome_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolStatus(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolStatus_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICindicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICindicationHeader(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICindicationHeader_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICindicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICindicationMessage(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICindicationMessage_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICindicationSN_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICindicationSN(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICindicationSN_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICindicationType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICindicationType(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICindicationType_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICrequestID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICrequestID(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICrequestID_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_TimeToWait_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_TimeToWait(tvb, offset, &asn1_ctx, tree, hf_e2ap_TimeToWait_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICsubscriptionRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICsubscriptionRequest(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionRequest_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICsubscriptionDetails_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICsubscriptionDetails(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionDetails_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICaction_ToBeSetup_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICaction_ToBeSetup_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICaction_ToBeSetup_Item_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICsubscriptionResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICsubscriptionResponse(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionResponse_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICaction_Admitted_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICaction_Admitted_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICaction_Admitted_List_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICaction_Admitted_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICaction_Admitted_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICaction_Admitted_Item_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICaction_NotAdmitted_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICaction_NotAdmitted_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICaction_NotAdmitted_List_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICaction_NotAdmitted_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICaction_NotAdmitted_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICaction_NotAdmitted_Item_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICsubscriptionFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICsubscriptionFailure(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionFailure_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICsubscriptionDeleteRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICsubscriptionDeleteRequest(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionDeleteRequest_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICsubscriptionDeleteResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICsubscriptionDeleteResponse(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionDeleteResponse_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICsubscriptionDeleteFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICsubscriptionDeleteFailure(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICsubscriptionDeleteFailure_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICindication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICindication(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICindication_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolRequest(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolRequest_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolAcknowledge(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolAcknowledge_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICcontrolFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICcontrolFailure(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICcontrolFailure_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_e2ap_ErrorIndication_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2setupRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2setupRequest(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2setupRequest_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2setupResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2setupResponse(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2setupResponse_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2setupFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2setupFailure(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2setupFailure_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_ResetRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_ResetRequest(tvb, offset, &asn1_ctx, tree, hf_e2ap_ResetRequest_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_ResetResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_ResetResponse(tvb, offset, &asn1_ctx, tree, hf_e2ap_ResetResponse_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICserviceUpdate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICserviceUpdate(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICserviceUpdate_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANfunctions_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANfunctions_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANfunctions_List_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANfunction_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANfunction_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANfunction_Item_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANfunctionsID_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANfunctionsID_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANfunctionsID_List_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANfunctionID_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANfunctionID_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANfunctionID_Item_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICserviceUpdateAcknowledge_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICserviceUpdateAcknowledge(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICserviceUpdateAcknowledge_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANfunctionsIDcause_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANfunctionsIDcause_List(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANfunctionsIDcause_List_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANfunctionIDcause_Item_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANfunctionIDcause_Item(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANfunctionIDcause_Item_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICserviceUpdateFailure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICserviceUpdateFailure(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICserviceUpdateFailure_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RICserviceQuery_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RICserviceQuery(tvb, offset, &asn1_ctx, tree, hf_e2ap_RICserviceQuery_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2AP_PDU(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2AP_PDU_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2SM_KPM_EventTriggerDefinition(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_KPM_EventTriggerDefinition_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2SM_KPM_ActionDefinition(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_KPM_ActionDefinition_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2SM_KPM_IndicationHeader(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_KPM_IndicationHeader_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2SM_KPM_IndicationMessage_Format1_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2SM_KPM_IndicationMessage_Format1(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_KPM_IndicationMessage_Format1_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_E2SM_KPM_RANfunction_Description(tvb, offset, &asn1_ctx, tree, hf_e2ap_E2SM_KPM_RANfunction_Description_PDU); offset += 7; offset >>= 3; return offset; } static int dissect_RANcallProcess_ID_string_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) { int offset = 0; asn1_ctx_t asn1_ctx; asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo); offset = dissect_e2ap_RANcallProcess_ID_string(tvb, offset, &asn1_ctx, tree, hf_e2ap_RANcallProcess_ID_string_PDU); offset += 7; offset >>= 3; return offset; } /*--- End of included file: packet-e2ap-fn.c ---*/ #line 121 "./asn1/e2ap/packet-e2ap-template.c" static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { e2ap_ctx_t e2ap_ctx; struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo); e2ap_ctx.message_type = e2ap_data->message_type; e2ap_ctx.ProcedureCode = e2ap_data->procedure_code; e2ap_ctx.ProtocolIE_ID = e2ap_data->protocol_ie_id; e2ap_ctx.ProtocolExtensionID = e2ap_data->protocol_extension_id; return (dissector_try_uint_new(e2ap_ies_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree, FALSE, &e2ap_ctx)) ? tvb_captured_length(tvb) : 0; } /* Currently not used static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo); return (dissector_try_uint(e2ap_ies_p1_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; } static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo); return (dissector_try_uint(e2ap_ies_p2_dissector_table, e2ap_data->protocol_ie_id, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0; } */ static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo); return (dissector_try_uint_new(e2ap_proc_imsg_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0; } static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo); return (dissector_try_uint_new(e2ap_proc_sout_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0; } static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) { struct e2ap_private_data *e2ap_data = e2ap_get_private_data(pinfo); return (dissector_try_uint_new(e2ap_proc_uout_dissector_table, e2ap_data->procedure_code, tvb, pinfo, tree, TRUE, data)) ? tvb_captured_length(tvb) : 0; } static int dissect_e2ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { proto_item *e2ap_item = NULL; proto_tree *e2ap_tree = NULL; /* make entry in the Protocol column on summary display */ col_set_str(pinfo->cinfo, COL_PROTOCOL, "E2AP"); /* ensure that parent dissector is not e2ap before clearing fence */ col_clear(pinfo->cinfo, COL_INFO); /* create the e2ap protocol tree */ e2ap_item = proto_tree_add_item(tree, proto_e2ap, tvb, 0, -1, ENC_NA); e2ap_tree = proto_item_add_subtree(e2ap_item, ett_e2ap); return dissect_E2AP_PDU_PDU(tvb, pinfo, e2ap_tree, NULL); } /*--- proto_reg_handoff_e2ap ---------------------------------------*/ void proto_reg_handoff_e2ap(void) { static gboolean Initialized=FALSE; static guint SctpPort; if (!Initialized) { dissector_add_for_decode_as("sctp.port", e2ap_handle); #if 0 /* TODO: should one or more of these be registered? */ dissector_add_uint("sctp.ppi", E2_CP_PROTOCOL_ID, e2ap_handle); dissector_add_uint("sctp.ppi", E2_UP_PROTOCOL_ID, e2ap_handle); dissector_add_uint("sctp.ppi", E2_DU_PROTOCOL_ID, e2ap_handle); #endif Initialized=TRUE; /*--- Included file: packet-e2ap-dis-tab.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-dis-tab.c" dissector_add_uint("e2ap.ies", id_Cause, create_dissector_handle(dissect_Cause_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_CriticalityDiagnostics, create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_GlobalE2node_ID, create_dissector_handle(dissect_GlobalE2node_ID_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_GlobalRIC_ID, create_dissector_handle(dissect_GlobalRIC_ID_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionID, create_dissector_handle(dissect_RANfunctionID_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionID_Item, create_dissector_handle(dissect_RANfunctionID_Item_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionIEcause_Item, create_dissector_handle(dissect_RANfunctionIDcause_Item_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunction_Item, create_dissector_handle(dissect_RANfunction_Item_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionsAccepted, create_dissector_handle(dissect_RANfunctionsID_List_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionsAdded, create_dissector_handle(dissect_RANfunctions_List_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionsDeleted, create_dissector_handle(dissect_RANfunctionsID_List_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionsModified, create_dissector_handle(dissect_RANfunctions_List_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RANfunctionsRejected, create_dissector_handle(dissect_RANfunctionsIDcause_List_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICaction_Admitted_Item, create_dissector_handle(dissect_RICaction_Admitted_Item_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICactionID, create_dissector_handle(dissect_RICactionID_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICaction_NotAdmitted_Item, create_dissector_handle(dissect_RICaction_NotAdmitted_Item_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICactions_Admitted, create_dissector_handle(dissect_RICaction_Admitted_List_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICaction_ToBeSetup_Item, create_dissector_handle(dissect_RICaction_ToBeSetup_Item_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcallProcessID, create_dissector_handle(dissect_RICcallProcessID_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICactions_NotAdmitted, create_dissector_handle(dissect_RICaction_NotAdmitted_List_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcontrolAckRequest, create_dissector_handle(dissect_RICcontrolAckRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcontrolHeader, create_dissector_handle(dissect_RICcontrolHeader_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcontrolMessage, create_dissector_handle(dissect_RICcontrolMessage_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcontrolOutcome, create_dissector_handle(dissect_RICcontrolOutcome_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICcontrolStatus, create_dissector_handle(dissect_RICcontrolStatus_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICindicationHeader, create_dissector_handle(dissect_RICindicationHeader_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICindicationMessage, create_dissector_handle(dissect_RICindicationMessage_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICindicationSN, create_dissector_handle(dissect_RICindicationSN_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICindicationType, create_dissector_handle(dissect_RICindicationType_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICrequestID, create_dissector_handle(dissect_RICrequestID_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_RICsubscriptionDetails, create_dissector_handle(dissect_RICsubscriptionDetails_PDU, proto_e2ap)); dissector_add_uint("e2ap.ies", id_TimeToWait, create_dissector_handle(dissect_TimeToWait_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.uout", id_E2setup, create_dissector_handle(dissect_E2setupFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_E2setup, create_dissector_handle(dissect_E2setupRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_E2setup, create_dissector_handle(dissect_E2setupResponse_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_ErrorIndication, create_dissector_handle(dissect_ErrorIndication_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_Reset, create_dissector_handle(dissect_ResetRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_Reset, create_dissector_handle(dissect_ResetResponse_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_RICcontrol, create_dissector_handle(dissect_RICcontrolAcknowledge_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.uout", id_RICcontrol, create_dissector_handle(dissect_RICcontrolFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_RICcontrol, create_dissector_handle(dissect_RICcontrolRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_RICindication, create_dissector_handle(dissect_RICindication_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_RICserviceQuery, create_dissector_handle(dissect_RICserviceQuery_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_RICserviceUpdate, create_dissector_handle(dissect_RICserviceUpdate_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_RICserviceUpdate, create_dissector_handle(dissect_RICserviceUpdateAcknowledge_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.uout", id_RICserviceUpdate, create_dissector_handle(dissect_RICserviceUpdateFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.uout", id_RICsubscription, create_dissector_handle(dissect_RICsubscriptionFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_RICsubscription, create_dissector_handle(dissect_RICsubscriptionRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_RICsubscription, create_dissector_handle(dissect_RICsubscriptionResponse_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.uout", id_RICsubscriptionDelete, create_dissector_handle(dissect_RICsubscriptionDeleteFailure_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.imsg", id_RICsubscriptionDelete, create_dissector_handle(dissect_RICsubscriptionDeleteRequest_PDU, proto_e2ap)); dissector_add_uint("e2ap.proc.sout", id_RICsubscriptionDelete, create_dissector_handle(dissect_RICsubscriptionDeleteResponse_PDU, proto_e2ap)); /*--- End of included file: packet-e2ap-dis-tab.c ---*/ #line 211 "./asn1/e2ap/packet-e2ap-template.c" } else { if (SctpPort != 0) { dissector_delete_uint("sctp.port", SctpPort, e2ap_handle); } } SctpPort=gbl_e2apSctpPort; if (SctpPort != 0) { dissector_add_uint("sctp.port", SctpPort, e2ap_handle); } } /*--- proto_register_e2ap -------------------------------------------*/ void proto_register_e2ap(void) { /* List of fields */ static hf_register_info hf[] = { /*--- Included file: packet-e2ap-hfarr.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-hfarr.c" { &hf_e2ap_Cause_PDU, { "Cause", "e2ap.Cause", FT_UINT32, BASE_DEC, VALS(e2ap_Cause_vals), 0, NULL, HFILL }}, { &hf_e2ap_CriticalityDiagnostics_PDU, { "CriticalityDiagnostics", "e2ap.CriticalityDiagnostics_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_GlobalE2node_ID_PDU, { "GlobalE2node-ID", "e2ap.GlobalE2node_ID", FT_UINT32, BASE_DEC, VALS(e2ap_GlobalE2node_ID_vals), 0, NULL, HFILL }}, { &hf_e2ap_GlobalRIC_ID_PDU, { "GlobalRIC-ID", "e2ap.GlobalRIC_ID_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctionID_PDU, { "RANfunctionID", "e2ap.RANfunctionID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICactionID_PDU, { "RICactionID", "e2ap.RICactionID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcallProcessID_PDU, { "RICcallProcessID", "e2ap.RICcallProcessID", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolAckRequest_PDU, { "RICcontrolAckRequest", "e2ap.RICcontrolAckRequest", FT_UINT32, BASE_DEC, VALS(e2ap_RICcontrolAckRequest_vals), 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolHeader_PDU, { "RICcontrolHeader", "e2ap.RICcontrolHeader", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolMessage_PDU, { "RICcontrolMessage", "e2ap.RICcontrolMessage", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolOutcome_PDU, { "RICcontrolOutcome", "e2ap.RICcontrolOutcome", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolStatus_PDU, { "RICcontrolStatus", "e2ap.RICcontrolStatus", FT_UINT32, BASE_DEC, VALS(e2ap_RICcontrolStatus_vals), 0, NULL, HFILL }}, { &hf_e2ap_RICindicationHeader_PDU, { "RICindicationHeader", "e2ap.RICindicationHeader", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICindicationMessage_PDU, { "RICindicationMessage", "e2ap.RICindicationMessage", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICindicationSN_PDU, { "RICindicationSN", "e2ap.RICindicationSN", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICindicationType_PDU, { "RICindicationType", "e2ap.RICindicationType", FT_UINT32, BASE_DEC, VALS(e2ap_RICindicationType_vals), 0, NULL, HFILL }}, { &hf_e2ap_RICrequestID_PDU, { "RICrequestID", "e2ap.RICrequestID_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_TimeToWait_PDU, { "TimeToWait", "e2ap.TimeToWait", FT_UINT32, BASE_DEC, VALS(e2ap_TimeToWait_vals), 0, NULL, HFILL }}, { &hf_e2ap_RICsubscriptionRequest_PDU, { "RICsubscriptionRequest", "e2ap.RICsubscriptionRequest_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICsubscriptionDetails_PDU, { "RICsubscriptionDetails", "e2ap.RICsubscriptionDetails_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICaction_ToBeSetup_Item_PDU, { "RICaction-ToBeSetup-Item", "e2ap.RICaction_ToBeSetup_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICsubscriptionResponse_PDU, { "RICsubscriptionResponse", "e2ap.RICsubscriptionResponse_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICaction_Admitted_List_PDU, { "RICaction-Admitted-List", "e2ap.RICaction_Admitted_List", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICaction_Admitted_Item_PDU, { "RICaction-Admitted-Item", "e2ap.RICaction_Admitted_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICaction_NotAdmitted_List_PDU, { "RICaction-NotAdmitted-List", "e2ap.RICaction_NotAdmitted_List", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICaction_NotAdmitted_Item_PDU, { "RICaction-NotAdmitted-Item", "e2ap.RICaction_NotAdmitted_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICsubscriptionFailure_PDU, { "RICsubscriptionFailure", "e2ap.RICsubscriptionFailure_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICsubscriptionDeleteRequest_PDU, { "RICsubscriptionDeleteRequest", "e2ap.RICsubscriptionDeleteRequest_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICsubscriptionDeleteResponse_PDU, { "RICsubscriptionDeleteResponse", "e2ap.RICsubscriptionDeleteResponse_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICsubscriptionDeleteFailure_PDU, { "RICsubscriptionDeleteFailure", "e2ap.RICsubscriptionDeleteFailure_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICindication_PDU, { "RICindication", "e2ap.RICindication_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolRequest_PDU, { "RICcontrolRequest", "e2ap.RICcontrolRequest_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolAcknowledge_PDU, { "RICcontrolAcknowledge", "e2ap.RICcontrolAcknowledge_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICcontrolFailure_PDU, { "RICcontrolFailure", "e2ap.RICcontrolFailure_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ErrorIndication_PDU, { "ErrorIndication", "e2ap.ErrorIndication_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2setupRequest_PDU, { "E2setupRequest", "e2ap.E2setupRequest_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2setupResponse_PDU, { "E2setupResponse", "e2ap.E2setupResponse_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2setupFailure_PDU, { "E2setupFailure", "e2ap.E2setupFailure_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ResetRequest_PDU, { "ResetRequest", "e2ap.ResetRequest_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ResetResponse_PDU, { "ResetResponse", "e2ap.ResetResponse_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICserviceUpdate_PDU, { "RICserviceUpdate", "e2ap.RICserviceUpdate_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctions_List_PDU, { "RANfunctions-List", "e2ap.RANfunctions_List", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunction_Item_PDU, { "RANfunction-Item", "e2ap.RANfunction_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctionsID_List_PDU, { "RANfunctionsID-List", "e2ap.RANfunctionsID_List", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctionID_Item_PDU, { "RANfunctionID-Item", "e2ap.RANfunctionID_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICserviceUpdateAcknowledge_PDU, { "RICserviceUpdateAcknowledge", "e2ap.RICserviceUpdateAcknowledge_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctionsIDcause_List_PDU, { "RANfunctionsIDcause-List", "e2ap.RANfunctionsIDcause_List", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctionIDcause_Item_PDU, { "RANfunctionIDcause-Item", "e2ap.RANfunctionIDcause_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICserviceUpdateFailure_PDU, { "RICserviceUpdateFailure", "e2ap.RICserviceUpdateFailure_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICserviceQuery_PDU, { "RICserviceQuery", "e2ap.RICserviceQuery_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2AP_PDU_PDU, { "E2AP-PDU", "e2ap.E2AP_PDU", FT_UINT32, BASE_DEC, VALS(e2ap_E2AP_PDU_vals), 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_EventTriggerDefinition_PDU, { "E2SM-KPM-EventTriggerDefinition", "e2ap.E2SM_KPM_EventTriggerDefinition", FT_UINT32, BASE_DEC, VALS(e2ap_E2SM_KPM_EventTriggerDefinition_vals), 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_ActionDefinition_PDU, { "E2SM-KPM-ActionDefinition", "e2ap.E2SM_KPM_ActionDefinition_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_IndicationHeader_PDU, { "E2SM-KPM-IndicationHeader", "e2ap.E2SM_KPM_IndicationHeader", FT_UINT32, BASE_DEC, VALS(e2ap_E2SM_KPM_IndicationHeader_vals), 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_IndicationMessage_Format1_PDU, { "E2SM-KPM-IndicationMessage-Format1", "e2ap.E2SM_KPM_IndicationMessage_Format1_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_E2SM_KPM_RANfunction_Description_PDU, { "E2SM-KPM-RANfunction-Description", "e2ap.E2SM_KPM_RANfunction_Description_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANcallProcess_ID_string_PDU, { "RANcallProcess-ID-string", "e2ap.RANcallProcess_ID_string", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ProtocolIE_Container_item, { "ProtocolIE-Field", "e2ap.ProtocolIE_Field_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_id, { "id", "e2ap.id", FT_UINT32, BASE_DEC|BASE_EXT_STRING, &e2ap_ProtocolIE_ID_vals_ext, 0, "ProtocolIE_ID", HFILL }}, { &hf_e2ap_criticality, { "criticality", "e2ap.criticality", FT_UINT32, BASE_DEC, VALS(e2ap_Criticality_vals), 0, NULL, HFILL }}, { &hf_e2ap_value, { "value", "e2ap.value_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ricRequest, { "ricRequest", "e2ap.ricRequest", FT_UINT32, BASE_DEC, VALS(e2ap_CauseRIC_vals), 0, "CauseRIC", HFILL }}, { &hf_e2ap_ricService, { "ricService", "e2ap.ricService", FT_UINT32, BASE_DEC, VALS(e2ap_CauseRICservice_vals), 0, "CauseRICservice", HFILL }}, { &hf_e2ap_transport, { "transport", "e2ap.transport", FT_UINT32, BASE_DEC, VALS(e2ap_CauseTransport_vals), 0, "CauseTransport", HFILL }}, { &hf_e2ap_protocol, { "protocol", "e2ap.protocol", FT_UINT32, BASE_DEC, VALS(e2ap_CauseProtocol_vals), 0, "CauseProtocol", HFILL }}, { &hf_e2ap_misc, { "misc", "e2ap.misc", FT_UINT32, BASE_DEC, VALS(e2ap_CauseMisc_vals), 0, "CauseMisc", HFILL }}, { &hf_e2ap_procedureCode, { "procedureCode", "e2ap.procedureCode", FT_UINT32, BASE_DEC|BASE_EXT_STRING, &e2ap_ProcedureCode_vals_ext, 0, NULL, HFILL }}, { &hf_e2ap_triggeringMessage, { "triggeringMessage", "e2ap.triggeringMessage", FT_UINT32, BASE_DEC, VALS(e2ap_TriggeringMessage_vals), 0, NULL, HFILL }}, { &hf_e2ap_procedureCriticality, { "procedureCriticality", "e2ap.procedureCriticality", FT_UINT32, BASE_DEC, VALS(e2ap_Criticality_vals), 0, "Criticality", HFILL }}, { &hf_e2ap_ricRequestorID, { "ricRequestorID", "e2ap.ricRequestorID_element", FT_NONE, BASE_NONE, NULL, 0, "RICrequestID", HFILL }}, { &hf_e2ap_iEsCriticalityDiagnostics, { "iEsCriticalityDiagnostics", "e2ap.iEsCriticalityDiagnostics", FT_UINT32, BASE_DEC, NULL, 0, "CriticalityDiagnostics_IE_List", HFILL }}, { &hf_e2ap_CriticalityDiagnostics_IE_List_item, { "CriticalityDiagnostics-IE-Item", "e2ap.CriticalityDiagnostics_IE_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_iECriticality, { "iECriticality", "e2ap.iECriticality", FT_UINT32, BASE_DEC, VALS(e2ap_Criticality_vals), 0, "Criticality", HFILL }}, { &hf_e2ap_iE_ID, { "iE-ID", "e2ap.iE_ID", FT_UINT32, BASE_DEC|BASE_EXT_STRING, &e2ap_ProtocolIE_ID_vals_ext, 0, "ProtocolIE_ID", HFILL }}, { &hf_e2ap_typeOfError, { "typeOfError", "e2ap.typeOfError", FT_UINT32, BASE_DEC, VALS(e2ap_TypeOfError_vals), 0, NULL, HFILL }}, { &hf_e2ap_macro_eNB_ID, { "macro-eNB-ID", "e2ap.macro_eNB_ID", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_20", HFILL }}, { &hf_e2ap_home_eNB_ID, { "home-eNB-ID", "e2ap.home_eNB_ID", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_28", HFILL }}, { &hf_e2ap_short_Macro_eNB_ID, { "short-Macro-eNB-ID", "e2ap.short_Macro_eNB_ID", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_18", HFILL }}, { &hf_e2ap_long_Macro_eNB_ID, { "long-Macro-eNB-ID", "e2ap.long_Macro_eNB_ID", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_21", HFILL }}, { &hf_e2ap_enb_ID_macro, { "enb-ID-macro", "e2ap.enb_ID_macro", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_20", HFILL }}, { &hf_e2ap_enb_ID_shortmacro, { "enb-ID-shortmacro", "e2ap.enb_ID_shortmacro", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_18", HFILL }}, { &hf_e2ap_enb_ID_longmacro, { "enb-ID-longmacro", "e2ap.enb_ID_longmacro", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_21", HFILL }}, { &hf_e2ap_gNB_ID, { "gNB-ID", "e2ap.gNB_ID", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_22_32", HFILL }}, { &hf_e2ap_gNB, { "gNB", "e2ap.gNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalE2node_gNB_ID", HFILL }}, { &hf_e2ap_en_gNB, { "en-gNB", "e2ap.en_gNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalE2node_en_gNB_ID", HFILL }}, { &hf_e2ap_ng_eNB, { "ng-eNB", "e2ap.ng_eNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalE2node_ng_eNB_ID", HFILL }}, { &hf_e2ap_eNB, { "eNB", "e2ap.eNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalE2node_eNB_ID", HFILL }}, { &hf_e2ap_global_gNB_ID, { "global-gNB-ID", "e2ap.global_gNB_ID_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalenGNB_ID", HFILL }}, { &hf_e2ap_global_eNB_ID, { "global-eNB-ID", "e2ap.global_eNB_ID_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalENB_ID", HFILL }}, { &hf_e2ap_global_gNB_ID_01, { "global-gNB-ID", "e2ap.global_gNB_ID_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalgNB_ID", HFILL }}, { &hf_e2ap_gNB_CU_UP_ID, { "gNB-CU-UP-ID", "e2ap.gNB_CU_UP_ID", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_gNB_DU_ID, { "gNB-DU-ID", "e2ap.gNB_DU_ID", FT_UINT64, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_global_ng_eNB_ID, { "global-ng-eNB-ID", "e2ap.global_ng_eNB_ID_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalngeNB_ID", HFILL }}, { &hf_e2ap_pLMN_Identity, { "pLMN-Identity", "e2ap.pLMN_Identity", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_eNB_ID, { "eNB-ID", "e2ap.eNB_ID", FT_UINT32, BASE_DEC, VALS(e2ap_ENB_ID_vals), 0, NULL, HFILL }}, { &hf_e2ap_gNB_ID_01, { "gNB-ID", "e2ap.gNB_ID", FT_UINT32, BASE_DEC, VALS(e2ap_ENGNB_ID_vals), 0, "ENGNB_ID", HFILL }}, { &hf_e2ap_plmn_id, { "plmn-id", "e2ap.plmn_id", FT_BYTES, BASE_NONE, NULL, 0, "PLMN_Identity", HFILL }}, { &hf_e2ap_gnb_id, { "gnb-id", "e2ap.gnb_id", FT_UINT32, BASE_DEC, VALS(e2ap_GNB_ID_Choice_vals), 0, "GNB_ID_Choice", HFILL }}, { &hf_e2ap_enb_id, { "enb-id", "e2ap.enb_id", FT_UINT32, BASE_DEC, VALS(e2ap_ENB_ID_Choice_vals), 0, "ENB_ID_Choice", HFILL }}, { &hf_e2ap_ric_ID, { "ric-ID", "e2ap.ric_ID", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_20", HFILL }}, { &hf_e2ap_gnb_ID, { "gnb-ID", "e2ap.gnb_ID", FT_BYTES, BASE_NONE, NULL, 0, "BIT_STRING_SIZE_22_32", HFILL }}, { &hf_e2ap_ricRequestorID_01, { "ricRequestorID", "e2ap.ricRequestorID", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_65535", HFILL }}, { &hf_e2ap_ricInstanceID, { "ricInstanceID", "e2ap.ricInstanceID", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_65535", HFILL }}, { &hf_e2ap_ricSubsequentActionType, { "ricSubsequentActionType", "e2ap.ricSubsequentActionType", FT_UINT32, BASE_DEC, VALS(e2ap_RICsubsequentActionType_vals), 0, NULL, HFILL }}, { &hf_e2ap_ricTimeToWait, { "ricTimeToWait", "e2ap.ricTimeToWait", FT_UINT32, BASE_DEC, VALS(e2ap_RICtimeToWait_vals), 0, NULL, HFILL }}, { &hf_e2ap_protocolIEs, { "protocolIEs", "e2ap.protocolIEs", FT_UINT32, BASE_DEC, NULL, 0, "ProtocolIE_Container", HFILL }}, { &hf_e2ap_ricEventTriggerDefinition, { "ricEventTriggerDefinition", "e2ap.ricEventTriggerDefinition", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ricAction_ToBeSetup_List, { "ricAction-ToBeSetup-List", "e2ap.ricAction_ToBeSetup_List", FT_UINT32, BASE_DEC, NULL, 0, "RICactions_ToBeSetup_List", HFILL }}, { &hf_e2ap_RICactions_ToBeSetup_List_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ricActionID, { "ricActionID", "e2ap.ricActionID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ricActionType, { "ricActionType", "e2ap.ricActionType", FT_UINT32, BASE_DEC, VALS(e2ap_RICactionType_vals), 0, NULL, HFILL }}, { &hf_e2ap_ricActionDefinition, { "ricActionDefinition", "e2ap.ricActionDefinition", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ricSubsequentAction, { "ricSubsequentAction", "e2ap.ricSubsequentAction_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICaction_Admitted_List_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RICaction_NotAdmitted_List_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_cause, { "cause", "e2ap.cause", FT_UINT32, BASE_DEC, VALS(e2ap_Cause_vals), 0, NULL, HFILL }}, { &hf_e2ap_RANfunctions_List_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ranFunctionID, { "ranFunctionID", "e2ap.ranFunctionID", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ranFunctionDefinition, { "ranFunctionDefinition", "e2ap.ranFunctionDefinition", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ranFunctionRevision, { "ranFunctionRevision", "e2ap.ranFunctionRevision", FT_UINT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctionsID_List_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_RANfunctionsIDcause_List_item, { "ProtocolIE-SingleContainer", "e2ap.ProtocolIE_SingleContainer_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_initiatingMessage, { "initiatingMessage", "e2ap.initiatingMessage_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_successfulOutcome, { "successfulOutcome", "e2ap.successfulOutcome_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_unsuccessfulOutcome, { "unsuccessfulOutcome", "e2ap.unsuccessfulOutcome_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_initiatingMessagevalue, { "value", "e2ap.value_element", FT_NONE, BASE_NONE, NULL, 0, "InitiatingMessage_value", HFILL }}, { &hf_e2ap_successfulOutcome_value, { "value", "e2ap.value_element", FT_NONE, BASE_NONE, NULL, 0, "SuccessfulOutcome_value", HFILL }}, { &hf_e2ap_unsuccessfulOutcome_value, { "value", "e2ap.value_element", FT_NONE, BASE_NONE, NULL, 0, "UnsuccessfulOutcome_value", HFILL }}, { &hf_e2ap_gNB_01, { "gNB", "e2ap.gNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalKPMnode_gNB_ID", HFILL }}, { &hf_e2ap_en_gNB_01, { "en-gNB", "e2ap.en_gNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalKPMnode_en_gNB_ID", HFILL }}, { &hf_e2ap_ng_eNB_01, { "ng-eNB", "e2ap.ng_eNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalKPMnode_ng_eNB_ID", HFILL }}, { &hf_e2ap_eNB_01, { "eNB", "e2ap.eNB_element", FT_NONE, BASE_NONE, NULL, 0, "GlobalKPMnode_eNB_ID", HFILL }}, { &hf_e2ap_nRCellIdentity, { "nRCellIdentity", "e2ap.nRCellIdentity", FT_BYTES, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_sST, { "sST", "e2ap.sST", FT_BYTES, BASE_NONE, NULL, 0, "OCTET_STRING_SIZE_1", HFILL }}, { &hf_e2ap_sD, { "sD", "e2ap.sD", FT_BYTES, BASE_NONE, NULL, 0, "OCTET_STRING_SIZE_3", HFILL }}, { &hf_e2ap_eventDefinition_Format1, { "eventDefinition-Format1", "e2ap.eventDefinition_Format1_element", FT_NONE, BASE_NONE, NULL, 0, "E2SM_KPM_EventTriggerDefinition_Format1", HFILL }}, { &hf_e2ap_policyTest_List, { "policyTest-List", "e2ap.policyTest_List", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item", HFILL }}, { &hf_e2ap_policyTest_List_item, { "Trigger-ConditionIE-Item", "e2ap.Trigger_ConditionIE_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ric_Style_Type, { "ric-Style-Type", "e2ap.ric_Style_Type", FT_INT32, BASE_DEC, NULL, 0, NULL, HFILL }}, { &hf_e2ap_indicationHeader_Format1, { "indicationHeader-Format1", "e2ap.indicationHeader_Format1_element", FT_NONE, BASE_NONE, NULL, 0, "E2SM_KPM_IndicationHeader_Format1", HFILL }}, { &hf_e2ap_id_GlobalKPMnode_ID, { "id-GlobalKPMnode-ID", "e2ap.id_GlobalKPMnode_ID", FT_UINT32, BASE_DEC, VALS(e2ap_GlobalKPMnode_ID_vals), 0, "GlobalKPMnode_ID", HFILL }}, { &hf_e2ap_nRCGI, { "nRCGI", "e2ap.nRCGI_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_sliceID, { "sliceID", "e2ap.sliceID_element", FT_NONE, BASE_NONE, NULL, 0, "SNSSAI", HFILL }}, { &hf_e2ap_fiveQI, { "fiveQI", "e2ap.fiveQI", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_255", HFILL }}, { &hf_e2ap_qci, { "qci", "e2ap.qci", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_255", HFILL }}, { &hf_e2ap_pm_Containers, { "pm-Containers", "e2ap.pm_Containers", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List", HFILL }}, { &hf_e2ap_pm_Containers_item, { "PM-Containers-List", "e2ap.PM_Containers_List_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_performanceContainer, { "performanceContainer", "e2ap.performanceContainer", FT_UINT32, BASE_DEC, VALS(e2ap_PF_Container_vals), 0, "PF_Container", HFILL }}, { &hf_e2ap_theRANContainer, { "theRANContainer", "e2ap.theRANContainer", FT_BYTES, BASE_NONE, NULL, 0, "RAN_Container", HFILL }}, { &hf_e2ap_ranFunction_Name, { "ranFunction-Name", "e2ap.ranFunction_Name_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_e2SM_KPM_RANfunction_Item, { "e2SM-KPM-RANfunction-Item", "e2ap.e2SM_KPM_RANfunction_Item_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ric_EventTriggerStyle_List, { "ric-EventTriggerStyle-List", "e2ap.ric_EventTriggerStyle_List", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List", HFILL }}, { &hf_e2ap_ric_EventTriggerStyle_List_item, { "RIC-EventTriggerStyle-List", "e2ap.RIC_EventTriggerStyle_List_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_ric_ReportStyle_List, { "ric-ReportStyle-List", "e2ap.ric_ReportStyle_List", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List", HFILL }}, { &hf_e2ap_ric_ReportStyle_List_item, { "RIC-ReportStyle-List", "e2ap.RIC_ReportStyle_List_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_report_Period_IE, { "report-Period-IE", "e2ap.report_Period_IE", FT_UINT32, BASE_DEC, VALS(e2ap_RT_Period_IE_vals), 0, "RT_Period_IE", HFILL }}, { &hf_e2ap_ranFunction_ShortName, { "ranFunction-ShortName", "e2ap.ranFunction_ShortName", FT_STRING, BASE_NONE, NULL, 0, "PrintableString_SIZE_1_150_", HFILL }}, { &hf_e2ap_ranFunction_E2SM_OID, { "ranFunction-E2SM-OID", "e2ap.ranFunction_E2SM_OID", FT_STRING, BASE_NONE, NULL, 0, "PrintableString_SIZE_1_1000_", HFILL }}, { &hf_e2ap_ranFunction_Description, { "ranFunction-Description", "e2ap.ranFunction_Description", FT_STRING, BASE_NONE, NULL, 0, "PrintableString_SIZE_1_150_", HFILL }}, { &hf_e2ap_ranFunction_Instance, { "ranFunction-Instance", "e2ap.ranFunction_Instance", FT_INT32, BASE_DEC, NULL, 0, "INTEGER", HFILL }}, { &hf_e2ap_ric_EventTriggerStyle_Type, { "ric-EventTriggerStyle-Type", "e2ap.ric_EventTriggerStyle_Type", FT_INT32, BASE_DEC, NULL, 0, "RIC_Style_Type", HFILL }}, { &hf_e2ap_ric_EventTriggerStyle_Name, { "ric-EventTriggerStyle-Name", "e2ap.ric_EventTriggerStyle_Name", FT_STRING, BASE_NONE, NULL, 0, "RIC_Style_Name", HFILL }}, { &hf_e2ap_ric_EventTriggerFormat_Type, { "ric-EventTriggerFormat-Type", "e2ap.ric_EventTriggerFormat_Type", FT_INT32, BASE_DEC, NULL, 0, "RIC_Format_Type", HFILL }}, { &hf_e2ap_ric_ReportStyle_Type, { "ric-ReportStyle-Type", "e2ap.ric_ReportStyle_Type", FT_INT32, BASE_DEC, NULL, 0, "RIC_Style_Type", HFILL }}, { &hf_e2ap_ric_ReportStyle_Name, { "ric-ReportStyle-Name", "e2ap.ric_ReportStyle_Name", FT_STRING, BASE_NONE, NULL, 0, "RIC_Style_Name", HFILL }}, { &hf_e2ap_ric_IndicationHeaderFormat_Type, { "ric-IndicationHeaderFormat-Type", "e2ap.ric_IndicationHeaderFormat_Type", FT_INT32, BASE_DEC, NULL, 0, "RIC_Format_Type", HFILL }}, { &hf_e2ap_ric_IndicationMessageFormat_Type, { "ric-IndicationMessageFormat-Type", "e2ap.ric_IndicationMessageFormat_Type", FT_INT32, BASE_DEC, NULL, 0, "RIC_Format_Type", HFILL }}, { &hf_e2ap_oDU, { "oDU", "e2ap.oDU_element", FT_NONE, BASE_NONE, NULL, 0, "ODU_PF_Container", HFILL }}, { &hf_e2ap_oCU_CP, { "oCU-CP", "e2ap.oCU_CP_element", FT_NONE, BASE_NONE, NULL, 0, "OCUCP_PF_Container", HFILL }}, { &hf_e2ap_oCU_UP, { "oCU-UP", "e2ap.oCU_UP_element", FT_NONE, BASE_NONE, NULL, 0, "OCUUP_PF_Container", HFILL }}, { &hf_e2ap_cellResourceReportList, { "cellResourceReportList", "e2ap.cellResourceReportList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem", HFILL }}, { &hf_e2ap_cellResourceReportList_item, { "CellResourceReportListItem", "e2ap.CellResourceReportListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_dl_TotalofAvailablePRBs, { "dl-TotalofAvailablePRBs", "e2ap.dl_TotalofAvailablePRBs", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_273", HFILL }}, { &hf_e2ap_ul_TotalofAvailablePRBs, { "ul-TotalofAvailablePRBs", "e2ap.ul_TotalofAvailablePRBs", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_273", HFILL }}, { &hf_e2ap_servedPlmnPerCellList, { "servedPlmnPerCellList", "e2ap.servedPlmnPerCellList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem", HFILL }}, { &hf_e2ap_servedPlmnPerCellList_item, { "ServedPlmnPerCellListItem", "e2ap.ServedPlmnPerCellListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_du_PM_5GC, { "du-PM-5GC", "e2ap.du_PM_5GC_element", FT_NONE, BASE_NONE, NULL, 0, "FGC_DU_PM_Container", HFILL }}, { &hf_e2ap_du_PM_EPC, { "du-PM-EPC", "e2ap.du_PM_EPC_element", FT_NONE, BASE_NONE, NULL, 0, "EPC_DU_PM_Container", HFILL }}, { &hf_e2ap_slicePerPlmnPerCellList, { "slicePerPlmnPerCellList", "e2ap.slicePerPlmnPerCellList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem", HFILL }}, { &hf_e2ap_slicePerPlmnPerCellList_item, { "SlicePerPlmnPerCellListItem", "e2ap.SlicePerPlmnPerCellListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList, { "fQIPERSlicesPerPlmnPerCellList", "e2ap.fQIPERSlicesPerPlmnPerCellList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem", HFILL }}, { &hf_e2ap_fQIPERSlicesPerPlmnPerCellList_item, { "FQIPERSlicesPerPlmnPerCellListItem", "e2ap.FQIPERSlicesPerPlmnPerCellListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_dl_PRBUsage, { "dl-PRBUsage", "e2ap.dl_PRBUsage", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_273", HFILL }}, { &hf_e2ap_ul_PRBUsage, { "ul-PRBUsage", "e2ap.ul_PRBUsage", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_273", HFILL }}, { &hf_e2ap_perQCIReportList, { "perQCIReportList", "e2ap.perQCIReportList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem", HFILL }}, { &hf_e2ap_perQCIReportList_item, { "PerQCIReportListItem", "e2ap.PerQCIReportListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_dl_PRBUsage_01, { "dl-PRBUsage", "e2ap.dl_PRBUsage", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_100", HFILL }}, { &hf_e2ap_ul_PRBUsage_01, { "ul-PRBUsage", "e2ap.ul_PRBUsage", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_0_100", HFILL }}, { &hf_e2ap_gNB_CU_CP_Name, { "gNB-CU-CP-Name", "e2ap.gNB_CU_CP_Name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_cu_CP_Resource_Status, { "cu-CP-Resource-Status", "e2ap.cu_CP_Resource_Status_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_numberOfActive_UEs, { "numberOfActive-UEs", "e2ap.numberOfActive_UEs", FT_UINT32, BASE_DEC, NULL, 0, "INTEGER_1_65536_", HFILL }}, { &hf_e2ap_gNB_CU_UP_Name, { "gNB-CU-UP-Name", "e2ap.gNB_CU_UP_Name", FT_STRING, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_pf_ContainerList, { "pf-ContainerList", "e2ap.pf_ContainerList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem", HFILL }}, { &hf_e2ap_pf_ContainerList_item, { "PF-ContainerListItem", "e2ap.PF_ContainerListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_interface_type, { "interface-type", "e2ap.interface_type", FT_UINT32, BASE_DEC, VALS(e2ap_NI_Type_vals), 0, "NI_Type", HFILL }}, { &hf_e2ap_o_CU_UP_PM_Container, { "o-CU-UP-PM-Container", "e2ap.o_CU_UP_PM_Container_element", FT_NONE, BASE_NONE, NULL, 0, "CUUPMeasurement_Container", HFILL }}, { &hf_e2ap_plmnList, { "plmnList", "e2ap.plmnList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List", HFILL }}, { &hf_e2ap_plmnList_item, { "PlmnID-List", "e2ap.PlmnID_List_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_cu_UP_PM_5GC, { "cu-UP-PM-5GC", "e2ap.cu_UP_PM_5GC_element", FT_NONE, BASE_NONE, NULL, 0, "FGC_CUUP_PM_Format", HFILL }}, { &hf_e2ap_cu_UP_PM_EPC, { "cu-UP-PM-EPC", "e2ap.cu_UP_PM_EPC_element", FT_NONE, BASE_NONE, NULL, 0, "EPC_CUUP_PM_Format", HFILL }}, { &hf_e2ap_sliceToReportList, { "sliceToReportList", "e2ap.sliceToReportList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem", HFILL }}, { &hf_e2ap_sliceToReportList_item, { "SliceToReportListItem", "e2ap.SliceToReportListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_fQIPERSlicesPerPlmnList, { "fQIPERSlicesPerPlmnList", "e2ap.fQIPERSlicesPerPlmnList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem", HFILL }}, { &hf_e2ap_fQIPERSlicesPerPlmnList_item, { "FQIPERSlicesPerPlmnListItem", "e2ap.FQIPERSlicesPerPlmnListItem_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, { &hf_e2ap_pDCPBytesDL, { "pDCPBytesDL", "e2ap.pDCPBytesDL", FT_UINT64, BASE_DEC, NULL, 0, "INTEGER_0_10000000000_", HFILL }}, { &hf_e2ap_pDCPBytesUL, { "pDCPBytesUL", "e2ap.pDCPBytesUL", FT_UINT64, BASE_DEC, NULL, 0, "INTEGER_0_10000000000_", HFILL }}, { &hf_e2ap_perQCIReportList_01, { "perQCIReportList", "e2ap.perQCIReportList", FT_UINT32, BASE_DEC, NULL, 0, "SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat", HFILL }}, { &hf_e2ap_perQCIReportList_item_01, { "PerQCIReportListItemFormat", "e2ap.PerQCIReportListItemFormat_element", FT_NONE, BASE_NONE, NULL, 0, NULL, HFILL }}, /*--- End of included file: packet-e2ap-hfarr.c ---*/ #line 231 "./asn1/e2ap/packet-e2ap-template.c" }; /* List of subtrees */ static gint *ett[] = { &ett_e2ap, /*--- Included file: packet-e2ap-ettarr.c ---*/ #line 1 "./asn1/e2ap/packet-e2ap-ettarr.c" &ett_e2ap_ProtocolIE_Container, &ett_e2ap_ProtocolIE_Field, &ett_e2ap_Cause, &ett_e2ap_CriticalityDiagnostics, &ett_e2ap_CriticalityDiagnostics_IE_List, &ett_e2ap_CriticalityDiagnostics_IE_Item, &ett_e2ap_ENB_ID, &ett_e2ap_ENB_ID_Choice, &ett_e2ap_ENGNB_ID, &ett_e2ap_GlobalE2node_ID, &ett_e2ap_GlobalE2node_en_gNB_ID, &ett_e2ap_GlobalE2node_eNB_ID, &ett_e2ap_GlobalE2node_gNB_ID, &ett_e2ap_GlobalE2node_ng_eNB_ID, &ett_e2ap_GlobalENB_ID, &ett_e2ap_GlobalenGNB_ID, &ett_e2ap_GlobalgNB_ID, &ett_e2ap_GlobalngeNB_ID, &ett_e2ap_GlobalRIC_ID, &ett_e2ap_GNB_ID_Choice, &ett_e2ap_RICrequestID, &ett_e2ap_RICsubsequentAction, &ett_e2ap_RICsubscriptionRequest, &ett_e2ap_RICsubscriptionDetails, &ett_e2ap_RICactions_ToBeSetup_List, &ett_e2ap_RICaction_ToBeSetup_Item, &ett_e2ap_RICsubscriptionResponse, &ett_e2ap_RICaction_Admitted_List, &ett_e2ap_RICaction_Admitted_Item, &ett_e2ap_RICaction_NotAdmitted_List, &ett_e2ap_RICaction_NotAdmitted_Item, &ett_e2ap_RICsubscriptionFailure, &ett_e2ap_RICsubscriptionDeleteRequest, &ett_e2ap_RICsubscriptionDeleteResponse, &ett_e2ap_RICsubscriptionDeleteFailure, &ett_e2ap_RICindication, &ett_e2ap_RICcontrolRequest, &ett_e2ap_RICcontrolAcknowledge, &ett_e2ap_RICcontrolFailure, &ett_e2ap_ErrorIndication, &ett_e2ap_E2setupRequest, &ett_e2ap_E2setupResponse, &ett_e2ap_E2setupFailure, &ett_e2ap_ResetRequest, &ett_e2ap_ResetResponse, &ett_e2ap_RICserviceUpdate, &ett_e2ap_RANfunctions_List, &ett_e2ap_RANfunction_Item, &ett_e2ap_RANfunctionsID_List, &ett_e2ap_RANfunctionID_Item, &ett_e2ap_RICserviceUpdateAcknowledge, &ett_e2ap_RANfunctionsIDcause_List, &ett_e2ap_RANfunctionIDcause_Item, &ett_e2ap_RICserviceUpdateFailure, &ett_e2ap_RICserviceQuery, &ett_e2ap_E2AP_PDU, &ett_e2ap_InitiatingMessage, &ett_e2ap_SuccessfulOutcome, &ett_e2ap_UnsuccessfulOutcome, &ett_e2ap_GlobalKPMnode_ID, &ett_e2ap_GlobalKPMnode_gNB_ID, &ett_e2ap_GlobalKPMnode_en_gNB_ID, &ett_e2ap_GlobalKPMnode_ng_eNB_ID, &ett_e2ap_GlobalKPMnode_eNB_ID, &ett_e2ap_NRCGI, &ett_e2ap_SNSSAI, &ett_e2ap_E2SM_KPM_EventTriggerDefinition, &ett_e2ap_E2SM_KPM_EventTriggerDefinition_Format1, &ett_e2ap_SEQUENCE_SIZE_1_maxofMessageProtocolTests_OF_Trigger_ConditionIE_Item, &ett_e2ap_E2SM_KPM_ActionDefinition, &ett_e2ap_E2SM_KPM_IndicationHeader, &ett_e2ap_E2SM_KPM_IndicationHeader_Format1, &ett_e2ap_E2SM_KPM_IndicationMessage_Format1, &ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_PM_Containers_List, &ett_e2ap_PM_Containers_List, &ett_e2ap_E2SM_KPM_RANfunction_Description, &ett_e2ap_T_e2SM_KPM_RANfunction_Item, &ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_EventTriggerStyle_List, &ett_e2ap_SEQUENCE_SIZE_1_maxofRICstyles_OF_RIC_ReportStyle_List, &ett_e2ap_Trigger_ConditionIE_Item, &ett_e2ap_RANfunction_Name, &ett_e2ap_RIC_EventTriggerStyle_List, &ett_e2ap_RIC_ReportStyle_List, &ett_e2ap_PF_Container, &ett_e2ap_ODU_PF_Container, &ett_e2ap_SEQUENCE_SIZE_1_maxCellingNBDU_OF_CellResourceReportListItem, &ett_e2ap_CellResourceReportListItem, &ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_ServedPlmnPerCellListItem, &ett_e2ap_ServedPlmnPerCellListItem, &ett_e2ap_FGC_DU_PM_Container, &ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SlicePerPlmnPerCellListItem, &ett_e2ap_SlicePerPlmnPerCellListItem, &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnPerCellListItem, &ett_e2ap_FQIPERSlicesPerPlmnPerCellListItem, &ett_e2ap_EPC_DU_PM_Container, &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItem, &ett_e2ap_PerQCIReportListItem, &ett_e2ap_OCUCP_PF_Container, &ett_e2ap_T_cu_CP_Resource_Status, &ett_e2ap_OCUUP_PF_Container, &ett_e2ap_SEQUENCE_SIZE_1_maxnoofContainerListItems_OF_PF_ContainerListItem, &ett_e2ap_PF_ContainerListItem, &ett_e2ap_CUUPMeasurement_Container, &ett_e2ap_SEQUENCE_SIZE_1_maxPLMN_OF_PlmnID_List, &ett_e2ap_PlmnID_List, &ett_e2ap_FGC_CUUP_PM_Format, &ett_e2ap_SEQUENCE_SIZE_1_maxnoofSliceItems_OF_SliceToReportListItem, &ett_e2ap_SliceToReportListItem, &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQoSFlows_OF_FQIPERSlicesPerPlmnListItem, &ett_e2ap_FQIPERSlicesPerPlmnListItem, &ett_e2ap_EPC_CUUP_PM_Format, &ett_e2ap_SEQUENCE_SIZE_1_maxnoofQCI_OF_PerQCIReportListItemFormat, &ett_e2ap_PerQCIReportListItemFormat, /*--- End of included file: packet-e2ap-ettarr.c ---*/ #line 238 "./asn1/e2ap/packet-e2ap-template.c" }; module_t *e2ap_module; /* Register protocol */ proto_e2ap = proto_register_protocol(PNAME, PSNAME, PFNAME); /* Register fields and subtrees */ proto_register_field_array(proto_e2ap, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); /* Register dissector */ e2ap_handle = register_dissector("e2ap", dissect_e2ap, proto_e2ap); /* Register dissector tables */ e2ap_ies_dissector_table = register_dissector_table("e2ap.ies", "E2AP-PROTOCOL-IES", proto_e2ap, FT_UINT32, BASE_DEC); // e2ap_ies_p1_dissector_table = register_dissector_table("e2ap.ies.pair.first", "E2AP-PROTOCOL-IES-PAIR FirstValue", proto_e2ap, FT_UINT32, BASE_DEC); // e2ap_ies_p2_dissector_table = register_dissector_table("e2ap.ies.pair.second", "E2AP-PROTOCOL-IES-PAIR SecondValue", proto_e2ap, FT_UINT32, BASE_DEC); e2ap_extension_dissector_table = register_dissector_table("e2ap.extension", "E2AP-PROTOCOL-EXTENSION", proto_e2ap, FT_UINT32, BASE_DEC); e2ap_proc_imsg_dissector_table = register_dissector_table("e2ap.proc.imsg", "E2AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_e2ap, FT_UINT32, BASE_DEC); e2ap_proc_sout_dissector_table = register_dissector_table("e2ap.proc.sout", "E2AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_e2ap, FT_UINT32, BASE_DEC); e2ap_proc_uout_dissector_table = register_dissector_table("e2ap.proc.uout", "E2AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_e2ap, FT_UINT32, BASE_DEC); e2ap_n2_ie_type_dissector_table = register_dissector_table("e2ap.n2_ie_type", "E2AP N2 IE Type", proto_e2ap, FT_STRING, FALSE); /* Register configuration options for ports */ e2ap_module = prefs_register_protocol(proto_e2ap, proto_reg_handoff_e2ap); prefs_register_uint_preference(e2ap_module, "sctp.port", "e2ap SCTP Port", "Set the SCTP port for e2ap messages", 10, &gbl_e2apSctpPort); } /* * Editor modelines * * Local Variables: * c-basic-offset: 2 * tab-width: 8 * indent-tabs-mode: nil * End: * * ex: set shiftwidth=2 tabstop=8 expandtab: * :indentSize=2:tabSize=8:noTabs=true: */