Coverage Report

Created: 2026-07-12 07:10

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-kpm-v2.c
Line
Count
Source
1
/* Do not modify this file. Changes will be overwritten.                      */
2
/* Generated automatically by the ASN.1 to Wireshark dissector compiler       */
3
/* packet-kpm-v2.c                                                            */
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 */
5
6
/* packet-kpm-v2-template.c
7
 * Copyright 2021, Martin Mathieson
8
 *
9
 * Wireshark - Network traffic analyzer
10
 * By Gerald Combs <gerald@wireshark.org>
11
 * Copyright 1998 Gerald Combs
12
 *
13
 * SPDX-License-Identifier: GPL-2.0-or-later
14
 *
15
 * References: ORAN-WG3.E2SM-KPM-v02.02
16
 */
17
18
#include "config.h"
19
20
#include <epan/packet.h>
21
#include <epan/strutil.h>
22
#include <epan/asn1.h>
23
#include <wsutil/array.h>
24
25
#include "packet-e2ap.h"
26
#include "packet-per.h"
27
#include "packet-ntp.h"
28
29
void proto_register_kpm_v2(void);
30
void proto_reg_handoff_kpm_v2(void);
31
32
33
#define maxnoofCells                   16384
34
0
#define maxnoofRICStyles               63
35
0
#define maxnoofMeasurementInfo         65535
36
0
#define maxnoofLabelInfo               2147483647
37
0
#define maxnoofMeasurementRecord       65535
38
0
#define maxnoofMeasurementValue        2147483647
39
0
#define maxnoofConditionInfo           32768
40
0
#define maxnoofUEID                    65535
41
0
#define maxnoofConditionInfoPerSub     32768
42
0
#define maxnoofUEIDPerSub              65535
43
0
#define maxnoofUEMeasReport            65535
44
0
#define maxE1APid                      65535
45
0
#define maxF1APid                      4
46
#define maxEARFCN                      65535
47
#define maxNRARFCN                     3279165
48
#define maxnoofNrCellBands             32
49
50
/* Initialize the protocol and registered fields */
51
static int proto_kpm_v2;
52
static int hf_kpm_v2_E2SM_KPM_EventTriggerDefinition_PDU;  /* E2SM_KPM_EventTriggerDefinition */
53
static int hf_kpm_v2_E2SM_KPM_ActionDefinition_PDU;  /* E2SM_KPM_ActionDefinition */
54
static int hf_kpm_v2_E2SM_KPM_IndicationHeader_PDU;  /* E2SM_KPM_IndicationHeader */
55
static int hf_kpm_v2_E2SM_KPM_IndicationMessage_PDU;  /* E2SM_KPM_IndicationMessage */
56
static int hf_kpm_v2_E2SM_KPM_RANfunction_Description_PDU;  /* E2SM_KPM_RANfunction_Description */
57
static int hf_kpm_v2_measName;                    /* MeasurementTypeName */
58
static int hf_kpm_v2_measID;                      /* MeasurementTypeID */
59
static int hf_kpm_v2_noLabel;                     /* T_noLabel */
60
static int hf_kpm_v2_plmnID;                      /* PLMNIdentity */
61
static int hf_kpm_v2_sliceID;                     /* S_NSSAI */
62
static int hf_kpm_v2_fiveQI;                      /* FiveQI */
63
static int hf_kpm_v2_qFI;                         /* QosFlowIdentifier */
64
static int hf_kpm_v2_qCI;                         /* QCI */
65
static int hf_kpm_v2_qCImax;                      /* QCI */
66
static int hf_kpm_v2_qCImin;                      /* QCI */
67
static int hf_kpm_v2_aRPmax;                      /* INTEGER_1_15_ */
68
static int hf_kpm_v2_aRPmin;                      /* INTEGER_1_15_ */
69
static int hf_kpm_v2_bitrateRange;                /* INTEGER_1_65535_ */
70
static int hf_kpm_v2_layerMU_MIMO;                /* INTEGER_1_65535_ */
71
static int hf_kpm_v2_sUM;                         /* T_sUM */
72
static int hf_kpm_v2_distBinX;                    /* INTEGER_1_65535_ */
73
static int hf_kpm_v2_distBinY;                    /* INTEGER_1_65535_ */
74
static int hf_kpm_v2_distBinZ;                    /* INTEGER_1_65535_ */
75
static int hf_kpm_v2_preLabelOverride;            /* T_preLabelOverride */
76
static int hf_kpm_v2_startEndInd;                 /* T_startEndInd */
77
static int hf_kpm_v2_min;                         /* T_min */
78
static int hf_kpm_v2_max;                         /* T_max */
79
static int hf_kpm_v2_avg;                         /* T_avg */
80
static int hf_kpm_v2_testType;                    /* TestCond_Type */
81
static int hf_kpm_v2_testExpr;                    /* TestCond_Expression */
82
static int hf_kpm_v2_testValue;                   /* TestCond_Value */
83
static int hf_kpm_v2_gBR;                         /* T_gBR */
84
static int hf_kpm_v2_aMBR;                        /* T_aMBR */
85
static int hf_kpm_v2_isStat;                      /* T_isStat */
86
static int hf_kpm_v2_isCatM;                      /* T_isCatM */
87
static int hf_kpm_v2_rSRP;                        /* T_rSRP */
88
static int hf_kpm_v2_rSRQ;                        /* T_rSRQ */
89
static int hf_kpm_v2_ul_rSRP;                     /* T_ul_rSRP */
90
static int hf_kpm_v2_cQI;                         /* T_cQI */
91
static int hf_kpm_v2_fiveQI_01;                   /* T_fiveQI */
92
static int hf_kpm_v2_qCI_01;                      /* T_qCI */
93
static int hf_kpm_v2_sNSSAI;                      /* T_sNSSAI */
94
static int hf_kpm_v2_valueInt;                    /* INTEGER */
95
static int hf_kpm_v2_valueEnum;                   /* INTEGER */
96
static int hf_kpm_v2_valueBool;                   /* BOOLEAN */
97
static int hf_kpm_v2_valueBitS;                   /* BIT_STRING */
98
static int hf_kpm_v2_valueOctS;                   /* OCTET_STRING */
99
static int hf_kpm_v2_valuePrtS;                   /* PrintableString */
100
static int hf_kpm_v2_valueReal;                   /* REAL */
101
static int hf_kpm_v2_MeasurementInfoList_item;    /* MeasurementInfoItem */
102
static int hf_kpm_v2_measType;                    /* MeasurementType */
103
static int hf_kpm_v2_labelInfoList;               /* LabelInfoList */
104
static int hf_kpm_v2_LabelInfoList_item;          /* LabelInfoItem */
105
static int hf_kpm_v2_measLabel;                   /* MeasurementLabel */
106
static int hf_kpm_v2_MeasurementData_item;        /* MeasurementDataItem */
107
static int hf_kpm_v2_measRecord;                  /* MeasurementRecord */
108
static int hf_kpm_v2_incompleteFlag;              /* T_incompleteFlag */
109
static int hf_kpm_v2_MeasurementRecord_item;      /* MeasurementRecordItem */
110
static int hf_kpm_v2_integer;                     /* INTEGER_0_4294967295 */
111
static int hf_kpm_v2_real;                        /* REAL */
112
static int hf_kpm_v2_noValue;                     /* NULL */
113
static int hf_kpm_v2_MeasurementInfo_Action_List_item;  /* MeasurementInfo_Action_Item */
114
static int hf_kpm_v2_MeasurementCondList_item;    /* MeasurementCondItem */
115
static int hf_kpm_v2_matchingCond;                /* MatchingCondList */
116
static int hf_kpm_v2_MeasurementCondUEidList_item;  /* MeasurementCondUEidItem */
117
static int hf_kpm_v2_matchingUEidList;            /* MatchingUEidList */
118
static int hf_kpm_v2_MatchingCondList_item;       /* MatchingCondItem */
119
static int hf_kpm_v2_testCondInfo;                /* TestCondInfo */
120
static int hf_kpm_v2_MatchingUEidList_item;       /* MatchingUEidItem */
121
static int hf_kpm_v2_ueID;                        /* UEID */
122
static int hf_kpm_v2_MatchingUeCondPerSubList_item;  /* MatchingUeCondPerSubItem */
123
static int hf_kpm_v2_MatchingUEidPerSubList_item;  /* MatchingUEidPerSubItem */
124
static int hf_kpm_v2_UEMeasurementReportList_item;  /* UEMeasurementReportItem */
125
static int hf_kpm_v2_measReport;                  /* E2SM_KPM_IndicationMessage_Format1 */
126
static int hf_kpm_v2_eventDefinition_formats;     /* T_eventDefinition_formats */
127
static int hf_kpm_v2_eventDefinition_Format1;     /* E2SM_KPM_EventTriggerDefinition_Format1 */
128
static int hf_kpm_v2_reportingPeriod;             /* INTEGER_1_4294967295 */
129
static int hf_kpm_v2_ric_Style_Type;              /* RIC_Style_Type */
130
static int hf_kpm_v2_actionDefinition_formats;    /* T_actionDefinition_formats */
131
static int hf_kpm_v2_actionDefinition_Format1;    /* E2SM_KPM_ActionDefinition_Format1 */
132
static int hf_kpm_v2_actionDefinition_Format2;    /* E2SM_KPM_ActionDefinition_Format2 */
133
static int hf_kpm_v2_actionDefinition_Format3;    /* E2SM_KPM_ActionDefinition_Format3 */
134
static int hf_kpm_v2_actionDefinition_Format4;    /* E2SM_KPM_ActionDefinition_Format4 */
135
static int hf_kpm_v2_actionDefinition_Format5;    /* E2SM_KPM_ActionDefinition_Format5 */
136
static int hf_kpm_v2_measInfoList;                /* MeasurementInfoList */
137
static int hf_kpm_v2_granulPeriod;                /* GranularityPeriod */
138
static int hf_kpm_v2_cellGlobalID;                /* CGI */
139
static int hf_kpm_v2_subscriptInfo;               /* E2SM_KPM_ActionDefinition_Format1 */
140
static int hf_kpm_v2_measCondList;                /* MeasurementCondList */
141
static int hf_kpm_v2_matchingUeCondList;          /* MatchingUeCondPerSubList */
142
static int hf_kpm_v2_subscriptionInfo;            /* E2SM_KPM_ActionDefinition_Format1 */
143
static int hf_kpm_v2_matchingUEidList_01;         /* MatchingUEidPerSubList */
144
static int hf_kpm_v2_indicationHeader_formats;    /* T_indicationHeader_formats */
145
static int hf_kpm_v2_indicationHeader_Format1;    /* E2SM_KPM_IndicationHeader_Format1 */
146
static int hf_kpm_v2_colletStartTime;             /* T_colletStartTime */
147
static int hf_kpm_v2_fileFormatversion;           /* PrintableString_SIZE_0_15_ */
148
static int hf_kpm_v2_senderName;                  /* PrintableString_SIZE_0_400_ */
149
static int hf_kpm_v2_senderType;                  /* PrintableString_SIZE_0_8_ */
150
static int hf_kpm_v2_vendorName;                  /* PrintableString_SIZE_0_32_ */
151
static int hf_kpm_v2_indicationMessage_formats;   /* T_indicationMessage_formats */
152
static int hf_kpm_v2_indicationMessage_Format1;   /* E2SM_KPM_IndicationMessage_Format1 */
153
static int hf_kpm_v2_indicationMessage_Format2;   /* E2SM_KPM_IndicationMessage_Format2 */
154
static int hf_kpm_v2_indicationMessage_Format3;   /* E2SM_KPM_IndicationMessage_Format3 */
155
static int hf_kpm_v2_measData;                    /* MeasurementData */
156
static int hf_kpm_v2_measCondUEidList;            /* MeasurementCondUEidList */
157
static int hf_kpm_v2_ueMeasReportList;            /* UEMeasurementReportList */
158
static int hf_kpm_v2_ranFunction_Name;            /* RANfunction_Name */
159
static int hf_kpm_v2_ric_EventTriggerStyle_List;  /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item */
160
static int hf_kpm_v2_ric_EventTriggerStyle_List_item;  /* RIC_EventTriggerStyle_Item */
161
static int hf_kpm_v2_ric_ReportStyle_List;        /* SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item */
162
static int hf_kpm_v2_ric_ReportStyle_List_item;   /* RIC_ReportStyle_Item */
163
static int hf_kpm_v2_ric_EventTriggerStyle_Type;  /* RIC_Style_Type */
164
static int hf_kpm_v2_ric_EventTriggerStyle_Name;  /* RIC_Style_Name */
165
static int hf_kpm_v2_ric_EventTriggerFormat_Type;  /* RIC_Format_Type */
166
static int hf_kpm_v2_ric_ReportStyle_Type;        /* RIC_Style_Type */
167
static int hf_kpm_v2_ric_ReportStyle_Name;        /* RIC_Style_Name */
168
static int hf_kpm_v2_ric_ActionFormat_Type;       /* RIC_Format_Type */
169
static int hf_kpm_v2_measInfo_Action_List;        /* MeasurementInfo_Action_List */
170
static int hf_kpm_v2_ric_IndicationHeaderFormat_Type;  /* RIC_Format_Type */
171
static int hf_kpm_v2_ric_IndicationMessageFormat_Type;  /* RIC_Format_Type */
172
static int hf_kpm_v2_nR_CGI;                      /* NR_CGI */
173
static int hf_kpm_v2_eUTRA_CGI;                   /* EUTRA_CGI */
174
static int hf_kpm_v2_ranFunction_ShortName;       /* T_ranFunction_ShortName */
175
static int hf_kpm_v2_ranFunction_E2SM_OID;        /* T_ranFunction_E2SM_OID */
176
static int hf_kpm_v2_ranFunction_Description;     /* PrintableString_SIZE_1_150_ */
177
static int hf_kpm_v2_ranFunction_Instance;        /* INTEGER */
178
static int hf_kpm_v2_gNB_UEID;                    /* UEID_GNB */
179
static int hf_kpm_v2_gNB_DU_UEID;                 /* UEID_GNB_DU */
180
static int hf_kpm_v2_gNB_CU_UP_UEID;              /* UEID_GNB_CU_UP */
181
static int hf_kpm_v2_ng_eNB_UEID;                 /* UEID_NG_ENB */
182
static int hf_kpm_v2_ng_eNB_DU_UEID;              /* UEID_NG_ENB_DU */
183
static int hf_kpm_v2_en_gNB_UEID;                 /* UEID_EN_GNB */
184
static int hf_kpm_v2_eNB_UEID;                    /* UEID_ENB */
185
static int hf_kpm_v2_amf_UE_NGAP_ID;              /* AMF_UE_NGAP_ID */
186
static int hf_kpm_v2_guami;                       /* GUAMI */
187
static int hf_kpm_v2_gNB_CU_UE_F1AP_ID_List;      /* UEID_GNB_CU_F1AP_ID_List */
188
static int hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID_List;   /* UEID_GNB_CU_CP_E1AP_ID_List */
189
static int hf_kpm_v2_ran_UEID;                    /* RANUEID */
190
static int hf_kpm_v2_m_NG_RAN_UE_XnAP_ID;         /* NG_RANnodeUEXnAPID */
191
static int hf_kpm_v2_globalGNB_ID;                /* GlobalGNB_ID */
192
static int hf_kpm_v2_globalNG_RANNode_ID;         /* GlobalNGRANNodeID */
193
static int hf_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List_item;  /* UEID_GNB_CU_CP_E1AP_ID_Item */
194
static int hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID;        /* GNB_CU_CP_UE_E1AP_ID */
195
static int hf_kpm_v2_UEID_GNB_CU_F1AP_ID_List_item;  /* UEID_GNB_CU_CP_F1AP_ID_Item */
196
static int hf_kpm_v2_gNB_CU_UE_F1AP_ID;           /* GNB_CU_UE_F1AP_ID */
197
static int hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID;        /* NGENB_CU_UE_W1AP_ID */
198
static int hf_kpm_v2_globalNgENB_ID;              /* GlobalNgENB_ID */
199
static int hf_kpm_v2_m_eNB_UE_X2AP_ID;            /* ENB_UE_X2AP_ID */
200
static int hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension;  /* ENB_UE_X2AP_ID_Extension */
201
static int hf_kpm_v2_globalENB_ID;                /* GlobalENB_ID */
202
static int hf_kpm_v2_mME_UE_S1AP_ID;              /* MME_UE_S1AP_ID */
203
static int hf_kpm_v2_gUMMEI;                      /* GUMMEI */
204
static int hf_kpm_v2_macro_eNB_ID;                /* BIT_STRING_SIZE_20 */
205
static int hf_kpm_v2_home_eNB_ID;                 /* BIT_STRING_SIZE_28 */
206
static int hf_kpm_v2_short_Macro_eNB_ID;          /* BIT_STRING_SIZE_18 */
207
static int hf_kpm_v2_long_Macro_eNB_ID;           /* BIT_STRING_SIZE_21 */
208
static int hf_kpm_v2_pLMNIdentity;                /* PLMNIdentity */
209
static int hf_kpm_v2_eNB_ID;                      /* ENB_ID */
210
static int hf_kpm_v2_pLMN_Identity;               /* PLMNIdentity */
211
static int hf_kpm_v2_mME_Group_ID;                /* MME_Group_ID */
212
static int hf_kpm_v2_mME_Code;                    /* MME_Code */
213
static int hf_kpm_v2_eUTRACellIdentity;           /* EUTRACellIdentity */
214
static int hf_kpm_v2_gnb_id_choice;               /* GNB_ID */
215
static int hf_kpm_v2_ngENB_ID;                    /* NgENB_ID */
216
static int hf_kpm_v2_gNB_ID;                      /* BIT_STRING_SIZE_22_32 */
217
static int hf_kpm_v2_aMFRegionID;                 /* AMFRegionID */
218
static int hf_kpm_v2_aMFSetID;                    /* AMFSetID */
219
static int hf_kpm_v2_aMFPointer;                  /* AMFPointer */
220
static int hf_kpm_v2_macroNgENB_ID;               /* BIT_STRING_SIZE_20 */
221
static int hf_kpm_v2_shortMacroNgENB_ID;          /* BIT_STRING_SIZE_18 */
222
static int hf_kpm_v2_longMacroNgENB_ID;           /* BIT_STRING_SIZE_21 */
223
static int hf_kpm_v2_nRCellIdentity;              /* NRCellIdentity */
224
static int hf_kpm_v2_sST;                         /* SST */
225
static int hf_kpm_v2_sD;                          /* SD */
226
static int hf_kpm_v2_gNB;                         /* GlobalGNB_ID */
227
static int hf_kpm_v2_ng_eNB;                      /* GlobalNgENB_ID */
228
229
static int hf_kpm_v2_timestamp_string;
230
231
232
static int ett_kpm_v2_MeasurementType;
233
static int ett_kpm_v2_MeasurementLabel;
234
static int ett_kpm_v2_TestCondInfo;
235
static int ett_kpm_v2_TestCond_Type;
236
static int ett_kpm_v2_TestCond_Value;
237
static int ett_kpm_v2_MeasurementInfoList;
238
static int ett_kpm_v2_MeasurementInfoItem;
239
static int ett_kpm_v2_LabelInfoList;
240
static int ett_kpm_v2_LabelInfoItem;
241
static int ett_kpm_v2_MeasurementData;
242
static int ett_kpm_v2_MeasurementDataItem;
243
static int ett_kpm_v2_MeasurementRecord;
244
static int ett_kpm_v2_MeasurementRecordItem;
245
static int ett_kpm_v2_MeasurementInfo_Action_List;
246
static int ett_kpm_v2_MeasurementInfo_Action_Item;
247
static int ett_kpm_v2_MeasurementCondList;
248
static int ett_kpm_v2_MeasurementCondItem;
249
static int ett_kpm_v2_MeasurementCondUEidList;
250
static int ett_kpm_v2_MeasurementCondUEidItem;
251
static int ett_kpm_v2_MatchingCondList;
252
static int ett_kpm_v2_MatchingCondItem;
253
static int ett_kpm_v2_MatchingUEidList;
254
static int ett_kpm_v2_MatchingUEidItem;
255
static int ett_kpm_v2_MatchingUeCondPerSubList;
256
static int ett_kpm_v2_MatchingUeCondPerSubItem;
257
static int ett_kpm_v2_MatchingUEidPerSubList;
258
static int ett_kpm_v2_MatchingUEidPerSubItem;
259
static int ett_kpm_v2_UEMeasurementReportList;
260
static int ett_kpm_v2_UEMeasurementReportItem;
261
static int ett_kpm_v2_E2SM_KPM_EventTriggerDefinition;
262
static int ett_kpm_v2_T_eventDefinition_formats;
263
static int ett_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1;
264
static int ett_kpm_v2_E2SM_KPM_ActionDefinition;
265
static int ett_kpm_v2_T_actionDefinition_formats;
266
static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format1;
267
static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format2;
268
static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format3;
269
static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format4;
270
static int ett_kpm_v2_E2SM_KPM_ActionDefinition_Format5;
271
static int ett_kpm_v2_E2SM_KPM_IndicationHeader;
272
static int ett_kpm_v2_T_indicationHeader_formats;
273
static int ett_kpm_v2_E2SM_KPM_IndicationHeader_Format1;
274
static int ett_kpm_v2_E2SM_KPM_IndicationMessage;
275
static int ett_kpm_v2_T_indicationMessage_formats;
276
static int ett_kpm_v2_E2SM_KPM_IndicationMessage_Format1;
277
static int ett_kpm_v2_E2SM_KPM_IndicationMessage_Format2;
278
static int ett_kpm_v2_E2SM_KPM_IndicationMessage_Format3;
279
static int ett_kpm_v2_E2SM_KPM_RANfunction_Description;
280
static int ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item;
281
static int ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item;
282
static int ett_kpm_v2_RIC_EventTriggerStyle_Item;
283
static int ett_kpm_v2_RIC_ReportStyle_Item;
284
static int ett_kpm_v2_CGI;
285
static int ett_kpm_v2_RANfunction_Name;
286
static int ett_kpm_v2_UEID;
287
static int ett_kpm_v2_UEID_GNB;
288
static int ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List;
289
static int ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item;
290
static int ett_kpm_v2_UEID_GNB_CU_F1AP_ID_List;
291
static int ett_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item;
292
static int ett_kpm_v2_UEID_GNB_DU;
293
static int ett_kpm_v2_UEID_GNB_CU_UP;
294
static int ett_kpm_v2_UEID_NG_ENB;
295
static int ett_kpm_v2_UEID_NG_ENB_DU;
296
static int ett_kpm_v2_UEID_EN_GNB;
297
static int ett_kpm_v2_UEID_ENB;
298
static int ett_kpm_v2_ENB_ID;
299
static int ett_kpm_v2_GlobalENB_ID;
300
static int ett_kpm_v2_GUMMEI;
301
static int ett_kpm_v2_EUTRA_CGI;
302
static int ett_kpm_v2_GlobalGNB_ID;
303
static int ett_kpm_v2_GlobalNgENB_ID;
304
static int ett_kpm_v2_GNB_ID;
305
static int ett_kpm_v2_GUAMI;
306
static int ett_kpm_v2_NgENB_ID;
307
static int ett_kpm_v2_NR_CGI;
308
static int ett_kpm_v2_S_NSSAI;
309
static int ett_kpm_v2_GlobalNGRANNodeID;
310
311
312
/* Forward declarations */
313
static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
314
static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
315
static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
316
static int dissect_E2SM_KPM_IndicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
317
static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_);
318
319
320
321
static unsigned
322
0
dissect_kpm_v2_TimeStamp(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
323
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
324
0
                                       4, 4, false, NULL);
325
326
0
  return offset;
327
0
}
328
329
330
331
static unsigned
332
0
dissect_kpm_v2_GranularityPeriod(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
333
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
334
0
                                                            1U, 4294967295U, NULL, false);
335
336
0
  return offset;
337
0
}
338
339
340
341
static unsigned
342
0
dissect_kpm_v2_MeasurementTypeName(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
343
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
344
0
                                          1, 150, true,
345
0
                                          NULL);
346
347
0
  return offset;
348
0
}
349
350
351
352
static unsigned
353
0
dissect_kpm_v2_MeasurementTypeID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
354
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
355
0
                                                            1U, 65536U, NULL, true);
356
357
0
  return offset;
358
0
}
359
360
361
static const value_string kpm_v2_MeasurementType_vals[] = {
362
  {   0, "measName" },
363
  {   1, "measID" },
364
  { 0, NULL }
365
};
366
367
static const per_choice_t MeasurementType_choice[] = {
368
  {   0, &hf_kpm_v2_measName     , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_MeasurementTypeName },
369
  {   1, &hf_kpm_v2_measID       , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_MeasurementTypeID },
370
  { 0, NULL, 0, NULL }
371
};
372
373
static unsigned
374
0
dissect_kpm_v2_MeasurementType(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
375
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
376
0
                                 ett_kpm_v2_MeasurementType, MeasurementType_choice,
377
0
                                 NULL);
378
379
0
  return offset;
380
0
}
381
382
383
static const value_string kpm_v2_T_noLabel_vals[] = {
384
  {   0, "true" },
385
  { 0, NULL }
386
};
387
388
389
static unsigned
390
0
dissect_kpm_v2_T_noLabel(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
391
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
392
0
                                     1, NULL, true, 0, NULL);
393
394
0
  return offset;
395
0
}
396
397
398
399
static unsigned
400
0
dissect_kpm_v2_PLMNIdentity(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
401
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
402
0
                                       3, 3, false, NULL);
403
404
0
  return offset;
405
0
}
406
407
408
409
static unsigned
410
0
dissect_kpm_v2_SST(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
411
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
412
0
                                       1, 1, false, NULL);
413
414
0
  return offset;
415
0
}
416
417
418
419
static unsigned
420
0
dissect_kpm_v2_SD(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
421
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
422
0
                                       3, 3, false, NULL);
423
424
0
  return offset;
425
0
}
426
427
428
static const per_sequence_t S_NSSAI_sequence[] = {
429
  { &hf_kpm_v2_sST          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_SST },
430
  { &hf_kpm_v2_sD           , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_SD },
431
  { NULL, 0, 0, NULL }
432
};
433
434
static unsigned
435
0
dissect_kpm_v2_S_NSSAI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
436
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
437
0
                                   ett_kpm_v2_S_NSSAI, S_NSSAI_sequence);
438
439
0
  return offset;
440
0
}
441
442
443
444
static unsigned
445
0
dissect_kpm_v2_FiveQI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
446
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
447
0
                                                            0U, 255U, NULL, true);
448
449
0
  return offset;
450
0
}
451
452
453
454
static unsigned
455
0
dissect_kpm_v2_QosFlowIdentifier(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
456
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
457
0
                                                            0U, 63U, NULL, true);
458
459
0
  return offset;
460
0
}
461
462
463
464
static unsigned
465
0
dissect_kpm_v2_QCI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
466
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
467
0
                                                            0U, 255U, NULL, false);
468
469
0
  return offset;
470
0
}
471
472
473
474
static unsigned
475
0
dissect_kpm_v2_INTEGER_1_15_(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
476
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
477
0
                                                            1U, 15U, NULL, true);
478
479
0
  return offset;
480
0
}
481
482
483
484
static unsigned
485
0
dissect_kpm_v2_INTEGER_1_65535_(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
486
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
487
0
                                                            1U, 65535U, NULL, true);
488
489
0
  return offset;
490
0
}
491
492
493
static const value_string kpm_v2_T_sUM_vals[] = {
494
  {   0, "true" },
495
  { 0, NULL }
496
};
497
498
499
static unsigned
500
0
dissect_kpm_v2_T_sUM(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
501
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
502
0
                                     1, NULL, true, 0, NULL);
503
504
0
  return offset;
505
0
}
506
507
508
static const value_string kpm_v2_T_preLabelOverride_vals[] = {
509
  {   0, "true" },
510
  { 0, NULL }
511
};
512
513
514
static unsigned
515
0
dissect_kpm_v2_T_preLabelOverride(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
516
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
517
0
                                     1, NULL, true, 0, NULL);
518
519
0
  return offset;
520
0
}
521
522
523
static const value_string kpm_v2_T_startEndInd_vals[] = {
524
  {   0, "start" },
525
  {   1, "end" },
526
  { 0, NULL }
527
};
528
529
530
static unsigned
531
0
dissect_kpm_v2_T_startEndInd(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
532
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
533
0
                                     2, NULL, true, 0, NULL);
534
535
0
  return offset;
536
0
}
537
538
539
static const value_string kpm_v2_T_min_vals[] = {
540
  {   0, "true" },
541
  { 0, NULL }
542
};
543
544
545
static unsigned
546
0
dissect_kpm_v2_T_min(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
547
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
548
0
                                     1, NULL, true, 0, NULL);
549
550
0
  return offset;
551
0
}
552
553
554
static const value_string kpm_v2_T_max_vals[] = {
555
  {   0, "true" },
556
  { 0, NULL }
557
};
558
559
560
static unsigned
561
0
dissect_kpm_v2_T_max(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
562
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
563
0
                                     1, NULL, true, 0, NULL);
564
565
0
  return offset;
566
0
}
567
568
569
static const value_string kpm_v2_T_avg_vals[] = {
570
  {   0, "true" },
571
  { 0, NULL }
572
};
573
574
575
static unsigned
576
0
dissect_kpm_v2_T_avg(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
577
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
578
0
                                     1, NULL, true, 0, NULL);
579
580
0
  return offset;
581
0
}
582
583
584
static const per_sequence_t MeasurementLabel_sequence[] = {
585
  { &hf_kpm_v2_noLabel      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_noLabel },
586
  { &hf_kpm_v2_plmnID       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_PLMNIdentity },
587
  { &hf_kpm_v2_sliceID      , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_S_NSSAI },
588
  { &hf_kpm_v2_fiveQI       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_FiveQI },
589
  { &hf_kpm_v2_qFI          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_QosFlowIdentifier },
590
  { &hf_kpm_v2_qCI          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_QCI },
591
  { &hf_kpm_v2_qCImax       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_QCI },
592
  { &hf_kpm_v2_qCImin       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_QCI },
593
  { &hf_kpm_v2_aRPmax       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER_1_15_ },
594
  { &hf_kpm_v2_aRPmin       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER_1_15_ },
595
  { &hf_kpm_v2_bitrateRange , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER_1_65535_ },
596
  { &hf_kpm_v2_layerMU_MIMO , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER_1_65535_ },
597
  { &hf_kpm_v2_sUM          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_sUM },
598
  { &hf_kpm_v2_distBinX     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER_1_65535_ },
599
  { &hf_kpm_v2_distBinY     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER_1_65535_ },
600
  { &hf_kpm_v2_distBinZ     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER_1_65535_ },
601
  { &hf_kpm_v2_preLabelOverride, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_preLabelOverride },
602
  { &hf_kpm_v2_startEndInd  , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_startEndInd },
603
  { &hf_kpm_v2_min          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_min },
604
  { &hf_kpm_v2_max          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_max },
605
  { &hf_kpm_v2_avg          , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_avg },
606
  { NULL, 0, 0, NULL }
607
};
608
609
static unsigned
610
0
dissect_kpm_v2_MeasurementLabel(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
611
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
612
0
                                   ett_kpm_v2_MeasurementLabel, MeasurementLabel_sequence);
613
614
0
  return offset;
615
0
}
616
617
618
static const value_string kpm_v2_T_gBR_vals[] = {
619
  {   0, "true" },
620
  { 0, NULL }
621
};
622
623
624
static unsigned
625
0
dissect_kpm_v2_T_gBR(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
626
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
627
0
                                     1, NULL, true, 0, NULL);
628
629
0
  return offset;
630
0
}
631
632
633
static const value_string kpm_v2_T_aMBR_vals[] = {
634
  {   0, "true" },
635
  { 0, NULL }
636
};
637
638
639
static unsigned
640
0
dissect_kpm_v2_T_aMBR(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
641
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
642
0
                                     1, NULL, true, 0, NULL);
643
644
0
  return offset;
645
0
}
646
647
648
static const value_string kpm_v2_T_isStat_vals[] = {
649
  {   0, "true" },
650
  { 0, NULL }
651
};
652
653
654
static unsigned
655
0
dissect_kpm_v2_T_isStat(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
656
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
657
0
                                     1, NULL, true, 0, NULL);
658
659
0
  return offset;
660
0
}
661
662
663
static const value_string kpm_v2_T_isCatM_vals[] = {
664
  {   0, "true" },
665
  { 0, NULL }
666
};
667
668
669
static unsigned
670
0
dissect_kpm_v2_T_isCatM(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
671
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
672
0
                                     1, NULL, true, 0, NULL);
673
674
0
  return offset;
675
0
}
676
677
678
static const value_string kpm_v2_T_rSRP_vals[] = {
679
  {   0, "true" },
680
  { 0, NULL }
681
};
682
683
684
static unsigned
685
0
dissect_kpm_v2_T_rSRP(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
686
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
687
0
                                     1, NULL, true, 0, NULL);
688
689
0
  return offset;
690
0
}
691
692
693
static const value_string kpm_v2_T_rSRQ_vals[] = {
694
  {   0, "true" },
695
  { 0, NULL }
696
};
697
698
699
static unsigned
700
0
dissect_kpm_v2_T_rSRQ(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
701
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
702
0
                                     1, NULL, true, 0, NULL);
703
704
0
  return offset;
705
0
}
706
707
708
static const value_string kpm_v2_T_ul_rSRP_vals[] = {
709
  {   0, "true" },
710
  { 0, NULL }
711
};
712
713
714
static unsigned
715
0
dissect_kpm_v2_T_ul_rSRP(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
716
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
717
0
                                     1, NULL, true, 0, NULL);
718
719
0
  return offset;
720
0
}
721
722
723
static const value_string kpm_v2_T_cQI_vals[] = {
724
  {   0, "true" },
725
  { 0, NULL }
726
};
727
728
729
static unsigned
730
0
dissect_kpm_v2_T_cQI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
731
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
732
0
                                     1, NULL, true, 0, NULL);
733
734
0
  return offset;
735
0
}
736
737
738
static const value_string kpm_v2_T_fiveQI_vals[] = {
739
  {   0, "true" },
740
  { 0, NULL }
741
};
742
743
744
static unsigned
745
0
dissect_kpm_v2_T_fiveQI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
746
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
747
0
                                     1, NULL, true, 0, NULL);
748
749
0
  return offset;
750
0
}
751
752
753
static const value_string kpm_v2_T_qCI_vals[] = {
754
  {   0, "true" },
755
  { 0, NULL }
756
};
757
758
759
static unsigned
760
0
dissect_kpm_v2_T_qCI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
761
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
762
0
                                     1, NULL, true, 0, NULL);
763
764
0
  return offset;
765
0
}
766
767
768
static const value_string kpm_v2_T_sNSSAI_vals[] = {
769
  {   0, "true" },
770
  { 0, NULL }
771
};
772
773
774
static unsigned
775
0
dissect_kpm_v2_T_sNSSAI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
776
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
777
0
                                     1, NULL, true, 0, NULL);
778
779
0
  return offset;
780
0
}
781
782
783
static const value_string kpm_v2_TestCond_Type_vals[] = {
784
  {   0, "gBR" },
785
  {   1, "aMBR" },
786
  {   2, "isStat" },
787
  {   3, "isCatM" },
788
  {   4, "rSRP" },
789
  {   5, "rSRQ" },
790
  {   6, "ul-rSRP" },
791
  {   7, "cQI" },
792
  {   8, "fiveQI" },
793
  {   9, "qCI" },
794
  {  10, "sNSSAI" },
795
  { 0, NULL }
796
};
797
798
static const per_choice_t TestCond_Type_choice[] = {
799
  {   0, &hf_kpm_v2_gBR          , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_T_gBR },
800
  {   1, &hf_kpm_v2_aMBR         , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_T_aMBR },
801
  {   2, &hf_kpm_v2_isStat       , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_T_isStat },
802
  {   3, &hf_kpm_v2_isCatM       , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_T_isCatM },
803
  {   4, &hf_kpm_v2_rSRP         , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_T_rSRP },
804
  {   5, &hf_kpm_v2_rSRQ         , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_T_rSRQ },
805
  {   6, &hf_kpm_v2_ul_rSRP      , ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_T_ul_rSRP },
806
  {   7, &hf_kpm_v2_cQI          , ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_T_cQI },
807
  {   8, &hf_kpm_v2_fiveQI_01    , ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_T_fiveQI },
808
  {   9, &hf_kpm_v2_qCI_01       , ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_T_qCI },
809
  {  10, &hf_kpm_v2_sNSSAI       , ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_T_sNSSAI },
810
  { 0, NULL, 0, NULL }
811
};
812
813
static unsigned
814
0
dissect_kpm_v2_TestCond_Type(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
815
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
816
0
                                 ett_kpm_v2_TestCond_Type, TestCond_Type_choice,
817
0
                                 NULL);
818
819
0
  return offset;
820
0
}
821
822
823
static const value_string kpm_v2_TestCond_Expression_vals[] = {
824
  {   0, "equal" },
825
  {   1, "greaterthan" },
826
  {   2, "lessthan" },
827
  {   3, "contains" },
828
  {   4, "present" },
829
  { 0, NULL }
830
};
831
832
833
static unsigned
834
0
dissect_kpm_v2_TestCond_Expression(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
835
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
836
0
                                     5, NULL, true, 0, NULL);
837
838
0
  return offset;
839
0
}
840
841
842
843
static unsigned
844
0
dissect_kpm_v2_INTEGER(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
845
0
  offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
846
847
0
  return offset;
848
0
}
849
850
851
852
static unsigned
853
0
dissect_kpm_v2_BOOLEAN(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
854
0
  offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
855
856
0
  return offset;
857
0
}
858
859
860
861
static unsigned
862
0
dissect_kpm_v2_BIT_STRING(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
863
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
864
0
                                     NO_BOUND, NO_BOUND, false, NULL, 0, NULL, NULL);
865
866
0
  return offset;
867
0
}
868
869
870
871
static unsigned
872
0
dissect_kpm_v2_OCTET_STRING(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
873
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
874
0
                                       NO_BOUND, NO_BOUND, false, NULL);
875
876
0
  return offset;
877
0
}
878
879
880
881
static unsigned
882
0
dissect_kpm_v2_PrintableString(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
883
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
884
0
                                          NO_BOUND, NO_BOUND, false,
885
0
                                          NULL);
886
887
0
  return offset;
888
0
}
889
890
891
892
static unsigned
893
0
dissect_kpm_v2_REAL(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
894
0
  offset = dissect_per_real(tvb, offset, actx, tree, hf_index, NULL);
895
896
0
  return offset;
897
0
}
898
899
900
static const value_string kpm_v2_TestCond_Value_vals[] = {
901
  {   0, "valueInt" },
902
  {   1, "valueEnum" },
903
  {   2, "valueBool" },
904
  {   3, "valueBitS" },
905
  {   4, "valueOctS" },
906
  {   5, "valuePrtS" },
907
  {   6, "valueReal" },
908
  { 0, NULL }
909
};
910
911
static const per_choice_t TestCond_Value_choice[] = {
912
  {   0, &hf_kpm_v2_valueInt     , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_INTEGER },
913
  {   1, &hf_kpm_v2_valueEnum    , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_INTEGER },
914
  {   2, &hf_kpm_v2_valueBool    , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BOOLEAN },
915
  {   3, &hf_kpm_v2_valueBitS    , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BIT_STRING },
916
  {   4, &hf_kpm_v2_valueOctS    , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_OCTET_STRING },
917
  {   5, &hf_kpm_v2_valuePrtS    , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_PrintableString },
918
  {   6, &hf_kpm_v2_valueReal    , ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_REAL },
919
  { 0, NULL, 0, NULL }
920
};
921
922
static unsigned
923
0
dissect_kpm_v2_TestCond_Value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
924
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
925
0
                                 ett_kpm_v2_TestCond_Value, TestCond_Value_choice,
926
0
                                 NULL);
927
928
0
  return offset;
929
0
}
930
931
932
static const per_sequence_t TestCondInfo_sequence[] = {
933
  { &hf_kpm_v2_testType     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_TestCond_Type },
934
  { &hf_kpm_v2_testExpr     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_TestCond_Expression },
935
  { &hf_kpm_v2_testValue    , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_TestCond_Value },
936
  { NULL, 0, 0, NULL }
937
};
938
939
static unsigned
940
0
dissect_kpm_v2_TestCondInfo(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
941
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
942
0
                                   ett_kpm_v2_TestCondInfo, TestCondInfo_sequence);
943
944
0
  return offset;
945
0
}
946
947
948
static const per_sequence_t LabelInfoItem_sequence[] = {
949
  { &hf_kpm_v2_measLabel    , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementLabel },
950
  { NULL, 0, 0, NULL }
951
};
952
953
static unsigned
954
0
dissect_kpm_v2_LabelInfoItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
955
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
956
0
                                   ett_kpm_v2_LabelInfoItem, LabelInfoItem_sequence);
957
958
0
  return offset;
959
0
}
960
961
962
static const per_sequence_t LabelInfoList_sequence_of[1] = {
963
  { &hf_kpm_v2_LabelInfoList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_LabelInfoItem },
964
};
965
966
static unsigned
967
0
dissect_kpm_v2_LabelInfoList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
968
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
969
0
                                                  ett_kpm_v2_LabelInfoList, LabelInfoList_sequence_of,
970
0
                                                  1, maxnoofLabelInfo, false);
971
972
0
  return offset;
973
0
}
974
975
976
static const per_sequence_t MeasurementInfoItem_sequence[] = {
977
  { &hf_kpm_v2_measType     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementType },
978
  { &hf_kpm_v2_labelInfoList, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_LabelInfoList },
979
  { NULL, 0, 0, NULL }
980
};
981
982
static unsigned
983
0
dissect_kpm_v2_MeasurementInfoItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
984
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
985
0
                                   ett_kpm_v2_MeasurementInfoItem, MeasurementInfoItem_sequence);
986
987
0
  return offset;
988
0
}
989
990
991
static const per_sequence_t MeasurementInfoList_sequence_of[1] = {
992
  { &hf_kpm_v2_MeasurementInfoList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementInfoItem },
993
};
994
995
static unsigned
996
0
dissect_kpm_v2_MeasurementInfoList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
997
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
998
0
                                                  ett_kpm_v2_MeasurementInfoList, MeasurementInfoList_sequence_of,
999
0
                                                  1, maxnoofMeasurementInfo, false);
1000
1001
0
  return offset;
1002
0
}
1003
1004
1005
1006
static unsigned
1007
0
dissect_kpm_v2_INTEGER_0_4294967295(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1008
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1009
0
                                                            0U, 4294967295U, NULL, false);
1010
1011
0
  return offset;
1012
0
}
1013
1014
1015
1016
static unsigned
1017
0
dissect_kpm_v2_NULL(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1018
0
  offset = dissect_per_null(tvb, offset, actx, tree, hf_index);
1019
1020
0
  return offset;
1021
0
}
1022
1023
1024
static const value_string kpm_v2_MeasurementRecordItem_vals[] = {
1025
  {   0, "integer" },
1026
  {   1, "real" },
1027
  {   2, "noValue" },
1028
  { 0, NULL }
1029
};
1030
1031
static const per_choice_t MeasurementRecordItem_choice[] = {
1032
  {   0, &hf_kpm_v2_integer      , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_INTEGER_0_4294967295 },
1033
  {   1, &hf_kpm_v2_real         , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_REAL },
1034
  {   2, &hf_kpm_v2_noValue      , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_NULL },
1035
  { 0, NULL, 0, NULL }
1036
};
1037
1038
static unsigned
1039
0
dissect_kpm_v2_MeasurementRecordItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1040
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1041
0
                                 ett_kpm_v2_MeasurementRecordItem, MeasurementRecordItem_choice,
1042
0
                                 NULL);
1043
1044
0
  return offset;
1045
0
}
1046
1047
1048
static const per_sequence_t MeasurementRecord_sequence_of[1] = {
1049
  { &hf_kpm_v2_MeasurementRecord_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementRecordItem },
1050
};
1051
1052
static unsigned
1053
0
dissect_kpm_v2_MeasurementRecord(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1054
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1055
0
                                                  ett_kpm_v2_MeasurementRecord, MeasurementRecord_sequence_of,
1056
0
                                                  1, maxnoofMeasurementValue, false);
1057
1058
0
  return offset;
1059
0
}
1060
1061
1062
static const value_string kpm_v2_T_incompleteFlag_vals[] = {
1063
  {   0, "true" },
1064
  { 0, NULL }
1065
};
1066
1067
1068
static unsigned
1069
0
dissect_kpm_v2_T_incompleteFlag(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1070
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1071
0
                                     1, NULL, true, 0, NULL);
1072
1073
0
  return offset;
1074
0
}
1075
1076
1077
static const per_sequence_t MeasurementDataItem_sequence[] = {
1078
  { &hf_kpm_v2_measRecord   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementRecord },
1079
  { &hf_kpm_v2_incompleteFlag, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_T_incompleteFlag },
1080
  { NULL, 0, 0, NULL }
1081
};
1082
1083
static unsigned
1084
0
dissect_kpm_v2_MeasurementDataItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1085
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1086
0
                                   ett_kpm_v2_MeasurementDataItem, MeasurementDataItem_sequence);
1087
1088
0
  return offset;
1089
0
}
1090
1091
1092
static const per_sequence_t MeasurementData_sequence_of[1] = {
1093
  { &hf_kpm_v2_MeasurementData_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementDataItem },
1094
};
1095
1096
static unsigned
1097
0
dissect_kpm_v2_MeasurementData(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1098
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1099
0
                                                  ett_kpm_v2_MeasurementData, MeasurementData_sequence_of,
1100
0
                                                  1, maxnoofMeasurementRecord, false);
1101
1102
0
  return offset;
1103
0
}
1104
1105
1106
static const per_sequence_t MeasurementInfo_Action_Item_sequence[] = {
1107
  { &hf_kpm_v2_measName     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementTypeName },
1108
  { &hf_kpm_v2_measID       , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_MeasurementTypeID },
1109
  { NULL, 0, 0, NULL }
1110
};
1111
1112
static unsigned
1113
0
dissect_kpm_v2_MeasurementInfo_Action_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1114
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1115
0
                                   ett_kpm_v2_MeasurementInfo_Action_Item, MeasurementInfo_Action_Item_sequence);
1116
1117
0
  return offset;
1118
0
}
1119
1120
1121
static const per_sequence_t MeasurementInfo_Action_List_sequence_of[1] = {
1122
  { &hf_kpm_v2_MeasurementInfo_Action_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementInfo_Action_Item },
1123
};
1124
1125
static unsigned
1126
0
dissect_kpm_v2_MeasurementInfo_Action_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1127
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1128
0
                                                  ett_kpm_v2_MeasurementInfo_Action_List, MeasurementInfo_Action_List_sequence_of,
1129
0
                                                  1, maxnoofMeasurementInfo, false);
1130
1131
0
  return offset;
1132
0
}
1133
1134
1135
static const value_string kpm_v2_MatchingCondItem_vals[] = {
1136
  {   0, "measLabel" },
1137
  {   1, "testCondInfo" },
1138
  { 0, NULL }
1139
};
1140
1141
static const per_choice_t MatchingCondItem_choice[] = {
1142
  {   0, &hf_kpm_v2_measLabel    , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_MeasurementLabel },
1143
  {   1, &hf_kpm_v2_testCondInfo , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_TestCondInfo },
1144
  { 0, NULL, 0, NULL }
1145
};
1146
1147
static unsigned
1148
0
dissect_kpm_v2_MatchingCondItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1149
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1150
0
                                 ett_kpm_v2_MatchingCondItem, MatchingCondItem_choice,
1151
0
                                 NULL);
1152
1153
0
  return offset;
1154
0
}
1155
1156
1157
static const per_sequence_t MatchingCondList_sequence_of[1] = {
1158
  { &hf_kpm_v2_MatchingCondList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingCondItem },
1159
};
1160
1161
static unsigned
1162
0
dissect_kpm_v2_MatchingCondList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1163
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1164
0
                                                  ett_kpm_v2_MatchingCondList, MatchingCondList_sequence_of,
1165
0
                                                  1, maxnoofConditionInfo, false);
1166
1167
0
  return offset;
1168
0
}
1169
1170
1171
static const per_sequence_t MeasurementCondItem_sequence[] = {
1172
  { &hf_kpm_v2_measType     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementType },
1173
  { &hf_kpm_v2_matchingCond , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingCondList },
1174
  { NULL, 0, 0, NULL }
1175
};
1176
1177
static unsigned
1178
0
dissect_kpm_v2_MeasurementCondItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1179
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1180
0
                                   ett_kpm_v2_MeasurementCondItem, MeasurementCondItem_sequence);
1181
1182
0
  return offset;
1183
0
}
1184
1185
1186
static const per_sequence_t MeasurementCondList_sequence_of[1] = {
1187
  { &hf_kpm_v2_MeasurementCondList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementCondItem },
1188
};
1189
1190
static unsigned
1191
0
dissect_kpm_v2_MeasurementCondList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1192
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1193
0
                                                  ett_kpm_v2_MeasurementCondList, MeasurementCondList_sequence_of,
1194
0
                                                  1, maxnoofMeasurementInfo, false);
1195
1196
0
  return offset;
1197
0
}
1198
1199
1200
1201
static unsigned
1202
0
dissect_kpm_v2_AMF_UE_NGAP_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1203
0
  offset = dissect_per_constrained_integer_64b(tvb, offset, actx, tree, hf_index,
1204
0
                                                            0U, UINT64_C(1099511627775), NULL, false);
1205
1206
0
  return offset;
1207
0
}
1208
1209
1210
1211
static unsigned
1212
0
dissect_kpm_v2_AMFRegionID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1213
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1214
0
                                     8, 8, false, NULL, 0, NULL, NULL);
1215
1216
0
  return offset;
1217
0
}
1218
1219
1220
1221
static unsigned
1222
0
dissect_kpm_v2_AMFSetID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1223
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1224
0
                                     10, 10, false, NULL, 0, NULL, NULL);
1225
1226
0
  return offset;
1227
0
}
1228
1229
1230
1231
static unsigned
1232
0
dissect_kpm_v2_AMFPointer(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1233
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1234
0
                                     6, 6, false, NULL, 0, NULL, NULL);
1235
1236
0
  return offset;
1237
0
}
1238
1239
1240
static const per_sequence_t GUAMI_sequence[] = {
1241
  { &hf_kpm_v2_pLMNIdentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PLMNIdentity },
1242
  { &hf_kpm_v2_aMFRegionID  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_AMFRegionID },
1243
  { &hf_kpm_v2_aMFSetID     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_AMFSetID },
1244
  { &hf_kpm_v2_aMFPointer   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_AMFPointer },
1245
  { NULL, 0, 0, NULL }
1246
};
1247
1248
static unsigned
1249
0
dissect_kpm_v2_GUAMI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1250
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1251
0
                                   ett_kpm_v2_GUAMI, GUAMI_sequence);
1252
1253
0
  return offset;
1254
0
}
1255
1256
1257
1258
static unsigned
1259
0
dissect_kpm_v2_GNB_CU_UE_F1AP_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1260
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1261
0
                                                            0U, 4294967295U, NULL, false);
1262
1263
0
  return offset;
1264
0
}
1265
1266
1267
static const per_sequence_t UEID_GNB_CU_CP_F1AP_ID_Item_sequence[] = {
1268
  { &hf_kpm_v2_gNB_CU_UE_F1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GNB_CU_UE_F1AP_ID },
1269
  { NULL, 0, 0, NULL }
1270
};
1271
1272
static unsigned
1273
0
dissect_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1274
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1275
0
                                   ett_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item, UEID_GNB_CU_CP_F1AP_ID_Item_sequence);
1276
1277
0
  return offset;
1278
0
}
1279
1280
1281
static const per_sequence_t UEID_GNB_CU_F1AP_ID_List_sequence_of[1] = {
1282
  { &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 },
1283
};
1284
1285
static unsigned
1286
0
dissect_kpm_v2_UEID_GNB_CU_F1AP_ID_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1287
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1288
0
                                                  ett_kpm_v2_UEID_GNB_CU_F1AP_ID_List, UEID_GNB_CU_F1AP_ID_List_sequence_of,
1289
0
                                                  1, maxF1APid, false);
1290
1291
0
  return offset;
1292
0
}
1293
1294
1295
1296
static unsigned
1297
0
dissect_kpm_v2_GNB_CU_CP_UE_E1AP_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1298
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1299
0
                                                            0U, 4294967295U, NULL, false);
1300
1301
0
  return offset;
1302
0
}
1303
1304
1305
static const per_sequence_t UEID_GNB_CU_CP_E1AP_ID_Item_sequence[] = {
1306
  { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GNB_CU_CP_UE_E1AP_ID },
1307
  { NULL, 0, 0, NULL }
1308
};
1309
1310
static unsigned
1311
0
dissect_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1312
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1313
0
                                   ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item, UEID_GNB_CU_CP_E1AP_ID_Item_sequence);
1314
1315
0
  return offset;
1316
0
}
1317
1318
1319
static const per_sequence_t UEID_GNB_CU_CP_E1AP_ID_List_sequence_of[1] = {
1320
  { &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 },
1321
};
1322
1323
static unsigned
1324
0
dissect_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1325
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1326
0
                                                  ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List, UEID_GNB_CU_CP_E1AP_ID_List_sequence_of,
1327
0
                                                  1, maxE1APid, false);
1328
1329
0
  return offset;
1330
0
}
1331
1332
1333
1334
static unsigned
1335
0
dissect_kpm_v2_RANUEID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1336
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1337
0
                                       8, 8, false, NULL);
1338
1339
0
  return offset;
1340
0
}
1341
1342
1343
1344
static unsigned
1345
0
dissect_kpm_v2_NG_RANnodeUEXnAPID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1346
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1347
0
                                                            0U, 4294967295U, NULL, false);
1348
1349
0
  return offset;
1350
0
}
1351
1352
1353
1354
static unsigned
1355
0
dissect_kpm_v2_BIT_STRING_SIZE_22_32(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1356
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1357
0
                                     22, 32, false, NULL, 0, NULL, NULL);
1358
1359
0
  return offset;
1360
0
}
1361
1362
1363
static const value_string kpm_v2_GNB_ID_vals[] = {
1364
  {   0, "gNB-ID" },
1365
  { 0, NULL }
1366
};
1367
1368
static const per_choice_t GNB_ID_choice[] = {
1369
  {   0, &hf_kpm_v2_gNB_ID       , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BIT_STRING_SIZE_22_32 },
1370
  { 0, NULL, 0, NULL }
1371
};
1372
1373
static unsigned
1374
0
dissect_kpm_v2_GNB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1375
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1376
0
                                 ett_kpm_v2_GNB_ID, GNB_ID_choice,
1377
0
                                 NULL);
1378
1379
0
  return offset;
1380
0
}
1381
1382
1383
static const per_sequence_t GlobalGNB_ID_sequence[] = {
1384
  { &hf_kpm_v2_pLMNIdentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PLMNIdentity },
1385
  { &hf_kpm_v2_gnb_id_choice, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GNB_ID },
1386
  { NULL, 0, 0, NULL }
1387
};
1388
1389
static unsigned
1390
0
dissect_kpm_v2_GlobalGNB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1391
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1392
0
                                   ett_kpm_v2_GlobalGNB_ID, GlobalGNB_ID_sequence);
1393
1394
0
  return offset;
1395
0
}
1396
1397
1398
1399
static unsigned
1400
0
dissect_kpm_v2_BIT_STRING_SIZE_20(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1401
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1402
0
                                     20, 20, false, NULL, 0, NULL, NULL);
1403
1404
0
  return offset;
1405
0
}
1406
1407
1408
1409
static unsigned
1410
0
dissect_kpm_v2_BIT_STRING_SIZE_18(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1411
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1412
0
                                     18, 18, false, NULL, 0, NULL, NULL);
1413
1414
0
  return offset;
1415
0
}
1416
1417
1418
1419
static unsigned
1420
0
dissect_kpm_v2_BIT_STRING_SIZE_21(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1421
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1422
0
                                     21, 21, false, NULL, 0, NULL, NULL);
1423
1424
0
  return offset;
1425
0
}
1426
1427
1428
static const value_string kpm_v2_NgENB_ID_vals[] = {
1429
  {   0, "macroNgENB-ID" },
1430
  {   1, "shortMacroNgENB-ID" },
1431
  {   2, "longMacroNgENB-ID" },
1432
  { 0, NULL }
1433
};
1434
1435
static const per_choice_t NgENB_ID_choice[] = {
1436
  {   0, &hf_kpm_v2_macroNgENB_ID, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BIT_STRING_SIZE_20 },
1437
  {   1, &hf_kpm_v2_shortMacroNgENB_ID, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BIT_STRING_SIZE_18 },
1438
  {   2, &hf_kpm_v2_longMacroNgENB_ID, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BIT_STRING_SIZE_21 },
1439
  { 0, NULL, 0, NULL }
1440
};
1441
1442
static unsigned
1443
0
dissect_kpm_v2_NgENB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1444
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1445
0
                                 ett_kpm_v2_NgENB_ID, NgENB_ID_choice,
1446
0
                                 NULL);
1447
1448
0
  return offset;
1449
0
}
1450
1451
1452
static const per_sequence_t GlobalNgENB_ID_sequence[] = {
1453
  { &hf_kpm_v2_pLMNIdentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PLMNIdentity },
1454
  { &hf_kpm_v2_ngENB_ID     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_NgENB_ID },
1455
  { NULL, 0, 0, NULL }
1456
};
1457
1458
static unsigned
1459
0
dissect_kpm_v2_GlobalNgENB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1460
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1461
0
                                   ett_kpm_v2_GlobalNgENB_ID, GlobalNgENB_ID_sequence);
1462
1463
0
  return offset;
1464
0
}
1465
1466
1467
static const value_string kpm_v2_GlobalNGRANNodeID_vals[] = {
1468
  {   0, "gNB" },
1469
  {   1, "ng-eNB" },
1470
  { 0, NULL }
1471
};
1472
1473
static const per_choice_t GlobalNGRANNodeID_choice[] = {
1474
  {   0, &hf_kpm_v2_gNB          , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_GlobalGNB_ID },
1475
  {   1, &hf_kpm_v2_ng_eNB       , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_GlobalNgENB_ID },
1476
  { 0, NULL, 0, NULL }
1477
};
1478
1479
static unsigned
1480
0
dissect_kpm_v2_GlobalNGRANNodeID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1481
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1482
0
                                 ett_kpm_v2_GlobalNGRANNodeID, GlobalNGRANNodeID_choice,
1483
0
                                 NULL);
1484
1485
0
  return offset;
1486
0
}
1487
1488
1489
static const per_sequence_t UEID_GNB_sequence[] = {
1490
  { &hf_kpm_v2_amf_UE_NGAP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_AMF_UE_NGAP_ID },
1491
  { &hf_kpm_v2_guami        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GUAMI },
1492
  { &hf_kpm_v2_gNB_CU_UE_F1AP_ID_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_UEID_GNB_CU_F1AP_ID_List },
1493
  { &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 },
1494
  { &hf_kpm_v2_ran_UEID     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_RANUEID },
1495
  { &hf_kpm_v2_m_NG_RAN_UE_XnAP_ID, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_NG_RANnodeUEXnAPID },
1496
  { &hf_kpm_v2_globalGNB_ID , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_GlobalGNB_ID },
1497
  { &hf_kpm_v2_globalNG_RANNode_ID, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_kpm_v2_GlobalNGRANNodeID },
1498
  { NULL, 0, 0, NULL }
1499
};
1500
1501
static unsigned
1502
0
dissect_kpm_v2_UEID_GNB(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1503
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1504
0
                                   ett_kpm_v2_UEID_GNB, UEID_GNB_sequence);
1505
1506
0
  return offset;
1507
0
}
1508
1509
1510
static const per_sequence_t UEID_GNB_DU_sequence[] = {
1511
  { &hf_kpm_v2_gNB_CU_UE_F1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GNB_CU_UE_F1AP_ID },
1512
  { &hf_kpm_v2_ran_UEID     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_RANUEID },
1513
  { NULL, 0, 0, NULL }
1514
};
1515
1516
static unsigned
1517
0
dissect_kpm_v2_UEID_GNB_DU(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1518
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1519
0
                                   ett_kpm_v2_UEID_GNB_DU, UEID_GNB_DU_sequence);
1520
1521
0
  return offset;
1522
0
}
1523
1524
1525
static const per_sequence_t UEID_GNB_CU_UP_sequence[] = {
1526
  { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GNB_CU_CP_UE_E1AP_ID },
1527
  { &hf_kpm_v2_ran_UEID     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_RANUEID },
1528
  { NULL, 0, 0, NULL }
1529
};
1530
1531
static unsigned
1532
0
dissect_kpm_v2_UEID_GNB_CU_UP(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1533
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1534
0
                                   ett_kpm_v2_UEID_GNB_CU_UP, UEID_GNB_CU_UP_sequence);
1535
1536
0
  return offset;
1537
0
}
1538
1539
1540
1541
static unsigned
1542
0
dissect_kpm_v2_NGENB_CU_UE_W1AP_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1543
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1544
0
                                                            0U, 4294967295U, NULL, false);
1545
1546
0
  return offset;
1547
0
}
1548
1549
1550
static const per_sequence_t UEID_NG_ENB_sequence[] = {
1551
  { &hf_kpm_v2_amf_UE_NGAP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_AMF_UE_NGAP_ID },
1552
  { &hf_kpm_v2_guami        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GUAMI },
1553
  { &hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_NGENB_CU_UE_W1AP_ID },
1554
  { &hf_kpm_v2_m_NG_RAN_UE_XnAP_ID, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_NG_RANnodeUEXnAPID },
1555
  { &hf_kpm_v2_globalNgENB_ID, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_GlobalNgENB_ID },
1556
  { &hf_kpm_v2_globalNG_RANNode_ID, ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL    , dissect_kpm_v2_GlobalNGRANNodeID },
1557
  { NULL, 0, 0, NULL }
1558
};
1559
1560
static unsigned
1561
0
dissect_kpm_v2_UEID_NG_ENB(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1562
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1563
0
                                   ett_kpm_v2_UEID_NG_ENB, UEID_NG_ENB_sequence);
1564
1565
0
  return offset;
1566
0
}
1567
1568
1569
static const per_sequence_t UEID_NG_ENB_DU_sequence[] = {
1570
  { &hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_NGENB_CU_UE_W1AP_ID },
1571
  { NULL, 0, 0, NULL }
1572
};
1573
1574
static unsigned
1575
0
dissect_kpm_v2_UEID_NG_ENB_DU(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1576
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1577
0
                                   ett_kpm_v2_UEID_NG_ENB_DU, UEID_NG_ENB_DU_sequence);
1578
1579
0
  return offset;
1580
0
}
1581
1582
1583
1584
static unsigned
1585
0
dissect_kpm_v2_ENB_UE_X2AP_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1586
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1587
0
                                                            0U, 4095U, NULL, false);
1588
1589
0
  return offset;
1590
0
}
1591
1592
1593
1594
static unsigned
1595
0
dissect_kpm_v2_ENB_UE_X2AP_ID_Extension(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1596
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1597
0
                                                            0U, 4095U, NULL, true);
1598
1599
0
  return offset;
1600
0
}
1601
1602
1603
1604
static unsigned
1605
0
dissect_kpm_v2_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1606
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1607
0
                                     28, 28, false, NULL, 0, NULL, NULL);
1608
1609
0
  return offset;
1610
0
}
1611
1612
1613
static const value_string kpm_v2_ENB_ID_vals[] = {
1614
  {   0, "macro-eNB-ID" },
1615
  {   1, "home-eNB-ID" },
1616
  {   2, "short-Macro-eNB-ID" },
1617
  {   3, "long-Macro-eNB-ID" },
1618
  { 0, NULL }
1619
};
1620
1621
static const per_choice_t ENB_ID_choice[] = {
1622
  {   0, &hf_kpm_v2_macro_eNB_ID , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BIT_STRING_SIZE_20 },
1623
  {   1, &hf_kpm_v2_home_eNB_ID  , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_BIT_STRING_SIZE_28 },
1624
  {   2, &hf_kpm_v2_short_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_BIT_STRING_SIZE_18 },
1625
  {   3, &hf_kpm_v2_long_Macro_eNB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_BIT_STRING_SIZE_21 },
1626
  { 0, NULL, 0, NULL }
1627
};
1628
1629
static unsigned
1630
0
dissect_kpm_v2_ENB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1631
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1632
0
                                 ett_kpm_v2_ENB_ID, ENB_ID_choice,
1633
0
                                 NULL);
1634
1635
0
  return offset;
1636
0
}
1637
1638
1639
static const per_sequence_t GlobalENB_ID_sequence[] = {
1640
  { &hf_kpm_v2_pLMNIdentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PLMNIdentity },
1641
  { &hf_kpm_v2_eNB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_ENB_ID },
1642
  { NULL, 0, 0, NULL }
1643
};
1644
1645
static unsigned
1646
0
dissect_kpm_v2_GlobalENB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1647
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1648
0
                                   ett_kpm_v2_GlobalENB_ID, GlobalENB_ID_sequence);
1649
1650
0
  return offset;
1651
0
}
1652
1653
1654
static const per_sequence_t UEID_EN_GNB_sequence[] = {
1655
  { &hf_kpm_v2_m_eNB_UE_X2AP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_ENB_UE_X2AP_ID },
1656
  { &hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_ENB_UE_X2AP_ID_Extension },
1657
  { &hf_kpm_v2_globalENB_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GlobalENB_ID },
1658
  { &hf_kpm_v2_gNB_CU_UE_F1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_GNB_CU_UE_F1AP_ID },
1659
  { &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 },
1660
  { &hf_kpm_v2_ran_UEID     , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_RANUEID },
1661
  { NULL, 0, 0, NULL }
1662
};
1663
1664
static unsigned
1665
0
dissect_kpm_v2_UEID_EN_GNB(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1666
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1667
0
                                   ett_kpm_v2_UEID_EN_GNB, UEID_EN_GNB_sequence);
1668
1669
0
  return offset;
1670
0
}
1671
1672
1673
1674
static unsigned
1675
0
dissect_kpm_v2_MME_UE_S1AP_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1676
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1677
0
                                                            0U, 4294967295U, NULL, false);
1678
1679
0
  return offset;
1680
0
}
1681
1682
1683
1684
static unsigned
1685
0
dissect_kpm_v2_MME_Group_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1686
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1687
0
                                       2, 2, false, NULL);
1688
1689
0
  return offset;
1690
0
}
1691
1692
1693
1694
static unsigned
1695
0
dissect_kpm_v2_MME_Code(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1696
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1697
0
                                       1, 1, false, NULL);
1698
1699
0
  return offset;
1700
0
}
1701
1702
1703
static const per_sequence_t GUMMEI_sequence[] = {
1704
  { &hf_kpm_v2_pLMN_Identity, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PLMNIdentity },
1705
  { &hf_kpm_v2_mME_Group_ID , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MME_Group_ID },
1706
  { &hf_kpm_v2_mME_Code     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MME_Code },
1707
  { NULL, 0, 0, NULL }
1708
};
1709
1710
static unsigned
1711
0
dissect_kpm_v2_GUMMEI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1712
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1713
0
                                   ett_kpm_v2_GUMMEI, GUMMEI_sequence);
1714
1715
0
  return offset;
1716
0
}
1717
1718
1719
static const per_sequence_t UEID_ENB_sequence[] = {
1720
  { &hf_kpm_v2_mME_UE_S1AP_ID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MME_UE_S1AP_ID },
1721
  { &hf_kpm_v2_gUMMEI       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GUMMEI },
1722
  { &hf_kpm_v2_m_eNB_UE_X2AP_ID, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_ENB_UE_X2AP_ID },
1723
  { &hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_ENB_UE_X2AP_ID_Extension },
1724
  { &hf_kpm_v2_globalENB_ID , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_GlobalENB_ID },
1725
  { NULL, 0, 0, NULL }
1726
};
1727
1728
static unsigned
1729
0
dissect_kpm_v2_UEID_ENB(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1730
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1731
0
                                   ett_kpm_v2_UEID_ENB, UEID_ENB_sequence);
1732
1733
0
  return offset;
1734
0
}
1735
1736
1737
static const value_string kpm_v2_UEID_vals[] = {
1738
  {   0, "gNB-UEID" },
1739
  {   1, "gNB-DU-UEID" },
1740
  {   2, "gNB-CU-UP-UEID" },
1741
  {   3, "ng-eNB-UEID" },
1742
  {   4, "ng-eNB-DU-UEID" },
1743
  {   5, "en-gNB-UEID" },
1744
  {   6, "eNB-UEID" },
1745
  { 0, NULL }
1746
};
1747
1748
static const per_choice_t UEID_choice[] = {
1749
  {   0, &hf_kpm_v2_gNB_UEID     , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_UEID_GNB },
1750
  {   1, &hf_kpm_v2_gNB_DU_UEID  , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_UEID_GNB_DU },
1751
  {   2, &hf_kpm_v2_gNB_CU_UP_UEID, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_UEID_GNB_CU_UP },
1752
  {   3, &hf_kpm_v2_ng_eNB_UEID  , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_UEID_NG_ENB },
1753
  {   4, &hf_kpm_v2_ng_eNB_DU_UEID, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_UEID_NG_ENB_DU },
1754
  {   5, &hf_kpm_v2_en_gNB_UEID  , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_UEID_EN_GNB },
1755
  {   6, &hf_kpm_v2_eNB_UEID     , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_UEID_ENB },
1756
  { 0, NULL, 0, NULL }
1757
};
1758
1759
static unsigned
1760
0
dissect_kpm_v2_UEID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1761
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1762
0
                                 ett_kpm_v2_UEID, UEID_choice,
1763
0
                                 NULL);
1764
1765
0
  return offset;
1766
0
}
1767
1768
1769
static const per_sequence_t MatchingUEidItem_sequence[] = {
1770
  { &hf_kpm_v2_ueID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_UEID },
1771
  { NULL, 0, 0, NULL }
1772
};
1773
1774
static unsigned
1775
0
dissect_kpm_v2_MatchingUEidItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1776
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1777
0
                                   ett_kpm_v2_MatchingUEidItem, MatchingUEidItem_sequence);
1778
1779
0
  return offset;
1780
0
}
1781
1782
1783
static const per_sequence_t MatchingUEidList_sequence_of[1] = {
1784
  { &hf_kpm_v2_MatchingUEidList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingUEidItem },
1785
};
1786
1787
static unsigned
1788
0
dissect_kpm_v2_MatchingUEidList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1789
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1790
0
                                                  ett_kpm_v2_MatchingUEidList, MatchingUEidList_sequence_of,
1791
0
                                                  1, maxnoofUEID, false);
1792
1793
0
  return offset;
1794
0
}
1795
1796
1797
static const per_sequence_t MeasurementCondUEidItem_sequence[] = {
1798
  { &hf_kpm_v2_measType     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementType },
1799
  { &hf_kpm_v2_matchingCond , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingCondList },
1800
  { &hf_kpm_v2_matchingUEidList, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_MatchingUEidList },
1801
  { NULL, 0, 0, NULL }
1802
};
1803
1804
static unsigned
1805
0
dissect_kpm_v2_MeasurementCondUEidItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1806
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1807
0
                                   ett_kpm_v2_MeasurementCondUEidItem, MeasurementCondUEidItem_sequence);
1808
1809
0
  return offset;
1810
0
}
1811
1812
1813
static const per_sequence_t MeasurementCondUEidList_sequence_of[1] = {
1814
  { &hf_kpm_v2_MeasurementCondUEidList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementCondUEidItem },
1815
};
1816
1817
static unsigned
1818
0
dissect_kpm_v2_MeasurementCondUEidList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1819
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1820
0
                                                  ett_kpm_v2_MeasurementCondUEidList, MeasurementCondUEidList_sequence_of,
1821
0
                                                  1, maxnoofMeasurementInfo, false);
1822
1823
0
  return offset;
1824
0
}
1825
1826
1827
static const per_sequence_t MatchingUeCondPerSubItem_sequence[] = {
1828
  { &hf_kpm_v2_testCondInfo , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_TestCondInfo },
1829
  { NULL, 0, 0, NULL }
1830
};
1831
1832
static unsigned
1833
0
dissect_kpm_v2_MatchingUeCondPerSubItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1834
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1835
0
                                   ett_kpm_v2_MatchingUeCondPerSubItem, MatchingUeCondPerSubItem_sequence);
1836
1837
0
  return offset;
1838
0
}
1839
1840
1841
static const per_sequence_t MatchingUeCondPerSubList_sequence_of[1] = {
1842
  { &hf_kpm_v2_MatchingUeCondPerSubList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingUeCondPerSubItem },
1843
};
1844
1845
static unsigned
1846
0
dissect_kpm_v2_MatchingUeCondPerSubList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1847
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1848
0
                                                  ett_kpm_v2_MatchingUeCondPerSubList, MatchingUeCondPerSubList_sequence_of,
1849
0
                                                  1, maxnoofConditionInfoPerSub, false);
1850
1851
0
  return offset;
1852
0
}
1853
1854
1855
static const per_sequence_t MatchingUEidPerSubItem_sequence[] = {
1856
  { &hf_kpm_v2_ueID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_UEID },
1857
  { NULL, 0, 0, NULL }
1858
};
1859
1860
static unsigned
1861
0
dissect_kpm_v2_MatchingUEidPerSubItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1862
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1863
0
                                   ett_kpm_v2_MatchingUEidPerSubItem, MatchingUEidPerSubItem_sequence);
1864
1865
0
  return offset;
1866
0
}
1867
1868
1869
static const per_sequence_t MatchingUEidPerSubList_sequence_of[1] = {
1870
  { &hf_kpm_v2_MatchingUEidPerSubList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingUEidPerSubItem },
1871
};
1872
1873
static unsigned
1874
0
dissect_kpm_v2_MatchingUEidPerSubList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1875
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1876
0
                                                  ett_kpm_v2_MatchingUEidPerSubList, MatchingUEidPerSubList_sequence_of,
1877
0
                                                  2, maxnoofUEIDPerSub, false);
1878
1879
0
  return offset;
1880
0
}
1881
1882
1883
static const per_sequence_t E2SM_KPM_IndicationMessage_Format1_sequence[] = {
1884
  { &hf_kpm_v2_measData     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementData },
1885
  { &hf_kpm_v2_measInfoList , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_MeasurementInfoList },
1886
  { &hf_kpm_v2_granulPeriod , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_GranularityPeriod },
1887
  { NULL, 0, 0, NULL }
1888
};
1889
1890
static unsigned
1891
0
dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format1(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1892
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1893
0
                                   ett_kpm_v2_E2SM_KPM_IndicationMessage_Format1, E2SM_KPM_IndicationMessage_Format1_sequence);
1894
1895
0
  return offset;
1896
0
}
1897
1898
1899
static const per_sequence_t UEMeasurementReportItem_sequence[] = {
1900
  { &hf_kpm_v2_ueID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_UEID },
1901
  { &hf_kpm_v2_measReport   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format1 },
1902
  { NULL, 0, 0, NULL }
1903
};
1904
1905
static unsigned
1906
0
dissect_kpm_v2_UEMeasurementReportItem(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1907
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1908
0
                                   ett_kpm_v2_UEMeasurementReportItem, UEMeasurementReportItem_sequence);
1909
1910
0
  return offset;
1911
0
}
1912
1913
1914
static const per_sequence_t UEMeasurementReportList_sequence_of[1] = {
1915
  { &hf_kpm_v2_UEMeasurementReportList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_UEMeasurementReportItem },
1916
};
1917
1918
static unsigned
1919
0
dissect_kpm_v2_UEMeasurementReportList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1920
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1921
0
                                                  ett_kpm_v2_UEMeasurementReportList, UEMeasurementReportList_sequence_of,
1922
0
                                                  1, maxnoofUEMeasReport, false);
1923
1924
0
  return offset;
1925
0
}
1926
1927
1928
1929
static unsigned
1930
0
dissect_kpm_v2_INTEGER_1_4294967295(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1931
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1932
0
                                                            1U, 4294967295U, NULL, false);
1933
1934
0
  return offset;
1935
0
}
1936
1937
1938
static const per_sequence_t E2SM_KPM_EventTriggerDefinition_Format1_sequence[] = {
1939
  { &hf_kpm_v2_reportingPeriod, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_INTEGER_1_4294967295 },
1940
  { NULL, 0, 0, NULL }
1941
};
1942
1943
static unsigned
1944
0
dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1945
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1946
0
                                   ett_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1, E2SM_KPM_EventTriggerDefinition_Format1_sequence);
1947
1948
0
  return offset;
1949
0
}
1950
1951
1952
static const value_string kpm_v2_T_eventDefinition_formats_vals[] = {
1953
  {   0, "eventDefinition-Format1" },
1954
  { 0, NULL }
1955
};
1956
1957
static const per_choice_t T_eventDefinition_formats_choice[] = {
1958
  {   0, &hf_kpm_v2_eventDefinition_Format1, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1 },
1959
  { 0, NULL, 0, NULL }
1960
};
1961
1962
static unsigned
1963
0
dissect_kpm_v2_T_eventDefinition_formats(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1964
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1965
0
                                 ett_kpm_v2_T_eventDefinition_formats, T_eventDefinition_formats_choice,
1966
0
                                 NULL);
1967
1968
0
  return offset;
1969
0
}
1970
1971
1972
static const per_sequence_t E2SM_KPM_EventTriggerDefinition_sequence[] = {
1973
  { &hf_kpm_v2_eventDefinition_formats, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_T_eventDefinition_formats },
1974
  { NULL, 0, 0, NULL }
1975
};
1976
1977
static unsigned
1978
0
dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1979
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1980
0
                                   ett_kpm_v2_E2SM_KPM_EventTriggerDefinition, E2SM_KPM_EventTriggerDefinition_sequence);
1981
1982
0
  return offset;
1983
0
}
1984
1985
1986
1987
static unsigned
1988
0
dissect_kpm_v2_RIC_Style_Type(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1989
0
  offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
1990
1991
0
  return offset;
1992
0
}
1993
1994
1995
1996
static unsigned
1997
0
dissect_kpm_v2_NRCellIdentity(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1998
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1999
0
                                     36, 36, false, NULL, 0, NULL, NULL);
2000
2001
0
  return offset;
2002
0
}
2003
2004
2005
static const per_sequence_t NR_CGI_sequence[] = {
2006
  { &hf_kpm_v2_pLMNIdentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PLMNIdentity },
2007
  { &hf_kpm_v2_nRCellIdentity, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_NRCellIdentity },
2008
  { NULL, 0, 0, NULL }
2009
};
2010
2011
static unsigned
2012
0
dissect_kpm_v2_NR_CGI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2013
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2014
0
                                   ett_kpm_v2_NR_CGI, NR_CGI_sequence);
2015
2016
0
  return offset;
2017
0
}
2018
2019
2020
2021
static unsigned
2022
0
dissect_kpm_v2_EUTRACellIdentity(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2023
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2024
0
                                     28, 28, false, NULL, 0, NULL, NULL);
2025
2026
0
  return offset;
2027
0
}
2028
2029
2030
static const per_sequence_t EUTRA_CGI_sequence[] = {
2031
  { &hf_kpm_v2_pLMNIdentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PLMNIdentity },
2032
  { &hf_kpm_v2_eUTRACellIdentity, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_EUTRACellIdentity },
2033
  { NULL, 0, 0, NULL }
2034
};
2035
2036
static unsigned
2037
0
dissect_kpm_v2_EUTRA_CGI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2038
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2039
0
                                   ett_kpm_v2_EUTRA_CGI, EUTRA_CGI_sequence);
2040
2041
0
  return offset;
2042
0
}
2043
2044
2045
static const value_string kpm_v2_CGI_vals[] = {
2046
  {   0, "nR-CGI" },
2047
  {   1, "eUTRA-CGI" },
2048
  { 0, NULL }
2049
};
2050
2051
static const per_choice_t CGI_choice[] = {
2052
  {   0, &hf_kpm_v2_nR_CGI       , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_NR_CGI },
2053
  {   1, &hf_kpm_v2_eUTRA_CGI    , ASN1_EXTENSION_ROOT    , dissect_kpm_v2_EUTRA_CGI },
2054
  { 0, NULL, 0, NULL }
2055
};
2056
2057
static unsigned
2058
0
dissect_kpm_v2_CGI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2059
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2060
0
                                 ett_kpm_v2_CGI, CGI_choice,
2061
0
                                 NULL);
2062
2063
0
  return offset;
2064
0
}
2065
2066
2067
static const per_sequence_t E2SM_KPM_ActionDefinition_Format1_sequence[] = {
2068
  { &hf_kpm_v2_measInfoList , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementInfoList },
2069
  { &hf_kpm_v2_granulPeriod , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GranularityPeriod },
2070
  { &hf_kpm_v2_cellGlobalID , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_CGI },
2071
  { NULL, 0, 0, NULL }
2072
};
2073
2074
static unsigned
2075
0
dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2076
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2077
0
                                   ett_kpm_v2_E2SM_KPM_ActionDefinition_Format1, E2SM_KPM_ActionDefinition_Format1_sequence);
2078
2079
0
  return offset;
2080
0
}
2081
2082
2083
static const per_sequence_t E2SM_KPM_ActionDefinition_Format2_sequence[] = {
2084
  { &hf_kpm_v2_ueID         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_UEID },
2085
  { &hf_kpm_v2_subscriptInfo, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1 },
2086
  { NULL, 0, 0, NULL }
2087
};
2088
2089
static unsigned
2090
0
dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format2(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2091
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2092
0
                                   ett_kpm_v2_E2SM_KPM_ActionDefinition_Format2, E2SM_KPM_ActionDefinition_Format2_sequence);
2093
2094
0
  return offset;
2095
0
}
2096
2097
2098
static const per_sequence_t E2SM_KPM_ActionDefinition_Format3_sequence[] = {
2099
  { &hf_kpm_v2_measCondList , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementCondList },
2100
  { &hf_kpm_v2_granulPeriod , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_GranularityPeriod },
2101
  { &hf_kpm_v2_cellGlobalID , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_CGI },
2102
  { NULL, 0, 0, NULL }
2103
};
2104
2105
static unsigned
2106
0
dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format3(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2107
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2108
0
                                   ett_kpm_v2_E2SM_KPM_ActionDefinition_Format3, E2SM_KPM_ActionDefinition_Format3_sequence);
2109
2110
0
  return offset;
2111
0
}
2112
2113
2114
static const per_sequence_t E2SM_KPM_ActionDefinition_Format4_sequence[] = {
2115
  { &hf_kpm_v2_matchingUeCondList, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingUeCondPerSubList },
2116
  { &hf_kpm_v2_subscriptionInfo, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1 },
2117
  { NULL, 0, 0, NULL }
2118
};
2119
2120
static unsigned
2121
0
dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format4(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2122
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2123
0
                                   ett_kpm_v2_E2SM_KPM_ActionDefinition_Format4, E2SM_KPM_ActionDefinition_Format4_sequence);
2124
2125
0
  return offset;
2126
0
}
2127
2128
2129
static const per_sequence_t E2SM_KPM_ActionDefinition_Format5_sequence[] = {
2130
  { &hf_kpm_v2_matchingUEidList_01, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MatchingUEidPerSubList },
2131
  { &hf_kpm_v2_subscriptionInfo, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1 },
2132
  { NULL, 0, 0, NULL }
2133
};
2134
2135
static unsigned
2136
0
dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format5(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2137
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2138
0
                                   ett_kpm_v2_E2SM_KPM_ActionDefinition_Format5, E2SM_KPM_ActionDefinition_Format5_sequence);
2139
2140
0
  return offset;
2141
0
}
2142
2143
2144
static const value_string kpm_v2_T_actionDefinition_formats_vals[] = {
2145
  {   0, "actionDefinition-Format1" },
2146
  {   1, "actionDefinition-Format2" },
2147
  {   2, "actionDefinition-Format3" },
2148
  {   3, "actionDefinition-Format4" },
2149
  {   4, "actionDefinition-Format5" },
2150
  { 0, NULL }
2151
};
2152
2153
static const per_choice_t T_actionDefinition_formats_choice[] = {
2154
  {   0, &hf_kpm_v2_actionDefinition_Format1, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format1 },
2155
  {   1, &hf_kpm_v2_actionDefinition_Format2, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format2 },
2156
  {   2, &hf_kpm_v2_actionDefinition_Format3, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format3 },
2157
  {   3, &hf_kpm_v2_actionDefinition_Format4, ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format4 },
2158
  {   4, &hf_kpm_v2_actionDefinition_Format5, ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_E2SM_KPM_ActionDefinition_Format5 },
2159
  { 0, NULL, 0, NULL }
2160
};
2161
2162
static unsigned
2163
0
dissect_kpm_v2_T_actionDefinition_formats(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2164
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2165
0
                                 ett_kpm_v2_T_actionDefinition_formats, T_actionDefinition_formats_choice,
2166
0
                                 NULL);
2167
2168
0
  return offset;
2169
0
}
2170
2171
2172
static const per_sequence_t E2SM_KPM_ActionDefinition_sequence[] = {
2173
  { &hf_kpm_v2_ric_Style_Type, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Style_Type },
2174
  { &hf_kpm_v2_actionDefinition_formats, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_T_actionDefinition_formats },
2175
  { NULL, 0, 0, NULL }
2176
};
2177
2178
static unsigned
2179
0
dissect_kpm_v2_E2SM_KPM_ActionDefinition(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2180
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2181
0
                                   ett_kpm_v2_E2SM_KPM_ActionDefinition, E2SM_KPM_ActionDefinition_sequence);
2182
2183
0
  return offset;
2184
0
}
2185
2186
2187
2188
static unsigned
2189
0
dissect_kpm_v2_T_colletStartTime(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2190
0
  int ts_offset = offset;
2191
0
    offset = dissect_kpm_v2_TimeStamp(tvb, offset, actx, tree, hf_index);
2192
2193
  /* Add as a generated field the timestamp decoded */
2194
0
  const char *time_str = tvb_ntp_fmt_ts_sec(actx->pinfo->pool, tvb, (ts_offset+7)/8);
2195
0
  proto_item *ti = proto_tree_add_string(tree, hf_kpm_v2_timestamp_string, tvb, (ts_offset+7)/8, 4, time_str);
2196
0
  proto_item_set_generated(ti);
2197
2198
2199
0
  return offset;
2200
0
}
2201
2202
2203
2204
static unsigned
2205
0
dissect_kpm_v2_PrintableString_SIZE_0_15_(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2206
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2207
0
                                          0, 15, true,
2208
0
                                          NULL);
2209
2210
0
  return offset;
2211
0
}
2212
2213
2214
2215
static unsigned
2216
0
dissect_kpm_v2_PrintableString_SIZE_0_400_(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2217
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2218
0
                                          0, 400, true,
2219
0
                                          NULL);
2220
2221
0
  return offset;
2222
0
}
2223
2224
2225
2226
static unsigned
2227
0
dissect_kpm_v2_PrintableString_SIZE_0_8_(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2228
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2229
0
                                          0, 8, true,
2230
0
                                          NULL);
2231
2232
0
  return offset;
2233
0
}
2234
2235
2236
2237
static unsigned
2238
0
dissect_kpm_v2_PrintableString_SIZE_0_32_(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2239
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2240
0
                                          0, 32, true,
2241
0
                                          NULL);
2242
2243
0
  return offset;
2244
0
}
2245
2246
2247
static const per_sequence_t E2SM_KPM_IndicationHeader_Format1_sequence[] = {
2248
  { &hf_kpm_v2_colletStartTime, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_T_colletStartTime },
2249
  { &hf_kpm_v2_fileFormatversion, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_PrintableString_SIZE_0_15_ },
2250
  { &hf_kpm_v2_senderName   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_PrintableString_SIZE_0_400_ },
2251
  { &hf_kpm_v2_senderType   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_PrintableString_SIZE_0_8_ },
2252
  { &hf_kpm_v2_vendorName   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_PrintableString_SIZE_0_32_ },
2253
  { NULL, 0, 0, NULL }
2254
};
2255
2256
static unsigned
2257
0
dissect_kpm_v2_E2SM_KPM_IndicationHeader_Format1(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2258
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2259
0
                                   ett_kpm_v2_E2SM_KPM_IndicationHeader_Format1, E2SM_KPM_IndicationHeader_Format1_sequence);
2260
2261
0
  return offset;
2262
0
}
2263
2264
2265
static const value_string kpm_v2_T_indicationHeader_formats_vals[] = {
2266
  {   0, "indicationHeader-Format1" },
2267
  { 0, NULL }
2268
};
2269
2270
static const per_choice_t T_indicationHeader_formats_choice[] = {
2271
  {   0, &hf_kpm_v2_indicationHeader_Format1, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_E2SM_KPM_IndicationHeader_Format1 },
2272
  { 0, NULL, 0, NULL }
2273
};
2274
2275
static unsigned
2276
0
dissect_kpm_v2_T_indicationHeader_formats(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2277
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2278
0
                                 ett_kpm_v2_T_indicationHeader_formats, T_indicationHeader_formats_choice,
2279
0
                                 NULL);
2280
2281
0
  return offset;
2282
0
}
2283
2284
2285
static const per_sequence_t E2SM_KPM_IndicationHeader_sequence[] = {
2286
  { &hf_kpm_v2_indicationHeader_formats, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_T_indicationHeader_formats },
2287
  { NULL, 0, 0, NULL }
2288
};
2289
2290
static unsigned
2291
0
dissect_kpm_v2_E2SM_KPM_IndicationHeader(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2292
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2293
0
                                   ett_kpm_v2_E2SM_KPM_IndicationHeader, E2SM_KPM_IndicationHeader_sequence);
2294
2295
0
  return offset;
2296
0
}
2297
2298
2299
static const per_sequence_t E2SM_KPM_IndicationMessage_Format2_sequence[] = {
2300
  { &hf_kpm_v2_measData     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementData },
2301
  { &hf_kpm_v2_measCondUEidList, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementCondUEidList },
2302
  { &hf_kpm_v2_granulPeriod , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_GranularityPeriod },
2303
  { NULL, 0, 0, NULL }
2304
};
2305
2306
static unsigned
2307
0
dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format2(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2308
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2309
0
                                   ett_kpm_v2_E2SM_KPM_IndicationMessage_Format2, E2SM_KPM_IndicationMessage_Format2_sequence);
2310
2311
0
  return offset;
2312
0
}
2313
2314
2315
static const per_sequence_t E2SM_KPM_IndicationMessage_Format3_sequence[] = {
2316
  { &hf_kpm_v2_ueMeasReportList, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_UEMeasurementReportList },
2317
  { NULL, 0, 0, NULL }
2318
};
2319
2320
static unsigned
2321
0
dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format3(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2322
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2323
0
                                   ett_kpm_v2_E2SM_KPM_IndicationMessage_Format3, E2SM_KPM_IndicationMessage_Format3_sequence);
2324
2325
0
  return offset;
2326
0
}
2327
2328
2329
static const value_string kpm_v2_T_indicationMessage_formats_vals[] = {
2330
  {   0, "indicationMessage-Format1" },
2331
  {   1, "indicationMessage-Format2" },
2332
  {   2, "indicationMessage-Format3" },
2333
  { 0, NULL }
2334
};
2335
2336
static const per_choice_t T_indicationMessage_formats_choice[] = {
2337
  {   0, &hf_kpm_v2_indicationMessage_Format1, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format1 },
2338
  {   1, &hf_kpm_v2_indicationMessage_Format2, ASN1_EXTENSION_ROOT    , dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format2 },
2339
  {   2, &hf_kpm_v2_indicationMessage_Format3, ASN1_NOT_EXTENSION_ROOT, dissect_kpm_v2_E2SM_KPM_IndicationMessage_Format3 },
2340
  { 0, NULL, 0, NULL }
2341
};
2342
2343
static unsigned
2344
0
dissect_kpm_v2_T_indicationMessage_formats(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2345
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2346
0
                                 ett_kpm_v2_T_indicationMessage_formats, T_indicationMessage_formats_choice,
2347
0
                                 NULL);
2348
2349
0
  return offset;
2350
0
}
2351
2352
2353
static const per_sequence_t E2SM_KPM_IndicationMessage_sequence[] = {
2354
  { &hf_kpm_v2_indicationMessage_formats, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_T_indicationMessage_formats },
2355
  { NULL, 0, 0, NULL }
2356
};
2357
2358
static unsigned
2359
0
dissect_kpm_v2_E2SM_KPM_IndicationMessage(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2360
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2361
0
                                   ett_kpm_v2_E2SM_KPM_IndicationMessage, E2SM_KPM_IndicationMessage_sequence);
2362
2363
0
  return offset;
2364
0
}
2365
2366
2367
2368
static unsigned
2369
0
dissect_kpm_v2_T_ranFunction_ShortName(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2370
0
  tvbuff_t *value_tvb;
2371
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2372
0
                                          1, 150, true,
2373
0
                                          &value_tvb);
2374
2375
0
  if (!actx->pinfo->fd->visited) {
2376
    /* N.B. too early to work out exact dissector, as don't have OID yet */
2377
0
    e2ap_store_ran_function_mapping(actx->pinfo, tree, value_tvb,
2378
0
                                    (char*)tvb_get_string_enc(actx->pinfo->pool, value_tvb, 0, tvb_captured_length(value_tvb), ENC_ASCII));
2379
0
  }
2380
2381
2382
2383
0
  return offset;
2384
0
}
2385
2386
2387
2388
static unsigned
2389
0
dissect_kpm_v2_T_ranFunction_E2SM_OID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2390
0
  tvbuff_t *parameter_tvb;
2391
0
    offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2392
0
                                          1, 1000, true,
2393
0
                                          &parameter_tvb);
2394
2395
0
  e2ap_update_ran_function_mapping(actx->pinfo, tree, parameter_tvb,
2396
0
                                   (char*)tvb_get_string_enc(actx->pinfo->pool, parameter_tvb, 0,
2397
0
           tvb_captured_length(parameter_tvb), ENC_ASCII));
2398
2399
2400
2401
0
  return offset;
2402
0
}
2403
2404
2405
2406
static unsigned
2407
0
dissect_kpm_v2_PrintableString_SIZE_1_150_(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2408
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2409
0
                                          1, 150, true,
2410
0
                                          NULL);
2411
2412
0
  return offset;
2413
0
}
2414
2415
2416
static const per_sequence_t RANfunction_Name_sequence[] = {
2417
  { &hf_kpm_v2_ranFunction_ShortName, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_T_ranFunction_ShortName },
2418
  { &hf_kpm_v2_ranFunction_E2SM_OID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_T_ranFunction_E2SM_OID },
2419
  { &hf_kpm_v2_ranFunction_Description, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_PrintableString_SIZE_1_150_ },
2420
  { &hf_kpm_v2_ranFunction_Instance, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_INTEGER },
2421
  { NULL, 0, 0, NULL }
2422
};
2423
2424
static unsigned
2425
0
dissect_kpm_v2_RANfunction_Name(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2426
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2427
0
                                   ett_kpm_v2_RANfunction_Name, RANfunction_Name_sequence);
2428
2429
0
  return offset;
2430
0
}
2431
2432
2433
2434
static unsigned
2435
0
dissect_kpm_v2_RIC_Style_Name(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2436
0
  offset = dissect_per_PrintableString(tvb, offset, actx, tree, hf_index,
2437
0
                                          1, 150, true,
2438
0
                                          NULL);
2439
2440
0
  return offset;
2441
0
}
2442
2443
2444
2445
static unsigned
2446
0
dissect_kpm_v2_RIC_Format_Type(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2447
0
  offset = dissect_per_integer(tvb, offset, actx, tree, hf_index, NULL);
2448
2449
0
  return offset;
2450
0
}
2451
2452
2453
static const per_sequence_t RIC_EventTriggerStyle_Item_sequence[] = {
2454
  { &hf_kpm_v2_ric_EventTriggerStyle_Type, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Style_Type },
2455
  { &hf_kpm_v2_ric_EventTriggerStyle_Name, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Style_Name },
2456
  { &hf_kpm_v2_ric_EventTriggerFormat_Type, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Format_Type },
2457
  { NULL, 0, 0, NULL }
2458
};
2459
2460
static unsigned
2461
0
dissect_kpm_v2_RIC_EventTriggerStyle_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2462
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2463
0
                                   ett_kpm_v2_RIC_EventTriggerStyle_Item, RIC_EventTriggerStyle_Item_sequence);
2464
2465
0
  return offset;
2466
0
}
2467
2468
2469
static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item_sequence_of[1] = {
2470
  { &hf_kpm_v2_ric_EventTriggerStyle_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_EventTriggerStyle_Item },
2471
};
2472
2473
static unsigned
2474
0
dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2475
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2476
0
                                                  ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item_sequence_of,
2477
0
                                                  1, maxnoofRICStyles, false);
2478
2479
0
  return offset;
2480
0
}
2481
2482
2483
static const per_sequence_t RIC_ReportStyle_Item_sequence[] = {
2484
  { &hf_kpm_v2_ric_ReportStyle_Type, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Style_Type },
2485
  { &hf_kpm_v2_ric_ReportStyle_Name, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Style_Name },
2486
  { &hf_kpm_v2_ric_ActionFormat_Type, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Format_Type },
2487
  { &hf_kpm_v2_measInfo_Action_List, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_MeasurementInfo_Action_List },
2488
  { &hf_kpm_v2_ric_IndicationHeaderFormat_Type, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Format_Type },
2489
  { &hf_kpm_v2_ric_IndicationMessageFormat_Type, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_Format_Type },
2490
  { NULL, 0, 0, NULL }
2491
};
2492
2493
static unsigned
2494
0
dissect_kpm_v2_RIC_ReportStyle_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2495
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2496
0
                                   ett_kpm_v2_RIC_ReportStyle_Item, RIC_ReportStyle_Item_sequence);
2497
2498
0
  return offset;
2499
0
}
2500
2501
2502
static const per_sequence_t SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item_sequence_of[1] = {
2503
  { &hf_kpm_v2_ric_ReportStyle_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RIC_ReportStyle_Item },
2504
};
2505
2506
static unsigned
2507
0
dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2508
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2509
0
                                                  ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item, SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item_sequence_of,
2510
0
                                                  1, maxnoofRICStyles, false);
2511
2512
0
  return offset;
2513
0
}
2514
2515
2516
static const per_sequence_t E2SM_KPM_RANfunction_Description_sequence[] = {
2517
  { &hf_kpm_v2_ranFunction_Name, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_kpm_v2_RANfunction_Name },
2518
  { &hf_kpm_v2_ric_EventTriggerStyle_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item },
2519
  { &hf_kpm_v2_ric_ReportStyle_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item },
2520
  { NULL, 0, 0, NULL }
2521
};
2522
2523
static unsigned
2524
0
dissect_kpm_v2_E2SM_KPM_RANfunction_Description(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2525
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2526
0
                                   ett_kpm_v2_E2SM_KPM_RANfunction_Description, E2SM_KPM_RANfunction_Description_sequence);
2527
2528
0
  return offset;
2529
0
}
2530
2531
/*--- PDUs ---*/
2532
2533
0
static int dissect_E2SM_KPM_EventTriggerDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2534
0
  unsigned offset = 0;
2535
0
  asn1_ctx_t asn1_ctx;
2536
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2537
0
  offset = dissect_kpm_v2_E2SM_KPM_EventTriggerDefinition(tvb, offset, &asn1_ctx, tree, hf_kpm_v2_E2SM_KPM_EventTriggerDefinition_PDU);
2538
0
  offset += 7; offset >>= 3;
2539
0
  return offset;
2540
0
}
2541
0
static int dissect_E2SM_KPM_ActionDefinition_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2542
0
  unsigned offset = 0;
2543
0
  asn1_ctx_t asn1_ctx;
2544
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2545
0
  offset = dissect_kpm_v2_E2SM_KPM_ActionDefinition(tvb, offset, &asn1_ctx, tree, hf_kpm_v2_E2SM_KPM_ActionDefinition_PDU);
2546
0
  offset += 7; offset >>= 3;
2547
0
  return offset;
2548
0
}
2549
0
static int dissect_E2SM_KPM_IndicationHeader_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2550
0
  unsigned offset = 0;
2551
0
  asn1_ctx_t asn1_ctx;
2552
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2553
0
  offset = dissect_kpm_v2_E2SM_KPM_IndicationHeader(tvb, offset, &asn1_ctx, tree, hf_kpm_v2_E2SM_KPM_IndicationHeader_PDU);
2554
0
  offset += 7; offset >>= 3;
2555
0
  return offset;
2556
0
}
2557
0
static int dissect_E2SM_KPM_IndicationMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2558
0
  unsigned offset = 0;
2559
0
  asn1_ctx_t asn1_ctx;
2560
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2561
0
  offset = dissect_kpm_v2_E2SM_KPM_IndicationMessage(tvb, offset, &asn1_ctx, tree, hf_kpm_v2_E2SM_KPM_IndicationMessage_PDU);
2562
0
  offset += 7; offset >>= 3;
2563
0
  return offset;
2564
0
}
2565
0
static int dissect_E2SM_KPM_RANfunction_Description_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2566
0
  unsigned offset = 0;
2567
0
  asn1_ctx_t asn1_ctx;
2568
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2569
0
  offset = dissect_kpm_v2_E2SM_KPM_RANfunction_Description(tvb, offset, &asn1_ctx, tree, hf_kpm_v2_E2SM_KPM_RANfunction_Description_PDU);
2570
0
  offset += 7; offset >>= 3;
2571
0
  return offset;
2572
0
}
2573
2574
2575
2576
/*--- proto_reg_handoff_kpm_v2 ---------------------------------------*/
2577
void
2578
proto_reg_handoff_kpm_v2(void)
2579
15
{
2580
//#include "packet-kpm-v2-dis-tab.c"
2581
2582
15
    static const ran_function_dissector_t kpm_v2 =
2583
15
    { "ORAN-E2SM-KPM", "1.3.6.1.4.1.53148.1.2.2.2", 2, 2,
2584
15
      {  dissect_E2SM_KPM_RANfunction_Description_PDU,
2585
2586
15
         NULL,
2587
15
         NULL,
2588
15
         NULL,
2589
15
         NULL,
2590
15
         NULL,
2591
15
         NULL,
2592
2593
15
         dissect_E2SM_KPM_ActionDefinition_PDU,
2594
15
         dissect_E2SM_KPM_IndicationMessage_PDU,
2595
15
         dissect_E2SM_KPM_IndicationHeader_PDU,
2596
15
         NULL, /* no dissect_E2SM_KPM_CallProcessID_PDU */
2597
15
         dissect_E2SM_KPM_EventTriggerDefinition_PDU
2598
15
       }
2599
15
    };
2600
2601
    /* Register dissector with e2ap */
2602
15
    register_e2ap_ran_function_dissector(KPM_RANFUNCTIONS, &kpm_v2);
2603
15
}
2604
2605
2606
2607
/*--- proto_register_kpm_v2 -------------------------------------------*/
2608
15
void proto_register_kpm_v2(void) {
2609
2610
  /* List of fields */
2611
2612
15
  static hf_register_info hf[] = {
2613
15
    { &hf_kpm_v2_E2SM_KPM_EventTriggerDefinition_PDU,
2614
15
      { "E2SM-KPM-EventTriggerDefinition", "kpm-v2.E2SM_KPM_EventTriggerDefinition_element",
2615
15
        FT_NONE, BASE_NONE, NULL, 0,
2616
15
        NULL, HFILL }},
2617
15
    { &hf_kpm_v2_E2SM_KPM_ActionDefinition_PDU,
2618
15
      { "E2SM-KPM-ActionDefinition", "kpm-v2.E2SM_KPM_ActionDefinition_element",
2619
15
        FT_NONE, BASE_NONE, NULL, 0,
2620
15
        NULL, HFILL }},
2621
15
    { &hf_kpm_v2_E2SM_KPM_IndicationHeader_PDU,
2622
15
      { "E2SM-KPM-IndicationHeader", "kpm-v2.E2SM_KPM_IndicationHeader_element",
2623
15
        FT_NONE, BASE_NONE, NULL, 0,
2624
15
        NULL, HFILL }},
2625
15
    { &hf_kpm_v2_E2SM_KPM_IndicationMessage_PDU,
2626
15
      { "E2SM-KPM-IndicationMessage", "kpm-v2.E2SM_KPM_IndicationMessage_element",
2627
15
        FT_NONE, BASE_NONE, NULL, 0,
2628
15
        NULL, HFILL }},
2629
15
    { &hf_kpm_v2_E2SM_KPM_RANfunction_Description_PDU,
2630
15
      { "E2SM-KPM-RANfunction-Description", "kpm-v2.E2SM_KPM_RANfunction_Description_element",
2631
15
        FT_NONE, BASE_NONE, NULL, 0,
2632
15
        NULL, HFILL }},
2633
15
    { &hf_kpm_v2_measName,
2634
15
      { "measName", "kpm-v2.measName",
2635
15
        FT_STRING, BASE_NONE, NULL, 0,
2636
15
        "MeasurementTypeName", HFILL }},
2637
15
    { &hf_kpm_v2_measID,
2638
15
      { "measID", "kpm-v2.measID",
2639
15
        FT_UINT32, BASE_DEC, NULL, 0,
2640
15
        "MeasurementTypeID", HFILL }},
2641
15
    { &hf_kpm_v2_noLabel,
2642
15
      { "noLabel", "kpm-v2.noLabel",
2643
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_noLabel_vals), 0,
2644
15
        NULL, HFILL }},
2645
15
    { &hf_kpm_v2_plmnID,
2646
15
      { "plmnID", "kpm-v2.plmnID",
2647
15
        FT_BYTES, BASE_NONE, NULL, 0,
2648
15
        "PLMNIdentity", HFILL }},
2649
15
    { &hf_kpm_v2_sliceID,
2650
15
      { "sliceID", "kpm-v2.sliceID_element",
2651
15
        FT_NONE, BASE_NONE, NULL, 0,
2652
15
        "S_NSSAI", HFILL }},
2653
15
    { &hf_kpm_v2_fiveQI,
2654
15
      { "fiveQI", "kpm-v2.fiveQI",
2655
15
        FT_UINT32, BASE_DEC, NULL, 0,
2656
15
        NULL, HFILL }},
2657
15
    { &hf_kpm_v2_qFI,
2658
15
      { "qFI", "kpm-v2.qFI",
2659
15
        FT_UINT32, BASE_DEC, NULL, 0,
2660
15
        "QosFlowIdentifier", HFILL }},
2661
15
    { &hf_kpm_v2_qCI,
2662
15
      { "qCI", "kpm-v2.qCI",
2663
15
        FT_UINT32, BASE_DEC, NULL, 0,
2664
15
        NULL, HFILL }},
2665
15
    { &hf_kpm_v2_qCImax,
2666
15
      { "qCImax", "kpm-v2.qCImax",
2667
15
        FT_UINT32, BASE_DEC, NULL, 0,
2668
15
        "QCI", HFILL }},
2669
15
    { &hf_kpm_v2_qCImin,
2670
15
      { "qCImin", "kpm-v2.qCImin",
2671
15
        FT_UINT32, BASE_DEC, NULL, 0,
2672
15
        "QCI", HFILL }},
2673
15
    { &hf_kpm_v2_aRPmax,
2674
15
      { "aRPmax", "kpm-v2.aRPmax",
2675
15
        FT_UINT32, BASE_DEC, NULL, 0,
2676
15
        "INTEGER_1_15_", HFILL }},
2677
15
    { &hf_kpm_v2_aRPmin,
2678
15
      { "aRPmin", "kpm-v2.aRPmin",
2679
15
        FT_UINT32, BASE_DEC, NULL, 0,
2680
15
        "INTEGER_1_15_", HFILL }},
2681
15
    { &hf_kpm_v2_bitrateRange,
2682
15
      { "bitrateRange", "kpm-v2.bitrateRange",
2683
15
        FT_UINT32, BASE_DEC, NULL, 0,
2684
15
        "INTEGER_1_65535_", HFILL }},
2685
15
    { &hf_kpm_v2_layerMU_MIMO,
2686
15
      { "layerMU-MIMO", "kpm-v2.layerMU_MIMO",
2687
15
        FT_UINT32, BASE_DEC, NULL, 0,
2688
15
        "INTEGER_1_65535_", HFILL }},
2689
15
    { &hf_kpm_v2_sUM,
2690
15
      { "sUM", "kpm-v2.sUM",
2691
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_sUM_vals), 0,
2692
15
        NULL, HFILL }},
2693
15
    { &hf_kpm_v2_distBinX,
2694
15
      { "distBinX", "kpm-v2.distBinX",
2695
15
        FT_UINT32, BASE_DEC, NULL, 0,
2696
15
        "INTEGER_1_65535_", HFILL }},
2697
15
    { &hf_kpm_v2_distBinY,
2698
15
      { "distBinY", "kpm-v2.distBinY",
2699
15
        FT_UINT32, BASE_DEC, NULL, 0,
2700
15
        "INTEGER_1_65535_", HFILL }},
2701
15
    { &hf_kpm_v2_distBinZ,
2702
15
      { "distBinZ", "kpm-v2.distBinZ",
2703
15
        FT_UINT32, BASE_DEC, NULL, 0,
2704
15
        "INTEGER_1_65535_", HFILL }},
2705
15
    { &hf_kpm_v2_preLabelOverride,
2706
15
      { "preLabelOverride", "kpm-v2.preLabelOverride",
2707
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_preLabelOverride_vals), 0,
2708
15
        NULL, HFILL }},
2709
15
    { &hf_kpm_v2_startEndInd,
2710
15
      { "startEndInd", "kpm-v2.startEndInd",
2711
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_startEndInd_vals), 0,
2712
15
        NULL, HFILL }},
2713
15
    { &hf_kpm_v2_min,
2714
15
      { "min", "kpm-v2.min",
2715
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_min_vals), 0,
2716
15
        NULL, HFILL }},
2717
15
    { &hf_kpm_v2_max,
2718
15
      { "max", "kpm-v2.max",
2719
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_max_vals), 0,
2720
15
        NULL, HFILL }},
2721
15
    { &hf_kpm_v2_avg,
2722
15
      { "avg", "kpm-v2.avg",
2723
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_avg_vals), 0,
2724
15
        NULL, HFILL }},
2725
15
    { &hf_kpm_v2_testType,
2726
15
      { "testType", "kpm-v2.testType",
2727
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_TestCond_Type_vals), 0,
2728
15
        "TestCond_Type", HFILL }},
2729
15
    { &hf_kpm_v2_testExpr,
2730
15
      { "testExpr", "kpm-v2.testExpr",
2731
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_TestCond_Expression_vals), 0,
2732
15
        "TestCond_Expression", HFILL }},
2733
15
    { &hf_kpm_v2_testValue,
2734
15
      { "testValue", "kpm-v2.testValue",
2735
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_TestCond_Value_vals), 0,
2736
15
        "TestCond_Value", HFILL }},
2737
15
    { &hf_kpm_v2_gBR,
2738
15
      { "gBR", "kpm-v2.gBR",
2739
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_gBR_vals), 0,
2740
15
        NULL, HFILL }},
2741
15
    { &hf_kpm_v2_aMBR,
2742
15
      { "aMBR", "kpm-v2.aMBR",
2743
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_aMBR_vals), 0,
2744
15
        NULL, HFILL }},
2745
15
    { &hf_kpm_v2_isStat,
2746
15
      { "isStat", "kpm-v2.isStat",
2747
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_isStat_vals), 0,
2748
15
        NULL, HFILL }},
2749
15
    { &hf_kpm_v2_isCatM,
2750
15
      { "isCatM", "kpm-v2.isCatM",
2751
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_isCatM_vals), 0,
2752
15
        NULL, HFILL }},
2753
15
    { &hf_kpm_v2_rSRP,
2754
15
      { "rSRP", "kpm-v2.rSRP",
2755
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_rSRP_vals), 0,
2756
15
        NULL, HFILL }},
2757
15
    { &hf_kpm_v2_rSRQ,
2758
15
      { "rSRQ", "kpm-v2.rSRQ",
2759
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_rSRQ_vals), 0,
2760
15
        NULL, HFILL }},
2761
15
    { &hf_kpm_v2_ul_rSRP,
2762
15
      { "ul-rSRP", "kpm-v2.ul_rSRP",
2763
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_ul_rSRP_vals), 0,
2764
15
        NULL, HFILL }},
2765
15
    { &hf_kpm_v2_cQI,
2766
15
      { "cQI", "kpm-v2.cQI",
2767
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_cQI_vals), 0,
2768
15
        NULL, HFILL }},
2769
15
    { &hf_kpm_v2_fiveQI_01,
2770
15
      { "fiveQI", "kpm-v2.fiveQI",
2771
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_fiveQI_vals), 0,
2772
15
        NULL, HFILL }},
2773
15
    { &hf_kpm_v2_qCI_01,
2774
15
      { "qCI", "kpm-v2.qCI",
2775
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_qCI_vals), 0,
2776
15
        NULL, HFILL }},
2777
15
    { &hf_kpm_v2_sNSSAI,
2778
15
      { "sNSSAI", "kpm-v2.sNSSAI",
2779
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_sNSSAI_vals), 0,
2780
15
        NULL, HFILL }},
2781
15
    { &hf_kpm_v2_valueInt,
2782
15
      { "valueInt", "kpm-v2.valueInt",
2783
15
        FT_INT32, BASE_DEC, NULL, 0,
2784
15
        "INTEGER", HFILL }},
2785
15
    { &hf_kpm_v2_valueEnum,
2786
15
      { "valueEnum", "kpm-v2.valueEnum",
2787
15
        FT_INT32, BASE_DEC, NULL, 0,
2788
15
        "INTEGER", HFILL }},
2789
15
    { &hf_kpm_v2_valueBool,
2790
15
      { "valueBool", "kpm-v2.valueBool",
2791
15
        FT_BOOLEAN, BASE_NONE, NULL, 0,
2792
15
        "BOOLEAN", HFILL }},
2793
15
    { &hf_kpm_v2_valueBitS,
2794
15
      { "valueBitS", "kpm-v2.valueBitS",
2795
15
        FT_BYTES, BASE_NONE, NULL, 0,
2796
15
        "BIT_STRING", HFILL }},
2797
15
    { &hf_kpm_v2_valueOctS,
2798
15
      { "valueOctS", "kpm-v2.valueOctS",
2799
15
        FT_BYTES, BASE_NONE, NULL, 0,
2800
15
        "OCTET_STRING", HFILL }},
2801
15
    { &hf_kpm_v2_valuePrtS,
2802
15
      { "valuePrtS", "kpm-v2.valuePrtS",
2803
15
        FT_STRING, BASE_NONE, NULL, 0,
2804
15
        "PrintableString", HFILL }},
2805
15
    { &hf_kpm_v2_valueReal,
2806
15
      { "valueReal", "kpm-v2.valueReal",
2807
15
        FT_DOUBLE, BASE_NONE, NULL, 0,
2808
15
        "REAL", HFILL }},
2809
15
    { &hf_kpm_v2_MeasurementInfoList_item,
2810
15
      { "MeasurementInfoItem", "kpm-v2.MeasurementInfoItem_element",
2811
15
        FT_NONE, BASE_NONE, NULL, 0,
2812
15
        NULL, HFILL }},
2813
15
    { &hf_kpm_v2_measType,
2814
15
      { "measType", "kpm-v2.measType",
2815
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_MeasurementType_vals), 0,
2816
15
        "MeasurementType", HFILL }},
2817
15
    { &hf_kpm_v2_labelInfoList,
2818
15
      { "labelInfoList", "kpm-v2.labelInfoList",
2819
15
        FT_UINT32, BASE_DEC, NULL, 0,
2820
15
        NULL, HFILL }},
2821
15
    { &hf_kpm_v2_LabelInfoList_item,
2822
15
      { "LabelInfoItem", "kpm-v2.LabelInfoItem_element",
2823
15
        FT_NONE, BASE_NONE, NULL, 0,
2824
15
        NULL, HFILL }},
2825
15
    { &hf_kpm_v2_measLabel,
2826
15
      { "measLabel", "kpm-v2.measLabel_element",
2827
15
        FT_NONE, BASE_NONE, NULL, 0,
2828
15
        "MeasurementLabel", HFILL }},
2829
15
    { &hf_kpm_v2_MeasurementData_item,
2830
15
      { "MeasurementDataItem", "kpm-v2.MeasurementDataItem_element",
2831
15
        FT_NONE, BASE_NONE, NULL, 0,
2832
15
        NULL, HFILL }},
2833
15
    { &hf_kpm_v2_measRecord,
2834
15
      { "measRecord", "kpm-v2.measRecord",
2835
15
        FT_UINT32, BASE_DEC, NULL, 0,
2836
15
        "MeasurementRecord", HFILL }},
2837
15
    { &hf_kpm_v2_incompleteFlag,
2838
15
      { "incompleteFlag", "kpm-v2.incompleteFlag",
2839
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_incompleteFlag_vals), 0,
2840
15
        NULL, HFILL }},
2841
15
    { &hf_kpm_v2_MeasurementRecord_item,
2842
15
      { "MeasurementRecordItem", "kpm-v2.MeasurementRecordItem",
2843
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_MeasurementRecordItem_vals), 0,
2844
15
        NULL, HFILL }},
2845
15
    { &hf_kpm_v2_integer,
2846
15
      { "integer", "kpm-v2.integer",
2847
15
        FT_UINT32, BASE_DEC, NULL, 0,
2848
15
        "INTEGER_0_4294967295", HFILL }},
2849
15
    { &hf_kpm_v2_real,
2850
15
      { "real", "kpm-v2.real",
2851
15
        FT_DOUBLE, BASE_NONE, NULL, 0,
2852
15
        NULL, HFILL }},
2853
15
    { &hf_kpm_v2_noValue,
2854
15
      { "noValue", "kpm-v2.noValue_element",
2855
15
        FT_NONE, BASE_NONE, NULL, 0,
2856
15
        NULL, HFILL }},
2857
15
    { &hf_kpm_v2_MeasurementInfo_Action_List_item,
2858
15
      { "MeasurementInfo-Action-Item", "kpm-v2.MeasurementInfo_Action_Item_element",
2859
15
        FT_NONE, BASE_NONE, NULL, 0,
2860
15
        NULL, HFILL }},
2861
15
    { &hf_kpm_v2_MeasurementCondList_item,
2862
15
      { "MeasurementCondItem", "kpm-v2.MeasurementCondItem_element",
2863
15
        FT_NONE, BASE_NONE, NULL, 0,
2864
15
        NULL, HFILL }},
2865
15
    { &hf_kpm_v2_matchingCond,
2866
15
      { "matchingCond", "kpm-v2.matchingCond",
2867
15
        FT_UINT32, BASE_DEC, NULL, 0,
2868
15
        "MatchingCondList", HFILL }},
2869
15
    { &hf_kpm_v2_MeasurementCondUEidList_item,
2870
15
      { "MeasurementCondUEidItem", "kpm-v2.MeasurementCondUEidItem_element",
2871
15
        FT_NONE, BASE_NONE, NULL, 0,
2872
15
        NULL, HFILL }},
2873
15
    { &hf_kpm_v2_matchingUEidList,
2874
15
      { "matchingUEidList", "kpm-v2.matchingUEidList",
2875
15
        FT_UINT32, BASE_DEC, NULL, 0,
2876
15
        NULL, HFILL }},
2877
15
    { &hf_kpm_v2_MatchingCondList_item,
2878
15
      { "MatchingCondItem", "kpm-v2.MatchingCondItem",
2879
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_MatchingCondItem_vals), 0,
2880
15
        NULL, HFILL }},
2881
15
    { &hf_kpm_v2_testCondInfo,
2882
15
      { "testCondInfo", "kpm-v2.testCondInfo_element",
2883
15
        FT_NONE, BASE_NONE, NULL, 0,
2884
15
        NULL, HFILL }},
2885
15
    { &hf_kpm_v2_MatchingUEidList_item,
2886
15
      { "MatchingUEidItem", "kpm-v2.MatchingUEidItem_element",
2887
15
        FT_NONE, BASE_NONE, NULL, 0,
2888
15
        NULL, HFILL }},
2889
15
    { &hf_kpm_v2_ueID,
2890
15
      { "ueID", "kpm-v2.ueID",
2891
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_UEID_vals), 0,
2892
15
        NULL, HFILL }},
2893
15
    { &hf_kpm_v2_MatchingUeCondPerSubList_item,
2894
15
      { "MatchingUeCondPerSubItem", "kpm-v2.MatchingUeCondPerSubItem_element",
2895
15
        FT_NONE, BASE_NONE, NULL, 0,
2896
15
        NULL, HFILL }},
2897
15
    { &hf_kpm_v2_MatchingUEidPerSubList_item,
2898
15
      { "MatchingUEidPerSubItem", "kpm-v2.MatchingUEidPerSubItem_element",
2899
15
        FT_NONE, BASE_NONE, NULL, 0,
2900
15
        NULL, HFILL }},
2901
15
    { &hf_kpm_v2_UEMeasurementReportList_item,
2902
15
      { "UEMeasurementReportItem", "kpm-v2.UEMeasurementReportItem_element",
2903
15
        FT_NONE, BASE_NONE, NULL, 0,
2904
15
        NULL, HFILL }},
2905
15
    { &hf_kpm_v2_measReport,
2906
15
      { "measReport", "kpm-v2.measReport_element",
2907
15
        FT_NONE, BASE_NONE, NULL, 0,
2908
15
        "E2SM_KPM_IndicationMessage_Format1", HFILL }},
2909
15
    { &hf_kpm_v2_eventDefinition_formats,
2910
15
      { "eventDefinition-formats", "kpm-v2.eventDefinition_formats",
2911
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_eventDefinition_formats_vals), 0,
2912
15
        NULL, HFILL }},
2913
15
    { &hf_kpm_v2_eventDefinition_Format1,
2914
15
      { "eventDefinition-Format1", "kpm-v2.eventDefinition_Format1_element",
2915
15
        FT_NONE, BASE_NONE, NULL, 0,
2916
15
        "E2SM_KPM_EventTriggerDefinition_Format1", HFILL }},
2917
15
    { &hf_kpm_v2_reportingPeriod,
2918
15
      { "reportingPeriod", "kpm-v2.reportingPeriod",
2919
15
        FT_UINT32, BASE_DEC, NULL, 0,
2920
15
        "INTEGER_1_4294967295", HFILL }},
2921
15
    { &hf_kpm_v2_ric_Style_Type,
2922
15
      { "ric-Style-Type", "kpm-v2.ric_Style_Type",
2923
15
        FT_INT32, BASE_DEC, NULL, 0,
2924
15
        NULL, HFILL }},
2925
15
    { &hf_kpm_v2_actionDefinition_formats,
2926
15
      { "actionDefinition-formats", "kpm-v2.actionDefinition_formats",
2927
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_actionDefinition_formats_vals), 0,
2928
15
        NULL, HFILL }},
2929
15
    { &hf_kpm_v2_actionDefinition_Format1,
2930
15
      { "actionDefinition-Format1", "kpm-v2.actionDefinition_Format1_element",
2931
15
        FT_NONE, BASE_NONE, NULL, 0,
2932
15
        "E2SM_KPM_ActionDefinition_Format1", HFILL }},
2933
15
    { &hf_kpm_v2_actionDefinition_Format2,
2934
15
      { "actionDefinition-Format2", "kpm-v2.actionDefinition_Format2_element",
2935
15
        FT_NONE, BASE_NONE, NULL, 0,
2936
15
        "E2SM_KPM_ActionDefinition_Format2", HFILL }},
2937
15
    { &hf_kpm_v2_actionDefinition_Format3,
2938
15
      { "actionDefinition-Format3", "kpm-v2.actionDefinition_Format3_element",
2939
15
        FT_NONE, BASE_NONE, NULL, 0,
2940
15
        "E2SM_KPM_ActionDefinition_Format3", HFILL }},
2941
15
    { &hf_kpm_v2_actionDefinition_Format4,
2942
15
      { "actionDefinition-Format4", "kpm-v2.actionDefinition_Format4_element",
2943
15
        FT_NONE, BASE_NONE, NULL, 0,
2944
15
        "E2SM_KPM_ActionDefinition_Format4", HFILL }},
2945
15
    { &hf_kpm_v2_actionDefinition_Format5,
2946
15
      { "actionDefinition-Format5", "kpm-v2.actionDefinition_Format5_element",
2947
15
        FT_NONE, BASE_NONE, NULL, 0,
2948
15
        "E2SM_KPM_ActionDefinition_Format5", HFILL }},
2949
15
    { &hf_kpm_v2_measInfoList,
2950
15
      { "measInfoList", "kpm-v2.measInfoList",
2951
15
        FT_UINT32, BASE_DEC, NULL, 0,
2952
15
        "MeasurementInfoList", HFILL }},
2953
15
    { &hf_kpm_v2_granulPeriod,
2954
15
      { "granulPeriod", "kpm-v2.granulPeriod",
2955
15
        FT_UINT32, BASE_DEC, NULL, 0,
2956
15
        "GranularityPeriod", HFILL }},
2957
15
    { &hf_kpm_v2_cellGlobalID,
2958
15
      { "cellGlobalID", "kpm-v2.cellGlobalID",
2959
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_CGI_vals), 0,
2960
15
        "CGI", HFILL }},
2961
15
    { &hf_kpm_v2_subscriptInfo,
2962
15
      { "subscriptInfo", "kpm-v2.subscriptInfo_element",
2963
15
        FT_NONE, BASE_NONE, NULL, 0,
2964
15
        "E2SM_KPM_ActionDefinition_Format1", HFILL }},
2965
15
    { &hf_kpm_v2_measCondList,
2966
15
      { "measCondList", "kpm-v2.measCondList",
2967
15
        FT_UINT32, BASE_DEC, NULL, 0,
2968
15
        "MeasurementCondList", HFILL }},
2969
15
    { &hf_kpm_v2_matchingUeCondList,
2970
15
      { "matchingUeCondList", "kpm-v2.matchingUeCondList",
2971
15
        FT_UINT32, BASE_DEC, NULL, 0,
2972
15
        "MatchingUeCondPerSubList", HFILL }},
2973
15
    { &hf_kpm_v2_subscriptionInfo,
2974
15
      { "subscriptionInfo", "kpm-v2.subscriptionInfo_element",
2975
15
        FT_NONE, BASE_NONE, NULL, 0,
2976
15
        "E2SM_KPM_ActionDefinition_Format1", HFILL }},
2977
15
    { &hf_kpm_v2_matchingUEidList_01,
2978
15
      { "matchingUEidList", "kpm-v2.matchingUEidList",
2979
15
        FT_UINT32, BASE_DEC, NULL, 0,
2980
15
        "MatchingUEidPerSubList", HFILL }},
2981
15
    { &hf_kpm_v2_indicationHeader_formats,
2982
15
      { "indicationHeader-formats", "kpm-v2.indicationHeader_formats",
2983
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_indicationHeader_formats_vals), 0,
2984
15
        NULL, HFILL }},
2985
15
    { &hf_kpm_v2_indicationHeader_Format1,
2986
15
      { "indicationHeader-Format1", "kpm-v2.indicationHeader_Format1_element",
2987
15
        FT_NONE, BASE_NONE, NULL, 0,
2988
15
        "E2SM_KPM_IndicationHeader_Format1", HFILL }},
2989
15
    { &hf_kpm_v2_colletStartTime,
2990
15
      { "colletStartTime", "kpm-v2.colletStartTime",
2991
15
        FT_BYTES, BASE_NONE, NULL, 0,
2992
15
        NULL, HFILL }},
2993
15
    { &hf_kpm_v2_fileFormatversion,
2994
15
      { "fileFormatversion", "kpm-v2.fileFormatversion",
2995
15
        FT_STRING, BASE_NONE, NULL, 0,
2996
15
        "PrintableString_SIZE_0_15_", HFILL }},
2997
15
    { &hf_kpm_v2_senderName,
2998
15
      { "senderName", "kpm-v2.senderName",
2999
15
        FT_STRING, BASE_NONE, NULL, 0,
3000
15
        "PrintableString_SIZE_0_400_", HFILL }},
3001
15
    { &hf_kpm_v2_senderType,
3002
15
      { "senderType", "kpm-v2.senderType",
3003
15
        FT_STRING, BASE_NONE, NULL, 0,
3004
15
        "PrintableString_SIZE_0_8_", HFILL }},
3005
15
    { &hf_kpm_v2_vendorName,
3006
15
      { "vendorName", "kpm-v2.vendorName",
3007
15
        FT_STRING, BASE_NONE, NULL, 0,
3008
15
        "PrintableString_SIZE_0_32_", HFILL }},
3009
15
    { &hf_kpm_v2_indicationMessage_formats,
3010
15
      { "indicationMessage-formats", "kpm-v2.indicationMessage_formats",
3011
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_T_indicationMessage_formats_vals), 0,
3012
15
        NULL, HFILL }},
3013
15
    { &hf_kpm_v2_indicationMessage_Format1,
3014
15
      { "indicationMessage-Format1", "kpm-v2.indicationMessage_Format1_element",
3015
15
        FT_NONE, BASE_NONE, NULL, 0,
3016
15
        "E2SM_KPM_IndicationMessage_Format1", HFILL }},
3017
15
    { &hf_kpm_v2_indicationMessage_Format2,
3018
15
      { "indicationMessage-Format2", "kpm-v2.indicationMessage_Format2_element",
3019
15
        FT_NONE, BASE_NONE, NULL, 0,
3020
15
        "E2SM_KPM_IndicationMessage_Format2", HFILL }},
3021
15
    { &hf_kpm_v2_indicationMessage_Format3,
3022
15
      { "indicationMessage-Format3", "kpm-v2.indicationMessage_Format3_element",
3023
15
        FT_NONE, BASE_NONE, NULL, 0,
3024
15
        "E2SM_KPM_IndicationMessage_Format3", HFILL }},
3025
15
    { &hf_kpm_v2_measData,
3026
15
      { "measData", "kpm-v2.measData",
3027
15
        FT_UINT32, BASE_DEC, NULL, 0,
3028
15
        "MeasurementData", HFILL }},
3029
15
    { &hf_kpm_v2_measCondUEidList,
3030
15
      { "measCondUEidList", "kpm-v2.measCondUEidList",
3031
15
        FT_UINT32, BASE_DEC, NULL, 0,
3032
15
        "MeasurementCondUEidList", HFILL }},
3033
15
    { &hf_kpm_v2_ueMeasReportList,
3034
15
      { "ueMeasReportList", "kpm-v2.ueMeasReportList",
3035
15
        FT_UINT32, BASE_DEC, NULL, 0,
3036
15
        "UEMeasurementReportList", HFILL }},
3037
15
    { &hf_kpm_v2_ranFunction_Name,
3038
15
      { "ranFunction-Name", "kpm-v2.ranFunction_Name_element",
3039
15
        FT_NONE, BASE_NONE, NULL, 0,
3040
15
        NULL, HFILL }},
3041
15
    { &hf_kpm_v2_ric_EventTriggerStyle_List,
3042
15
      { "ric-EventTriggerStyle-List", "kpm-v2.ric_EventTriggerStyle_List",
3043
15
        FT_UINT32, BASE_DEC, NULL, 0,
3044
15
        "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item", HFILL }},
3045
15
    { &hf_kpm_v2_ric_EventTriggerStyle_List_item,
3046
15
      { "RIC-EventTriggerStyle-Item", "kpm-v2.RIC_EventTriggerStyle_Item_element",
3047
15
        FT_NONE, BASE_NONE, NULL, 0,
3048
15
        NULL, HFILL }},
3049
15
    { &hf_kpm_v2_ric_ReportStyle_List,
3050
15
      { "ric-ReportStyle-List", "kpm-v2.ric_ReportStyle_List",
3051
15
        FT_UINT32, BASE_DEC, NULL, 0,
3052
15
        "SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item", HFILL }},
3053
15
    { &hf_kpm_v2_ric_ReportStyle_List_item,
3054
15
      { "RIC-ReportStyle-Item", "kpm-v2.RIC_ReportStyle_Item_element",
3055
15
        FT_NONE, BASE_NONE, NULL, 0,
3056
15
        NULL, HFILL }},
3057
15
    { &hf_kpm_v2_ric_EventTriggerStyle_Type,
3058
15
      { "ric-EventTriggerStyle-Type", "kpm-v2.ric_EventTriggerStyle_Type",
3059
15
        FT_INT32, BASE_DEC, NULL, 0,
3060
15
        "RIC_Style_Type", HFILL }},
3061
15
    { &hf_kpm_v2_ric_EventTriggerStyle_Name,
3062
15
      { "ric-EventTriggerStyle-Name", "kpm-v2.ric_EventTriggerStyle_Name",
3063
15
        FT_STRING, BASE_NONE, NULL, 0,
3064
15
        "RIC_Style_Name", HFILL }},
3065
15
    { &hf_kpm_v2_ric_EventTriggerFormat_Type,
3066
15
      { "ric-EventTriggerFormat-Type", "kpm-v2.ric_EventTriggerFormat_Type",
3067
15
        FT_INT32, BASE_DEC, NULL, 0,
3068
15
        "RIC_Format_Type", HFILL }},
3069
15
    { &hf_kpm_v2_ric_ReportStyle_Type,
3070
15
      { "ric-ReportStyle-Type", "kpm-v2.ric_ReportStyle_Type",
3071
15
        FT_INT32, BASE_DEC, NULL, 0,
3072
15
        "RIC_Style_Type", HFILL }},
3073
15
    { &hf_kpm_v2_ric_ReportStyle_Name,
3074
15
      { "ric-ReportStyle-Name", "kpm-v2.ric_ReportStyle_Name",
3075
15
        FT_STRING, BASE_NONE, NULL, 0,
3076
15
        "RIC_Style_Name", HFILL }},
3077
15
    { &hf_kpm_v2_ric_ActionFormat_Type,
3078
15
      { "ric-ActionFormat-Type", "kpm-v2.ric_ActionFormat_Type",
3079
15
        FT_INT32, BASE_DEC, NULL, 0,
3080
15
        "RIC_Format_Type", HFILL }},
3081
15
    { &hf_kpm_v2_measInfo_Action_List,
3082
15
      { "measInfo-Action-List", "kpm-v2.measInfo_Action_List",
3083
15
        FT_UINT32, BASE_DEC, NULL, 0,
3084
15
        "MeasurementInfo_Action_List", HFILL }},
3085
15
    { &hf_kpm_v2_ric_IndicationHeaderFormat_Type,
3086
15
      { "ric-IndicationHeaderFormat-Type", "kpm-v2.ric_IndicationHeaderFormat_Type",
3087
15
        FT_INT32, BASE_DEC, NULL, 0,
3088
15
        "RIC_Format_Type", HFILL }},
3089
15
    { &hf_kpm_v2_ric_IndicationMessageFormat_Type,
3090
15
      { "ric-IndicationMessageFormat-Type", "kpm-v2.ric_IndicationMessageFormat_Type",
3091
15
        FT_INT32, BASE_DEC, NULL, 0,
3092
15
        "RIC_Format_Type", HFILL }},
3093
15
    { &hf_kpm_v2_nR_CGI,
3094
15
      { "nR-CGI", "kpm-v2.nR_CGI_element",
3095
15
        FT_NONE, BASE_NONE, NULL, 0,
3096
15
        NULL, HFILL }},
3097
15
    { &hf_kpm_v2_eUTRA_CGI,
3098
15
      { "eUTRA-CGI", "kpm-v2.eUTRA_CGI_element",
3099
15
        FT_NONE, BASE_NONE, NULL, 0,
3100
15
        NULL, HFILL }},
3101
15
    { &hf_kpm_v2_ranFunction_ShortName,
3102
15
      { "ranFunction-ShortName", "kpm-v2.ranFunction_ShortName",
3103
15
        FT_STRING, BASE_NONE, NULL, 0,
3104
15
        NULL, HFILL }},
3105
15
    { &hf_kpm_v2_ranFunction_E2SM_OID,
3106
15
      { "ranFunction-E2SM-OID", "kpm-v2.ranFunction_E2SM_OID",
3107
15
        FT_STRING, BASE_NONE, NULL, 0,
3108
15
        NULL, HFILL }},
3109
15
    { &hf_kpm_v2_ranFunction_Description,
3110
15
      { "ranFunction-Description", "kpm-v2.ranFunction_Description",
3111
15
        FT_STRING, BASE_NONE, NULL, 0,
3112
15
        "PrintableString_SIZE_1_150_", HFILL }},
3113
15
    { &hf_kpm_v2_ranFunction_Instance,
3114
15
      { "ranFunction-Instance", "kpm-v2.ranFunction_Instance",
3115
15
        FT_INT32, BASE_DEC, NULL, 0,
3116
15
        "INTEGER", HFILL }},
3117
15
    { &hf_kpm_v2_gNB_UEID,
3118
15
      { "gNB-UEID", "kpm-v2.gNB_UEID_element",
3119
15
        FT_NONE, BASE_NONE, NULL, 0,
3120
15
        "UEID_GNB", HFILL }},
3121
15
    { &hf_kpm_v2_gNB_DU_UEID,
3122
15
      { "gNB-DU-UEID", "kpm-v2.gNB_DU_UEID_element",
3123
15
        FT_NONE, BASE_NONE, NULL, 0,
3124
15
        "UEID_GNB_DU", HFILL }},
3125
15
    { &hf_kpm_v2_gNB_CU_UP_UEID,
3126
15
      { "gNB-CU-UP-UEID", "kpm-v2.gNB_CU_UP_UEID_element",
3127
15
        FT_NONE, BASE_NONE, NULL, 0,
3128
15
        "UEID_GNB_CU_UP", HFILL }},
3129
15
    { &hf_kpm_v2_ng_eNB_UEID,
3130
15
      { "ng-eNB-UEID", "kpm-v2.ng_eNB_UEID_element",
3131
15
        FT_NONE, BASE_NONE, NULL, 0,
3132
15
        "UEID_NG_ENB", HFILL }},
3133
15
    { &hf_kpm_v2_ng_eNB_DU_UEID,
3134
15
      { "ng-eNB-DU-UEID", "kpm-v2.ng_eNB_DU_UEID_element",
3135
15
        FT_NONE, BASE_NONE, NULL, 0,
3136
15
        "UEID_NG_ENB_DU", HFILL }},
3137
15
    { &hf_kpm_v2_en_gNB_UEID,
3138
15
      { "en-gNB-UEID", "kpm-v2.en_gNB_UEID_element",
3139
15
        FT_NONE, BASE_NONE, NULL, 0,
3140
15
        "UEID_EN_GNB", HFILL }},
3141
15
    { &hf_kpm_v2_eNB_UEID,
3142
15
      { "eNB-UEID", "kpm-v2.eNB_UEID_element",
3143
15
        FT_NONE, BASE_NONE, NULL, 0,
3144
15
        "UEID_ENB", HFILL }},
3145
15
    { &hf_kpm_v2_amf_UE_NGAP_ID,
3146
15
      { "amf-UE-NGAP-ID", "kpm-v2.amf_UE_NGAP_ID",
3147
15
        FT_UINT64, BASE_DEC, NULL, 0,
3148
15
        NULL, HFILL }},
3149
15
    { &hf_kpm_v2_guami,
3150
15
      { "guami", "kpm-v2.guami_element",
3151
15
        FT_NONE, BASE_NONE, NULL, 0,
3152
15
        NULL, HFILL }},
3153
15
    { &hf_kpm_v2_gNB_CU_UE_F1AP_ID_List,
3154
15
      { "gNB-CU-UE-F1AP-ID-List", "kpm-v2.gNB_CU_UE_F1AP_ID_List",
3155
15
        FT_UINT32, BASE_DEC, NULL, 0,
3156
15
        "UEID_GNB_CU_F1AP_ID_List", HFILL }},
3157
15
    { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID_List,
3158
15
      { "gNB-CU-CP-UE-E1AP-ID-List", "kpm-v2.gNB_CU_CP_UE_E1AP_ID_List",
3159
15
        FT_UINT32, BASE_DEC, NULL, 0,
3160
15
        "UEID_GNB_CU_CP_E1AP_ID_List", HFILL }},
3161
15
    { &hf_kpm_v2_ran_UEID,
3162
15
      { "ran-UEID", "kpm-v2.ran_UEID",
3163
15
        FT_BYTES, BASE_NONE, NULL, 0,
3164
15
        "RANUEID", HFILL }},
3165
15
    { &hf_kpm_v2_m_NG_RAN_UE_XnAP_ID,
3166
15
      { "m-NG-RAN-UE-XnAP-ID", "kpm-v2.m_NG_RAN_UE_XnAP_ID",
3167
15
        FT_UINT32, BASE_DEC, NULL, 0,
3168
15
        "NG_RANnodeUEXnAPID", HFILL }},
3169
15
    { &hf_kpm_v2_globalGNB_ID,
3170
15
      { "globalGNB-ID", "kpm-v2.globalGNB_ID_element",
3171
15
        FT_NONE, BASE_NONE, NULL, 0,
3172
15
        NULL, HFILL }},
3173
15
    { &hf_kpm_v2_globalNG_RANNode_ID,
3174
15
      { "globalNG-RANNode-ID", "kpm-v2.globalNG_RANNode_ID",
3175
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_GlobalNGRANNodeID_vals), 0,
3176
15
        "GlobalNGRANNodeID", HFILL }},
3177
15
    { &hf_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List_item,
3178
15
      { "UEID-GNB-CU-CP-E1AP-ID-Item", "kpm-v2.UEID_GNB_CU_CP_E1AP_ID_Item_element",
3179
15
        FT_NONE, BASE_NONE, NULL, 0,
3180
15
        NULL, HFILL }},
3181
15
    { &hf_kpm_v2_gNB_CU_CP_UE_E1AP_ID,
3182
15
      { "gNB-CU-CP-UE-E1AP-ID", "kpm-v2.gNB_CU_CP_UE_E1AP_ID",
3183
15
        FT_UINT32, BASE_DEC, NULL, 0,
3184
15
        NULL, HFILL }},
3185
15
    { &hf_kpm_v2_UEID_GNB_CU_F1AP_ID_List_item,
3186
15
      { "UEID-GNB-CU-CP-F1AP-ID-Item", "kpm-v2.UEID_GNB_CU_CP_F1AP_ID_Item_element",
3187
15
        FT_NONE, BASE_NONE, NULL, 0,
3188
15
        NULL, HFILL }},
3189
15
    { &hf_kpm_v2_gNB_CU_UE_F1AP_ID,
3190
15
      { "gNB-CU-UE-F1AP-ID", "kpm-v2.gNB_CU_UE_F1AP_ID",
3191
15
        FT_UINT32, BASE_DEC, NULL, 0,
3192
15
        NULL, HFILL }},
3193
15
    { &hf_kpm_v2_ng_eNB_CU_UE_W1AP_ID,
3194
15
      { "ng-eNB-CU-UE-W1AP-ID", "kpm-v2.ng_eNB_CU_UE_W1AP_ID",
3195
15
        FT_UINT32, BASE_DEC, NULL, 0,
3196
15
        "NGENB_CU_UE_W1AP_ID", HFILL }},
3197
15
    { &hf_kpm_v2_globalNgENB_ID,
3198
15
      { "globalNgENB-ID", "kpm-v2.globalNgENB_ID_element",
3199
15
        FT_NONE, BASE_NONE, NULL, 0,
3200
15
        NULL, HFILL }},
3201
15
    { &hf_kpm_v2_m_eNB_UE_X2AP_ID,
3202
15
      { "m-eNB-UE-X2AP-ID", "kpm-v2.m_eNB_UE_X2AP_ID",
3203
15
        FT_UINT32, BASE_DEC, NULL, 0,
3204
15
        "ENB_UE_X2AP_ID", HFILL }},
3205
15
    { &hf_kpm_v2_m_eNB_UE_X2AP_ID_Extension,
3206
15
      { "m-eNB-UE-X2AP-ID-Extension", "kpm-v2.m_eNB_UE_X2AP_ID_Extension",
3207
15
        FT_UINT32, BASE_DEC, NULL, 0,
3208
15
        "ENB_UE_X2AP_ID_Extension", HFILL }},
3209
15
    { &hf_kpm_v2_globalENB_ID,
3210
15
      { "globalENB-ID", "kpm-v2.globalENB_ID_element",
3211
15
        FT_NONE, BASE_NONE, NULL, 0,
3212
15
        NULL, HFILL }},
3213
15
    { &hf_kpm_v2_mME_UE_S1AP_ID,
3214
15
      { "mME-UE-S1AP-ID", "kpm-v2.mME_UE_S1AP_ID",
3215
15
        FT_UINT32, BASE_DEC, NULL, 0,
3216
15
        NULL, HFILL }},
3217
15
    { &hf_kpm_v2_gUMMEI,
3218
15
      { "gUMMEI", "kpm-v2.gUMMEI_element",
3219
15
        FT_NONE, BASE_NONE, NULL, 0,
3220
15
        NULL, HFILL }},
3221
15
    { &hf_kpm_v2_macro_eNB_ID,
3222
15
      { "macro-eNB-ID", "kpm-v2.macro_eNB_ID",
3223
15
        FT_BYTES, BASE_NONE, NULL, 0,
3224
15
        "BIT_STRING_SIZE_20", HFILL }},
3225
15
    { &hf_kpm_v2_home_eNB_ID,
3226
15
      { "home-eNB-ID", "kpm-v2.home_eNB_ID",
3227
15
        FT_BYTES, BASE_NONE, NULL, 0,
3228
15
        "BIT_STRING_SIZE_28", HFILL }},
3229
15
    { &hf_kpm_v2_short_Macro_eNB_ID,
3230
15
      { "short-Macro-eNB-ID", "kpm-v2.short_Macro_eNB_ID",
3231
15
        FT_BYTES, BASE_NONE, NULL, 0,
3232
15
        "BIT_STRING_SIZE_18", HFILL }},
3233
15
    { &hf_kpm_v2_long_Macro_eNB_ID,
3234
15
      { "long-Macro-eNB-ID", "kpm-v2.long_Macro_eNB_ID",
3235
15
        FT_BYTES, BASE_NONE, NULL, 0,
3236
15
        "BIT_STRING_SIZE_21", HFILL }},
3237
15
    { &hf_kpm_v2_pLMNIdentity,
3238
15
      { "pLMNIdentity", "kpm-v2.pLMNIdentity",
3239
15
        FT_BYTES, BASE_NONE, NULL, 0,
3240
15
        NULL, HFILL }},
3241
15
    { &hf_kpm_v2_eNB_ID,
3242
15
      { "eNB-ID", "kpm-v2.eNB_ID",
3243
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_ENB_ID_vals), 0,
3244
15
        NULL, HFILL }},
3245
15
    { &hf_kpm_v2_pLMN_Identity,
3246
15
      { "pLMN-Identity", "kpm-v2.pLMN_Identity",
3247
15
        FT_BYTES, BASE_NONE, NULL, 0,
3248
15
        "PLMNIdentity", HFILL }},
3249
15
    { &hf_kpm_v2_mME_Group_ID,
3250
15
      { "mME-Group-ID", "kpm-v2.mME_Group_ID",
3251
15
        FT_BYTES, BASE_NONE, NULL, 0,
3252
15
        NULL, HFILL }},
3253
15
    { &hf_kpm_v2_mME_Code,
3254
15
      { "mME-Code", "kpm-v2.mME_Code",
3255
15
        FT_BYTES, BASE_NONE, NULL, 0,
3256
15
        NULL, HFILL }},
3257
15
    { &hf_kpm_v2_eUTRACellIdentity,
3258
15
      { "eUTRACellIdentity", "kpm-v2.eUTRACellIdentity",
3259
15
        FT_BYTES, BASE_NONE, NULL, 0,
3260
15
        NULL, HFILL }},
3261
15
    { &hf_kpm_v2_gnb_id_choice,
3262
15
      { "gNB-ID", "kpm-v2.gnb_id_choice",
3263
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_GNB_ID_vals), 0,
3264
15
        NULL, HFILL }},
3265
15
    { &hf_kpm_v2_ngENB_ID,
3266
15
      { "ngENB-ID", "kpm-v2.ngENB_ID",
3267
15
        FT_UINT32, BASE_DEC, VALS(kpm_v2_NgENB_ID_vals), 0,
3268
15
        NULL, HFILL }},
3269
15
    { &hf_kpm_v2_gNB_ID,
3270
15
      { "gNB-ID", "kpm-v2.gNB_ID",
3271
15
        FT_BYTES, BASE_NONE, NULL, 0,
3272
15
        "BIT_STRING_SIZE_22_32", HFILL }},
3273
15
    { &hf_kpm_v2_aMFRegionID,
3274
15
      { "aMFRegionID", "kpm-v2.aMFRegionID",
3275
15
        FT_BYTES, BASE_NONE, NULL, 0,
3276
15
        NULL, HFILL }},
3277
15
    { &hf_kpm_v2_aMFSetID,
3278
15
      { "aMFSetID", "kpm-v2.aMFSetID",
3279
15
        FT_BYTES, BASE_NONE, NULL, 0,
3280
15
        NULL, HFILL }},
3281
15
    { &hf_kpm_v2_aMFPointer,
3282
15
      { "aMFPointer", "kpm-v2.aMFPointer",
3283
15
        FT_BYTES, BASE_NONE, NULL, 0,
3284
15
        NULL, HFILL }},
3285
15
    { &hf_kpm_v2_macroNgENB_ID,
3286
15
      { "macroNgENB-ID", "kpm-v2.macroNgENB_ID",
3287
15
        FT_BYTES, BASE_NONE, NULL, 0,
3288
15
        "BIT_STRING_SIZE_20", HFILL }},
3289
15
    { &hf_kpm_v2_shortMacroNgENB_ID,
3290
15
      { "shortMacroNgENB-ID", "kpm-v2.shortMacroNgENB_ID",
3291
15
        FT_BYTES, BASE_NONE, NULL, 0,
3292
15
        "BIT_STRING_SIZE_18", HFILL }},
3293
15
    { &hf_kpm_v2_longMacroNgENB_ID,
3294
15
      { "longMacroNgENB-ID", "kpm-v2.longMacroNgENB_ID",
3295
15
        FT_BYTES, BASE_NONE, NULL, 0,
3296
15
        "BIT_STRING_SIZE_21", HFILL }},
3297
15
    { &hf_kpm_v2_nRCellIdentity,
3298
15
      { "nRCellIdentity", "kpm-v2.nRCellIdentity",
3299
15
        FT_BYTES, BASE_NONE, NULL, 0,
3300
15
        NULL, HFILL }},
3301
15
    { &hf_kpm_v2_sST,
3302
15
      { "sST", "kpm-v2.sST",
3303
15
        FT_BYTES, BASE_NONE, NULL, 0,
3304
15
        NULL, HFILL }},
3305
15
    { &hf_kpm_v2_sD,
3306
15
      { "sD", "kpm-v2.sD",
3307
15
        FT_BYTES, BASE_NONE, NULL, 0,
3308
15
        NULL, HFILL }},
3309
15
    { &hf_kpm_v2_gNB,
3310
15
      { "gNB", "kpm-v2.gNB_element",
3311
15
        FT_NONE, BASE_NONE, NULL, 0,
3312
15
        "GlobalGNB_ID", HFILL }},
3313
15
    { &hf_kpm_v2_ng_eNB,
3314
15
      { "ng-eNB", "kpm-v2.ng_eNB_element",
3315
15
        FT_NONE, BASE_NONE, NULL, 0,
3316
15
        "GlobalNgENB_ID", HFILL }},
3317
15
      { &hf_kpm_v2_timestamp_string,
3318
15
          { "Timestamp string", "kpm-v2.timestamp-string",
3319
15
            FT_STRING, BASE_NONE, NULL, 0x0,
3320
15
            NULL, HFILL }},
3321
15
  };
3322
3323
  /* List of subtrees */
3324
15
  static int *ett[] = {
3325
15
    &ett_kpm_v2_MeasurementType,
3326
15
    &ett_kpm_v2_MeasurementLabel,
3327
15
    &ett_kpm_v2_TestCondInfo,
3328
15
    &ett_kpm_v2_TestCond_Type,
3329
15
    &ett_kpm_v2_TestCond_Value,
3330
15
    &ett_kpm_v2_MeasurementInfoList,
3331
15
    &ett_kpm_v2_MeasurementInfoItem,
3332
15
    &ett_kpm_v2_LabelInfoList,
3333
15
    &ett_kpm_v2_LabelInfoItem,
3334
15
    &ett_kpm_v2_MeasurementData,
3335
15
    &ett_kpm_v2_MeasurementDataItem,
3336
15
    &ett_kpm_v2_MeasurementRecord,
3337
15
    &ett_kpm_v2_MeasurementRecordItem,
3338
15
    &ett_kpm_v2_MeasurementInfo_Action_List,
3339
15
    &ett_kpm_v2_MeasurementInfo_Action_Item,
3340
15
    &ett_kpm_v2_MeasurementCondList,
3341
15
    &ett_kpm_v2_MeasurementCondItem,
3342
15
    &ett_kpm_v2_MeasurementCondUEidList,
3343
15
    &ett_kpm_v2_MeasurementCondUEidItem,
3344
15
    &ett_kpm_v2_MatchingCondList,
3345
15
    &ett_kpm_v2_MatchingCondItem,
3346
15
    &ett_kpm_v2_MatchingUEidList,
3347
15
    &ett_kpm_v2_MatchingUEidItem,
3348
15
    &ett_kpm_v2_MatchingUeCondPerSubList,
3349
15
    &ett_kpm_v2_MatchingUeCondPerSubItem,
3350
15
    &ett_kpm_v2_MatchingUEidPerSubList,
3351
15
    &ett_kpm_v2_MatchingUEidPerSubItem,
3352
15
    &ett_kpm_v2_UEMeasurementReportList,
3353
15
    &ett_kpm_v2_UEMeasurementReportItem,
3354
15
    &ett_kpm_v2_E2SM_KPM_EventTriggerDefinition,
3355
15
    &ett_kpm_v2_T_eventDefinition_formats,
3356
15
    &ett_kpm_v2_E2SM_KPM_EventTriggerDefinition_Format1,
3357
15
    &ett_kpm_v2_E2SM_KPM_ActionDefinition,
3358
15
    &ett_kpm_v2_T_actionDefinition_formats,
3359
15
    &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format1,
3360
15
    &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format2,
3361
15
    &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format3,
3362
15
    &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format4,
3363
15
    &ett_kpm_v2_E2SM_KPM_ActionDefinition_Format5,
3364
15
    &ett_kpm_v2_E2SM_KPM_IndicationHeader,
3365
15
    &ett_kpm_v2_T_indicationHeader_formats,
3366
15
    &ett_kpm_v2_E2SM_KPM_IndicationHeader_Format1,
3367
15
    &ett_kpm_v2_E2SM_KPM_IndicationMessage,
3368
15
    &ett_kpm_v2_T_indicationMessage_formats,
3369
15
    &ett_kpm_v2_E2SM_KPM_IndicationMessage_Format1,
3370
15
    &ett_kpm_v2_E2SM_KPM_IndicationMessage_Format2,
3371
15
    &ett_kpm_v2_E2SM_KPM_IndicationMessage_Format3,
3372
15
    &ett_kpm_v2_E2SM_KPM_RANfunction_Description,
3373
15
    &ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_EventTriggerStyle_Item,
3374
15
    &ett_kpm_v2_SEQUENCE_SIZE_1_maxnoofRICStyles_OF_RIC_ReportStyle_Item,
3375
15
    &ett_kpm_v2_RIC_EventTriggerStyle_Item,
3376
15
    &ett_kpm_v2_RIC_ReportStyle_Item,
3377
15
    &ett_kpm_v2_CGI,
3378
15
    &ett_kpm_v2_RANfunction_Name,
3379
15
    &ett_kpm_v2_UEID,
3380
15
    &ett_kpm_v2_UEID_GNB,
3381
15
    &ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_List,
3382
15
    &ett_kpm_v2_UEID_GNB_CU_CP_E1AP_ID_Item,
3383
15
    &ett_kpm_v2_UEID_GNB_CU_F1AP_ID_List,
3384
15
    &ett_kpm_v2_UEID_GNB_CU_CP_F1AP_ID_Item,
3385
15
    &ett_kpm_v2_UEID_GNB_DU,
3386
15
    &ett_kpm_v2_UEID_GNB_CU_UP,
3387
15
    &ett_kpm_v2_UEID_NG_ENB,
3388
15
    &ett_kpm_v2_UEID_NG_ENB_DU,
3389
15
    &ett_kpm_v2_UEID_EN_GNB,
3390
15
    &ett_kpm_v2_UEID_ENB,
3391
15
    &ett_kpm_v2_ENB_ID,
3392
15
    &ett_kpm_v2_GlobalENB_ID,
3393
15
    &ett_kpm_v2_GUMMEI,
3394
15
    &ett_kpm_v2_EUTRA_CGI,
3395
15
    &ett_kpm_v2_GlobalGNB_ID,
3396
15
    &ett_kpm_v2_GlobalNgENB_ID,
3397
15
    &ett_kpm_v2_GNB_ID,
3398
15
    &ett_kpm_v2_GUAMI,
3399
15
    &ett_kpm_v2_NgENB_ID,
3400
15
    &ett_kpm_v2_NR_CGI,
3401
15
    &ett_kpm_v2_S_NSSAI,
3402
15
    &ett_kpm_v2_GlobalNGRANNodeID,
3403
15
  };
3404
3405
3406
  /* Register protocol */
3407
15
  proto_kpm_v2 = proto_register_protocol("KPM V2", "KPMv2", "kpm-v2");
3408
  /* Register fields and subtrees */
3409
15
  proto_register_field_array(proto_kpm_v2, hf, array_length(hf));
3410
15
  proto_register_subtree_array(ett, array_length(ett));
3411
15
}
3412
3413
/*
3414
 * Editor modelines
3415
 *
3416
 * Local Variables:
3417
 * c-basic-offset: 2
3418
 * tab-width: 8
3419
 * indent-tabs-mode: nil
3420
 * End:
3421
 *
3422
 * ex: set shiftwidth=2 tabstop=8 expandtab:
3423
 * :indentSize=2:tabSize=8:noTabs=true:
3424
 */