1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
4 /* asn2wrs.py -q -L -p kpm-v2 -c ./kpm-v2.cnf -s ./packet-kpm-v2-template -D . -O ../.. e2sm-kpm-v2.02.asn e2sm-v3.01.asn */
6 /* packet-kpm-v2-template.c
7 * Copyright 2021, Martin Mathieson
9 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * SPDX-License-Identifier: GPL-2.0-or-later
15 * References: ORAN-WG3.E2SM-KPM-v02.02
20 #include <epan/packet.h>
21 #include <epan/strutil.h>
22 #include <epan/asn1.h>
23 #include <wsutil/array.h>
25 #include "packet-e2ap.h"
26 #include "packet-per.h"
27 #include "packet-ntp.h"
29 #define PNAME "KPM V2"
30 #define PSNAME "KPMv2"
31 #define PFNAME "kpm-v2"
34 void proto_register_kpm_v2(void);
35 void proto_reg_handoff_kpm_v2(void);
38 #define maxnoofCells 16384
39 #define maxnoofRICStyles 63
40 #define maxnoofMeasurementInfo 65535
41 #define maxnoofLabelInfo 2147483647
42 #define maxnoofMeasurementRecord 65535
43 #define maxnoofMeasurementValue 2147483647
44 #define maxnoofConditionInfo 32768
45 #define maxnoofUEID 65535
46 #define maxnoofConditionInfoPerSub 32768
47 #define maxnoofUEIDPerSub 65535
48 #define maxnoofUEMeasReport 65535
49 #define maxE1APid 65535
51 #define maxEARFCN 65535
52 #define maxNRARFCN 3279165
53 #define maxnoofNrCellBands 32
55 /* Initialize the protocol and registered fields */
56 static int proto_kpm_v2
;
57 static int hf_kpm_v2_E2SM_KPM_EventTriggerDefinition_PDU
; /* E2SM_KPM_EventTriggerDefinition */
58 static int hf_kpm_v2_E2SM_KPM_ActionDefinition_PDU
; /* E2SM_KPM_ActionDefinition */
59 static int hf_kpm_v2_E2SM_KPM_IndicationHeader_PDU
; /* E2SM_KPM_IndicationHeader */
60 static int hf_kpm_v2_E2SM_KPM_IndicationMessage_PDU
; /* E2SM_KPM_IndicationMessage */
61 static int hf_kpm_v2_E2SM_KPM_RANfunction_Description_PDU
; /* E2SM_KPM_RANfunction_Description */
62 static int hf_kpm_v2_measName
; /* MeasurementTypeName */
63 static int hf_kpm_v2_measID
; /* MeasurementTypeID */
64 static int hf_kpm_v2_noLabel
; /* T_noLabel */
65 static int hf_kpm_v2_plmnID
; /* PLMNIdentity */
66 static int hf_kpm_v2_sliceID
; /* S_NSSAI */
67 static int hf_kpm_v2_fiveQI
; /* FiveQI */
68 static int hf_kpm_v2_qFI
; /* QosFlowIdentifier */
69 static int hf_kpm_v2_qCI
; /* QCI */
70 static int hf_kpm_v2_qCImax
; /* QCI */
71 static int hf_kpm_v2_qCImin
; /* QCI */
72 static int hf_kpm_v2_aRPmax
; /* INTEGER_1_15_ */
73 static int hf_kpm_v2_aRPmin
; /* INTEGER_1_15_ */
74 static int hf_kpm_v2_bitrateRange
; /* INTEGER_1_65535_ */
75 static int hf_kpm_v2_layerMU_MIMO
; /* INTEGER_1_65535_ */
76 static int hf_kpm_v2_sUM
; /* T_sUM */
77 static int hf_kpm_v2_distBinX
; /* INTEGER_1_65535_ */
78 static int hf_kpm_v2_distBinY
; /* INTEGER_1_65535_ */
79 static int hf_kpm_v2_distBinZ
; /* INTEGER_1_65535_ */
80 static int hf_kpm_v2_preLabelOverride
; /* T_preLabelOverride */
81 static int hf_kpm_v2_startEndInd
; /* T_startEndInd */
82 static int hf_kpm_v2_min
; /* T_min */
83 static int hf_kpm_v2_max
; /* T_max */
84 static int hf_kpm_v2_avg
; /* T_avg */
85 static int hf_kpm_v2_testType
; /* TestCond_Type */
86 static int hf_kpm_v2_testExpr
; /* TestCond_Expression */
87 static int hf_kpm_v2_testValue
; /* TestCond_Value */
88 static int hf_kpm_v2_gBR
; /* T_gBR */
89 static int hf_kpm_v2_aMBR
; /* T_aMBR */
90 static int hf_kpm_v2_isStat
; /* T_isStat */
91 static int hf_kpm_v2_isCatM
; /* T_isCatM */
92 static int hf_kpm_v2_rSRP
; /* T_rSRP */
93 static int hf_kpm_v2_rSRQ
; /* T_rSRQ */
94 static int hf_kpm_v2_ul_rSRP
; /* T_ul_rSRP */
95 static int hf_kpm_v2_cQI
; /* T_cQI */
96 static int hf_kpm_v2_fiveQI_01
; /* T_fiveQI */
97 static int hf_kpm_v2_qCI_01
; /* T_qCI */
98 static int hf_kpm_v2_sNSSAI
; /* T_sNSSAI */
99 static int hf_kpm_v2_valueInt
; /* INTEGER */
100 static int hf_kpm_v2_valueEnum
; /* INTEGER */
101 static int hf_kpm_v2_valueBool
; /* BOOLEAN */
102 static int hf_kpm_v2_valueBitS
; /* BIT_STRING */
103 static int hf_kpm_v2_valueOctS
; /* OCTET_STRING */
104 static int hf_kpm_v2_valuePrtS
; /* PrintableString */
105 static int hf_kpm_v2_valueReal
; /* REAL */
106 static int hf_kpm_v2_MeasurementInfoList_item
; /* MeasurementInfoItem */
107 static int hf_kpm_v2_measType
; /* MeasurementType */
108 static int hf_kpm_v2_labelInfoList
; /* LabelInfoList */
109 static int hf_kpm_v2_LabelInfoList_item
; /* LabelInfoItem */
110 static int hf_kpm_v2_measLabel
; /* MeasurementLabel */
111 static int hf_kpm_v2_MeasurementData_item
; /* MeasurementDataItem */
112 static int hf_kpm_v2_measRecord
; /* MeasurementRecord */
113 static int hf_kpm_v2_incompleteFlag
; /* T_incompleteFlag */
114 static int hf_kpm_v2_MeasurementRecord_item
; /* MeasurementRecordItem */
115 static int hf_kpm_v2_integer
; /* INTEGER_0_4294967295 */
116 static int hf_kpm_v2_real
; /* REAL */
117 static int hf_kpm_v2_noValue
; /* NULL */
118 static int hf_kpm_v2_MeasurementInfo_Action_List_item
; /* MeasurementInfo_Action_Item */
119 static int hf_kpm_v2_MeasurementCondList_item
; /* MeasurementCondItem */
120 static int hf_kpm_v2_matchingCond
; /* MatchingCondList */
121 static int hf_kpm_v2_MeasurementCondUEidList_item
; /* MeasurementCondUEidItem */
122 static int hf_kpm_v2_matchingUEidList
; /* MatchingUEidList */
123 static int hf_kpm_v2_MatchingCondList_item
; /* MatchingCondItem */
124 static int hf_kpm_v2_testCondInfo
; /* TestCondInfo */
125 static int hf_kpm_v2_MatchingUEidList_item
; /* MatchingUEidItem */
126 static int hf_kpm_v2_ueID
; /* UEID */
127 static int hf_kpm_v2_MatchingUeCondPerSubList_item
; /* MatchingUeCondPerSubItem */
128 static int hf_kpm_v2_MatchingUEidPerSubList_item
; /* MatchingUEidPerSubItem */
129 static int hf_kpm_v2_UEMeasurementReportList_item
; /* UEMeasurementReportItem */
130 static int hf_kpm_v2_measReport
; /* E2SM_KPM_IndicationMessage_Format1 */
131 static int hf_kpm_v2_eventDefinition_formats
; /* T_eventDefinition_formats */
132 static int hf_kpm_v2_eventDefinition_Format1
; /* E2SM_KPM_EventTriggerDefinition_Format1 */
133 static int hf_kpm_v2_reportingPeriod
; /* INTEGER_1_4294967295 */
134 static int hf_kpm_v2_ric_Style_Type
; /* RIC_Style_Type */
135 static int hf_kpm_v2_actionDefinition_formats
; /* T_actionDefinition_formats */
136 static int hf_kpm_v2_actionDefinition_Format1
; /* E2SM_KPM_ActionDefinition_Format1 */
137 static int hf_kpm_v2_actionDefinition_Format2
; /* E2SM_KPM_ActionDefinition_Format2 */
138 static int hf_kpm_v2_actionDefinition_Format3
; /* E2SM_KPM_ActionDefinition_Format3 */
139 static int hf_kpm_v2_actionDefinition_Format4
; /* E2SM_KPM_ActionDefinition_Format4 */
140 static int hf_kpm_v2_actionDefinition_Format5
; /* E2SM_KPM_ActionDefinition_Format5 */
141 static int hf_kpm_v2_measInfoList
; /* MeasurementInfoList */
142 static int hf_kpm_v2_granulPeriod
; /* GranularityPeriod */
143 static int hf_kpm_v2_cellGlobalID
; /* CGI */
144 static int hf_kpm_v2_subscriptInfo
; /* E2SM_KPM_ActionDefinition_Format1 */
145 static int hf_kpm_v2_measCondList
; /* MeasurementCondList */
146 static int hf_kpm_v2_matchingUeCondList
; /* MatchingUeCondPerSubList */
147 static int hf_kpm_v2_subscriptionInfo
; /* E2SM_KPM_ActionDefinition_Format1 */
148 static int hf_kpm_v2_matchingUEidList_01
; /* MatchingUEidPerSubList */
149 static int hf_kpm_v2_indicationHeader_formats
; /* T_indicationHeader_formats */
150 static int hf_kpm_v2_indicationHeader_Format1
; /* E2SM_KPM_IndicationHeader_Format1 */
151 static int hf_kpm_v2_colletStartTime
; /* T_colletStartTime */
152 static int hf_kpm_v2_fileFormatversion
; /* PrintableString_SIZE_0_15_ */
153 static int hf_kpm_v2_senderName
; /* PrintableString_SIZE_0_400_ */
154 static int hf_kpm_v2_senderType
; /* PrintableString_SIZE_0_8_ */
155 static int hf_kpm_v2_vendorName
; /* PrintableString_SIZE_0_32_ */
156 static int hf_kpm_v2_indicationMessage_formats
; /* T_indicationMessage_formats */
157 static int hf_kpm_v2_indicationMessage_Format1
; /* E2SM_KPM_IndicationMessage_Format1 */
158 static int hf_kpm_v2_indicationMessage_Format2
; /* E2SM_KPM_IndicationMessage_Format2 */
159 static int hf_kpm_v2_indicationMessage_Format3
; /* E2SM_KPM_IndicationMessage_Format3 */
160 static int hf_kpm_v2_measData
; /* MeasurementData */
161 static int hf_kpm_v2_measCondUEidList
; /* MeasurementCondUEidList */
162 static int hf_kpm_v2_ueMeasReportList
; /* UEMeasurementReportList */
163 static int hf_kpm_v2_ranFunction_Name
; /* RANfunction_Name */
164 static int hf_kpm_v2_ric_EventTriggerStyle_List
; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item */
165 static int hf_kpm_v2_ric_EventTriggerStyle_List_item
; /* RIC_EventTriggerStyle_Item */
166 static int hf_kpm_v2_ric_ReportStyle_List
; /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item */
167 static int hf_kpm_v2_ric_ReportStyle_List_item
; /* RIC_ReportStyle_Item */
168 static int hf_kpm_v2_ric_EventTriggerStyle_Type
; /* RIC_Style_Type */
169 static int hf_kpm_v2_ric_EventTriggerStyle_Name
; /* RIC_Style_Name */
170 static int hf_kpm_v2_ric_EventTriggerFormat_Type
; /* RIC_Format_Type */
171 static int hf_kpm_v2_ric_ReportStyle_Type
; /* RIC_Style_Type */
172 static int hf_kpm_v2_ric_ReportStyle_Name
; /* RIC_Style_Name */
173 static int hf_kpm_v2_ric_ActionFormat_Type
; /* RIC_Format_Type */
174 static int hf_kpm_v2_measInfo_Action_List
; /* MeasurementInfo_Action_List */
175 static int hf_kpm_v2_ric_IndicationHeaderFormat_Type
; /* RIC_Format_Type */
176 static int hf_kpm_v2_ric_IndicationMessageFormat_Type
; /* RIC_Format_Type */
177 static int hf_kpm_v2_nR_CGI
; /* NR_CGI */
178 static int hf_kpm_v2_eUTRA_CGI
; /* EUTRA_CGI */
179 static int hf_kpm_v2_ranFunction_ShortName
; /* T_ranFunction_ShortName */
180 static int hf_kpm_v2_ranFunction_E2SM_OID
; /* T_ranFunction_E2SM_OID */
181 static int hf_kpm_v2_ranFunction_Description
; /* PrintableString_SIZE_1_150_ */
182 static int hf_kpm_v2_ranFunction_Instance
; /* INTEGER */
183 static int hf_kpm_v2_gNB_UEID
; /* UEID_GNB */
184 static int hf_kpm_v2_gNB_DU_UEID
; /* UEID_GNB_DU */
185 static int hf_kpm_v2_gNB_CU_UP_UEID
; /* UEID_GNB_CU_UP */
186 static int hf_kpm_v2_ng_eNB_UEID
; /* UEID_NG_ENB */
187 static int hf_kpm_v2_ng_eNB_DU_UEID
; /* UEID_NG_ENB_DU */
188 static int hf_kpm_v2_en_gNB_UEID
; /* UEID_EN_GNB */
189 static int hf_kpm_v2_eNB_UEID
; /* UEID_ENB */
190 static int hf_kpm_v2_amf_UE_NGAP_ID
; /* AMF_UE_NGAP_ID */
191 static int hf_kpm_v2_guami
; /* GUAMI */
192 static int hf_kpm_v2_gNB_CU_UE_F1AP_ID_List
; /* UEID_GNB_CU_F1AP_ID_List */
193 static int hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID_List
; /* UEID_GNB_CU_CP_E1AP_ID_List */
194 static int hf_kpm_v2_ran_UEID
; /* RANUEID */
195 static int hf_kpm_v2_m_NG_RAN_UE_XnAP_ID
; /* NG_RANnodeUEXnAPID */
196 static int hf_kpm_v2_globalGNB_ID
; /* GlobalGNB_ID */
197 static int hf_kpm_v2_globalNG_RANNode_ID
; /* GlobalNGRANNodeID */
198 static int hf_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List_item
; /* UEID_GNB_CU_CP_E1AP_ID_Item */
199 static int hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID
; /* GNB_CU_CP_UE_E1AP_ID */
200 static int hf_kpm_v2_UEID_GNB_CU_F1AP_ID_List_item
; /* UEID_GNB_CU_CP_F1AP_ID_Item */
201 static int hf_kpm_v2_gNB_CU_UE_F1AP_ID
; /* GNB_CU_UE_F1AP_ID */
202 static int hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID
; /* NGENB_CU_UE_W1AP_ID */
203 static int hf_kpm_v2_globalNgENB_ID
; /* GlobalNgENB_ID */
204 static int hf_kpm_v2_m_eNB_UE_X2AP_ID
; /* ENB_UE_X2AP_ID */
205 static int hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension
; /* ENB_UE_X2AP_ID_Extension */
206 static int hf_kpm_v2_globalENB_ID
; /* GlobalENB_ID */
207 static int hf_kpm_v2_mME_UE_S1AP_ID
; /* MME_UE_S1AP_ID */
208 static int hf_kpm_v2_gUMMEI
; /* GUMMEI */
209 static int hf_kpm_v2_macro_eNB_ID
; /* BIT_STRING_SIZE_20 */
210 static int hf_kpm_v2_home_eNB_ID
; /* BIT_STRING_SIZE_28 */
211 static int hf_kpm_v2_short_Macro_eNB_ID
; /* BIT_STRING_SIZE_18 */
212 static int hf_kpm_v2_long_Macro_eNB_ID
; /* BIT_STRING_SIZE_21 */
213 static int hf_kpm_v2_pLMNIdentity
; /* PLMNIdentity */
214 static int hf_kpm_v2_eNB_ID
; /* ENB_ID */
215 static int hf_kpm_v2_pLMN_Identity
; /* PLMNIdentity */
216 static int hf_kpm_v2_mME_Group_ID
; /* MME_Group_ID */
217 static int hf_kpm_v2_mME_Code
; /* MME_Code */
218 static int hf_kpm_v2_eUTRACellIdentity
; /* EUTRACellIdentity */
219 static int hf_kpm_v2_gNB_ID
; /* GNB_ID */
220 static int hf_kpm_v2_ngENB_ID
; /* NgENB_ID */
221 static int hf_kpm_v2_gNB_ID_01
; /* BIT_STRING_SIZE_22_32 */
222 static int hf_kpm_v2_aMFRegionID
; /* AMFRegionID */
223 static int hf_kpm_v2_aMFSetID
; /* AMFSetID */
224 static int hf_kpm_v2_aMFPointer
; /* AMFPointer */
225 static int hf_kpm_v2_macroNgENB_ID
; /* BIT_STRING_SIZE_20 */
226 static int hf_kpm_v2_shortMacroNgENB_ID
; /* BIT_STRING_SIZE_18 */
227 static int hf_kpm_v2_longMacroNgENB_ID
; /* BIT_STRING_SIZE_21 */
228 static int hf_kpm_v2_nRCellIdentity
; /* NRCellIdentity */
229 static int hf_kpm_v2_sST
; /* SST */
230 static int hf_kpm_v2_sD
; /* SD */
231 static int hf_kpm_v2_gNB
; /* GlobalGNB_ID */
232 static int hf_kpm_v2_ng_eNB
; /* GlobalNgENB_ID */
234 static int hf_kpm_v2_timestamp_string
;
237 static int ett_kpm_v2_MeasurementType
;
238 static int ett_kpm_v2_MeasurementLabel
;
239 static int ett_kpm_v2_TestCondInfo
;
240 static int ett_kpm_v2_TestCond_Type
;
241 static int ett_kpm_v2_TestCond_Value
;
242 static int ett_kpm_v2_MeasurementInfoList
;
243 static int ett_kpm_v2_MeasurementInfoItem
;
244 static int ett_kpm_v2_LabelInfoList
;
245 static int ett_kpm_v2_LabelInfoItem
;
246 static int ett_kpm_v2_MeasurementData
;
247 static int ett_kpm_v2_MeasurementDataItem
;
248 static int ett_kpm_v2_MeasurementRecord
;
249 static int ett_kpm_v2_MeasurementRecordItem
;
250 static int ett_kpm_v2_MeasurementInfo_Action_List
;
251 static int ett_kpm_v2_MeasurementInfo_Action_Item
;
252 static int ett_kpm_v2_MeasurementCondList
;
253 static int ett_kpm_v2_MeasurementCondItem
;
254 static int ett_kpm_v2_MeasurementCondUEidList
;
255 static int ett_kpm_v2_MeasurementCondUEidItem
;
256 static int ett_kpm_v2_MatchingCondList
;
257 static int ett_kpm_v2_MatchingCondItem
;
258 static int ett_kpm_v2_MatchingUEidList
;
259 static int ett_kpm_v2_MatchingUEidItem
;
260 static int ett_kpm_v2_MatchingUeCondPerSubList
;
261 static int ett_kpm_v2_MatchingUeCondPerSubItem
;
262 static int ett_kpm_v2_MatchingUEidPerSubList
;
263 static int ett_kpm_v2_MatchingUEidPerSubItem
;
264 static int ett_kpm_v2_UEMeasurementReportList
;
265 static int ett_kpm_v2_UEMeasurementReportItem
;
266 static int ett_kpm_v2_E2SM_KPM_EventTriggerDefinition
;
267 static int ett_kpm_v2_T_eventDefinition_formats
;
268 static int ett_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1
;
269 static int ett_kpm_v2_E2SM_KPM_ActionDefinition
;
270 static int ett_kpm_v2_T_actionDefinition_formats
;
271 static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format1
;
272 static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format2
;
273 static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format3
;
274 static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format4
;
275 static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format5
;
276 static int ett_kpm_v2_E2SM_KPM_IndicationHeader
;
277 static int ett_kpm_v2_T_indicationHeader_formats
;
278 static int ett_kpm_v2_E2SM_KPM_IndicationHeader_Format1
;
279 static int ett_kpm_v2_E2SM_KPM_IndicationMessage
;
280 static int ett_kpm_v2_T_indicationMessage_formats
;
281 static int ett_kpm_v2_E2SM_KPM_IndicationMessage_Format1
;
282 static int ett_kpm_v2_E2SM_KPM_IndicationMessage_Format2
;
283 static int ett_kpm_v2_E2SM_KPM_IndicationMessage_Format3
;
284 static int ett_kpm_v2_E2SM_KPM_RANfunction_Description
;
285 static int ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item
;
286 static int ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item
;
287 static int ett_kpm_v2_RIC_EventTriggerStyle_Item
;
288 static int ett_kpm_v2_RIC_ReportStyle_Item
;
289 static int ett_kpm_v2_CGI
;
290 static int ett_kpm_v2_RANfunction_Name
;
291 static int ett_kpm_v2_UEID
;
292 static int ett_kpm_v2_UEID_GNB
;
293 static int ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List
;
294 static int ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item
;
295 static int ett_kpm_v2_UEID_GNB_CU_F1AP_ID_List
;
296 static int ett_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item
;
297 static int ett_kpm_v2_UEID_GNB_DU
;
298 static int ett_kpm_v2_UEID_GNB_CU_UP
;
299 static int ett_kpm_v2_UEID_NG_ENB
;
300 static int ett_kpm_v2_UEID_NG_ENB_DU
;
301 static int ett_kpm_v2_UEID_EN_GNB
;
302 static int ett_kpm_v2_UEID_ENB
;
303 static int ett_kpm_v2_ENB_ID
;
304 static int ett_kpm_v2_GlobalENB_ID
;
305 static int ett_kpm_v2_GUMMEI
;
306 static int ett_kpm_v2_EUTRA_CGI
;
307 static int ett_kpm_v2_GlobalGNB_ID
;
308 static int ett_kpm_v2_GlobalNgENB_ID
;
309 static int ett_kpm_v2_GNB_ID
;
310 static int ett_kpm_v2_GUAMI
;
311 static int ett_kpm_v2_NgENB_ID
;
312 static int ett_kpm_v2_NR_CGI
;
313 static int ett_kpm_v2_S_NSSAI
;
314 static int ett_kpm_v2_GlobalNGRANNodeID
;
317 /* Forward declarations */
318 static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
);
319 static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
);
320 static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
);
321 static int dissect_E2SM_KPM_IndicationMessage_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
);
322 static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
);
327 dissect_kpm_v2_TimeStamp(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
328 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
337 dissect_kpm_v2_GranularityPeriod(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
338 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
339 1U, 4294967295U, NULL
, false);
347 dissect_kpm_v2_MeasurementTypeName(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
348 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
358 dissect_kpm_v2_MeasurementTypeID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
359 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
360 1U, 65536U, NULL
, true);
366 static const value_string kpm_v2_MeasurementType_vals
[] = {
372 static const per_choice_t MeasurementType_choice
[] = {
373 { 0, &hf_kpm_v2_measName
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_MeasurementTypeName
},
374 { 1, &hf_kpm_v2_measID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_MeasurementTypeID
},
379 dissect_kpm_v2_MeasurementType(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
380 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
381 ett_kpm_v2_MeasurementType
, MeasurementType_choice
,
388 static const value_string kpm_v2_T_noLabel_vals
[] = {
395 dissect_kpm_v2_T_noLabel(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
396 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
397 1, NULL
, true, 0, NULL
);
405 dissect_kpm_v2_PLMNIdentity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
406 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
415 dissect_kpm_v2_SST(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
416 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
425 dissect_kpm_v2_SD(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
426 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
433 static const per_sequence_t S_NSSAI_sequence
[] = {
434 { &hf_kpm_v2_sST
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_SST
},
435 { &hf_kpm_v2_sD
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_SD
},
440 dissect_kpm_v2_S_NSSAI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
441 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
442 ett_kpm_v2_S_NSSAI
, S_NSSAI_sequence
);
450 dissect_kpm_v2_FiveQI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
451 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
452 0U, 255U, NULL
, true);
460 dissect_kpm_v2_QosFlowIdentifier(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
461 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
462 0U, 63U, NULL
, true);
470 dissect_kpm_v2_QCI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
471 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
472 0U, 255U, NULL
, false);
480 dissect_kpm_v2_INTEGER_1_15_(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
481 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
482 1U, 15U, NULL
, true);
490 dissect_kpm_v2_INTEGER_1_65535_(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
491 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
492 1U, 65535U, NULL
, true);
498 static const value_string kpm_v2_T_sUM_vals
[] = {
505 dissect_kpm_v2_T_sUM(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
506 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
507 1, NULL
, true, 0, NULL
);
513 static const value_string kpm_v2_T_preLabelOverride_vals
[] = {
520 dissect_kpm_v2_T_preLabelOverride(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
521 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
522 1, NULL
, true, 0, NULL
);
528 static const value_string kpm_v2_T_startEndInd_vals
[] = {
536 dissect_kpm_v2_T_startEndInd(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
537 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
538 2, NULL
, true, 0, NULL
);
544 static const value_string kpm_v2_T_min_vals
[] = {
551 dissect_kpm_v2_T_min(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
552 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
553 1, NULL
, true, 0, NULL
);
559 static const value_string kpm_v2_T_max_vals
[] = {
566 dissect_kpm_v2_T_max(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
567 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
568 1, NULL
, true, 0, NULL
);
574 static const value_string kpm_v2_T_avg_vals
[] = {
581 dissect_kpm_v2_T_avg(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
582 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
583 1, NULL
, true, 0, NULL
);
589 static const per_sequence_t MeasurementLabel_sequence
[] = {
590 { &hf_kpm_v2_noLabel
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_noLabel
},
591 { &hf_kpm_v2_plmnID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
592 { &hf_kpm_v2_sliceID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_S_NSSAI
},
593 { &hf_kpm_v2_fiveQI
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_FiveQI
},
594 { &hf_kpm_v2_qFI
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_QosFlowIdentifier
},
595 { &hf_kpm_v2_qCI
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_QCI
},
596 { &hf_kpm_v2_qCImax
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_QCI
},
597 { &hf_kpm_v2_qCImin
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_QCI
},
598 { &hf_kpm_v2_aRPmax
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER_1_15_
},
599 { &hf_kpm_v2_aRPmin
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER_1_15_
},
600 { &hf_kpm_v2_bitrateRange
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER_1_65535_
},
601 { &hf_kpm_v2_layerMU_MIMO
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER_1_65535_
},
602 { &hf_kpm_v2_sUM
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_sUM
},
603 { &hf_kpm_v2_distBinX
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER_1_65535_
},
604 { &hf_kpm_v2_distBinY
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER_1_65535_
},
605 { &hf_kpm_v2_distBinZ
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER_1_65535_
},
606 { &hf_kpm_v2_preLabelOverride
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_preLabelOverride
},
607 { &hf_kpm_v2_startEndInd
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_startEndInd
},
608 { &hf_kpm_v2_min
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_min
},
609 { &hf_kpm_v2_max
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_max
},
610 { &hf_kpm_v2_avg
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_avg
},
615 dissect_kpm_v2_MeasurementLabel(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
616 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
617 ett_kpm_v2_MeasurementLabel
, MeasurementLabel_sequence
);
623 static const value_string kpm_v2_T_gBR_vals
[] = {
630 dissect_kpm_v2_T_gBR(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
631 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
632 1, NULL
, true, 0, NULL
);
638 static const value_string kpm_v2_T_aMBR_vals
[] = {
645 dissect_kpm_v2_T_aMBR(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
646 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
647 1, NULL
, true, 0, NULL
);
653 static const value_string kpm_v2_T_isStat_vals
[] = {
660 dissect_kpm_v2_T_isStat(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
661 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
662 1, NULL
, true, 0, NULL
);
668 static const value_string kpm_v2_T_isCatM_vals
[] = {
675 dissect_kpm_v2_T_isCatM(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
676 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
677 1, NULL
, true, 0, NULL
);
683 static const value_string kpm_v2_T_rSRP_vals
[] = {
690 dissect_kpm_v2_T_rSRP(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
691 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
692 1, NULL
, true, 0, NULL
);
698 static const value_string kpm_v2_T_rSRQ_vals
[] = {
705 dissect_kpm_v2_T_rSRQ(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
706 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
707 1, NULL
, true, 0, NULL
);
713 static const value_string kpm_v2_T_ul_rSRP_vals
[] = {
720 dissect_kpm_v2_T_ul_rSRP(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
721 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
722 1, NULL
, true, 0, NULL
);
728 static const value_string kpm_v2_T_cQI_vals
[] = {
735 dissect_kpm_v2_T_cQI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
736 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
737 1, NULL
, true, 0, NULL
);
743 static const value_string kpm_v2_T_fiveQI_vals
[] = {
750 dissect_kpm_v2_T_fiveQI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
751 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
752 1, NULL
, true, 0, NULL
);
758 static const value_string kpm_v2_T_qCI_vals
[] = {
765 dissect_kpm_v2_T_qCI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
766 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
767 1, NULL
, true, 0, NULL
);
773 static const value_string kpm_v2_T_sNSSAI_vals
[] = {
780 dissect_kpm_v2_T_sNSSAI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
781 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
782 1, NULL
, true, 0, NULL
);
788 static const value_string kpm_v2_TestCond_Type_vals
[] = {
803 static const per_choice_t TestCond_Type_choice
[] = {
804 { 0, &hf_kpm_v2_gBR
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_T_gBR
},
805 { 1, &hf_kpm_v2_aMBR
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_T_aMBR
},
806 { 2, &hf_kpm_v2_isStat
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_T_isStat
},
807 { 3, &hf_kpm_v2_isCatM
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_T_isCatM
},
808 { 4, &hf_kpm_v2_rSRP
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_T_rSRP
},
809 { 5, &hf_kpm_v2_rSRQ
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_T_rSRQ
},
810 { 6, &hf_kpm_v2_ul_rSRP
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_T_ul_rSRP
},
811 { 7, &hf_kpm_v2_cQI
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_T_cQI
},
812 { 8, &hf_kpm_v2_fiveQI_01
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_T_fiveQI
},
813 { 9, &hf_kpm_v2_qCI_01
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_T_qCI
},
814 { 10, &hf_kpm_v2_sNSSAI
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_T_sNSSAI
},
819 dissect_kpm_v2_TestCond_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
820 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
821 ett_kpm_v2_TestCond_Type
, TestCond_Type_choice
,
828 static const value_string kpm_v2_TestCond_Expression_vals
[] = {
830 { 1, "greaterthan" },
839 dissect_kpm_v2_TestCond_Expression(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
840 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
841 5, NULL
, true, 0, NULL
);
849 dissect_kpm_v2_INTEGER(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
850 offset
= dissect_per_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
858 dissect_kpm_v2_BOOLEAN(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
859 offset
= dissect_per_boolean(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
867 dissect_kpm_v2_BIT_STRING(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
868 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
869 NO_BOUND
, NO_BOUND
, false, NULL
, 0, NULL
, NULL
);
877 dissect_kpm_v2_OCTET_STRING(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
878 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
879 NO_BOUND
, NO_BOUND
, false, NULL
);
887 dissect_kpm_v2_PrintableString(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
888 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
889 NO_BOUND
, NO_BOUND
, false,
898 dissect_kpm_v2_REAL(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
899 offset
= dissect_per_real(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
905 static const value_string kpm_v2_TestCond_Value_vals
[] = {
916 static const per_choice_t TestCond_Value_choice
[] = {
917 { 0, &hf_kpm_v2_valueInt
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_INTEGER
},
918 { 1, &hf_kpm_v2_valueEnum
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_INTEGER
},
919 { 2, &hf_kpm_v2_valueBool
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BOOLEAN
},
920 { 3, &hf_kpm_v2_valueBitS
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING
},
921 { 4, &hf_kpm_v2_valueOctS
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_OCTET_STRING
},
922 { 5, &hf_kpm_v2_valuePrtS
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_PrintableString
},
923 { 6, &hf_kpm_v2_valueReal
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_REAL
},
928 dissect_kpm_v2_TestCond_Value(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
929 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
930 ett_kpm_v2_TestCond_Value
, TestCond_Value_choice
,
937 static const per_sequence_t TestCondInfo_sequence
[] = {
938 { &hf_kpm_v2_testType
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_TestCond_Type
},
939 { &hf_kpm_v2_testExpr
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_TestCond_Expression
},
940 { &hf_kpm_v2_testValue
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_TestCond_Value
},
945 dissect_kpm_v2_TestCondInfo(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
946 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
947 ett_kpm_v2_TestCondInfo
, TestCondInfo_sequence
);
953 static const per_sequence_t LabelInfoItem_sequence
[] = {
954 { &hf_kpm_v2_measLabel
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementLabel
},
959 dissect_kpm_v2_LabelInfoItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
960 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
961 ett_kpm_v2_LabelInfoItem
, LabelInfoItem_sequence
);
967 static const per_sequence_t LabelInfoList_sequence_of
[1] = {
968 { &hf_kpm_v2_LabelInfoList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_LabelInfoItem
},
972 dissect_kpm_v2_LabelInfoList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
973 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
974 ett_kpm_v2_LabelInfoList
, LabelInfoList_sequence_of
,
975 1, maxnoofLabelInfo
, false);
981 static const per_sequence_t MeasurementInfoItem_sequence
[] = {
982 { &hf_kpm_v2_measType
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementType
},
983 { &hf_kpm_v2_labelInfoList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_LabelInfoList
},
988 dissect_kpm_v2_MeasurementInfoItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
989 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
990 ett_kpm_v2_MeasurementInfoItem
, MeasurementInfoItem_sequence
);
996 static const per_sequence_t MeasurementInfoList_sequence_of
[1] = {
997 { &hf_kpm_v2_MeasurementInfoList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementInfoItem
},
1001 dissect_kpm_v2_MeasurementInfoList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1002 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1003 ett_kpm_v2_MeasurementInfoList
, MeasurementInfoList_sequence_of
,
1004 1, maxnoofMeasurementInfo
, false);
1012 dissect_kpm_v2_INTEGER_0_4294967295(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1013 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1014 0U, 4294967295U, NULL
, false);
1022 dissect_kpm_v2_NULL(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1023 offset
= dissect_per_null(tvb
, offset
, actx
, tree
, hf_index
);
1029 static const value_string kpm_v2_MeasurementRecordItem_vals
[] = {
1036 static const per_choice_t MeasurementRecordItem_choice
[] = {
1037 { 0, &hf_kpm_v2_integer
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_INTEGER_0_4294967295
},
1038 { 1, &hf_kpm_v2_real
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_REAL
},
1039 { 2, &hf_kpm_v2_noValue
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_NULL
},
1040 { 0, NULL
, 0, NULL
}
1044 dissect_kpm_v2_MeasurementRecordItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1045 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1046 ett_kpm_v2_MeasurementRecordItem
, MeasurementRecordItem_choice
,
1053 static const per_sequence_t MeasurementRecord_sequence_of
[1] = {
1054 { &hf_kpm_v2_MeasurementRecord_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementRecordItem
},
1058 dissect_kpm_v2_MeasurementRecord(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1059 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1060 ett_kpm_v2_MeasurementRecord
, MeasurementRecord_sequence_of
,
1061 1, maxnoofMeasurementValue
, false);
1067 static const value_string kpm_v2_T_incompleteFlag_vals
[] = {
1074 dissect_kpm_v2_T_incompleteFlag(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1075 offset
= dissect_per_enumerated(tvb
, offset
, actx
, tree
, hf_index
,
1076 1, NULL
, true, 0, NULL
);
1082 static const per_sequence_t MeasurementDataItem_sequence
[] = {
1083 { &hf_kpm_v2_measRecord
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementRecord
},
1084 { &hf_kpm_v2_incompleteFlag
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_T_incompleteFlag
},
1085 { NULL
, 0, 0, NULL
}
1089 dissect_kpm_v2_MeasurementDataItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1090 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1091 ett_kpm_v2_MeasurementDataItem
, MeasurementDataItem_sequence
);
1097 static const per_sequence_t MeasurementData_sequence_of
[1] = {
1098 { &hf_kpm_v2_MeasurementData_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementDataItem
},
1102 dissect_kpm_v2_MeasurementData(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1103 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1104 ett_kpm_v2_MeasurementData
, MeasurementData_sequence_of
,
1105 1, maxnoofMeasurementRecord
, false);
1111 static const per_sequence_t MeasurementInfo_Action_Item_sequence
[] = {
1112 { &hf_kpm_v2_measName
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementTypeName
},
1113 { &hf_kpm_v2_measID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_MeasurementTypeID
},
1114 { NULL
, 0, 0, NULL
}
1118 dissect_kpm_v2_MeasurementInfo_Action_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1119 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1120 ett_kpm_v2_MeasurementInfo_Action_Item
, MeasurementInfo_Action_Item_sequence
);
1126 static const per_sequence_t MeasurementInfo_Action_List_sequence_of
[1] = {
1127 { &hf_kpm_v2_MeasurementInfo_Action_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementInfo_Action_Item
},
1131 dissect_kpm_v2_MeasurementInfo_Action_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1132 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1133 ett_kpm_v2_MeasurementInfo_Action_List
, MeasurementInfo_Action_List_sequence_of
,
1134 1, maxnoofMeasurementInfo
, false);
1140 static const value_string kpm_v2_MatchingCondItem_vals
[] = {
1142 { 1, "testCondInfo" },
1146 static const per_choice_t MatchingCondItem_choice
[] = {
1147 { 0, &hf_kpm_v2_measLabel
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_MeasurementLabel
},
1148 { 1, &hf_kpm_v2_testCondInfo
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_TestCondInfo
},
1149 { 0, NULL
, 0, NULL
}
1153 dissect_kpm_v2_MatchingCondItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1154 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1155 ett_kpm_v2_MatchingCondItem
, MatchingCondItem_choice
,
1162 static const per_sequence_t MatchingCondList_sequence_of
[1] = {
1163 { &hf_kpm_v2_MatchingCondList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingCondItem
},
1167 dissect_kpm_v2_MatchingCondList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1168 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1169 ett_kpm_v2_MatchingCondList
, MatchingCondList_sequence_of
,
1170 1, maxnoofConditionInfo
, false);
1176 static const per_sequence_t MeasurementCondItem_sequence
[] = {
1177 { &hf_kpm_v2_measType
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementType
},
1178 { &hf_kpm_v2_matchingCond
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingCondList
},
1179 { NULL
, 0, 0, NULL
}
1183 dissect_kpm_v2_MeasurementCondItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1184 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1185 ett_kpm_v2_MeasurementCondItem
, MeasurementCondItem_sequence
);
1191 static const per_sequence_t MeasurementCondList_sequence_of
[1] = {
1192 { &hf_kpm_v2_MeasurementCondList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementCondItem
},
1196 dissect_kpm_v2_MeasurementCondList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1197 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1198 ett_kpm_v2_MeasurementCondList
, MeasurementCondList_sequence_of
,
1199 1, maxnoofMeasurementInfo
, false);
1207 dissect_kpm_v2_AMF_UE_NGAP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1208 offset
= dissect_per_constrained_integer_64b(tvb
, offset
, actx
, tree
, hf_index
,
1209 0U, UINT64_C(1099511627775), NULL
, false);
1217 dissect_kpm_v2_AMFRegionID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1218 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1219 8, 8, false, NULL
, 0, NULL
, NULL
);
1227 dissect_kpm_v2_AMFSetID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1228 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1229 10, 10, false, NULL
, 0, NULL
, NULL
);
1237 dissect_kpm_v2_AMFPointer(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1238 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1239 6, 6, false, NULL
, 0, NULL
, NULL
);
1245 static const per_sequence_t GUAMI_sequence
[] = {
1246 { &hf_kpm_v2_pLMNIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
1247 { &hf_kpm_v2_aMFRegionID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_AMFRegionID
},
1248 { &hf_kpm_v2_aMFSetID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_AMFSetID
},
1249 { &hf_kpm_v2_aMFPointer
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_AMFPointer
},
1250 { NULL
, 0, 0, NULL
}
1254 dissect_kpm_v2_GUAMI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1255 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1256 ett_kpm_v2_GUAMI
, GUAMI_sequence
);
1264 dissect_kpm_v2_GNB_CU_UE_F1AP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1265 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1266 0U, 4294967295U, NULL
, false);
1272 static const per_sequence_t UEID_GNB_CU_CP_F1AP_ID_Item_sequence
[] = {
1273 { &hf_kpm_v2_gNB_CU_UE_F1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GNB_CU_UE_F1AP_ID
},
1274 { NULL
, 0, 0, NULL
}
1278 dissect_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1279 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1280 ett_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item
, UEID_GNB_CU_CP_F1AP_ID_Item_sequence
);
1286 static const per_sequence_t UEID_GNB_CU_F1AP_ID_List_sequence_of
[1] = {
1287 { &hf_kpm_v2_UEID_GNB_CU_F1AP_ID_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item
},
1291 dissect_kpm_v2_UEID_GNB_CU_F1AP_ID_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1292 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1293 ett_kpm_v2_UEID_GNB_CU_F1AP_ID_List
, UEID_GNB_CU_F1AP_ID_List_sequence_of
,
1294 1, maxF1APid
, false);
1302 dissect_kpm_v2_GNB_CU_CP_UE_E1AP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1303 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1304 0U, 4294967295U, NULL
, false);
1310 static const per_sequence_t UEID_GNB_CU_CP_E1AP_ID_Item_sequence
[] = {
1311 { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GNB_CU_CP_UE_E1AP_ID
},
1312 { NULL
, 0, 0, NULL
}
1316 dissect_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1317 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1318 ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item
, UEID_GNB_CU_CP_E1AP_ID_Item_sequence
);
1324 static const per_sequence_t UEID_GNB_CU_CP_E1AP_ID_List_sequence_of
[1] = {
1325 { &hf_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item
},
1329 dissect_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1330 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1331 ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List
, UEID_GNB_CU_CP_E1AP_ID_List_sequence_of
,
1332 1, maxE1APid
, false);
1340 dissect_kpm_v2_RANUEID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1341 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1350 dissect_kpm_v2_NG_RANnodeUEXnAPID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1351 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1352 0U, 4294967295U, NULL
, false);
1360 dissect_kpm_v2_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_
) {
1361 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1362 22, 32, false, NULL
, 0, NULL
, NULL
);
1368 static const value_string kpm_v2_GNB_ID_vals
[] = {
1373 static const per_choice_t GNB_ID_choice
[] = {
1374 { 0, &hf_kpm_v2_gNB_ID_01
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_22_32
},
1375 { 0, NULL
, 0, NULL
}
1379 dissect_kpm_v2_GNB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1380 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1381 ett_kpm_v2_GNB_ID
, GNB_ID_choice
,
1388 static const per_sequence_t GlobalGNB_ID_sequence
[] = {
1389 { &hf_kpm_v2_pLMNIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
1390 { &hf_kpm_v2_gNB_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GNB_ID
},
1391 { NULL
, 0, 0, NULL
}
1395 dissect_kpm_v2_GlobalGNB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1396 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1397 ett_kpm_v2_GlobalGNB_ID
, GlobalGNB_ID_sequence
);
1405 dissect_kpm_v2_BIT_STRING_SIZE_20(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1406 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1407 20, 20, false, NULL
, 0, NULL
, NULL
);
1415 dissect_kpm_v2_BIT_STRING_SIZE_18(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1416 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1417 18, 18, false, NULL
, 0, NULL
, NULL
);
1425 dissect_kpm_v2_BIT_STRING_SIZE_21(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1426 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1427 21, 21, false, NULL
, 0, NULL
, NULL
);
1433 static const value_string kpm_v2_NgENB_ID_vals
[] = {
1434 { 0, "macroNgENB-ID" },
1435 { 1, "shortMacroNgENB-ID" },
1436 { 2, "longMacroNgENB-ID" },
1440 static const per_choice_t NgENB_ID_choice
[] = {
1441 { 0, &hf_kpm_v2_macroNgENB_ID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_20
},
1442 { 1, &hf_kpm_v2_shortMacroNgENB_ID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_18
},
1443 { 2, &hf_kpm_v2_longMacroNgENB_ID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_21
},
1444 { 0, NULL
, 0, NULL
}
1448 dissect_kpm_v2_NgENB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1449 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1450 ett_kpm_v2_NgENB_ID
, NgENB_ID_choice
,
1457 static const per_sequence_t GlobalNgENB_ID_sequence
[] = {
1458 { &hf_kpm_v2_pLMNIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
1459 { &hf_kpm_v2_ngENB_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_NgENB_ID
},
1460 { NULL
, 0, 0, NULL
}
1464 dissect_kpm_v2_GlobalNgENB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1465 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1466 ett_kpm_v2_GlobalNgENB_ID
, GlobalNgENB_ID_sequence
);
1472 static const value_string kpm_v2_GlobalNGRANNodeID_vals
[] = {
1478 static const per_choice_t GlobalNGRANNodeID_choice
[] = {
1479 { 0, &hf_kpm_v2_gNB
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_GlobalGNB_ID
},
1480 { 1, &hf_kpm_v2_ng_eNB
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_GlobalNgENB_ID
},
1481 { 0, NULL
, 0, NULL
}
1485 dissect_kpm_v2_GlobalNGRANNodeID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1486 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1487 ett_kpm_v2_GlobalNGRANNodeID
, GlobalNGRANNodeID_choice
,
1494 static const per_sequence_t UEID_GNB_sequence
[] = {
1495 { &hf_kpm_v2_amf_UE_NGAP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_AMF_UE_NGAP_ID
},
1496 { &hf_kpm_v2_guami
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GUAMI
},
1497 { &hf_kpm_v2_gNB_CU_UE_F1AP_ID_List
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_UEID_GNB_CU_F1AP_ID_List
},
1498 { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID_List
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List
},
1499 { &hf_kpm_v2_ran_UEID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_RANUEID
},
1500 { &hf_kpm_v2_m_NG_RAN_UE_XnAP_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_NG_RANnodeUEXnAPID
},
1501 { &hf_kpm_v2_globalGNB_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GlobalGNB_ID
},
1502 { &hf_kpm_v2_globalNG_RANNode_ID
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GlobalNGRANNodeID
},
1503 { NULL
, 0, 0, NULL
}
1507 dissect_kpm_v2_UEID_GNB(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1508 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1509 ett_kpm_v2_UEID_GNB
, UEID_GNB_sequence
);
1515 static const per_sequence_t UEID_GNB_DU_sequence
[] = {
1516 { &hf_kpm_v2_gNB_CU_UE_F1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GNB_CU_UE_F1AP_ID
},
1517 { &hf_kpm_v2_ran_UEID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_RANUEID
},
1518 { NULL
, 0, 0, NULL
}
1522 dissect_kpm_v2_UEID_GNB_DU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1523 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1524 ett_kpm_v2_UEID_GNB_DU
, UEID_GNB_DU_sequence
);
1530 static const per_sequence_t UEID_GNB_CU_UP_sequence
[] = {
1531 { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GNB_CU_CP_UE_E1AP_ID
},
1532 { &hf_kpm_v2_ran_UEID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_RANUEID
},
1533 { NULL
, 0, 0, NULL
}
1537 dissect_kpm_v2_UEID_GNB_CU_UP(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1538 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1539 ett_kpm_v2_UEID_GNB_CU_UP
, UEID_GNB_CU_UP_sequence
);
1547 dissect_kpm_v2_NGENB_CU_UE_W1AP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1548 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1549 0U, 4294967295U, NULL
, false);
1555 static const per_sequence_t UEID_NG_ENB_sequence
[] = {
1556 { &hf_kpm_v2_amf_UE_NGAP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_AMF_UE_NGAP_ID
},
1557 { &hf_kpm_v2_guami
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GUAMI
},
1558 { &hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_NGENB_CU_UE_W1AP_ID
},
1559 { &hf_kpm_v2_m_NG_RAN_UE_XnAP_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_NG_RANnodeUEXnAPID
},
1560 { &hf_kpm_v2_globalNgENB_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GlobalNgENB_ID
},
1561 { &hf_kpm_v2_globalNG_RANNode_ID
, ASN1_NOT_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GlobalNGRANNodeID
},
1562 { NULL
, 0, 0, NULL
}
1566 dissect_kpm_v2_UEID_NG_ENB(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1567 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1568 ett_kpm_v2_UEID_NG_ENB
, UEID_NG_ENB_sequence
);
1574 static const per_sequence_t UEID_NG_ENB_DU_sequence
[] = {
1575 { &hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_NGENB_CU_UE_W1AP_ID
},
1576 { NULL
, 0, 0, NULL
}
1580 dissect_kpm_v2_UEID_NG_ENB_DU(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1581 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1582 ett_kpm_v2_UEID_NG_ENB_DU
, UEID_NG_ENB_DU_sequence
);
1590 dissect_kpm_v2_ENB_UE_X2AP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1591 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1592 0U, 4095U, NULL
, false);
1600 dissect_kpm_v2_ENB_UE_X2AP_ID_Extension(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1601 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1602 0U, 4095U, NULL
, true);
1610 dissect_kpm_v2_BIT_STRING_SIZE_28(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1611 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
1612 28, 28, false, NULL
, 0, NULL
, NULL
);
1618 static const value_string kpm_v2_ENB_ID_vals
[] = {
1619 { 0, "macro-eNB-ID" },
1620 { 1, "home-eNB-ID" },
1621 { 2, "short-Macro-eNB-ID" },
1622 { 3, "long-Macro-eNB-ID" },
1626 static const per_choice_t ENB_ID_choice
[] = {
1627 { 0, &hf_kpm_v2_macro_eNB_ID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_20
},
1628 { 1, &hf_kpm_v2_home_eNB_ID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_28
},
1629 { 2, &hf_kpm_v2_short_Macro_eNB_ID
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_18
},
1630 { 3, &hf_kpm_v2_long_Macro_eNB_ID
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_BIT_STRING_SIZE_21
},
1631 { 0, NULL
, 0, NULL
}
1635 dissect_kpm_v2_ENB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1636 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1637 ett_kpm_v2_ENB_ID
, ENB_ID_choice
,
1644 static const per_sequence_t GlobalENB_ID_sequence
[] = {
1645 { &hf_kpm_v2_pLMNIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
1646 { &hf_kpm_v2_eNB_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_ENB_ID
},
1647 { NULL
, 0, 0, NULL
}
1651 dissect_kpm_v2_GlobalENB_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1652 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1653 ett_kpm_v2_GlobalENB_ID
, GlobalENB_ID_sequence
);
1659 static const per_sequence_t UEID_EN_GNB_sequence
[] = {
1660 { &hf_kpm_v2_m_eNB_UE_X2AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_ENB_UE_X2AP_ID
},
1661 { &hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_ENB_UE_X2AP_ID_Extension
},
1662 { &hf_kpm_v2_globalENB_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GlobalENB_ID
},
1663 { &hf_kpm_v2_gNB_CU_UE_F1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GNB_CU_UE_F1AP_ID
},
1664 { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID_List
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List
},
1665 { &hf_kpm_v2_ran_UEID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_RANUEID
},
1666 { NULL
, 0, 0, NULL
}
1670 dissect_kpm_v2_UEID_EN_GNB(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1671 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1672 ett_kpm_v2_UEID_EN_GNB
, UEID_EN_GNB_sequence
);
1680 dissect_kpm_v2_MME_UE_S1AP_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1681 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1682 0U, 4294967295U, NULL
, false);
1690 dissect_kpm_v2_MME_Group_ID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1691 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1700 dissect_kpm_v2_MME_Code(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1701 offset
= dissect_per_octet_string(tvb
, offset
, actx
, tree
, hf_index
,
1708 static const per_sequence_t GUMMEI_sequence
[] = {
1709 { &hf_kpm_v2_pLMN_Identity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
1710 { &hf_kpm_v2_mME_Group_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MME_Group_ID
},
1711 { &hf_kpm_v2_mME_Code
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MME_Code
},
1712 { NULL
, 0, 0, NULL
}
1716 dissect_kpm_v2_GUMMEI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1717 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1718 ett_kpm_v2_GUMMEI
, GUMMEI_sequence
);
1724 static const per_sequence_t UEID_ENB_sequence
[] = {
1725 { &hf_kpm_v2_mME_UE_S1AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MME_UE_S1AP_ID
},
1726 { &hf_kpm_v2_gUMMEI
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GUMMEI
},
1727 { &hf_kpm_v2_m_eNB_UE_X2AP_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_ENB_UE_X2AP_ID
},
1728 { &hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_ENB_UE_X2AP_ID_Extension
},
1729 { &hf_kpm_v2_globalENB_ID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GlobalENB_ID
},
1730 { NULL
, 0, 0, NULL
}
1734 dissect_kpm_v2_UEID_ENB(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1735 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1736 ett_kpm_v2_UEID_ENB
, UEID_ENB_sequence
);
1742 static const value_string kpm_v2_UEID_vals
[] = {
1744 { 1, "gNB-DU-UEID" },
1745 { 2, "gNB-CU-UP-UEID" },
1746 { 3, "ng-eNB-UEID" },
1747 { 4, "ng-eNB-DU-UEID" },
1748 { 5, "en-gNB-UEID" },
1753 static const per_choice_t UEID_choice
[] = {
1754 { 0, &hf_kpm_v2_gNB_UEID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_UEID_GNB
},
1755 { 1, &hf_kpm_v2_gNB_DU_UEID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_UEID_GNB_DU
},
1756 { 2, &hf_kpm_v2_gNB_CU_UP_UEID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_UEID_GNB_CU_UP
},
1757 { 3, &hf_kpm_v2_ng_eNB_UEID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_UEID_NG_ENB
},
1758 { 4, &hf_kpm_v2_ng_eNB_DU_UEID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_UEID_NG_ENB_DU
},
1759 { 5, &hf_kpm_v2_en_gNB_UEID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_UEID_EN_GNB
},
1760 { 6, &hf_kpm_v2_eNB_UEID
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_UEID_ENB
},
1761 { 0, NULL
, 0, NULL
}
1765 dissect_kpm_v2_UEID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1766 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1767 ett_kpm_v2_UEID
, UEID_choice
,
1774 static const per_sequence_t MatchingUEidItem_sequence
[] = {
1775 { &hf_kpm_v2_ueID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEID
},
1776 { NULL
, 0, 0, NULL
}
1780 dissect_kpm_v2_MatchingUEidItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1781 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1782 ett_kpm_v2_MatchingUEidItem
, MatchingUEidItem_sequence
);
1788 static const per_sequence_t MatchingUEidList_sequence_of
[1] = {
1789 { &hf_kpm_v2_MatchingUEidList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingUEidItem
},
1793 dissect_kpm_v2_MatchingUEidList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1794 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1795 ett_kpm_v2_MatchingUEidList
, MatchingUEidList_sequence_of
,
1796 1, maxnoofUEID
, false);
1802 static const per_sequence_t MeasurementCondUEidItem_sequence
[] = {
1803 { &hf_kpm_v2_measType
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementType
},
1804 { &hf_kpm_v2_matchingCond
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingCondList
},
1805 { &hf_kpm_v2_matchingUEidList
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_MatchingUEidList
},
1806 { NULL
, 0, 0, NULL
}
1810 dissect_kpm_v2_MeasurementCondUEidItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1811 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1812 ett_kpm_v2_MeasurementCondUEidItem
, MeasurementCondUEidItem_sequence
);
1818 static const per_sequence_t MeasurementCondUEidList_sequence_of
[1] = {
1819 { &hf_kpm_v2_MeasurementCondUEidList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementCondUEidItem
},
1823 dissect_kpm_v2_MeasurementCondUEidList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1824 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1825 ett_kpm_v2_MeasurementCondUEidList
, MeasurementCondUEidList_sequence_of
,
1826 1, maxnoofMeasurementInfo
, false);
1832 static const per_sequence_t MatchingUeCondPerSubItem_sequence
[] = {
1833 { &hf_kpm_v2_testCondInfo
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_TestCondInfo
},
1834 { NULL
, 0, 0, NULL
}
1838 dissect_kpm_v2_MatchingUeCondPerSubItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1839 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1840 ett_kpm_v2_MatchingUeCondPerSubItem
, MatchingUeCondPerSubItem_sequence
);
1846 static const per_sequence_t MatchingUeCondPerSubList_sequence_of
[1] = {
1847 { &hf_kpm_v2_MatchingUeCondPerSubList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingUeCondPerSubItem
},
1851 dissect_kpm_v2_MatchingUeCondPerSubList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1852 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1853 ett_kpm_v2_MatchingUeCondPerSubList
, MatchingUeCondPerSubList_sequence_of
,
1854 1, maxnoofConditionInfoPerSub
, false);
1860 static const per_sequence_t MatchingUEidPerSubItem_sequence
[] = {
1861 { &hf_kpm_v2_ueID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEID
},
1862 { NULL
, 0, 0, NULL
}
1866 dissect_kpm_v2_MatchingUEidPerSubItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1867 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1868 ett_kpm_v2_MatchingUEidPerSubItem
, MatchingUEidPerSubItem_sequence
);
1874 static const per_sequence_t MatchingUEidPerSubList_sequence_of
[1] = {
1875 { &hf_kpm_v2_MatchingUEidPerSubList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingUEidPerSubItem
},
1879 dissect_kpm_v2_MatchingUEidPerSubList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1880 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1881 ett_kpm_v2_MatchingUEidPerSubList
, MatchingUEidPerSubList_sequence_of
,
1882 2, maxnoofUEIDPerSub
, false);
1888 static const per_sequence_t E2SM_KPM_IndicationMessage_Format1_sequence
[] = {
1889 { &hf_kpm_v2_measData
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementData
},
1890 { &hf_kpm_v2_measInfoList
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_MeasurementInfoList
},
1891 { &hf_kpm_v2_granulPeriod
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GranularityPeriod
},
1892 { NULL
, 0, 0, NULL
}
1896 dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1897 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1898 ett_kpm_v2_E2SM_KPM_IndicationMessage_Format1
, E2SM_KPM_IndicationMessage_Format1_sequence
);
1904 static const per_sequence_t UEMeasurementReportItem_sequence
[] = {
1905 { &hf_kpm_v2_ueID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEID
},
1906 { &hf_kpm_v2_measReport
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format1
},
1907 { NULL
, 0, 0, NULL
}
1911 dissect_kpm_v2_UEMeasurementReportItem(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1912 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1913 ett_kpm_v2_UEMeasurementReportItem
, UEMeasurementReportItem_sequence
);
1919 static const per_sequence_t UEMeasurementReportList_sequence_of
[1] = {
1920 { &hf_kpm_v2_UEMeasurementReportList_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEMeasurementReportItem
},
1924 dissect_kpm_v2_UEMeasurementReportList(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1925 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
1926 ett_kpm_v2_UEMeasurementReportList
, UEMeasurementReportList_sequence_of
,
1927 1, maxnoofUEMeasReport
, false);
1935 dissect_kpm_v2_INTEGER_1_4294967295(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1936 offset
= dissect_per_constrained_integer(tvb
, offset
, actx
, tree
, hf_index
,
1937 1U, 4294967295U, NULL
, false);
1943 static const per_sequence_t E2SM_KPM_EventTriggerDefinition_Format1_sequence
[] = {
1944 { &hf_kpm_v2_reportingPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_INTEGER_1_4294967295
},
1945 { NULL
, 0, 0, NULL
}
1949 dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1950 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1951 ett_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1
, E2SM_KPM_EventTriggerDefinition_Format1_sequence
);
1957 static const value_string kpm_v2_T_eventDefinition_formats_vals
[] = {
1958 { 0, "eventDefinition-Format1" },
1962 static const per_choice_t T_eventDefinition_formats_choice
[] = {
1963 { 0, &hf_kpm_v2_eventDefinition_Format1
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1
},
1964 { 0, NULL
, 0, NULL
}
1968 dissect_kpm_v2_T_eventDefinition_formats(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1969 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
1970 ett_kpm_v2_T_eventDefinition_formats
, T_eventDefinition_formats_choice
,
1977 static const per_sequence_t E2SM_KPM_EventTriggerDefinition_sequence
[] = {
1978 { &hf_kpm_v2_eventDefinition_formats
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_T_eventDefinition_formats
},
1979 { NULL
, 0, 0, NULL
}
1983 dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1984 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
1985 ett_kpm_v2_E2SM_KPM_EventTriggerDefinition
, E2SM_KPM_EventTriggerDefinition_sequence
);
1993 dissect_kpm_v2_RIC_Style_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
1994 offset
= dissect_per_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2002 dissect_kpm_v2_NRCellIdentity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2003 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
2004 36, 36, false, NULL
, 0, NULL
, NULL
);
2010 static const per_sequence_t NR_CGI_sequence
[] = {
2011 { &hf_kpm_v2_pLMNIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
2012 { &hf_kpm_v2_nRCellIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_NRCellIdentity
},
2013 { NULL
, 0, 0, NULL
}
2017 dissect_kpm_v2_NR_CGI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2018 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2019 ett_kpm_v2_NR_CGI
, NR_CGI_sequence
);
2027 dissect_kpm_v2_EUTRACellIdentity(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2028 offset
= dissect_per_bit_string(tvb
, offset
, actx
, tree
, hf_index
,
2029 28, 28, false, NULL
, 0, NULL
, NULL
);
2035 static const per_sequence_t EUTRA_CGI_sequence
[] = {
2036 { &hf_kpm_v2_pLMNIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PLMNIdentity
},
2037 { &hf_kpm_v2_eUTRACellIdentity
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_EUTRACellIdentity
},
2038 { NULL
, 0, 0, NULL
}
2042 dissect_kpm_v2_EUTRA_CGI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2043 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2044 ett_kpm_v2_EUTRA_CGI
, EUTRA_CGI_sequence
);
2050 static const value_string kpm_v2_CGI_vals
[] = {
2056 static const per_choice_t CGI_choice
[] = {
2057 { 0, &hf_kpm_v2_nR_CGI
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_NR_CGI
},
2058 { 1, &hf_kpm_v2_eUTRA_CGI
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_EUTRA_CGI
},
2059 { 0, NULL
, 0, NULL
}
2063 dissect_kpm_v2_CGI(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2064 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2065 ett_kpm_v2_CGI
, CGI_choice
,
2072 static const per_sequence_t E2SM_KPM_ActionDefinition_Format1_sequence
[] = {
2073 { &hf_kpm_v2_measInfoList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementInfoList
},
2074 { &hf_kpm_v2_granulPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GranularityPeriod
},
2075 { &hf_kpm_v2_cellGlobalID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_CGI
},
2076 { NULL
, 0, 0, NULL
}
2080 dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2081 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2082 ett_kpm_v2_E2SM_KPM_ActionDefinition_Format1
, E2SM_KPM_ActionDefinition_Format1_sequence
);
2088 static const per_sequence_t E2SM_KPM_ActionDefinition_Format2_sequence
[] = {
2089 { &hf_kpm_v2_ueID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEID
},
2090 { &hf_kpm_v2_subscriptInfo
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1
},
2091 { NULL
, 0, 0, NULL
}
2095 dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format2(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2096 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2097 ett_kpm_v2_E2SM_KPM_ActionDefinition_Format2
, E2SM_KPM_ActionDefinition_Format2_sequence
);
2103 static const per_sequence_t E2SM_KPM_ActionDefinition_Format3_sequence
[] = {
2104 { &hf_kpm_v2_measCondList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementCondList
},
2105 { &hf_kpm_v2_granulPeriod
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_GranularityPeriod
},
2106 { &hf_kpm_v2_cellGlobalID
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_CGI
},
2107 { NULL
, 0, 0, NULL
}
2111 dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format3(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2112 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2113 ett_kpm_v2_E2SM_KPM_ActionDefinition_Format3
, E2SM_KPM_ActionDefinition_Format3_sequence
);
2119 static const per_sequence_t E2SM_KPM_ActionDefinition_Format4_sequence
[] = {
2120 { &hf_kpm_v2_matchingUeCondList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingUeCondPerSubList
},
2121 { &hf_kpm_v2_subscriptionInfo
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1
},
2122 { NULL
, 0, 0, NULL
}
2126 dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format4(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2127 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2128 ett_kpm_v2_E2SM_KPM_ActionDefinition_Format4
, E2SM_KPM_ActionDefinition_Format4_sequence
);
2134 static const per_sequence_t E2SM_KPM_ActionDefinition_Format5_sequence
[] = {
2135 { &hf_kpm_v2_matchingUEidList_01
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MatchingUEidPerSubList
},
2136 { &hf_kpm_v2_subscriptionInfo
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1
},
2137 { NULL
, 0, 0, NULL
}
2141 dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format5(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2142 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2143 ett_kpm_v2_E2SM_KPM_ActionDefinition_Format5
, E2SM_KPM_ActionDefinition_Format5_sequence
);
2149 static const value_string kpm_v2_T_actionDefinition_formats_vals
[] = {
2150 { 0, "actionDefinition-Format1" },
2151 { 1, "actionDefinition-Format2" },
2152 { 2, "actionDefinition-Format3" },
2153 { 3, "actionDefinition-Format4" },
2154 { 4, "actionDefinition-Format5" },
2158 static const per_choice_t T_actionDefinition_formats_choice
[] = {
2159 { 0, &hf_kpm_v2_actionDefinition_Format1
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1
},
2160 { 1, &hf_kpm_v2_actionDefinition_Format2
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format2
},
2161 { 2, &hf_kpm_v2_actionDefinition_Format3
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format3
},
2162 { 3, &hf_kpm_v2_actionDefinition_Format4
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format4
},
2163 { 4, &hf_kpm_v2_actionDefinition_Format5
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format5
},
2164 { 0, NULL
, 0, NULL
}
2168 dissect_kpm_v2_T_actionDefinition_formats(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2169 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2170 ett_kpm_v2_T_actionDefinition_formats
, T_actionDefinition_formats_choice
,
2177 static const per_sequence_t E2SM_KPM_ActionDefinition_sequence
[] = {
2178 { &hf_kpm_v2_ric_Style_Type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Style_Type
},
2179 { &hf_kpm_v2_actionDefinition_formats
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_T_actionDefinition_formats
},
2180 { NULL
, 0, 0, NULL
}
2184 dissect_kpm_v2_E2SM_KPM_ActionDefinition(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2185 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2186 ett_kpm_v2_E2SM_KPM_ActionDefinition
, E2SM_KPM_ActionDefinition_sequence
);
2194 dissect_kpm_v2_T_colletStartTime(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2195 int ts_offset
= offset
;
2196 offset
= dissect_kpm_v2_TimeStamp(tvb
, offset
, actx
, tree
, hf_index
);
2198 /* Add as a generated field the timestamp decoded */
2199 const char *time_str
= tvb_ntp_fmt_ts_sec(tvb
, (ts_offset
+7)/8);
2200 proto_item
*ti
= proto_tree_add_string(tree
, hf_kpm_v2_timestamp_string
, tvb
, (ts_offset
+7)/8, 4, time_str
);
2201 proto_item_set_generated(ti
);
2210 dissect_kpm_v2_PrintableString_SIZE_0_15_(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2211 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2221 dissect_kpm_v2_PrintableString_SIZE_0_400_(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2222 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2232 dissect_kpm_v2_PrintableString_SIZE_0_8_(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2233 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2243 dissect_kpm_v2_PrintableString_SIZE_0_32_(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2244 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2252 static const per_sequence_t E2SM_KPM_IndicationHeader_Format1_sequence
[] = {
2253 { &hf_kpm_v2_colletStartTime
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_T_colletStartTime
},
2254 { &hf_kpm_v2_fileFormatversion
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_PrintableString_SIZE_0_15_
},
2255 { &hf_kpm_v2_senderName
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_PrintableString_SIZE_0_400_
},
2256 { &hf_kpm_v2_senderType
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_PrintableString_SIZE_0_8_
},
2257 { &hf_kpm_v2_vendorName
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_PrintableString_SIZE_0_32_
},
2258 { NULL
, 0, 0, NULL
}
2262 dissect_kpm_v2_E2SM_KPM_IndicationHeader_Format1(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2263 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2264 ett_kpm_v2_E2SM_KPM_IndicationHeader_Format1
, E2SM_KPM_IndicationHeader_Format1_sequence
);
2270 static const value_string kpm_v2_T_indicationHeader_formats_vals
[] = {
2271 { 0, "indicationHeader-Format1" },
2275 static const per_choice_t T_indicationHeader_formats_choice
[] = {
2276 { 0, &hf_kpm_v2_indicationHeader_Format1
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_IndicationHeader_Format1
},
2277 { 0, NULL
, 0, NULL
}
2281 dissect_kpm_v2_T_indicationHeader_formats(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2282 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2283 ett_kpm_v2_T_indicationHeader_formats
, T_indicationHeader_formats_choice
,
2290 static const per_sequence_t E2SM_KPM_IndicationHeader_sequence
[] = {
2291 { &hf_kpm_v2_indicationHeader_formats
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_T_indicationHeader_formats
},
2292 { NULL
, 0, 0, NULL
}
2296 dissect_kpm_v2_E2SM_KPM_IndicationHeader(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2297 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2298 ett_kpm_v2_E2SM_KPM_IndicationHeader
, E2SM_KPM_IndicationHeader_sequence
);
2304 static const per_sequence_t E2SM_KPM_IndicationMessage_Format2_sequence
[] = {
2305 { &hf_kpm_v2_measData
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementData
},
2306 { &hf_kpm_v2_measCondUEidList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementCondUEidList
},
2307 { &hf_kpm_v2_granulPeriod
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_GranularityPeriod
},
2308 { NULL
, 0, 0, NULL
}
2312 dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format2(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2313 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2314 ett_kpm_v2_E2SM_KPM_IndicationMessage_Format2
, E2SM_KPM_IndicationMessage_Format2_sequence
);
2320 static const per_sequence_t E2SM_KPM_IndicationMessage_Format3_sequence
[] = {
2321 { &hf_kpm_v2_ueMeasReportList
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_UEMeasurementReportList
},
2322 { NULL
, 0, 0, NULL
}
2326 dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format3(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2327 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2328 ett_kpm_v2_E2SM_KPM_IndicationMessage_Format3
, E2SM_KPM_IndicationMessage_Format3_sequence
);
2334 static const value_string kpm_v2_T_indicationMessage_formats_vals
[] = {
2335 { 0, "indicationMessage-Format1" },
2336 { 1, "indicationMessage-Format2" },
2337 { 2, "indicationMessage-Format3" },
2341 static const per_choice_t T_indicationMessage_formats_choice
[] = {
2342 { 0, &hf_kpm_v2_indicationMessage_Format1
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format1
},
2343 { 1, &hf_kpm_v2_indicationMessage_Format2
, ASN1_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format2
},
2344 { 2, &hf_kpm_v2_indicationMessage_Format3
, ASN1_NOT_EXTENSION_ROOT
, dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format3
},
2345 { 0, NULL
, 0, NULL
}
2349 dissect_kpm_v2_T_indicationMessage_formats(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2350 offset
= dissect_per_choice(tvb
, offset
, actx
, tree
, hf_index
,
2351 ett_kpm_v2_T_indicationMessage_formats
, T_indicationMessage_formats_choice
,
2358 static const per_sequence_t E2SM_KPM_IndicationMessage_sequence
[] = {
2359 { &hf_kpm_v2_indicationMessage_formats
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_T_indicationMessage_formats
},
2360 { NULL
, 0, 0, NULL
}
2364 dissect_kpm_v2_E2SM_KPM_IndicationMessage(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2365 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2366 ett_kpm_v2_E2SM_KPM_IndicationMessage
, E2SM_KPM_IndicationMessage_sequence
);
2374 dissect_kpm_v2_T_ranFunction_ShortName(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2375 tvbuff_t
*value_tvb
;
2376 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2380 if (!actx
->pinfo
->fd
->visited
) {
2381 /* N.B. too early to work out exact dissector, as don't have OID yet */
2382 e2ap_store_ran_function_mapping(actx
->pinfo
, tree
, value_tvb
,
2383 tvb_get_string_enc(actx
->pinfo
->pool
, value_tvb
, 0, tvb_captured_length(value_tvb
), ENC_ASCII
));
2394 dissect_kpm_v2_T_ranFunction_E2SM_OID(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2395 tvbuff_t
*parameter_tvb
;
2396 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2400 e2ap_update_ran_function_mapping(actx
->pinfo
, tree
, parameter_tvb
,
2401 tvb_get_string_enc(actx
->pinfo
->pool
, parameter_tvb
, 0,
2402 tvb_captured_length(parameter_tvb
), ENC_ASCII
));
2412 dissect_kpm_v2_PrintableString_SIZE_1_150_(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2413 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2421 static const per_sequence_t RANfunction_Name_sequence
[] = {
2422 { &hf_kpm_v2_ranFunction_ShortName
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_T_ranFunction_ShortName
},
2423 { &hf_kpm_v2_ranFunction_E2SM_OID
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_T_ranFunction_E2SM_OID
},
2424 { &hf_kpm_v2_ranFunction_Description
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_PrintableString_SIZE_1_150_
},
2425 { &hf_kpm_v2_ranFunction_Instance
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_INTEGER
},
2426 { NULL
, 0, 0, NULL
}
2430 dissect_kpm_v2_RANfunction_Name(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2431 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2432 ett_kpm_v2_RANfunction_Name
, RANfunction_Name_sequence
);
2440 dissect_kpm_v2_RIC_Style_Name(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2441 offset
= dissect_per_PrintableString(tvb
, offset
, actx
, tree
, hf_index
,
2451 dissect_kpm_v2_RIC_Format_Type(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2452 offset
= dissect_per_integer(tvb
, offset
, actx
, tree
, hf_index
, NULL
);
2458 static const per_sequence_t RIC_EventTriggerStyle_Item_sequence
[] = {
2459 { &hf_kpm_v2_ric_EventTriggerStyle_Type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Style_Type
},
2460 { &hf_kpm_v2_ric_EventTriggerStyle_Name
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Style_Name
},
2461 { &hf_kpm_v2_ric_EventTriggerFormat_Type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Format_Type
},
2462 { NULL
, 0, 0, NULL
}
2466 dissect_kpm_v2_RIC_EventTriggerStyle_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2467 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2468 ett_kpm_v2_RIC_EventTriggerStyle_Item
, RIC_EventTriggerStyle_Item_sequence
);
2474 static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item_sequence_of
[1] = {
2475 { &hf_kpm_v2_ric_EventTriggerStyle_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_EventTriggerStyle_Item
},
2479 dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2480 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2481 ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item
, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item_sequence_of
,
2482 1, maxnoofRICStyles
, false);
2488 static const per_sequence_t RIC_ReportStyle_Item_sequence
[] = {
2489 { &hf_kpm_v2_ric_ReportStyle_Type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Style_Type
},
2490 { &hf_kpm_v2_ric_ReportStyle_Name
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Style_Name
},
2491 { &hf_kpm_v2_ric_ActionFormat_Type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Format_Type
},
2492 { &hf_kpm_v2_measInfo_Action_List
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_MeasurementInfo_Action_List
},
2493 { &hf_kpm_v2_ric_IndicationHeaderFormat_Type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Format_Type
},
2494 { &hf_kpm_v2_ric_IndicationMessageFormat_Type
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_Format_Type
},
2495 { NULL
, 0, 0, NULL
}
2499 dissect_kpm_v2_RIC_ReportStyle_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2500 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2501 ett_kpm_v2_RIC_ReportStyle_Item
, RIC_ReportStyle_Item_sequence
);
2507 static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item_sequence_of
[1] = {
2508 { &hf_kpm_v2_ric_ReportStyle_List_item
, ASN1_NO_EXTENSIONS
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RIC_ReportStyle_Item
},
2512 dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2513 offset
= dissect_per_constrained_sequence_of(tvb
, offset
, actx
, tree
, hf_index
,
2514 ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item
, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item_sequence_of
,
2515 1, maxnoofRICStyles
, false);
2521 static const per_sequence_t E2SM_KPM_RANfunction_Description_sequence
[] = {
2522 { &hf_kpm_v2_ranFunction_Name
, ASN1_EXTENSION_ROOT
, ASN1_NOT_OPTIONAL
, dissect_kpm_v2_RANfunction_Name
},
2523 { &hf_kpm_v2_ric_EventTriggerStyle_List
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item
},
2524 { &hf_kpm_v2_ric_ReportStyle_List
, ASN1_EXTENSION_ROOT
, ASN1_OPTIONAL
, dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item
},
2525 { NULL
, 0, 0, NULL
}
2529 dissect_kpm_v2_E2SM_KPM_RANfunction_Description(tvbuff_t
*tvb _U_
, int offset _U_
, asn1_ctx_t
*actx _U_
, proto_tree
*tree _U_
, int hf_index _U_
) {
2530 offset
= dissect_per_sequence(tvb
, offset
, actx
, tree
, hf_index
,
2531 ett_kpm_v2_E2SM_KPM_RANfunction_Description
, E2SM_KPM_RANfunction_Description_sequence
);
2538 static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2540 asn1_ctx_t asn1_ctx
;
2541 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2542 offset
= dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition(tvb
, offset
, &asn1_ctx
, tree
, hf_kpm_v2_E2SM_KPM_EventTriggerDefinition_PDU
);
2543 offset
+= 7; offset
>>= 3;
2546 static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2548 asn1_ctx_t asn1_ctx
;
2549 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2550 offset
= dissect_kpm_v2_E2SM_KPM_ActionDefinition(tvb
, offset
, &asn1_ctx
, tree
, hf_kpm_v2_E2SM_KPM_ActionDefinition_PDU
);
2551 offset
+= 7; offset
>>= 3;
2554 static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2556 asn1_ctx_t asn1_ctx
;
2557 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2558 offset
= dissect_kpm_v2_E2SM_KPM_IndicationHeader(tvb
, offset
, &asn1_ctx
, tree
, hf_kpm_v2_E2SM_KPM_IndicationHeader_PDU
);
2559 offset
+= 7; offset
>>= 3;
2562 static int dissect_E2SM_KPM_IndicationMessage_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2564 asn1_ctx_t asn1_ctx
;
2565 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2566 offset
= dissect_kpm_v2_E2SM_KPM_IndicationMessage(tvb
, offset
, &asn1_ctx
, tree
, hf_kpm_v2_E2SM_KPM_IndicationMessage_PDU
);
2567 offset
+= 7; offset
>>= 3;
2570 static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t
*tvb _U_
, packet_info
*pinfo _U_
, proto_tree
*tree _U_
, void *data _U_
) {
2572 asn1_ctx_t asn1_ctx
;
2573 asn1_ctx_init(&asn1_ctx
, ASN1_ENC_PER
, true, pinfo
);
2574 offset
= dissect_kpm_v2_E2SM_KPM_RANfunction_Description(tvb
, offset
, &asn1_ctx
, tree
, hf_kpm_v2_E2SM_KPM_RANfunction_Description_PDU
);
2575 offset
+= 7; offset
>>= 3;
2581 /*--- proto_reg_handoff_kpm_v2 ---------------------------------------*/
2583 proto_reg_handoff_kpm_v2(void)
2585 //#include "packet-kpm-v2-dis-tab.c"
2587 static ran_function_dissector_t kpm_v2
=
2588 { "ORAN-E2SM-KPM", "1.3.6.1.4.1.53148.1.2.2.2", 2, 2,
2589 { dissect_E2SM_KPM_RANfunction_Description_PDU
,
2598 dissect_E2SM_KPM_ActionDefinition_PDU
,
2599 dissect_E2SM_KPM_IndicationMessage_PDU
,
2600 dissect_E2SM_KPM_IndicationHeader_PDU
,
2601 NULL
, /* no dissect_E2SM_KPM_CallProcessID_PDU */
2602 dissect_E2SM_KPM_EventTriggerDefinition_PDU
2606 /* Register dissector with e2ap */
2607 register_e2ap_ran_function_dissector(KPM_RANFUNCTIONS
, &kpm_v2
);
2612 /*--- proto_register_kpm_v2 -------------------------------------------*/
2613 void proto_register_kpm_v2(void) {
2615 /* List of fields */
2617 static hf_register_info hf
[] = {
2618 { &hf_kpm_v2_E2SM_KPM_EventTriggerDefinition_PDU
,
2619 { "E2SM-KPM-EventTriggerDefinition", "kpm-v2.E2SM_KPM_EventTriggerDefinition_element",
2620 FT_NONE
, BASE_NONE
, NULL
, 0,
2622 { &hf_kpm_v2_E2SM_KPM_ActionDefinition_PDU
,
2623 { "E2SM-KPM-ActionDefinition", "kpm-v2.E2SM_KPM_ActionDefinition_element",
2624 FT_NONE
, BASE_NONE
, NULL
, 0,
2626 { &hf_kpm_v2_E2SM_KPM_IndicationHeader_PDU
,
2627 { "E2SM-KPM-IndicationHeader", "kpm-v2.E2SM_KPM_IndicationHeader_element",
2628 FT_NONE
, BASE_NONE
, NULL
, 0,
2630 { &hf_kpm_v2_E2SM_KPM_IndicationMessage_PDU
,
2631 { "E2SM-KPM-IndicationMessage", "kpm-v2.E2SM_KPM_IndicationMessage_element",
2632 FT_NONE
, BASE_NONE
, NULL
, 0,
2634 { &hf_kpm_v2_E2SM_KPM_RANfunction_Description_PDU
,
2635 { "E2SM-KPM-RANfunction-Description", "kpm-v2.E2SM_KPM_RANfunction_Description_element",
2636 FT_NONE
, BASE_NONE
, NULL
, 0,
2638 { &hf_kpm_v2_measName
,
2639 { "measName", "kpm-v2.measName",
2640 FT_STRING
, BASE_NONE
, NULL
, 0,
2641 "MeasurementTypeName", HFILL
}},
2642 { &hf_kpm_v2_measID
,
2643 { "measID", "kpm-v2.measID",
2644 FT_UINT32
, BASE_DEC
, NULL
, 0,
2645 "MeasurementTypeID", HFILL
}},
2646 { &hf_kpm_v2_noLabel
,
2647 { "noLabel", "kpm-v2.noLabel",
2648 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_noLabel_vals
), 0,
2650 { &hf_kpm_v2_plmnID
,
2651 { "plmnID", "kpm-v2.plmnID",
2652 FT_BYTES
, BASE_NONE
, NULL
, 0,
2653 "PLMNIdentity", HFILL
}},
2654 { &hf_kpm_v2_sliceID
,
2655 { "sliceID", "kpm-v2.sliceID_element",
2656 FT_NONE
, BASE_NONE
, NULL
, 0,
2657 "S_NSSAI", HFILL
}},
2658 { &hf_kpm_v2_fiveQI
,
2659 { "fiveQI", "kpm-v2.fiveQI",
2660 FT_UINT32
, BASE_DEC
, NULL
, 0,
2663 { "qFI", "kpm-v2.qFI",
2664 FT_UINT32
, BASE_DEC
, NULL
, 0,
2665 "QosFlowIdentifier", HFILL
}},
2667 { "qCI", "kpm-v2.qCI",
2668 FT_UINT32
, BASE_DEC
, NULL
, 0,
2670 { &hf_kpm_v2_qCImax
,
2671 { "qCImax", "kpm-v2.qCImax",
2672 FT_UINT32
, BASE_DEC
, NULL
, 0,
2674 { &hf_kpm_v2_qCImin
,
2675 { "qCImin", "kpm-v2.qCImin",
2676 FT_UINT32
, BASE_DEC
, NULL
, 0,
2678 { &hf_kpm_v2_aRPmax
,
2679 { "aRPmax", "kpm-v2.aRPmax",
2680 FT_UINT32
, BASE_DEC
, NULL
, 0,
2681 "INTEGER_1_15_", HFILL
}},
2682 { &hf_kpm_v2_aRPmin
,
2683 { "aRPmin", "kpm-v2.aRPmin",
2684 FT_UINT32
, BASE_DEC
, NULL
, 0,
2685 "INTEGER_1_15_", HFILL
}},
2686 { &hf_kpm_v2_bitrateRange
,
2687 { "bitrateRange", "kpm-v2.bitrateRange",
2688 FT_UINT32
, BASE_DEC
, NULL
, 0,
2689 "INTEGER_1_65535_", HFILL
}},
2690 { &hf_kpm_v2_layerMU_MIMO
,
2691 { "layerMU-MIMO", "kpm-v2.layerMU_MIMO",
2692 FT_UINT32
, BASE_DEC
, NULL
, 0,
2693 "INTEGER_1_65535_", HFILL
}},
2695 { "sUM", "kpm-v2.sUM",
2696 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_sUM_vals
), 0,
2698 { &hf_kpm_v2_distBinX
,
2699 { "distBinX", "kpm-v2.distBinX",
2700 FT_UINT32
, BASE_DEC
, NULL
, 0,
2701 "INTEGER_1_65535_", HFILL
}},
2702 { &hf_kpm_v2_distBinY
,
2703 { "distBinY", "kpm-v2.distBinY",
2704 FT_UINT32
, BASE_DEC
, NULL
, 0,
2705 "INTEGER_1_65535_", HFILL
}},
2706 { &hf_kpm_v2_distBinZ
,
2707 { "distBinZ", "kpm-v2.distBinZ",
2708 FT_UINT32
, BASE_DEC
, NULL
, 0,
2709 "INTEGER_1_65535_", HFILL
}},
2710 { &hf_kpm_v2_preLabelOverride
,
2711 { "preLabelOverride", "kpm-v2.preLabelOverride",
2712 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_preLabelOverride_vals
), 0,
2714 { &hf_kpm_v2_startEndInd
,
2715 { "startEndInd", "kpm-v2.startEndInd",
2716 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_startEndInd_vals
), 0,
2719 { "min", "kpm-v2.min",
2720 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_min_vals
), 0,
2723 { "max", "kpm-v2.max",
2724 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_max_vals
), 0,
2727 { "avg", "kpm-v2.avg",
2728 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_avg_vals
), 0,
2730 { &hf_kpm_v2_testType
,
2731 { "testType", "kpm-v2.testType",
2732 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_TestCond_Type_vals
), 0,
2733 "TestCond_Type", HFILL
}},
2734 { &hf_kpm_v2_testExpr
,
2735 { "testExpr", "kpm-v2.testExpr",
2736 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_TestCond_Expression_vals
), 0,
2737 "TestCond_Expression", HFILL
}},
2738 { &hf_kpm_v2_testValue
,
2739 { "testValue", "kpm-v2.testValue",
2740 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_TestCond_Value_vals
), 0,
2741 "TestCond_Value", HFILL
}},
2743 { "gBR", "kpm-v2.gBR",
2744 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_gBR_vals
), 0,
2747 { "aMBR", "kpm-v2.aMBR",
2748 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_aMBR_vals
), 0,
2750 { &hf_kpm_v2_isStat
,
2751 { "isStat", "kpm-v2.isStat",
2752 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_isStat_vals
), 0,
2754 { &hf_kpm_v2_isCatM
,
2755 { "isCatM", "kpm-v2.isCatM",
2756 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_isCatM_vals
), 0,
2759 { "rSRP", "kpm-v2.rSRP",
2760 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_rSRP_vals
), 0,
2763 { "rSRQ", "kpm-v2.rSRQ",
2764 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_rSRQ_vals
), 0,
2766 { &hf_kpm_v2_ul_rSRP
,
2767 { "ul-rSRP", "kpm-v2.ul_rSRP",
2768 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_ul_rSRP_vals
), 0,
2771 { "cQI", "kpm-v2.cQI",
2772 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_cQI_vals
), 0,
2774 { &hf_kpm_v2_fiveQI_01
,
2775 { "fiveQI", "kpm-v2.fiveQI",
2776 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_fiveQI_vals
), 0,
2778 { &hf_kpm_v2_qCI_01
,
2779 { "qCI", "kpm-v2.qCI",
2780 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_qCI_vals
), 0,
2782 { &hf_kpm_v2_sNSSAI
,
2783 { "sNSSAI", "kpm-v2.sNSSAI",
2784 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_sNSSAI_vals
), 0,
2786 { &hf_kpm_v2_valueInt
,
2787 { "valueInt", "kpm-v2.valueInt",
2788 FT_INT32
, BASE_DEC
, NULL
, 0,
2789 "INTEGER", HFILL
}},
2790 { &hf_kpm_v2_valueEnum
,
2791 { "valueEnum", "kpm-v2.valueEnum",
2792 FT_INT32
, BASE_DEC
, NULL
, 0,
2793 "INTEGER", HFILL
}},
2794 { &hf_kpm_v2_valueBool
,
2795 { "valueBool", "kpm-v2.valueBool",
2796 FT_BOOLEAN
, BASE_NONE
, NULL
, 0,
2797 "BOOLEAN", HFILL
}},
2798 { &hf_kpm_v2_valueBitS
,
2799 { "valueBitS", "kpm-v2.valueBitS",
2800 FT_BYTES
, BASE_NONE
, NULL
, 0,
2801 "BIT_STRING", HFILL
}},
2802 { &hf_kpm_v2_valueOctS
,
2803 { "valueOctS", "kpm-v2.valueOctS",
2804 FT_BYTES
, BASE_NONE
, NULL
, 0,
2805 "OCTET_STRING", HFILL
}},
2806 { &hf_kpm_v2_valuePrtS
,
2807 { "valuePrtS", "kpm-v2.valuePrtS",
2808 FT_STRING
, BASE_NONE
, NULL
, 0,
2809 "PrintableString", HFILL
}},
2810 { &hf_kpm_v2_valueReal
,
2811 { "valueReal", "kpm-v2.valueReal",
2812 FT_DOUBLE
, BASE_NONE
, NULL
, 0,
2814 { &hf_kpm_v2_MeasurementInfoList_item
,
2815 { "MeasurementInfoItem", "kpm-v2.MeasurementInfoItem_element",
2816 FT_NONE
, BASE_NONE
, NULL
, 0,
2818 { &hf_kpm_v2_measType
,
2819 { "measType", "kpm-v2.measType",
2820 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_MeasurementType_vals
), 0,
2821 "MeasurementType", HFILL
}},
2822 { &hf_kpm_v2_labelInfoList
,
2823 { "labelInfoList", "kpm-v2.labelInfoList",
2824 FT_UINT32
, BASE_DEC
, NULL
, 0,
2826 { &hf_kpm_v2_LabelInfoList_item
,
2827 { "LabelInfoItem", "kpm-v2.LabelInfoItem_element",
2828 FT_NONE
, BASE_NONE
, NULL
, 0,
2830 { &hf_kpm_v2_measLabel
,
2831 { "measLabel", "kpm-v2.measLabel_element",
2832 FT_NONE
, BASE_NONE
, NULL
, 0,
2833 "MeasurementLabel", HFILL
}},
2834 { &hf_kpm_v2_MeasurementData_item
,
2835 { "MeasurementDataItem", "kpm-v2.MeasurementDataItem_element",
2836 FT_NONE
, BASE_NONE
, NULL
, 0,
2838 { &hf_kpm_v2_measRecord
,
2839 { "measRecord", "kpm-v2.measRecord",
2840 FT_UINT32
, BASE_DEC
, NULL
, 0,
2841 "MeasurementRecord", HFILL
}},
2842 { &hf_kpm_v2_incompleteFlag
,
2843 { "incompleteFlag", "kpm-v2.incompleteFlag",
2844 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_incompleteFlag_vals
), 0,
2846 { &hf_kpm_v2_MeasurementRecord_item
,
2847 { "MeasurementRecordItem", "kpm-v2.MeasurementRecordItem",
2848 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_MeasurementRecordItem_vals
), 0,
2850 { &hf_kpm_v2_integer
,
2851 { "integer", "kpm-v2.integer",
2852 FT_UINT32
, BASE_DEC
, NULL
, 0,
2853 "INTEGER_0_4294967295", HFILL
}},
2855 { "real", "kpm-v2.real",
2856 FT_DOUBLE
, BASE_NONE
, NULL
, 0,
2858 { &hf_kpm_v2_noValue
,
2859 { "noValue", "kpm-v2.noValue_element",
2860 FT_NONE
, BASE_NONE
, NULL
, 0,
2862 { &hf_kpm_v2_MeasurementInfo_Action_List_item
,
2863 { "MeasurementInfo-Action-Item", "kpm-v2.MeasurementInfo_Action_Item_element",
2864 FT_NONE
, BASE_NONE
, NULL
, 0,
2866 { &hf_kpm_v2_MeasurementCondList_item
,
2867 { "MeasurementCondItem", "kpm-v2.MeasurementCondItem_element",
2868 FT_NONE
, BASE_NONE
, NULL
, 0,
2870 { &hf_kpm_v2_matchingCond
,
2871 { "matchingCond", "kpm-v2.matchingCond",
2872 FT_UINT32
, BASE_DEC
, NULL
, 0,
2873 "MatchingCondList", HFILL
}},
2874 { &hf_kpm_v2_MeasurementCondUEidList_item
,
2875 { "MeasurementCondUEidItem", "kpm-v2.MeasurementCondUEidItem_element",
2876 FT_NONE
, BASE_NONE
, NULL
, 0,
2878 { &hf_kpm_v2_matchingUEidList
,
2879 { "matchingUEidList", "kpm-v2.matchingUEidList",
2880 FT_UINT32
, BASE_DEC
, NULL
, 0,
2882 { &hf_kpm_v2_MatchingCondList_item
,
2883 { "MatchingCondItem", "kpm-v2.MatchingCondItem",
2884 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_MatchingCondItem_vals
), 0,
2886 { &hf_kpm_v2_testCondInfo
,
2887 { "testCondInfo", "kpm-v2.testCondInfo_element",
2888 FT_NONE
, BASE_NONE
, NULL
, 0,
2890 { &hf_kpm_v2_MatchingUEidList_item
,
2891 { "MatchingUEidItem", "kpm-v2.MatchingUEidItem_element",
2892 FT_NONE
, BASE_NONE
, NULL
, 0,
2895 { "ueID", "kpm-v2.ueID",
2896 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_UEID_vals
), 0,
2898 { &hf_kpm_v2_MatchingUeCondPerSubList_item
,
2899 { "MatchingUeCondPerSubItem", "kpm-v2.MatchingUeCondPerSubItem_element",
2900 FT_NONE
, BASE_NONE
, NULL
, 0,
2902 { &hf_kpm_v2_MatchingUEidPerSubList_item
,
2903 { "MatchingUEidPerSubItem", "kpm-v2.MatchingUEidPerSubItem_element",
2904 FT_NONE
, BASE_NONE
, NULL
, 0,
2906 { &hf_kpm_v2_UEMeasurementReportList_item
,
2907 { "UEMeasurementReportItem", "kpm-v2.UEMeasurementReportItem_element",
2908 FT_NONE
, BASE_NONE
, NULL
, 0,
2910 { &hf_kpm_v2_measReport
,
2911 { "measReport", "kpm-v2.measReport_element",
2912 FT_NONE
, BASE_NONE
, NULL
, 0,
2913 "E2SM_KPM_IndicationMessage_Format1", HFILL
}},
2914 { &hf_kpm_v2_eventDefinition_formats
,
2915 { "eventDefinition-formats", "kpm-v2.eventDefinition_formats",
2916 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_eventDefinition_formats_vals
), 0,
2918 { &hf_kpm_v2_eventDefinition_Format1
,
2919 { "eventDefinition-Format1", "kpm-v2.eventDefinition_Format1_element",
2920 FT_NONE
, BASE_NONE
, NULL
, 0,
2921 "E2SM_KPM_EventTriggerDefinition_Format1", HFILL
}},
2922 { &hf_kpm_v2_reportingPeriod
,
2923 { "reportingPeriod", "kpm-v2.reportingPeriod",
2924 FT_UINT32
, BASE_DEC
, NULL
, 0,
2925 "INTEGER_1_4294967295", HFILL
}},
2926 { &hf_kpm_v2_ric_Style_Type
,
2927 { "ric-Style-Type", "kpm-v2.ric_Style_Type",
2928 FT_INT32
, BASE_DEC
, NULL
, 0,
2930 { &hf_kpm_v2_actionDefinition_formats
,
2931 { "actionDefinition-formats", "kpm-v2.actionDefinition_formats",
2932 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_actionDefinition_formats_vals
), 0,
2934 { &hf_kpm_v2_actionDefinition_Format1
,
2935 { "actionDefinition-Format1", "kpm-v2.actionDefinition_Format1_element",
2936 FT_NONE
, BASE_NONE
, NULL
, 0,
2937 "E2SM_KPM_ActionDefinition_Format1", HFILL
}},
2938 { &hf_kpm_v2_actionDefinition_Format2
,
2939 { "actionDefinition-Format2", "kpm-v2.actionDefinition_Format2_element",
2940 FT_NONE
, BASE_NONE
, NULL
, 0,
2941 "E2SM_KPM_ActionDefinition_Format2", HFILL
}},
2942 { &hf_kpm_v2_actionDefinition_Format3
,
2943 { "actionDefinition-Format3", "kpm-v2.actionDefinition_Format3_element",
2944 FT_NONE
, BASE_NONE
, NULL
, 0,
2945 "E2SM_KPM_ActionDefinition_Format3", HFILL
}},
2946 { &hf_kpm_v2_actionDefinition_Format4
,
2947 { "actionDefinition-Format4", "kpm-v2.actionDefinition_Format4_element",
2948 FT_NONE
, BASE_NONE
, NULL
, 0,
2949 "E2SM_KPM_ActionDefinition_Format4", HFILL
}},
2950 { &hf_kpm_v2_actionDefinition_Format5
,
2951 { "actionDefinition-Format5", "kpm-v2.actionDefinition_Format5_element",
2952 FT_NONE
, BASE_NONE
, NULL
, 0,
2953 "E2SM_KPM_ActionDefinition_Format5", HFILL
}},
2954 { &hf_kpm_v2_measInfoList
,
2955 { "measInfoList", "kpm-v2.measInfoList",
2956 FT_UINT32
, BASE_DEC
, NULL
, 0,
2957 "MeasurementInfoList", HFILL
}},
2958 { &hf_kpm_v2_granulPeriod
,
2959 { "granulPeriod", "kpm-v2.granulPeriod",
2960 FT_UINT32
, BASE_DEC
, NULL
, 0,
2961 "GranularityPeriod", HFILL
}},
2962 { &hf_kpm_v2_cellGlobalID
,
2963 { "cellGlobalID", "kpm-v2.cellGlobalID",
2964 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_CGI_vals
), 0,
2966 { &hf_kpm_v2_subscriptInfo
,
2967 { "subscriptInfo", "kpm-v2.subscriptInfo_element",
2968 FT_NONE
, BASE_NONE
, NULL
, 0,
2969 "E2SM_KPM_ActionDefinition_Format1", HFILL
}},
2970 { &hf_kpm_v2_measCondList
,
2971 { "measCondList", "kpm-v2.measCondList",
2972 FT_UINT32
, BASE_DEC
, NULL
, 0,
2973 "MeasurementCondList", HFILL
}},
2974 { &hf_kpm_v2_matchingUeCondList
,
2975 { "matchingUeCondList", "kpm-v2.matchingUeCondList",
2976 FT_UINT32
, BASE_DEC
, NULL
, 0,
2977 "MatchingUeCondPerSubList", HFILL
}},
2978 { &hf_kpm_v2_subscriptionInfo
,
2979 { "subscriptionInfo", "kpm-v2.subscriptionInfo_element",
2980 FT_NONE
, BASE_NONE
, NULL
, 0,
2981 "E2SM_KPM_ActionDefinition_Format1", HFILL
}},
2982 { &hf_kpm_v2_matchingUEidList_01
,
2983 { "matchingUEidList", "kpm-v2.matchingUEidList",
2984 FT_UINT32
, BASE_DEC
, NULL
, 0,
2985 "MatchingUEidPerSubList", HFILL
}},
2986 { &hf_kpm_v2_indicationHeader_formats
,
2987 { "indicationHeader-formats", "kpm-v2.indicationHeader_formats",
2988 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_indicationHeader_formats_vals
), 0,
2990 { &hf_kpm_v2_indicationHeader_Format1
,
2991 { "indicationHeader-Format1", "kpm-v2.indicationHeader_Format1_element",
2992 FT_NONE
, BASE_NONE
, NULL
, 0,
2993 "E2SM_KPM_IndicationHeader_Format1", HFILL
}},
2994 { &hf_kpm_v2_colletStartTime
,
2995 { "colletStartTime", "kpm-v2.colletStartTime",
2996 FT_BYTES
, BASE_NONE
, NULL
, 0,
2998 { &hf_kpm_v2_fileFormatversion
,
2999 { "fileFormatversion", "kpm-v2.fileFormatversion",
3000 FT_STRING
, BASE_NONE
, NULL
, 0,
3001 "PrintableString_SIZE_0_15_", HFILL
}},
3002 { &hf_kpm_v2_senderName
,
3003 { "senderName", "kpm-v2.senderName",
3004 FT_STRING
, BASE_NONE
, NULL
, 0,
3005 "PrintableString_SIZE_0_400_", HFILL
}},
3006 { &hf_kpm_v2_senderType
,
3007 { "senderType", "kpm-v2.senderType",
3008 FT_STRING
, BASE_NONE
, NULL
, 0,
3009 "PrintableString_SIZE_0_8_", HFILL
}},
3010 { &hf_kpm_v2_vendorName
,
3011 { "vendorName", "kpm-v2.vendorName",
3012 FT_STRING
, BASE_NONE
, NULL
, 0,
3013 "PrintableString_SIZE_0_32_", HFILL
}},
3014 { &hf_kpm_v2_indicationMessage_formats
,
3015 { "indicationMessage-formats", "kpm-v2.indicationMessage_formats",
3016 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_T_indicationMessage_formats_vals
), 0,
3018 { &hf_kpm_v2_indicationMessage_Format1
,
3019 { "indicationMessage-Format1", "kpm-v2.indicationMessage_Format1_element",
3020 FT_NONE
, BASE_NONE
, NULL
, 0,
3021 "E2SM_KPM_IndicationMessage_Format1", HFILL
}},
3022 { &hf_kpm_v2_indicationMessage_Format2
,
3023 { "indicationMessage-Format2", "kpm-v2.indicationMessage_Format2_element",
3024 FT_NONE
, BASE_NONE
, NULL
, 0,
3025 "E2SM_KPM_IndicationMessage_Format2", HFILL
}},
3026 { &hf_kpm_v2_indicationMessage_Format3
,
3027 { "indicationMessage-Format3", "kpm-v2.indicationMessage_Format3_element",
3028 FT_NONE
, BASE_NONE
, NULL
, 0,
3029 "E2SM_KPM_IndicationMessage_Format3", HFILL
}},
3030 { &hf_kpm_v2_measData
,
3031 { "measData", "kpm-v2.measData",
3032 FT_UINT32
, BASE_DEC
, NULL
, 0,
3033 "MeasurementData", HFILL
}},
3034 { &hf_kpm_v2_measCondUEidList
,
3035 { "measCondUEidList", "kpm-v2.measCondUEidList",
3036 FT_UINT32
, BASE_DEC
, NULL
, 0,
3037 "MeasurementCondUEidList", HFILL
}},
3038 { &hf_kpm_v2_ueMeasReportList
,
3039 { "ueMeasReportList", "kpm-v2.ueMeasReportList",
3040 FT_UINT32
, BASE_DEC
, NULL
, 0,
3041 "UEMeasurementReportList", HFILL
}},
3042 { &hf_kpm_v2_ranFunction_Name
,
3043 { "ranFunction-Name", "kpm-v2.ranFunction_Name_element",
3044 FT_NONE
, BASE_NONE
, NULL
, 0,
3046 { &hf_kpm_v2_ric_EventTriggerStyle_List
,
3047 { "ric-EventTriggerStyle-List", "kpm-v2.ric_EventTriggerStyle_List",
3048 FT_UINT32
, BASE_DEC
, NULL
, 0,
3049 "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item", HFILL
}},
3050 { &hf_kpm_v2_ric_EventTriggerStyle_List_item
,
3051 { "RIC-EventTriggerStyle-Item", "kpm-v2.RIC_EventTriggerStyle_Item_element",
3052 FT_NONE
, BASE_NONE
, NULL
, 0,
3054 { &hf_kpm_v2_ric_ReportStyle_List
,
3055 { "ric-ReportStyle-List", "kpm-v2.ric_ReportStyle_List",
3056 FT_UINT32
, BASE_DEC
, NULL
, 0,
3057 "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item", HFILL
}},
3058 { &hf_kpm_v2_ric_ReportStyle_List_item
,
3059 { "RIC-ReportStyle-Item", "kpm-v2.RIC_ReportStyle_Item_element",
3060 FT_NONE
, BASE_NONE
, NULL
, 0,
3062 { &hf_kpm_v2_ric_EventTriggerStyle_Type
,
3063 { "ric-EventTriggerStyle-Type", "kpm-v2.ric_EventTriggerStyle_Type",
3064 FT_INT32
, BASE_DEC
, NULL
, 0,
3065 "RIC_Style_Type", HFILL
}},
3066 { &hf_kpm_v2_ric_EventTriggerStyle_Name
,
3067 { "ric-EventTriggerStyle-Name", "kpm-v2.ric_EventTriggerStyle_Name",
3068 FT_STRING
, BASE_NONE
, NULL
, 0,
3069 "RIC_Style_Name", HFILL
}},
3070 { &hf_kpm_v2_ric_EventTriggerFormat_Type
,
3071 { "ric-EventTriggerFormat-Type", "kpm-v2.ric_EventTriggerFormat_Type",
3072 FT_INT32
, BASE_DEC
, NULL
, 0,
3073 "RIC_Format_Type", HFILL
}},
3074 { &hf_kpm_v2_ric_ReportStyle_Type
,
3075 { "ric-ReportStyle-Type", "kpm-v2.ric_ReportStyle_Type",
3076 FT_INT32
, BASE_DEC
, NULL
, 0,
3077 "RIC_Style_Type", HFILL
}},
3078 { &hf_kpm_v2_ric_ReportStyle_Name
,
3079 { "ric-ReportStyle-Name", "kpm-v2.ric_ReportStyle_Name",
3080 FT_STRING
, BASE_NONE
, NULL
, 0,
3081 "RIC_Style_Name", HFILL
}},
3082 { &hf_kpm_v2_ric_ActionFormat_Type
,
3083 { "ric-ActionFormat-Type", "kpm-v2.ric_ActionFormat_Type",
3084 FT_INT32
, BASE_DEC
, NULL
, 0,
3085 "RIC_Format_Type", HFILL
}},
3086 { &hf_kpm_v2_measInfo_Action_List
,
3087 { "measInfo-Action-List", "kpm-v2.measInfo_Action_List",
3088 FT_UINT32
, BASE_DEC
, NULL
, 0,
3089 "MeasurementInfo_Action_List", HFILL
}},
3090 { &hf_kpm_v2_ric_IndicationHeaderFormat_Type
,
3091 { "ric-IndicationHeaderFormat-Type", "kpm-v2.ric_IndicationHeaderFormat_Type",
3092 FT_INT32
, BASE_DEC
, NULL
, 0,
3093 "RIC_Format_Type", HFILL
}},
3094 { &hf_kpm_v2_ric_IndicationMessageFormat_Type
,
3095 { "ric-IndicationMessageFormat-Type", "kpm-v2.ric_IndicationMessageFormat_Type",
3096 FT_INT32
, BASE_DEC
, NULL
, 0,
3097 "RIC_Format_Type", HFILL
}},
3098 { &hf_kpm_v2_nR_CGI
,
3099 { "nR-CGI", "kpm-v2.nR_CGI_element",
3100 FT_NONE
, BASE_NONE
, NULL
, 0,
3102 { &hf_kpm_v2_eUTRA_CGI
,
3103 { "eUTRA-CGI", "kpm-v2.eUTRA_CGI_element",
3104 FT_NONE
, BASE_NONE
, NULL
, 0,
3106 { &hf_kpm_v2_ranFunction_ShortName
,
3107 { "ranFunction-ShortName", "kpm-v2.ranFunction_ShortName",
3108 FT_STRING
, BASE_NONE
, NULL
, 0,
3110 { &hf_kpm_v2_ranFunction_E2SM_OID
,
3111 { "ranFunction-E2SM-OID", "kpm-v2.ranFunction_E2SM_OID",
3112 FT_STRING
, BASE_NONE
, NULL
, 0,
3114 { &hf_kpm_v2_ranFunction_Description
,
3115 { "ranFunction-Description", "kpm-v2.ranFunction_Description",
3116 FT_STRING
, BASE_NONE
, NULL
, 0,
3117 "PrintableString_SIZE_1_150_", HFILL
}},
3118 { &hf_kpm_v2_ranFunction_Instance
,
3119 { "ranFunction-Instance", "kpm-v2.ranFunction_Instance",
3120 FT_INT32
, BASE_DEC
, NULL
, 0,
3121 "INTEGER", HFILL
}},
3122 { &hf_kpm_v2_gNB_UEID
,
3123 { "gNB-UEID", "kpm-v2.gNB_UEID_element",
3124 FT_NONE
, BASE_NONE
, NULL
, 0,
3125 "UEID_GNB", HFILL
}},
3126 { &hf_kpm_v2_gNB_DU_UEID
,
3127 { "gNB-DU-UEID", "kpm-v2.gNB_DU_UEID_element",
3128 FT_NONE
, BASE_NONE
, NULL
, 0,
3129 "UEID_GNB_DU", HFILL
}},
3130 { &hf_kpm_v2_gNB_CU_UP_UEID
,
3131 { "gNB-CU-UP-UEID", "kpm-v2.gNB_CU_UP_UEID_element",
3132 FT_NONE
, BASE_NONE
, NULL
, 0,
3133 "UEID_GNB_CU_UP", HFILL
}},
3134 { &hf_kpm_v2_ng_eNB_UEID
,
3135 { "ng-eNB-UEID", "kpm-v2.ng_eNB_UEID_element",
3136 FT_NONE
, BASE_NONE
, NULL
, 0,
3137 "UEID_NG_ENB", HFILL
}},
3138 { &hf_kpm_v2_ng_eNB_DU_UEID
,
3139 { "ng-eNB-DU-UEID", "kpm-v2.ng_eNB_DU_UEID_element",
3140 FT_NONE
, BASE_NONE
, NULL
, 0,
3141 "UEID_NG_ENB_DU", HFILL
}},
3142 { &hf_kpm_v2_en_gNB_UEID
,
3143 { "en-gNB-UEID", "kpm-v2.en_gNB_UEID_element",
3144 FT_NONE
, BASE_NONE
, NULL
, 0,
3145 "UEID_EN_GNB", HFILL
}},
3146 { &hf_kpm_v2_eNB_UEID
,
3147 { "eNB-UEID", "kpm-v2.eNB_UEID_element",
3148 FT_NONE
, BASE_NONE
, NULL
, 0,
3149 "UEID_ENB", HFILL
}},
3150 { &hf_kpm_v2_amf_UE_NGAP_ID
,
3151 { "amf-UE-NGAP-ID", "kpm-v2.amf_UE_NGAP_ID",
3152 FT_UINT64
, BASE_DEC
, NULL
, 0,
3155 { "guami", "kpm-v2.guami_element",
3156 FT_NONE
, BASE_NONE
, NULL
, 0,
3158 { &hf_kpm_v2_gNB_CU_UE_F1AP_ID_List
,
3159 { "gNB-CU-UE-F1AP-ID-List", "kpm-v2.gNB_CU_UE_F1AP_ID_List",
3160 FT_UINT32
, BASE_DEC
, NULL
, 0,
3161 "UEID_GNB_CU_F1AP_ID_List", HFILL
}},
3162 { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID_List
,
3163 { "gNB-CU-CP-UE-E1AP-ID-List", "kpm-v2.gNB_CU_CP_UE_E1AP_ID_List",
3164 FT_UINT32
, BASE_DEC
, NULL
, 0,
3165 "UEID_GNB_CU_CP_E1AP_ID_List", HFILL
}},
3166 { &hf_kpm_v2_ran_UEID
,
3167 { "ran-UEID", "kpm-v2.ran_UEID",
3168 FT_BYTES
, BASE_NONE
, NULL
, 0,
3169 "RANUEID", HFILL
}},
3170 { &hf_kpm_v2_m_NG_RAN_UE_XnAP_ID
,
3171 { "m-NG-RAN-UE-XnAP-ID", "kpm-v2.m_NG_RAN_UE_XnAP_ID",
3172 FT_UINT32
, BASE_DEC
, NULL
, 0,
3173 "NG_RANnodeUEXnAPID", HFILL
}},
3174 { &hf_kpm_v2_globalGNB_ID
,
3175 { "globalGNB-ID", "kpm-v2.globalGNB_ID_element",
3176 FT_NONE
, BASE_NONE
, NULL
, 0,
3178 { &hf_kpm_v2_globalNG_RANNode_ID
,
3179 { "globalNG-RANNode-ID", "kpm-v2.globalNG_RANNode_ID",
3180 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_GlobalNGRANNodeID_vals
), 0,
3181 "GlobalNGRANNodeID", HFILL
}},
3182 { &hf_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List_item
,
3183 { "UEID-GNB-CU-CP-E1AP-ID-Item", "kpm-v2.UEID_GNB_CU_CP_E1AP_ID_Item_element",
3184 FT_NONE
, BASE_NONE
, NULL
, 0,
3186 { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID
,
3187 { "gNB-CU-CP-UE-E1AP-ID", "kpm-v2.gNB_CU_CP_UE_E1AP_ID",
3188 FT_UINT32
, BASE_DEC
, NULL
, 0,
3190 { &hf_kpm_v2_UEID_GNB_CU_F1AP_ID_List_item
,
3191 { "UEID-GNB-CU-CP-F1AP-ID-Item", "kpm-v2.UEID_GNB_CU_CP_F1AP_ID_Item_element",
3192 FT_NONE
, BASE_NONE
, NULL
, 0,
3194 { &hf_kpm_v2_gNB_CU_UE_F1AP_ID
,
3195 { "gNB-CU-UE-F1AP-ID", "kpm-v2.gNB_CU_UE_F1AP_ID",
3196 FT_UINT32
, BASE_DEC
, NULL
, 0,
3198 { &hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID
,
3199 { "ng-eNB-CU-UE-W1AP-ID", "kpm-v2.ng_eNB_CU_UE_W1AP_ID",
3200 FT_UINT32
, BASE_DEC
, NULL
, 0,
3201 "NGENB_CU_UE_W1AP_ID", HFILL
}},
3202 { &hf_kpm_v2_globalNgENB_ID
,
3203 { "globalNgENB-ID", "kpm-v2.globalNgENB_ID_element",
3204 FT_NONE
, BASE_NONE
, NULL
, 0,
3206 { &hf_kpm_v2_m_eNB_UE_X2AP_ID
,
3207 { "m-eNB-UE-X2AP-ID", "kpm-v2.m_eNB_UE_X2AP_ID",
3208 FT_UINT32
, BASE_DEC
, NULL
, 0,
3209 "ENB_UE_X2AP_ID", HFILL
}},
3210 { &hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension
,
3211 { "m-eNB-UE-X2AP-ID-Extension", "kpm-v2.m_eNB_UE_X2AP_ID_Extension",
3212 FT_UINT32
, BASE_DEC
, NULL
, 0,
3213 "ENB_UE_X2AP_ID_Extension", HFILL
}},
3214 { &hf_kpm_v2_globalENB_ID
,
3215 { "globalENB-ID", "kpm-v2.globalENB_ID_element",
3216 FT_NONE
, BASE_NONE
, NULL
, 0,
3218 { &hf_kpm_v2_mME_UE_S1AP_ID
,
3219 { "mME-UE-S1AP-ID", "kpm-v2.mME_UE_S1AP_ID",
3220 FT_UINT32
, BASE_DEC
, NULL
, 0,
3222 { &hf_kpm_v2_gUMMEI
,
3223 { "gUMMEI", "kpm-v2.gUMMEI_element",
3224 FT_NONE
, BASE_NONE
, NULL
, 0,
3226 { &hf_kpm_v2_macro_eNB_ID
,
3227 { "macro-eNB-ID", "kpm-v2.macro_eNB_ID",
3228 FT_BYTES
, BASE_NONE
, NULL
, 0,
3229 "BIT_STRING_SIZE_20", HFILL
}},
3230 { &hf_kpm_v2_home_eNB_ID
,
3231 { "home-eNB-ID", "kpm-v2.home_eNB_ID",
3232 FT_BYTES
, BASE_NONE
, NULL
, 0,
3233 "BIT_STRING_SIZE_28", HFILL
}},
3234 { &hf_kpm_v2_short_Macro_eNB_ID
,
3235 { "short-Macro-eNB-ID", "kpm-v2.short_Macro_eNB_ID",
3236 FT_BYTES
, BASE_NONE
, NULL
, 0,
3237 "BIT_STRING_SIZE_18", HFILL
}},
3238 { &hf_kpm_v2_long_Macro_eNB_ID
,
3239 { "long-Macro-eNB-ID", "kpm-v2.long_Macro_eNB_ID",
3240 FT_BYTES
, BASE_NONE
, NULL
, 0,
3241 "BIT_STRING_SIZE_21", HFILL
}},
3242 { &hf_kpm_v2_pLMNIdentity
,
3243 { "pLMNIdentity", "kpm-v2.pLMNIdentity",
3244 FT_BYTES
, BASE_NONE
, NULL
, 0,
3246 { &hf_kpm_v2_eNB_ID
,
3247 { "eNB-ID", "kpm-v2.eNB_ID",
3248 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_ENB_ID_vals
), 0,
3250 { &hf_kpm_v2_pLMN_Identity
,
3251 { "pLMN-Identity", "kpm-v2.pLMN_Identity",
3252 FT_BYTES
, BASE_NONE
, NULL
, 0,
3253 "PLMNIdentity", HFILL
}},
3254 { &hf_kpm_v2_mME_Group_ID
,
3255 { "mME-Group-ID", "kpm-v2.mME_Group_ID",
3256 FT_BYTES
, BASE_NONE
, NULL
, 0,
3258 { &hf_kpm_v2_mME_Code
,
3259 { "mME-Code", "kpm-v2.mME_Code",
3260 FT_BYTES
, BASE_NONE
, NULL
, 0,
3262 { &hf_kpm_v2_eUTRACellIdentity
,
3263 { "eUTRACellIdentity", "kpm-v2.eUTRACellIdentity",
3264 FT_BYTES
, BASE_NONE
, NULL
, 0,
3266 { &hf_kpm_v2_gNB_ID
,
3267 { "gNB-ID", "kpm-v2.gNB_ID",
3268 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_GNB_ID_vals
), 0,
3270 { &hf_kpm_v2_ngENB_ID
,
3271 { "ngENB-ID", "kpm-v2.ngENB_ID",
3272 FT_UINT32
, BASE_DEC
, VALS(kpm_v2_NgENB_ID_vals
), 0,
3274 { &hf_kpm_v2_gNB_ID_01
,
3275 { "gNB-ID", "kpm-v2.gNB_ID",
3276 FT_BYTES
, BASE_NONE
, NULL
, 0,
3277 "BIT_STRING_SIZE_22_32", HFILL
}},
3278 { &hf_kpm_v2_aMFRegionID
,
3279 { "aMFRegionID", "kpm-v2.aMFRegionID",
3280 FT_BYTES
, BASE_NONE
, NULL
, 0,
3282 { &hf_kpm_v2_aMFSetID
,
3283 { "aMFSetID", "kpm-v2.aMFSetID",
3284 FT_BYTES
, BASE_NONE
, NULL
, 0,
3286 { &hf_kpm_v2_aMFPointer
,
3287 { "aMFPointer", "kpm-v2.aMFPointer",
3288 FT_BYTES
, BASE_NONE
, NULL
, 0,
3290 { &hf_kpm_v2_macroNgENB_ID
,
3291 { "macroNgENB-ID", "kpm-v2.macroNgENB_ID",
3292 FT_BYTES
, BASE_NONE
, NULL
, 0,
3293 "BIT_STRING_SIZE_20", HFILL
}},
3294 { &hf_kpm_v2_shortMacroNgENB_ID
,
3295 { "shortMacroNgENB-ID", "kpm-v2.shortMacroNgENB_ID",
3296 FT_BYTES
, BASE_NONE
, NULL
, 0,
3297 "BIT_STRING_SIZE_18", HFILL
}},
3298 { &hf_kpm_v2_longMacroNgENB_ID
,
3299 { "longMacroNgENB-ID", "kpm-v2.longMacroNgENB_ID",
3300 FT_BYTES
, BASE_NONE
, NULL
, 0,
3301 "BIT_STRING_SIZE_21", HFILL
}},
3302 { &hf_kpm_v2_nRCellIdentity
,
3303 { "nRCellIdentity", "kpm-v2.nRCellIdentity",
3304 FT_BYTES
, BASE_NONE
, NULL
, 0,
3307 { "sST", "kpm-v2.sST",
3308 FT_BYTES
, BASE_NONE
, NULL
, 0,
3311 { "sD", "kpm-v2.sD",
3312 FT_BYTES
, BASE_NONE
, NULL
, 0,
3315 { "gNB", "kpm-v2.gNB_element",
3316 FT_NONE
, BASE_NONE
, NULL
, 0,
3317 "GlobalGNB_ID", HFILL
}},
3318 { &hf_kpm_v2_ng_eNB
,
3319 { "ng-eNB", "kpm-v2.ng_eNB_element",
3320 FT_NONE
, BASE_NONE
, NULL
, 0,
3321 "GlobalNgENB_ID", HFILL
}},
3322 { &hf_kpm_v2_timestamp_string
,
3323 { "Timestamp string", "kpm-v2.timestamp-string",
3324 FT_STRING
, BASE_NONE
, NULL
, 0x0,
3328 /* List of subtrees */
3329 static int *ett
[] = {
3330 &ett_kpm_v2_MeasurementType
,
3331 &ett_kpm_v2_MeasurementLabel
,
3332 &ett_kpm_v2_TestCondInfo
,
3333 &ett_kpm_v2_TestCond_Type
,
3334 &ett_kpm_v2_TestCond_Value
,
3335 &ett_kpm_v2_MeasurementInfoList
,
3336 &ett_kpm_v2_MeasurementInfoItem
,
3337 &ett_kpm_v2_LabelInfoList
,
3338 &ett_kpm_v2_LabelInfoItem
,
3339 &ett_kpm_v2_MeasurementData
,
3340 &ett_kpm_v2_MeasurementDataItem
,
3341 &ett_kpm_v2_MeasurementRecord
,
3342 &ett_kpm_v2_MeasurementRecordItem
,
3343 &ett_kpm_v2_MeasurementInfo_Action_List
,
3344 &ett_kpm_v2_MeasurementInfo_Action_Item
,
3345 &ett_kpm_v2_MeasurementCondList
,
3346 &ett_kpm_v2_MeasurementCondItem
,
3347 &ett_kpm_v2_MeasurementCondUEidList
,
3348 &ett_kpm_v2_MeasurementCondUEidItem
,
3349 &ett_kpm_v2_MatchingCondList
,
3350 &ett_kpm_v2_MatchingCondItem
,
3351 &ett_kpm_v2_MatchingUEidList
,
3352 &ett_kpm_v2_MatchingUEidItem
,
3353 &ett_kpm_v2_MatchingUeCondPerSubList
,
3354 &ett_kpm_v2_MatchingUeCondPerSubItem
,
3355 &ett_kpm_v2_MatchingUEidPerSubList
,
3356 &ett_kpm_v2_MatchingUEidPerSubItem
,
3357 &ett_kpm_v2_UEMeasurementReportList
,
3358 &ett_kpm_v2_UEMeasurementReportItem
,
3359 &ett_kpm_v2_E2SM_KPM_EventTriggerDefinition
,
3360 &ett_kpm_v2_T_eventDefinition_formats
,
3361 &ett_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1
,
3362 &ett_kpm_v2_E2SM_KPM_ActionDefinition
,
3363 &ett_kpm_v2_T_actionDefinition_formats
,
3364 &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format1
,
3365 &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format2
,
3366 &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format3
,
3367 &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format4
,
3368 &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format5
,
3369 &ett_kpm_v2_E2SM_KPM_IndicationHeader
,
3370 &ett_kpm_v2_T_indicationHeader_formats
,
3371 &ett_kpm_v2_E2SM_KPM_IndicationHeader_Format1
,
3372 &ett_kpm_v2_E2SM_KPM_IndicationMessage
,
3373 &ett_kpm_v2_T_indicationMessage_formats
,
3374 &ett_kpm_v2_E2SM_KPM_IndicationMessage_Format1
,
3375 &ett_kpm_v2_E2SM_KPM_IndicationMessage_Format2
,
3376 &ett_kpm_v2_E2SM_KPM_IndicationMessage_Format3
,
3377 &ett_kpm_v2_E2SM_KPM_RANfunction_Description
,
3378 &ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item
,
3379 &ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item
,
3380 &ett_kpm_v2_RIC_EventTriggerStyle_Item
,
3381 &ett_kpm_v2_RIC_ReportStyle_Item
,
3383 &ett_kpm_v2_RANfunction_Name
,
3385 &ett_kpm_v2_UEID_GNB
,
3386 &ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List
,
3387 &ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item
,
3388 &ett_kpm_v2_UEID_GNB_CU_F1AP_ID_List
,
3389 &ett_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item
,
3390 &ett_kpm_v2_UEID_GNB_DU
,
3391 &ett_kpm_v2_UEID_GNB_CU_UP
,
3392 &ett_kpm_v2_UEID_NG_ENB
,
3393 &ett_kpm_v2_UEID_NG_ENB_DU
,
3394 &ett_kpm_v2_UEID_EN_GNB
,
3395 &ett_kpm_v2_UEID_ENB
,
3397 &ett_kpm_v2_GlobalENB_ID
,
3399 &ett_kpm_v2_EUTRA_CGI
,
3400 &ett_kpm_v2_GlobalGNB_ID
,
3401 &ett_kpm_v2_GlobalNgENB_ID
,
3404 &ett_kpm_v2_NgENB_ID
,
3406 &ett_kpm_v2_S_NSSAI
,
3407 &ett_kpm_v2_GlobalNGRANNodeID
,
3411 /* Register protocol */
3412 proto_kpm_v2
= proto_register_protocol(PNAME
, PSNAME
, PFNAME
);
3413 /* Register fields and subtrees */
3414 proto_register_field_array(proto_kpm_v2
, hf
, array_length(hf
));
3415 proto_register_subtree_array(ett
, array_length(ett
));
3424 * indent-tabs-mode: nil
3427 * ex: set shiftwidth=2 tabstop=8 expandtab:
3428 * :indentSize=2:tabSize=8:noTabs=true: