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-sbc-ap.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-sbc-ap.c                                                            */
4
/* asn2wrs.py -q -L -p sbc-ap -c ./sbc-ap.cnf -s ./packet-sbc-ap-template -D . -O ../.. SBC-AP-CommonDataTypes.asn SBC-AP-Constants.asn SBC-AP-Containers.asn SBC-AP-IEs.asn SBC-AP-PDU-Contents.asn SBC-AP-PDU-Descriptions.asn */
5
6
/* packet-sbc-ap.c
7
 * Routines for SBc Application Part (SBc-AP) packet dissection
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
 * Ref 3GPP TS 29.168
16
 */
17
18
#include "config.h"
19
20
#include <epan/packet.h>
21
#include <epan/asn1.h>
22
#include <epan/proto_data.h>
23
#include <epan/tfs.h>
24
#include <epan/unit_strings.h>
25
26
#include <wsutil/array.h>
27
28
#include "packet-ber.h"
29
#include "packet-per.h"
30
#include "packet-e212.h"
31
#include "packet-gsm_map.h"
32
#include "packet-s1ap.h"
33
#include "packet-lte-rrc.h"
34
#include "packet-sctp.h"
35
36
void proto_register_sbc_ap(void);
37
void proto_reg_handoff_sbc_ap(void);
38
39
/* The registered port number for SBc-AP is 29168.
40
 * The registered payload protocol identifier for SBc-AP is 24.
41
 */
42
#define SBC_AP_PORT 29168
43
static dissector_handle_t sbc_ap_handle;
44
45
46
6
#define maxNrOfErrors                  256
47
15
#define maxnoofCellID                  65535
48
14
#define maxnoofCellinEAI               65535
49
1
#define maxnoofCellinTAI               65535
50
20
#define maxNrOfTAIs                    65535
51
7
#define maxnoofEmergencyAreaID         65535
52
1
#define maxnoofTAIforWarning           65535
53
64
#define maxProtocolExtensions          65535
54
73
#define maxProtocolIEs                 65535
55
2
#define maxnoofeNBIds                  256
56
1
#define maxnoofRestartedCells          256
57
2
#define maxnoofRestartTAIs             2048
58
1
#define maxnoofRestartEAIs             256
59
3
#define maxnoofFailedCells             256
60
0
#define maxnoof5GSTAIs                 2048
61
0
#define maxnoofCellsingNB              16384
62
0
#define maxnoofCellsin5GS              16776960
63
0
#define maxnoofCellsin5GSTAI           65535
64
0
#define maxnoofRANNodes                65535
65
0
#define maxnoofRestart5GSTAIs          2048
66
0
#define maxnoofCellsforRestartNR       16384
67
68
typedef enum _ProcedureCode_enum {
69
  id_Write_Replace_Warning =   0,
70
  id_Stop_Warning =   1,
71
  id_Error_Indication =   2,
72
  id_Write_Replace_Warning_Indication =   3,
73
  id_Stop_Warning_Indication =   4,
74
  id_PWS_Restart_Indication =   5,
75
  id_PWS_Failure_Indication =   6
76
} ProcedureCode_enum;
77
78
typedef enum _ProtocolIE_ID_enum {
79
  id_Broadcast_Message_Content =   0,
80
  id_Cause     =   1,
81
  id_Criticality_Diagnostics =   2,
82
  id_Data_Coding_Scheme =   3,
83
  id_Failure_List =   4,
84
  id_Message_Identifier =   5,
85
  id_Number_of_Broadcasts_Completed_List =   6,
86
  id_Number_of_Broadcasts_Requested =   7,
87
  id_Radio_Resource_Loading_List =   8,
88
  id_Recovery_Indication =   9,
89
  id_Repetition_Period =  10,
90
  id_Serial_Number =  11,
91
  id_Service_Areas_List =  12,
92
  id_TypeOfError =  13,
93
  id_List_of_TAIs =  14,
94
  id_Warning_Area_List =  15,
95
  id_Warning_Message_Content =  16,
96
  id_Warning_Security_Information =  17,
97
  id_Warning_Type =  18,
98
  id_Omc_Id    =  19,
99
  id_Concurrent_Warning_Message_Indicator =  20,
100
  id_Extended_Repetition_Period =  21,
101
  id_Unknown_Tracking_Area_List =  22,
102
  id_Broadcast_Scheduled_Area_List =  23,
103
  id_Send_Write_Replace_Warning_Indication =  24,
104
  id_Broadcast_Cancelled_Area_List =  25,
105
  id_Send_Stop_Warning_Indication =  26,
106
  id_Stop_All_Indicator =  27,
107
  id_Global_ENB_ID =  28,
108
  id_Broadcast_Empty_Area_List =  29,
109
  id_Restarted_Cell_List =  30,
110
  id_List_of_TAIs_Restart =  31,
111
  id_List_of_EAIs_Restart =  32,
112
  id_Failed_Cell_List =  33,
113
  id_List_of_5GS_TAIs =  34,
114
  id_Warning_Area_List_5GS =  35,
115
  id_Global_RAN_Node_ID =  36,
116
  id_Global_GNB_ID =  37,
117
  id_RAT_Selector_5GS =  38,
118
  id_Unknown_5GS_Tracking_Area_List =  39,
119
  id_Broadcast_Scheduled_Area_List_5GS =  40,
120
  id_Broadcast_Cancelled_Area_List_5GS =  41,
121
  id_Broadcast_Empty_Area_List_5GS =  42,
122
  id_Restarted_Cell_List_NR =  43,
123
  id_Failed_Cell_List_NR =  44,
124
  id_List_of_5GS_TAI_for_Restart =  45,
125
  id_Warning_Area_Coordinates =  46
126
} ProtocolIE_ID_enum;
127
128
/* Initialize the protocol and registered fields */
129
static int proto_sbc_ap;
130
131
static int hf_sbc_ap_Serial_Number_gs;
132
static int hf_sbc_ap_Serial_Number_msg_code;
133
static int hf_sbc_ap_Serial_Number_upd_nb;
134
static int hf_sbc_ap_Warning_Type_value;
135
static int hf_sbc_ap_Warning_Type_emergency_user_alert;
136
static int hf_sbc_ap_Warning_Type_popup;
137
static int hf_sbc_ap_Warning_Message_Contents_nb_pages;
138
static int hf_sbc_ap_Warning_Message_Contents_decoded_page;
139
static int hf_sbc_ap_Broadcast_Scheduled_Area_List_PDU;  /* Broadcast_Scheduled_Area_List */
140
static int hf_sbc_ap_Broadcast_Scheduled_Area_List_5GS_PDU;  /* Broadcast_Scheduled_Area_List_5GS */
141
static int hf_sbc_ap_Broadcast_Cancelled_Area_List_PDU;  /* Broadcast_Cancelled_Area_List */
142
static int hf_sbc_ap_Broadcast_Cancelled_Area_List_5GS_PDU;  /* Broadcast_Cancelled_Area_List_5GS */
143
static int hf_sbc_ap_Broadcast_Empty_Area_List_PDU;  /* Broadcast_Empty_Area_List */
144
static int hf_sbc_ap_Broadcast_Empty_Area_List_5GS_PDU;  /* Broadcast_Empty_Area_List_5GS */
145
static int hf_sbc_ap_Cause_PDU;                   /* Cause */
146
static int hf_sbc_ap_Concurrent_Warning_Message_Indicator_PDU;  /* Concurrent_Warning_Message_Indicator */
147
static int hf_sbc_ap_Criticality_Diagnostics_PDU;  /* Criticality_Diagnostics */
148
static int hf_sbc_ap_Data_Coding_Scheme_PDU;      /* Data_Coding_Scheme */
149
static int hf_sbc_ap_Extended_Repetition_Period_PDU;  /* Extended_Repetition_Period */
150
static int hf_sbc_ap_Failed_Cell_List_PDU;        /* Failed_Cell_List */
151
static int hf_sbc_ap_Failed_Cell_List_NR_PDU;     /* Failed_Cell_List_NR */
152
static int hf_sbc_ap_Global_ENB_ID_PDU;           /* Global_ENB_ID */
153
static int hf_sbc_ap_Global_RAN_Node_ID_PDU;      /* Global_RAN_Node_ID */
154
static int hf_sbc_ap_Global_GNB_ID_PDU;           /* Global_GNB_ID */
155
static int hf_sbc_ap_List_of_TAIs_PDU;            /* List_of_TAIs */
156
static int hf_sbc_ap_List_of_TAIs_Restart_PDU;    /* List_of_TAIs_Restart */
157
static int hf_sbc_ap_List_of_EAIs_Restart_PDU;    /* List_of_EAIs_Restart */
158
static int hf_sbc_ap_List_of_5GS_TAIs_PDU;        /* List_of_5GS_TAIs */
159
static int hf_sbc_ap_List_of_5GS_TAI_for_Restart_PDU;  /* List_of_5GS_TAI_for_Restart */
160
static int hf_sbc_ap_Message_Identifier_PDU;      /* Message_Identifier */
161
static int hf_sbc_ap_Number_of_Broadcasts_Requested_PDU;  /* Number_of_Broadcasts_Requested */
162
static int hf_sbc_ap_Omc_Id_PDU;                  /* Omc_Id */
163
static int hf_sbc_ap_Repetition_Period_PDU;       /* Repetition_Period */
164
static int hf_sbc_ap_Restarted_Cell_List_PDU;     /* Restarted_Cell_List */
165
static int hf_sbc_ap_RAT_Selector_5GS_PDU;        /* RAT_Selector_5GS */
166
static int hf_sbc_ap_Restarted_Cell_List_NR_PDU;  /* Restarted_Cell_List_NR */
167
static int hf_sbc_ap_Send_Write_Replace_Warning_Indication_PDU;  /* Send_Write_Replace_Warning_Indication */
168
static int hf_sbc_ap_Send_Stop_Warning_Indication_PDU;  /* Send_Stop_Warning_Indication */
169
static int hf_sbc_ap_Serial_Number_PDU;           /* Serial_Number */
170
static int hf_sbc_ap_Stop_All_Indicator_PDU;      /* Stop_All_Indicator */
171
static int hf_sbc_ap_Unknown_5GS_Tracking_Area_List_PDU;  /* Unknown_5GS_Tracking_Area_List */
172
static int hf_sbc_ap_Warning_Area_List_PDU;       /* Warning_Area_List */
173
static int hf_sbc_ap_Warning_Message_Content_PDU;  /* Warning_Message_Content */
174
static int hf_sbc_ap_Warning_Area_Coordinates_PDU;  /* Warning_Area_Coordinates */
175
static int hf_sbc_ap_Warning_Security_Information_PDU;  /* Warning_Security_Information */
176
static int hf_sbc_ap_Warning_Type_PDU;            /* Warning_Type */
177
static int hf_sbc_ap_Warning_Area_List_5GS_PDU;   /* Warning_Area_List_5GS */
178
static int hf_sbc_ap_Write_Replace_Warning_Request_PDU;  /* Write_Replace_Warning_Request */
179
static int hf_sbc_ap_Write_Replace_Warning_Response_PDU;  /* Write_Replace_Warning_Response */
180
static int hf_sbc_ap_Stop_Warning_Request_PDU;    /* Stop_Warning_Request */
181
static int hf_sbc_ap_Stop_Warning_Response_PDU;   /* Stop_Warning_Response */
182
static int hf_sbc_ap_Write_Replace_Warning_Indication_PDU;  /* Write_Replace_Warning_Indication */
183
static int hf_sbc_ap_Stop_Warning_Indication_PDU;  /* Stop_Warning_Indication */
184
static int hf_sbc_ap_PWS_Restart_Indication_PDU;  /* PWS_Restart_Indication */
185
static int hf_sbc_ap_PWS_Failure_Indication_PDU;  /* PWS_Failure_Indication */
186
static int hf_sbc_ap_Error_Indication_PDU;        /* Error_Indication */
187
static int hf_sbc_ap_SBC_AP_PDU_PDU;              /* SBC_AP_PDU */
188
static int hf_sbc_ap_ProtocolIE_Container_item;   /* ProtocolIE_Field */
189
static int hf_sbc_ap_id;                          /* ProtocolIE_ID */
190
static int hf_sbc_ap_criticality;                 /* Criticality */
191
static int hf_sbc_ap_ie_field_value;              /* T_ie_field_value */
192
static int hf_sbc_ap_ProtocolExtensionContainer_item;  /* ProtocolExtensionField */
193
static int hf_sbc_ap_ext_id;                      /* ProtocolExtensionID */
194
static int hf_sbc_ap_extensionValue;              /* T_extensionValue */
195
static int hf_sbc_ap_cellId_Broadcast_List;       /* CellId_Broadcast_List */
196
static int hf_sbc_ap_tAI_Broadcast_List;          /* TAI_Broadcast_List */
197
static int hf_sbc_ap_emergencyAreaID_Broadcast_List;  /* EmergencyAreaID_Broadcast_List */
198
static int hf_sbc_ap_iE_Extensions;               /* ProtocolExtensionContainer */
199
static int hf_sbc_ap_cellId_Broadcast_List_5GS;   /* CellId_Broadcast_List_5GS */
200
static int hf_sbc_ap_tAI_Broadcast_List_5GS;      /* TAI_Broadcast_List_5GS */
201
static int hf_sbc_ap_cellID_Cancelled_List;       /* CellID_Cancelled_List */
202
static int hf_sbc_ap_tAI_Cancelled_List;          /* TAI_Cancelled_List */
203
static int hf_sbc_ap_emergencyAreaID_Cancelled_List;  /* EmergencyAreaID_Cancelled_List */
204
static int hf_sbc_ap_cellID_Cancelled_List_5GS;   /* CellID_Cancelled_List_5GS */
205
static int hf_sbc_ap_tAI_Cancelled_List_5GS;      /* TAI_Cancelled_List_5GS */
206
static int hf_sbc_ap_Broadcast_Empty_Area_List_item;  /* Global_ENB_ID */
207
static int hf_sbc_ap_Broadcast_Empty_Area_List_5GS_item;  /* Global_RAN_Node_ID */
208
static int hf_sbc_ap_CancelledCellinEAI_item;     /* CancelledCellinEAI_Item */
209
static int hf_sbc_ap_eCGI;                        /* EUTRAN_CGI */
210
static int hf_sbc_ap_numberOfBroadcasts;          /* NumberOfBroadcasts */
211
static int hf_sbc_ap_CancelledCellinTAI_item;     /* CancelledCellinTAI_Item */
212
static int hf_sbc_ap_CancelledCellinTAI_5GS_item;  /* CancelledCellinTAI_5GS_item */
213
static int hf_sbc_ap_nR_CGI;                      /* NR_CGI */
214
static int hf_sbc_ap_CellId_Broadcast_List_item;  /* CellId_Broadcast_List_Item */
215
static int hf_sbc_ap_CellId_Broadcast_List_5GS_item;  /* CellId_Broadcast_List_5GS_item */
216
static int hf_sbc_ap_CellID_Cancelled_List_item;  /* CellID_Cancelled_Item */
217
static int hf_sbc_ap_CellID_Cancelled_List_5GS_item;  /* CellID_Cancelled_List_5GS_item */
218
static int hf_sbc_ap_procedureCode;               /* ProcedureCode */
219
static int hf_sbc_ap_triggeringMessage;           /* TriggeringMessage */
220
static int hf_sbc_ap_procedureCriticality;        /* Criticality */
221
static int hf_sbc_ap_iE_CriticalityDiagnostics;   /* CriticalityDiagnostics_IE_List */
222
static int hf_sbc_ap_CriticalityDiagnostics_IE_List_item;  /* CriticalityDiagnostics_IE_List_item */
223
static int hf_sbc_ap_iECriticality;               /* Criticality */
224
static int hf_sbc_ap_iE_ID;                       /* ProtocolIE_ID */
225
static int hf_sbc_ap_typeOfError;                 /* TypeOfError */
226
static int hf_sbc_ap_ECGIList_item;               /* EUTRAN_CGI */
227
static int hf_sbc_ap_Emergency_Area_ID_List_item;  /* Emergency_Area_ID */
228
static int hf_sbc_ap_EmergencyAreaID_Broadcast_List_item;  /* EmergencyAreaID_Broadcast_List_Item */
229
static int hf_sbc_ap_emergencyAreaID;             /* Emergency_Area_ID */
230
static int hf_sbc_ap_scheduledCellinEAI;          /* ScheduledCellinEAI */
231
static int hf_sbc_ap_EmergencyAreaID_Cancelled_List_item;  /* EmergencyAreaID_Cancelled_Item */
232
static int hf_sbc_ap_cancelledCellinEAI;          /* CancelledCellinEAI */
233
static int hf_sbc_ap_pLMNidentity;                /* PLMNidentity */
234
static int hf_sbc_ap_cell_ID;                     /* CellIdentity */
235
static int hf_sbc_ap_macroENB_ID;                 /* BIT_STRING_SIZE_20 */
236
static int hf_sbc_ap_homeENB_ID;                  /* BIT_STRING_SIZE_28 */
237
static int hf_sbc_ap_short_macroENB_ID;           /* BIT_STRING_SIZE_18 */
238
static int hf_sbc_ap_long_macroENB_ID;            /* BIT_STRING_SIZE_21 */
239
static int hf_sbc_ap_Failed_Cell_List_item;       /* EUTRAN_CGI */
240
static int hf_sbc_ap_Failed_Cell_List_NR_item;    /* NR_CGI */
241
static int hf_sbc_ap_eNB_ID;                      /* ENB_ID */
242
static int hf_sbc_ap_global_GNB_ID;               /* Global_GNB_ID */
243
static int hf_sbc_ap_global_NgENB_ID;             /* Global_NgENB_ID */
244
static int hf_sbc_ap_gnb_id_choice;               /* GNB_ID */
245
static int hf_sbc_ap_gNB_ID;                      /* BIT_STRING_SIZE_22_32 */
246
static int hf_sbc_ap_ngENB_ID;                    /* ENB_ID */
247
static int hf_sbc_ap_List_of_TAIs_item;           /* List_of_TAIs_item */
248
static int hf_sbc_ap_tai;                         /* TAI */
249
static int hf_sbc_ap_List_of_TAIs_Restart_item;   /* List_of_TAIs_Restart_item */
250
static int hf_sbc_ap_List_of_EAIs_Restart_item;   /* Emergency_Area_ID */
251
static int hf_sbc_ap_List_of_5GS_TAIs_item;       /* TAI_5GS */
252
static int hf_sbc_ap_List_of_5GS_TAI_for_Restart_item;  /* TAI_5GS */
253
static int hf_sbc_ap_NR_CGIList_item;             /* NR_CGI */
254
static int hf_sbc_ap_nRCellIdentity;              /* NRCellIdentity */
255
static int hf_sbc_ap_Restarted_Cell_List_item;    /* EUTRAN_CGI */
256
static int hf_sbc_ap_Restarted_Cell_List_NR_item;  /* NR_CGI */
257
static int hf_sbc_ap_ScheduledCellinEAI_item;     /* ScheduledCellinEAI_Item */
258
static int hf_sbc_ap_ScheduledCellinTAI_item;     /* ScheduledCellinTAI_Item */
259
static int hf_sbc_ap_ScheduledCellinTAI_5GS_item;  /* ScheduledCellinTAI_5GS_item */
260
static int hf_sbc_ap_TAI_Broadcast_List_item;     /* TAI_Broadcast_List_Item */
261
static int hf_sbc_ap_tAI;                         /* TAI */
262
static int hf_sbc_ap_scheduledCellinTAI;          /* ScheduledCellinTAI */
263
static int hf_sbc_ap_TAI_Broadcast_List_5GS_item;  /* TAI_Broadcast_List_5GS_item */
264
static int hf_sbc_ap_tAI_5GS;                     /* TAI_5GS */
265
static int hf_sbc_ap_scheduledCellinTAI_5GS;      /* ScheduledCellinTAI_5GS */
266
static int hf_sbc_ap_TAI_Cancelled_List_item;     /* TAI_Cancelled_List_Item */
267
static int hf_sbc_ap_cancelledCellinTAI;          /* CancelledCellinTAI */
268
static int hf_sbc_ap_TAI_Cancelled_List_5GS_item;  /* TAI_Cancelled_List_5GS_item */
269
static int hf_sbc_ap_cancelledCellinTAI_5GS;      /* CancelledCellinTAI_5GS */
270
static int hf_sbc_ap_TAI_List_for_Warning_item;   /* TAI */
271
static int hf_sbc_ap_tAC;                         /* TAC */
272
static int hf_sbc_ap_tAC_5GS;                     /* TAC_5GS */
273
static int hf_sbc_ap_Unknown_5GS_Tracking_Area_List_item;  /* TAI_5GS */
274
static int hf_sbc_ap_cell_ID_List;                /* ECGIList */
275
static int hf_sbc_ap_tracking_Area_List_for_Warning;  /* TAI_List_for_Warning */
276
static int hf_sbc_ap_emergency_Area_ID_List;      /* Emergency_Area_ID_List */
277
static int hf_sbc_ap_nR_CGIList;                  /* NR_CGIList */
278
static int hf_sbc_ap_tAIList_5GS;                 /* TAI_5GS */
279
static int hf_sbc_ap_emergencyAreaIDList;         /* Emergency_Area_ID_List */
280
static int hf_sbc_ap_protocolIEs;                 /* ProtocolIE_Container */
281
static int hf_sbc_ap_protocolExtensions;          /* ProtocolExtensionContainer */
282
static int hf_sbc_ap_initiatingMessage;           /* InitiatingMessage */
283
static int hf_sbc_ap_successfulOutcome;           /* SuccessfulOutcome */
284
static int hf_sbc_ap_unsuccessfulOutcome;         /* UnsuccessfulOutcome */
285
static int hf_sbc_ap_initiatingMessagevalue;      /* InitiatingMessage_value */
286
static int hf_sbc_ap_successfulOutcome_value;     /* SuccessfulOutcome_value */
287
static int hf_sbc_ap_unsuccessfulOutcome_value;   /* UnsuccessfulOutcome_value */
288
289
/* Initialize the subtree pointers */
290
static int ett_sbc_ap;
291
static int ett_sbc_ap_Serial_Number;
292
static int ett_sbc_ap_Warning_Type;
293
static int ett_sbc_ap_Data_Coding_Scheme;
294
static int ett_sbc_ap_Warning_Message_Contents;
295
296
static int ett_sbc_ap_ProtocolIE_Container;
297
static int ett_sbc_ap_ProtocolIE_Field;
298
static int ett_sbc_ap_ProtocolExtensionContainer;
299
static int ett_sbc_ap_ProtocolExtensionField;
300
static int ett_sbc_ap_Broadcast_Scheduled_Area_List;
301
static int ett_sbc_ap_Broadcast_Scheduled_Area_List_5GS;
302
static int ett_sbc_ap_Broadcast_Cancelled_Area_List;
303
static int ett_sbc_ap_Broadcast_Cancelled_Area_List_5GS;
304
static int ett_sbc_ap_Broadcast_Empty_Area_List;
305
static int ett_sbc_ap_Broadcast_Empty_Area_List_5GS;
306
static int ett_sbc_ap_CancelledCellinEAI;
307
static int ett_sbc_ap_CancelledCellinEAI_Item;
308
static int ett_sbc_ap_CancelledCellinTAI;
309
static int ett_sbc_ap_CancelledCellinTAI_Item;
310
static int ett_sbc_ap_CancelledCellinTAI_5GS;
311
static int ett_sbc_ap_CancelledCellinTAI_5GS_item;
312
static int ett_sbc_ap_CellId_Broadcast_List;
313
static int ett_sbc_ap_CellId_Broadcast_List_Item;
314
static int ett_sbc_ap_CellId_Broadcast_List_5GS;
315
static int ett_sbc_ap_CellId_Broadcast_List_5GS_item;
316
static int ett_sbc_ap_CellID_Cancelled_List;
317
static int ett_sbc_ap_CellID_Cancelled_Item;
318
static int ett_sbc_ap_CellID_Cancelled_List_5GS;
319
static int ett_sbc_ap_CellID_Cancelled_List_5GS_item;
320
static int ett_sbc_ap_Criticality_Diagnostics;
321
static int ett_sbc_ap_CriticalityDiagnostics_IE_List;
322
static int ett_sbc_ap_CriticalityDiagnostics_IE_List_item;
323
static int ett_sbc_ap_ECGIList;
324
static int ett_sbc_ap_Emergency_Area_ID_List;
325
static int ett_sbc_ap_EmergencyAreaID_Broadcast_List;
326
static int ett_sbc_ap_EmergencyAreaID_Broadcast_List_Item;
327
static int ett_sbc_ap_EmergencyAreaID_Cancelled_List;
328
static int ett_sbc_ap_EmergencyAreaID_Cancelled_Item;
329
static int ett_sbc_ap_EUTRAN_CGI;
330
static int ett_sbc_ap_ENB_ID;
331
static int ett_sbc_ap_Failed_Cell_List;
332
static int ett_sbc_ap_Failed_Cell_List_NR;
333
static int ett_sbc_ap_Global_ENB_ID;
334
static int ett_sbc_ap_Global_RAN_Node_ID;
335
static int ett_sbc_ap_Global_GNB_ID;
336
static int ett_sbc_ap_GNB_ID;
337
static int ett_sbc_ap_Global_NgENB_ID;
338
static int ett_sbc_ap_List_of_TAIs;
339
static int ett_sbc_ap_List_of_TAIs_item;
340
static int ett_sbc_ap_List_of_TAIs_Restart;
341
static int ett_sbc_ap_List_of_TAIs_Restart_item;
342
static int ett_sbc_ap_List_of_EAIs_Restart;
343
static int ett_sbc_ap_List_of_5GS_TAIs;
344
static int ett_sbc_ap_List_of_5GS_TAI_for_Restart;
345
static int ett_sbc_ap_NR_CGIList;
346
static int ett_sbc_ap_NR_CGI;
347
static int ett_sbc_ap_Restarted_Cell_List;
348
static int ett_sbc_ap_Restarted_Cell_List_NR;
349
static int ett_sbc_ap_ScheduledCellinEAI;
350
static int ett_sbc_ap_ScheduledCellinEAI_Item;
351
static int ett_sbc_ap_ScheduledCellinTAI;
352
static int ett_sbc_ap_ScheduledCellinTAI_Item;
353
static int ett_sbc_ap_ScheduledCellinTAI_5GS;
354
static int ett_sbc_ap_ScheduledCellinTAI_5GS_item;
355
static int ett_sbc_ap_TAI_Broadcast_List;
356
static int ett_sbc_ap_TAI_Broadcast_List_Item;
357
static int ett_sbc_ap_TAI_Broadcast_List_5GS;
358
static int ett_sbc_ap_TAI_Broadcast_List_5GS_item;
359
static int ett_sbc_ap_TAI_Cancelled_List;
360
static int ett_sbc_ap_TAI_Cancelled_List_Item;
361
static int ett_sbc_ap_TAI_Cancelled_List_5GS;
362
static int ett_sbc_ap_TAI_Cancelled_List_5GS_item;
363
static int ett_sbc_ap_TAI_List_for_Warning;
364
static int ett_sbc_ap_TAI;
365
static int ett_sbc_ap_TAI_5GS;
366
static int ett_sbc_ap_Unknown_5GS_Tracking_Area_List;
367
static int ett_sbc_ap_Warning_Area_List;
368
static int ett_sbc_ap_Warning_Area_List_5GS;
369
static int ett_sbc_ap_Write_Replace_Warning_Request;
370
static int ett_sbc_ap_Write_Replace_Warning_Response;
371
static int ett_sbc_ap_Stop_Warning_Request;
372
static int ett_sbc_ap_Stop_Warning_Response;
373
static int ett_sbc_ap_Write_Replace_Warning_Indication;
374
static int ett_sbc_ap_Stop_Warning_Indication;
375
static int ett_sbc_ap_PWS_Restart_Indication;
376
static int ett_sbc_ap_PWS_Failure_Indication;
377
static int ett_sbc_ap_Error_Indication;
378
static int ett_sbc_ap_SBC_AP_PDU;
379
static int ett_sbc_ap_InitiatingMessage;
380
static int ett_sbc_ap_SuccessfulOutcome;
381
static int ett_sbc_ap_UnsuccessfulOutcome;
382
383
enum{
384
  INITIATING_MESSAGE,
385
  SUCCESSFUL_OUTCOME,
386
  UNSUCCESSFUL_OUTCOME
387
};
388
389
struct sbc_ap_private_data {
390
  uint8_t data_coding_scheme;
391
  e212_number_type_t number_type;
392
};
393
394
/* Global variables */
395
static uint32_t ProcedureCode;
396
static uint32_t ProtocolIE_ID;
397
static uint32_t ProtocolExtensionID;
398
static int global_sbc_ap_port = SBC_AP_PORT;
399
400
/* Dissector tables */
401
static dissector_table_t sbc_ap_ies_dissector_table;
402
static dissector_table_t sbc_ap_extension_dissector_table;
403
static dissector_table_t sbc_ap_proc_imsg_dissector_table;
404
static dissector_table_t sbc_ap_proc_sout_dissector_table;
405
static dissector_table_t sbc_ap_proc_uout_dissector_table;
406
407
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
408
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
409
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
410
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
411
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
412
413
414
static struct sbc_ap_private_data*
415
sbc_ap_get_private_data(packet_info *pinfo)
416
480
{
417
480
  struct sbc_ap_private_data *sbc_ap_data = (struct sbc_ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0);
418
480
  if (!sbc_ap_data) {
419
34
    sbc_ap_data = wmem_new0(pinfo->pool, struct sbc_ap_private_data);
420
34
    p_add_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0, sbc_ap_data);
421
34
  }
422
480
  return sbc_ap_data;
423
480
}
424
425
/*--- Cyclic dependencies ---*/
426
427
/* ProtocolIE-Field/value -> ProtocolIE-Field/value */
428
static unsigned dissect_sbc_ap_T_ie_field_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
429
430
/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */
431
static unsigned dissect_sbc_ap_T_extensionValue(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
432
433
/* InitiatingMessage/value -> InitiatingMessage/value */
434
static unsigned dissect_sbc_ap_InitiatingMessage_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
435
436
/* SuccessfulOutcome/value -> SuccessfulOutcome/value */
437
static unsigned dissect_sbc_ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
438
439
/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */
440
static unsigned dissect_sbc_ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
441
442
443
444
static const value_string sbc_ap_Criticality_vals[] = {
445
  {   0, "reject" },
446
  {   1, "ignore" },
447
  {   2, "notify" },
448
  { 0, NULL }
449
};
450
451
452
static unsigned
453
1.05k
dissect_sbc_ap_Criticality(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
454
1.05k
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
455
1.05k
                                     3, NULL, false, 0, NULL);
456
457
1.05k
  return offset;
458
1.05k
}
459
460
461
static const value_string sbc_ap_ProcedureCode_vals[] = {
462
  { id_Write_Replace_Warning, "id-Write-Replace-Warning" },
463
  { id_Stop_Warning, "id-Stop-Warning" },
464
  { id_Error_Indication, "id-Error-Indication" },
465
  { id_Write_Replace_Warning_Indication, "id-Write-Replace-Warning-Indication" },
466
  { id_Stop_Warning_Indication, "id-Stop-Warning-Indication" },
467
  { id_PWS_Restart_Indication, "id-PWS-Restart-Indication" },
468
  { id_PWS_Failure_Indication, "id-PWS-Failure-Indication" },
469
  { 0, NULL }
470
};
471
472
473
static unsigned
474
80
dissect_sbc_ap_ProcedureCode(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
475
80
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
476
80
                                                            0U, 255U, &ProcedureCode, false);
477
478
80
  return offset;
479
80
}
480
481
482
483
static unsigned
484
243
dissect_sbc_ap_ProtocolExtensionID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
485
243
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
486
243
                                                            0U, 65535U, &ProtocolExtensionID, false);
487
488
243
  return offset;
489
243
}
490
491
492
static const value_string sbc_ap_ProtocolIE_ID_vals[] = {
493
  { id_Broadcast_Message_Content, "id-Broadcast-Message-Content" },
494
  { id_Cause, "id-Cause" },
495
  { id_Criticality_Diagnostics, "id-Criticality-Diagnostics" },
496
  { id_Data_Coding_Scheme, "id-Data-Coding-Scheme" },
497
  { id_Failure_List, "id-Failure-List" },
498
  { id_Message_Identifier, "id-Message-Identifier" },
499
  { id_Number_of_Broadcasts_Completed_List, "id-Number-of-Broadcasts-Completed-List" },
500
  { id_Number_of_Broadcasts_Requested, "id-Number-of-Broadcasts-Requested" },
501
  { id_Radio_Resource_Loading_List, "id-Radio-Resource-Loading-List" },
502
  { id_Recovery_Indication, "id-Recovery-Indication" },
503
  { id_Repetition_Period, "id-Repetition-Period" },
504
  { id_Serial_Number, "id-Serial-Number" },
505
  { id_Service_Areas_List, "id-Service-Areas-List" },
506
  { id_TypeOfError, "id-TypeOfError" },
507
  { id_List_of_TAIs, "id-List-of-TAIs" },
508
  { id_Warning_Area_List, "id-Warning-Area-List" },
509
  { id_Warning_Message_Content, "id-Warning-Message-Content" },
510
  { id_Warning_Security_Information, "id-Warning-Security-Information" },
511
  { id_Warning_Type, "id-Warning-Type" },
512
  { id_Omc_Id, "id-Omc-Id" },
513
  { id_Concurrent_Warning_Message_Indicator, "id-Concurrent-Warning-Message-Indicator" },
514
  { id_Extended_Repetition_Period, "id-Extended-Repetition-Period" },
515
  { id_Unknown_Tracking_Area_List, "id-Unknown-Tracking-Area-List" },
516
  { id_Broadcast_Scheduled_Area_List, "id-Broadcast-Scheduled-Area-List" },
517
  { id_Send_Write_Replace_Warning_Indication, "id-Send-Write-Replace-Warning-Indication" },
518
  { id_Broadcast_Cancelled_Area_List, "id-Broadcast-Cancelled-Area-List" },
519
  { id_Send_Stop_Warning_Indication, "id-Send-Stop-Warning-Indication" },
520
  { id_Stop_All_Indicator, "id-Stop-All-Indicator" },
521
  { id_Global_ENB_ID, "id-Global-ENB-ID" },
522
  { id_Broadcast_Empty_Area_List, "id-Broadcast-Empty-Area-List" },
523
  { id_Restarted_Cell_List, "id-Restarted-Cell-List" },
524
  { id_List_of_TAIs_Restart, "id-List-of-TAIs-Restart" },
525
  { id_List_of_EAIs_Restart, "id-List-of-EAIs-Restart" },
526
  { id_Failed_Cell_List, "id-Failed-Cell-List" },
527
  { id_List_of_5GS_TAIs, "id-List-of-5GS-TAIs" },
528
  { id_Warning_Area_List_5GS, "id-Warning-Area-List-5GS" },
529
  { id_Global_RAN_Node_ID, "id-Global-RAN-Node-ID" },
530
  { id_Global_GNB_ID, "id-Global-GNB-ID" },
531
  { id_RAT_Selector_5GS, "id-RAT-Selector-5GS" },
532
  { id_Unknown_5GS_Tracking_Area_List, "id-Unknown-5GS-Tracking-Area-List" },
533
  { id_Broadcast_Scheduled_Area_List_5GS, "id-Broadcast-Scheduled-Area-List-5GS" },
534
  { id_Broadcast_Cancelled_Area_List_5GS, "id-Broadcast-Cancelled-Area-List-5GS" },
535
  { id_Broadcast_Empty_Area_List_5GS, "id-Broadcast-Empty-Area-List-5GS" },
536
  { id_Restarted_Cell_List_NR, "id-Restarted-Cell-List-NR" },
537
  { id_Failed_Cell_List_NR, "id-Failed-Cell-List-NR" },
538
  { id_List_of_5GS_TAI_for_Restart, "id-List-of-5GS-TAI-for-Restart" },
539
  { id_Warning_Area_Coordinates, "id-Warning-Area-Coordinates" },
540
  { 0, NULL }
541
};
542
543
544
static unsigned
545
736
dissect_sbc_ap_ProtocolIE_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
546
736
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
547
736
                                                            0U, 65535U, &ProtocolIE_ID, false);
548
549
736
  if (tree) {
550
733
    proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(actx->pinfo->pool, ProtocolIE_ID, VALS(sbc_ap_ProtocolIE_ID_vals), "unknown (%d)"));
551
733
  }
552
736
  return offset;
553
736
}
554
555
556
static const value_string sbc_ap_TriggeringMessage_vals[] = {
557
  {   0, "initiating-message" },
558
  {   1, "successful-outcome" },
559
  {   2, "unsuccessful-outcome" },
560
  {   3, "outcome" },
561
  { 0, NULL }
562
};
563
564
565
static unsigned
566
4
dissect_sbc_ap_TriggeringMessage(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
567
4
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
568
4
                                     4, NULL, false, 0, NULL);
569
570
4
  return offset;
571
4
}
572
573
574
575
static unsigned
576
718
dissect_sbc_ap_T_ie_field_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
577
  // ProtocolIE-Field/value -> ProtocolIE-Field/value
578
718
  increment_dissection_depth_by_n(actx->pinfo, 1);
579
718
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
580
581
718
  decrement_dissection_depth_by_n(actx->pinfo, 1);
582
718
  return offset;
583
718
}
584
585
586
static const per_sequence_t ProtocolIE_Field_sequence[] = {
587
  { &hf_sbc_ap_id           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_ID },
588
  { &hf_sbc_ap_criticality  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
589
  { &hf_sbc_ap_ie_field_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_T_ie_field_value },
590
  { NULL, 0, 0, NULL }
591
};
592
593
static unsigned
594
756
dissect_sbc_ap_ProtocolIE_Field(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
595
756
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
596
756
                                   ett_sbc_ap_ProtocolIE_Field, ProtocolIE_Field_sequence);
597
598
756
  return offset;
599
756
}
600
601
602
static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
603
  { &hf_sbc_ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Field },
604
};
605
606
static unsigned
607
73
dissect_sbc_ap_ProtocolIE_Container(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
608
73
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
609
73
                                                  ett_sbc_ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
610
73
                                                  0, maxProtocolIEs, false);
611
612
73
  return offset;
613
73
}
614
615
616
617
static unsigned
618
235
dissect_sbc_ap_T_extensionValue(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
619
  // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue
620
235
  increment_dissection_depth_by_n(actx->pinfo, 1);
621
235
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
622
623
235
  decrement_dissection_depth_by_n(actx->pinfo, 1);
624
235
  return offset;
625
235
}
626
627
628
static const per_sequence_t ProtocolExtensionField_sequence[] = {
629
  { &hf_sbc_ap_ext_id       , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolExtensionID },
630
  { &hf_sbc_ap_criticality  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
631
  { &hf_sbc_ap_extensionValue, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_T_extensionValue },
632
  { NULL, 0, 0, NULL }
633
};
634
635
static unsigned
636
262
dissect_sbc_ap_ProtocolExtensionField(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
637
262
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
638
262
                                   ett_sbc_ap_ProtocolExtensionField, ProtocolExtensionField_sequence);
639
640
262
  return offset;
641
262
}
642
643
644
static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
645
  { &hf_sbc_ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolExtensionField },
646
};
647
648
static unsigned
649
64
dissect_sbc_ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
650
64
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
651
64
                                                  ett_sbc_ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
652
64
                                                  1, maxProtocolExtensions, false);
653
654
64
  return offset;
655
64
}
656
657
658
659
660
static unsigned
661
240
dissect_sbc_ap_PLMNidentity(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
662
240
  tvbuff_t *parameter_tvb=NULL;
663
240
  struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
664
240
  e212_number_type_t number_type = sbc_ap_data->number_type;
665
240
  sbc_ap_data->number_type = E212_NONE;
666
667
240
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
668
240
                                       3, 3, false, &parameter_tvb);
669
240
    if(tvb_reported_length(tvb)==0)
670
0
        return offset;
671
672
240
    if (!parameter_tvb)
673
0
        return offset;
674
240
    dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, false);
675
676
240
  return offset;
677
240
}
678
679
680
681
static unsigned
682
60
dissect_sbc_ap_CellIdentity(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
683
60
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
684
60
                                     28, 28, false, NULL, 0, NULL, NULL);
685
686
60
  return offset;
687
60
}
688
689
690
static const per_sequence_t EUTRAN_CGI_sequence[] = {
691
  { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
692
  { &hf_sbc_ap_cell_ID      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellIdentity },
693
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
694
  { NULL, 0, 0, NULL }
695
};
696
697
static unsigned
698
67
dissect_sbc_ap_EUTRAN_CGI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
699
67
  struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
700
67
  sbc_ap_data->number_type = E212_ECGI;
701
67
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
702
67
                                   ett_sbc_ap_EUTRAN_CGI, EUTRAN_CGI_sequence);
703
704
705
706
67
  return offset;
707
67
}
708
709
710
static const per_sequence_t CellId_Broadcast_List_Item_sequence[] = {
711
  { &hf_sbc_ap_eCGI         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
712
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
713
  { NULL, 0, 0, NULL }
714
};
715
716
static unsigned
717
31
dissect_sbc_ap_CellId_Broadcast_List_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
718
31
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
719
31
                                   ett_sbc_ap_CellId_Broadcast_List_Item, CellId_Broadcast_List_Item_sequence);
720
721
31
  return offset;
722
31
}
723
724
725
static const per_sequence_t CellId_Broadcast_List_sequence_of[1] = {
726
  { &hf_sbc_ap_CellId_Broadcast_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellId_Broadcast_List_Item },
727
};
728
729
static unsigned
730
13
dissect_sbc_ap_CellId_Broadcast_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
731
13
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
732
13
                                                  ett_sbc_ap_CellId_Broadcast_List, CellId_Broadcast_List_sequence_of,
733
13
                                                  1, maxnoofCellID, false);
734
735
13
  return offset;
736
13
}
737
738
739
740
static unsigned
741
165
dissect_sbc_ap_TAC(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
742
165
  tvbuff_t *parameter_tvb = NULL;
743
165
  offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
744
165
                                       2, 2, false, &parameter_tvb);
745
746
165
  if (parameter_tvb) {
747
163
    actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
748
163
  }
749
750
751
165
  return offset;
752
165
}
753
754
755
static const per_sequence_t TAI_sequence[] = {
756
  { &hf_sbc_ap_pLMNidentity , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
757
  { &hf_sbc_ap_tAC          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAC },
758
  { &hf_sbc_ap_iE_Extensions, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
759
  { NULL, 0, 0, NULL }
760
};
761
762
static unsigned
763
167
dissect_sbc_ap_TAI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
764
167
  struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
765
167
  sbc_ap_data->number_type = E212_TAI;
766
167
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
767
167
                                   ett_sbc_ap_TAI, TAI_sequence);
768
769
770
771
167
  return offset;
772
167
}
773
774
775
static const per_sequence_t ScheduledCellinTAI_Item_sequence[] = {
776
  { &hf_sbc_ap_eCGI         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
777
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
778
  { NULL, 0, 0, NULL }
779
};
780
781
static unsigned
782
1
dissect_sbc_ap_ScheduledCellinTAI_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
783
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
784
1
                                   ett_sbc_ap_ScheduledCellinTAI_Item, ScheduledCellinTAI_Item_sequence);
785
786
1
  return offset;
787
1
}
788
789
790
static const per_sequence_t ScheduledCellinTAI_sequence_of[1] = {
791
  { &hf_sbc_ap_ScheduledCellinTAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI_Item },
792
};
793
794
static unsigned
795
1
dissect_sbc_ap_ScheduledCellinTAI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
796
1
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
797
1
                                                  ett_sbc_ap_ScheduledCellinTAI, ScheduledCellinTAI_sequence_of,
798
1
                                                  1, maxnoofCellinTAI, false);
799
800
1
  return offset;
801
1
}
802
803
804
static const per_sequence_t TAI_Broadcast_List_Item_sequence[] = {
805
  { &hf_sbc_ap_tAI          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
806
  { &hf_sbc_ap_scheduledCellinTAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI },
807
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
808
  { NULL, 0, 0, NULL }
809
};
810
811
static unsigned
812
1
dissect_sbc_ap_TAI_Broadcast_List_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
813
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
814
1
                                   ett_sbc_ap_TAI_Broadcast_List_Item, TAI_Broadcast_List_Item_sequence);
815
816
1
  return offset;
817
1
}
818
819
820
static const per_sequence_t TAI_Broadcast_List_sequence_of[1] = {
821
  { &hf_sbc_ap_TAI_Broadcast_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Broadcast_List_Item },
822
};
823
824
static unsigned
825
1
dissect_sbc_ap_TAI_Broadcast_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
826
1
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
827
1
                                                  ett_sbc_ap_TAI_Broadcast_List, TAI_Broadcast_List_sequence_of,
828
1
                                                  1, maxnoofTAIforWarning, false);
829
830
1
  return offset;
831
1
}
832
833
834
835
static unsigned
836
15
dissect_sbc_ap_Emergency_Area_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
837
15
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
838
15
                                       3, 3, false, NULL);
839
840
15
  return offset;
841
15
}
842
843
844
static const per_sequence_t ScheduledCellinEAI_Item_sequence[] = {
845
  { &hf_sbc_ap_eCGI         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
846
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
847
  { NULL, 0, 0, NULL }
848
};
849
850
static unsigned
851
27
dissect_sbc_ap_ScheduledCellinEAI_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
852
27
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
853
27
                                   ett_sbc_ap_ScheduledCellinEAI_Item, ScheduledCellinEAI_Item_sequence);
854
855
27
  return offset;
856
27
}
857
858
859
static const per_sequence_t ScheduledCellinEAI_sequence_of[1] = {
860
  { &hf_sbc_ap_ScheduledCellinEAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinEAI_Item },
861
};
862
863
static unsigned
864
14
dissect_sbc_ap_ScheduledCellinEAI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
865
14
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
866
14
                                                  ett_sbc_ap_ScheduledCellinEAI, ScheduledCellinEAI_sequence_of,
867
14
                                                  1, maxnoofCellinEAI, false);
868
869
14
  return offset;
870
14
}
871
872
873
static const per_sequence_t EmergencyAreaID_Broadcast_List_Item_sequence[] = {
874
  { &hf_sbc_ap_emergencyAreaID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
875
  { &hf_sbc_ap_scheduledCellinEAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinEAI },
876
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
877
  { NULL, 0, 0, NULL }
878
};
879
880
static unsigned
881
14
dissect_sbc_ap_EmergencyAreaID_Broadcast_List_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
882
14
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
883
14
                                   ett_sbc_ap_EmergencyAreaID_Broadcast_List_Item, EmergencyAreaID_Broadcast_List_Item_sequence);
884
885
14
  return offset;
886
14
}
887
888
889
static const per_sequence_t EmergencyAreaID_Broadcast_List_sequence_of[1] = {
890
  { &hf_sbc_ap_EmergencyAreaID_Broadcast_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EmergencyAreaID_Broadcast_List_Item },
891
};
892
893
static unsigned
894
7
dissect_sbc_ap_EmergencyAreaID_Broadcast_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
895
7
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
896
7
                                                  ett_sbc_ap_EmergencyAreaID_Broadcast_List, EmergencyAreaID_Broadcast_List_sequence_of,
897
7
                                                  1, maxnoofEmergencyAreaID, false);
898
899
7
  return offset;
900
7
}
901
902
903
static const per_sequence_t Broadcast_Scheduled_Area_List_sequence[] = {
904
  { &hf_sbc_ap_cellId_Broadcast_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_CellId_Broadcast_List },
905
  { &hf_sbc_ap_tAI_Broadcast_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_TAI_Broadcast_List },
906
  { &hf_sbc_ap_emergencyAreaID_Broadcast_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_EmergencyAreaID_Broadcast_List },
907
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
908
  { NULL, 0, 0, NULL }
909
};
910
911
static unsigned
912
14
dissect_sbc_ap_Broadcast_Scheduled_Area_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
913
14
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
914
14
                                   ett_sbc_ap_Broadcast_Scheduled_Area_List, Broadcast_Scheduled_Area_List_sequence);
915
916
14
  return offset;
917
14
}
918
919
920
921
static unsigned
922
0
dissect_sbc_ap_NRCellIdentity(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
923
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
924
0
                                     36, 36, false, NULL, 0, NULL, NULL);
925
926
0
  return offset;
927
0
}
928
929
930
static const per_sequence_t NR_CGI_sequence[] = {
931
  { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
932
  { &hf_sbc_ap_nRCellIdentity, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NRCellIdentity },
933
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
934
  { NULL, 0, 0, NULL }
935
};
936
937
static unsigned
938
0
dissect_sbc_ap_NR_CGI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
939
0
  struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
940
0
  sbc_ap_data->number_type = E212_NRCGI;
941
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
942
0
                                   ett_sbc_ap_NR_CGI, NR_CGI_sequence);
943
944
945
946
0
  return offset;
947
0
}
948
949
950
static const per_sequence_t CellId_Broadcast_List_5GS_item_sequence[] = {
951
  { &hf_sbc_ap_nR_CGI       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
952
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
953
  { NULL, 0, 0, NULL }
954
};
955
956
static unsigned
957
0
dissect_sbc_ap_CellId_Broadcast_List_5GS_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
958
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
959
0
                                   ett_sbc_ap_CellId_Broadcast_List_5GS_item, CellId_Broadcast_List_5GS_item_sequence);
960
961
0
  return offset;
962
0
}
963
964
965
static const per_sequence_t CellId_Broadcast_List_5GS_sequence_of[1] = {
966
  { &hf_sbc_ap_CellId_Broadcast_List_5GS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellId_Broadcast_List_5GS_item },
967
};
968
969
static unsigned
970
0
dissect_sbc_ap_CellId_Broadcast_List_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
971
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
972
0
                                                  ett_sbc_ap_CellId_Broadcast_List_5GS, CellId_Broadcast_List_5GS_sequence_of,
973
0
                                                  1, maxnoofCellsin5GS, false);
974
975
0
  return offset;
976
0
}
977
978
979
980
static unsigned
981
0
dissect_sbc_ap_TAC_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
982
0
  tvbuff_t *parameter_tvb = NULL;
983
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
984
0
                                       3, 3, false, &parameter_tvb);
985
986
0
  if (parameter_tvb) {
987
0
    actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 3, ENC_BIG_ENDIAN);
988
0
  }
989
990
991
992
0
  return offset;
993
0
}
994
995
996
static const per_sequence_t TAI_5GS_sequence[] = {
997
  { &hf_sbc_ap_pLMNidentity , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
998
  { &hf_sbc_ap_tAC_5GS      , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAC_5GS },
999
  { &hf_sbc_ap_iE_Extensions, ASN1_NO_EXTENSIONS     , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1000
  { NULL, 0, 0, NULL }
1001
};
1002
1003
static unsigned
1004
1
dissect_sbc_ap_TAI_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1005
1
  struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
1006
1
  sbc_ap_data->number_type = E212_5GSTAI;
1007
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1008
1
                                   ett_sbc_ap_TAI_5GS, TAI_5GS_sequence);
1009
1010
1011
1012
1
  return offset;
1013
1
}
1014
1015
1016
static const per_sequence_t ScheduledCellinTAI_5GS_item_sequence[] = {
1017
  { &hf_sbc_ap_nR_CGI       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1018
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1019
  { NULL, 0, 0, NULL }
1020
};
1021
1022
static unsigned
1023
0
dissect_sbc_ap_ScheduledCellinTAI_5GS_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1024
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1025
0
                                   ett_sbc_ap_ScheduledCellinTAI_5GS_item, ScheduledCellinTAI_5GS_item_sequence);
1026
1027
0
  return offset;
1028
0
}
1029
1030
1031
static const per_sequence_t ScheduledCellinTAI_5GS_sequence_of[1] = {
1032
  { &hf_sbc_ap_ScheduledCellinTAI_5GS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI_5GS_item },
1033
};
1034
1035
static unsigned
1036
0
dissect_sbc_ap_ScheduledCellinTAI_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1037
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1038
0
                                                  ett_sbc_ap_ScheduledCellinTAI_5GS, ScheduledCellinTAI_5GS_sequence_of,
1039
0
                                                  1, maxnoofCellsin5GSTAI, false);
1040
1041
0
  return offset;
1042
0
}
1043
1044
1045
static const per_sequence_t TAI_Broadcast_List_5GS_item_sequence[] = {
1046
  { &hf_sbc_ap_tAI_5GS      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1047
  { &hf_sbc_ap_scheduledCellinTAI_5GS, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI_5GS },
1048
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1049
  { NULL, 0, 0, NULL }
1050
};
1051
1052
static unsigned
1053
0
dissect_sbc_ap_TAI_Broadcast_List_5GS_item(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_sequence(tvb, offset, actx, tree, hf_index,
1055
0
                                   ett_sbc_ap_TAI_Broadcast_List_5GS_item, TAI_Broadcast_List_5GS_item_sequence);
1056
1057
0
  return offset;
1058
0
}
1059
1060
1061
static const per_sequence_t TAI_Broadcast_List_5GS_sequence_of[1] = {
1062
  { &hf_sbc_ap_TAI_Broadcast_List_5GS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Broadcast_List_5GS_item },
1063
};
1064
1065
static unsigned
1066
0
dissect_sbc_ap_TAI_Broadcast_List_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1067
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1068
0
                                                  ett_sbc_ap_TAI_Broadcast_List_5GS, TAI_Broadcast_List_5GS_sequence_of,
1069
0
                                                  1, maxnoof5GSTAIs, false);
1070
1071
0
  return offset;
1072
0
}
1073
1074
1075
static const per_sequence_t Broadcast_Scheduled_Area_List_5GS_sequence[] = {
1076
  { &hf_sbc_ap_cellId_Broadcast_List_5GS, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_CellId_Broadcast_List_5GS },
1077
  { &hf_sbc_ap_tAI_Broadcast_List_5GS, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_TAI_Broadcast_List_5GS },
1078
  { &hf_sbc_ap_emergencyAreaID_Broadcast_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_EmergencyAreaID_Broadcast_List },
1079
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1080
  { NULL, 0, 0, NULL }
1081
};
1082
1083
static unsigned
1084
0
dissect_sbc_ap_Broadcast_Scheduled_Area_List_5GS(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_sbc_ap_Broadcast_Scheduled_Area_List_5GS, Broadcast_Scheduled_Area_List_5GS_sequence);
1087
1088
0
  return offset;
1089
0
}
1090
1091
1092
1093
static unsigned
1094
0
dissect_sbc_ap_NumberOfBroadcasts(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1095
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1096
0
                                                            0U, 65535U, NULL, false);
1097
1098
0
  return offset;
1099
0
}
1100
1101
1102
static const per_sequence_t CellID_Cancelled_Item_sequence[] = {
1103
  { &hf_sbc_ap_eCGI         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1104
  { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1105
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1106
  { NULL, 0, 0, NULL }
1107
};
1108
1109
static unsigned
1110
0
dissect_sbc_ap_CellID_Cancelled_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1111
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1112
0
                                   ett_sbc_ap_CellID_Cancelled_Item, CellID_Cancelled_Item_sequence);
1113
1114
0
  return offset;
1115
0
}
1116
1117
1118
static const per_sequence_t CellID_Cancelled_List_sequence_of[1] = {
1119
  { &hf_sbc_ap_CellID_Cancelled_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellID_Cancelled_Item },
1120
};
1121
1122
static unsigned
1123
0
dissect_sbc_ap_CellID_Cancelled_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1124
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1125
0
                                                  ett_sbc_ap_CellID_Cancelled_List, CellID_Cancelled_List_sequence_of,
1126
0
                                                  1, maxnoofCellID, false);
1127
1128
0
  return offset;
1129
0
}
1130
1131
1132
static const per_sequence_t CancelledCellinTAI_Item_sequence[] = {
1133
  { &hf_sbc_ap_eCGI         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1134
  { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1135
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1136
  { NULL, 0, 0, NULL }
1137
};
1138
1139
static unsigned
1140
0
dissect_sbc_ap_CancelledCellinTAI_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1141
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1142
0
                                   ett_sbc_ap_CancelledCellinTAI_Item, CancelledCellinTAI_Item_sequence);
1143
1144
0
  return offset;
1145
0
}
1146
1147
1148
static const per_sequence_t CancelledCellinTAI_sequence_of[1] = {
1149
  { &hf_sbc_ap_CancelledCellinTAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI_Item },
1150
};
1151
1152
static unsigned
1153
0
dissect_sbc_ap_CancelledCellinTAI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1154
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1155
0
                                                  ett_sbc_ap_CancelledCellinTAI, CancelledCellinTAI_sequence_of,
1156
0
                                                  1, maxnoofCellinTAI, false);
1157
1158
0
  return offset;
1159
0
}
1160
1161
1162
static const per_sequence_t TAI_Cancelled_List_Item_sequence[] = {
1163
  { &hf_sbc_ap_tAI          , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
1164
  { &hf_sbc_ap_cancelledCellinTAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI },
1165
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1166
  { NULL, 0, 0, NULL }
1167
};
1168
1169
static unsigned
1170
0
dissect_sbc_ap_TAI_Cancelled_List_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1171
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1172
0
                                   ett_sbc_ap_TAI_Cancelled_List_Item, TAI_Cancelled_List_Item_sequence);
1173
1174
0
  return offset;
1175
0
}
1176
1177
1178
static const per_sequence_t TAI_Cancelled_List_sequence_of[1] = {
1179
  { &hf_sbc_ap_TAI_Cancelled_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Cancelled_List_Item },
1180
};
1181
1182
static unsigned
1183
0
dissect_sbc_ap_TAI_Cancelled_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1184
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1185
0
                                                  ett_sbc_ap_TAI_Cancelled_List, TAI_Cancelled_List_sequence_of,
1186
0
                                                  1, maxnoofTAIforWarning, false);
1187
1188
0
  return offset;
1189
0
}
1190
1191
1192
static const per_sequence_t CancelledCellinEAI_Item_sequence[] = {
1193
  { &hf_sbc_ap_eCGI         , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1194
  { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1195
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1196
  { NULL, 0, 0, NULL }
1197
};
1198
1199
static unsigned
1200
0
dissect_sbc_ap_CancelledCellinEAI_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1201
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1202
0
                                   ett_sbc_ap_CancelledCellinEAI_Item, CancelledCellinEAI_Item_sequence);
1203
1204
0
  return offset;
1205
0
}
1206
1207
1208
static const per_sequence_t CancelledCellinEAI_sequence_of[1] = {
1209
  { &hf_sbc_ap_CancelledCellinEAI_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinEAI_Item },
1210
};
1211
1212
static unsigned
1213
0
dissect_sbc_ap_CancelledCellinEAI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1214
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1215
0
                                                  ett_sbc_ap_CancelledCellinEAI, CancelledCellinEAI_sequence_of,
1216
0
                                                  1, maxnoofCellinEAI, false);
1217
1218
0
  return offset;
1219
0
}
1220
1221
1222
static const per_sequence_t EmergencyAreaID_Cancelled_Item_sequence[] = {
1223
  { &hf_sbc_ap_emergencyAreaID, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
1224
  { &hf_sbc_ap_cancelledCellinEAI, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinEAI },
1225
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1226
  { NULL, 0, 0, NULL }
1227
};
1228
1229
static unsigned
1230
0
dissect_sbc_ap_EmergencyAreaID_Cancelled_Item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1231
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1232
0
                                   ett_sbc_ap_EmergencyAreaID_Cancelled_Item, EmergencyAreaID_Cancelled_Item_sequence);
1233
1234
0
  return offset;
1235
0
}
1236
1237
1238
static const per_sequence_t EmergencyAreaID_Cancelled_List_sequence_of[1] = {
1239
  { &hf_sbc_ap_EmergencyAreaID_Cancelled_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EmergencyAreaID_Cancelled_Item },
1240
};
1241
1242
static unsigned
1243
0
dissect_sbc_ap_EmergencyAreaID_Cancelled_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1244
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1245
0
                                                  ett_sbc_ap_EmergencyAreaID_Cancelled_List, EmergencyAreaID_Cancelled_List_sequence_of,
1246
0
                                                  1, maxnoofEmergencyAreaID, false);
1247
1248
0
  return offset;
1249
0
}
1250
1251
1252
static const per_sequence_t Broadcast_Cancelled_Area_List_sequence[] = {
1253
  { &hf_sbc_ap_cellID_Cancelled_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_CellID_Cancelled_List },
1254
  { &hf_sbc_ap_tAI_Cancelled_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_TAI_Cancelled_List },
1255
  { &hf_sbc_ap_emergencyAreaID_Cancelled_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_EmergencyAreaID_Cancelled_List },
1256
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1257
  { NULL, 0, 0, NULL }
1258
};
1259
1260
static unsigned
1261
0
dissect_sbc_ap_Broadcast_Cancelled_Area_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1262
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1263
0
                                   ett_sbc_ap_Broadcast_Cancelled_Area_List, Broadcast_Cancelled_Area_List_sequence);
1264
1265
0
  return offset;
1266
0
}
1267
1268
1269
static const per_sequence_t CellID_Cancelled_List_5GS_item_sequence[] = {
1270
  { &hf_sbc_ap_nR_CGI       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1271
  { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1272
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1273
  { NULL, 0, 0, NULL }
1274
};
1275
1276
static unsigned
1277
0
dissect_sbc_ap_CellID_Cancelled_List_5GS_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1278
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1279
0
                                   ett_sbc_ap_CellID_Cancelled_List_5GS_item, CellID_Cancelled_List_5GS_item_sequence);
1280
1281
0
  return offset;
1282
0
}
1283
1284
1285
static const per_sequence_t CellID_Cancelled_List_5GS_sequence_of[1] = {
1286
  { &hf_sbc_ap_CellID_Cancelled_List_5GS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellID_Cancelled_List_5GS_item },
1287
};
1288
1289
static unsigned
1290
0
dissect_sbc_ap_CellID_Cancelled_List_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1291
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1292
0
                                                  ett_sbc_ap_CellID_Cancelled_List_5GS, CellID_Cancelled_List_5GS_sequence_of,
1293
0
                                                  1, maxnoofCellsin5GS, false);
1294
1295
0
  return offset;
1296
0
}
1297
1298
1299
static const per_sequence_t CancelledCellinTAI_5GS_item_sequence[] = {
1300
  { &hf_sbc_ap_nR_CGI       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1301
  { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1302
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1303
  { NULL, 0, 0, NULL }
1304
};
1305
1306
static unsigned
1307
0
dissect_sbc_ap_CancelledCellinTAI_5GS_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1308
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1309
0
                                   ett_sbc_ap_CancelledCellinTAI_5GS_item, CancelledCellinTAI_5GS_item_sequence);
1310
1311
0
  return offset;
1312
0
}
1313
1314
1315
static const per_sequence_t CancelledCellinTAI_5GS_sequence_of[1] = {
1316
  { &hf_sbc_ap_CancelledCellinTAI_5GS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI_5GS_item },
1317
};
1318
1319
static unsigned
1320
0
dissect_sbc_ap_CancelledCellinTAI_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1321
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1322
0
                                                  ett_sbc_ap_CancelledCellinTAI_5GS, CancelledCellinTAI_5GS_sequence_of,
1323
0
                                                  1, maxnoofCellsin5GSTAI, false);
1324
1325
0
  return offset;
1326
0
}
1327
1328
1329
static const per_sequence_t TAI_Cancelled_List_5GS_item_sequence[] = {
1330
  { &hf_sbc_ap_tAI_5GS      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1331
  { &hf_sbc_ap_cancelledCellinTAI_5GS, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI_5GS },
1332
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1333
  { NULL, 0, 0, NULL }
1334
};
1335
1336
static unsigned
1337
0
dissect_sbc_ap_TAI_Cancelled_List_5GS_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1338
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1339
0
                                   ett_sbc_ap_TAI_Cancelled_List_5GS_item, TAI_Cancelled_List_5GS_item_sequence);
1340
1341
0
  return offset;
1342
0
}
1343
1344
1345
static const per_sequence_t TAI_Cancelled_List_5GS_sequence_of[1] = {
1346
  { &hf_sbc_ap_TAI_Cancelled_List_5GS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Cancelled_List_5GS_item },
1347
};
1348
1349
static unsigned
1350
0
dissect_sbc_ap_TAI_Cancelled_List_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1351
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1352
0
                                                  ett_sbc_ap_TAI_Cancelled_List_5GS, TAI_Cancelled_List_5GS_sequence_of,
1353
0
                                                  1, maxnoof5GSTAIs, false);
1354
1355
0
  return offset;
1356
0
}
1357
1358
1359
static const per_sequence_t Broadcast_Cancelled_Area_List_5GS_sequence[] = {
1360
  { &hf_sbc_ap_cellID_Cancelled_List_5GS, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_CellID_Cancelled_List_5GS },
1361
  { &hf_sbc_ap_tAI_Cancelled_List_5GS, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_TAI_Cancelled_List_5GS },
1362
  { &hf_sbc_ap_emergencyAreaID_Cancelled_List, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_EmergencyAreaID_Cancelled_List },
1363
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1364
  { NULL, 0, 0, NULL }
1365
};
1366
1367
static unsigned
1368
0
dissect_sbc_ap_Broadcast_Cancelled_Area_List_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1369
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1370
0
                                   ett_sbc_ap_Broadcast_Cancelled_Area_List_5GS, Broadcast_Cancelled_Area_List_5GS_sequence);
1371
1372
0
  return offset;
1373
0
}
1374
1375
1376
1377
static unsigned
1378
5
dissect_sbc_ap_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_) {
1379
5
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1380
5
                                     20, 20, false, NULL, 0, NULL, NULL);
1381
1382
5
  return offset;
1383
5
}
1384
1385
1386
1387
static unsigned
1388
2
dissect_sbc_ap_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_) {
1389
2
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1390
2
                                     28, 28, false, NULL, 0, NULL, NULL);
1391
1392
2
  return offset;
1393
2
}
1394
1395
1396
1397
static unsigned
1398
0
dissect_sbc_ap_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_) {
1399
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1400
0
                                     18, 18, false, NULL, 0, NULL, NULL);
1401
1402
0
  return offset;
1403
0
}
1404
1405
1406
1407
static unsigned
1408
1
dissect_sbc_ap_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_) {
1409
1
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1410
1
                                     21, 21, false, NULL, 0, NULL, NULL);
1411
1412
1
  return offset;
1413
1
}
1414
1415
1416
static const value_string sbc_ap_ENB_ID_vals[] = {
1417
  {   0, "macroENB-ID" },
1418
  {   1, "homeENB-ID" },
1419
  {   2, "short-macroENB-ID" },
1420
  {   3, "long-macroENB-ID" },
1421
  { 0, NULL }
1422
};
1423
1424
static const per_choice_t ENB_ID_choice[] = {
1425
  {   0, &hf_sbc_ap_macroENB_ID  , ASN1_EXTENSION_ROOT    , dissect_sbc_ap_BIT_STRING_SIZE_20 },
1426
  {   1, &hf_sbc_ap_homeENB_ID   , ASN1_EXTENSION_ROOT    , dissect_sbc_ap_BIT_STRING_SIZE_28 },
1427
  {   2, &hf_sbc_ap_short_macroENB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_sbc_ap_BIT_STRING_SIZE_18 },
1428
  {   3, &hf_sbc_ap_long_macroENB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_sbc_ap_BIT_STRING_SIZE_21 },
1429
  { 0, NULL, 0, NULL }
1430
};
1431
1432
static unsigned
1433
8
dissect_sbc_ap_ENB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1434
8
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1435
8
                                 ett_sbc_ap_ENB_ID, ENB_ID_choice,
1436
8
                                 NULL);
1437
1438
8
  return offset;
1439
8
}
1440
1441
1442
static const per_sequence_t Global_ENB_ID_sequence[] = {
1443
  { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
1444
  { &hf_sbc_ap_eNB_ID       , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ENB_ID },
1445
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1446
  { NULL, 0, 0, NULL }
1447
};
1448
1449
static unsigned
1450
8
dissect_sbc_ap_Global_ENB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1451
8
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1452
8
                                   ett_sbc_ap_Global_ENB_ID, Global_ENB_ID_sequence);
1453
1454
8
  return offset;
1455
8
}
1456
1457
1458
static const per_sequence_t Broadcast_Empty_Area_List_sequence_of[1] = {
1459
  { &hf_sbc_ap_Broadcast_Empty_Area_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Global_ENB_ID },
1460
};
1461
1462
static unsigned
1463
2
dissect_sbc_ap_Broadcast_Empty_Area_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1464
2
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1465
2
                                                  ett_sbc_ap_Broadcast_Empty_Area_List, Broadcast_Empty_Area_List_sequence_of,
1466
2
                                                  1, maxnoofeNBIds, false);
1467
1468
2
  return offset;
1469
2
}
1470
1471
1472
1473
static unsigned
1474
0
dissect_sbc_ap_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_) {
1475
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1476
0
                                     22, 32, false, NULL, 0, NULL, NULL);
1477
1478
0
  return offset;
1479
0
}
1480
1481
1482
static const value_string sbc_ap_GNB_ID_vals[] = {
1483
  {   0, "gNB-ID" },
1484
  { 0, NULL }
1485
};
1486
1487
static const per_choice_t GNB_ID_choice[] = {
1488
  {   0, &hf_sbc_ap_gNB_ID       , ASN1_EXTENSION_ROOT    , dissect_sbc_ap_BIT_STRING_SIZE_22_32 },
1489
  { 0, NULL, 0, NULL }
1490
};
1491
1492
static unsigned
1493
0
dissect_sbc_ap_GNB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1494
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1495
0
                                 ett_sbc_ap_GNB_ID, GNB_ID_choice,
1496
0
                                 NULL);
1497
1498
0
  return offset;
1499
0
}
1500
1501
1502
static const per_sequence_t Global_GNB_ID_sequence[] = {
1503
  { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
1504
  { &hf_sbc_ap_gnb_id_choice, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_GNB_ID },
1505
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1506
  { NULL, 0, 0, NULL }
1507
};
1508
1509
static unsigned
1510
0
dissect_sbc_ap_Global_GNB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1511
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1512
0
                                   ett_sbc_ap_Global_GNB_ID, Global_GNB_ID_sequence);
1513
1514
0
  return offset;
1515
0
}
1516
1517
1518
static const per_sequence_t Global_NgENB_ID_sequence[] = {
1519
  { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
1520
  { &hf_sbc_ap_ngENB_ID     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ENB_ID },
1521
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1522
  { NULL, 0, 0, NULL }
1523
};
1524
1525
static unsigned
1526
0
dissect_sbc_ap_Global_NgENB_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1527
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1528
0
                                   ett_sbc_ap_Global_NgENB_ID, Global_NgENB_ID_sequence);
1529
1530
0
  return offset;
1531
0
}
1532
1533
1534
static const value_string sbc_ap_Global_RAN_Node_ID_vals[] = {
1535
  {   0, "global-GNB-ID" },
1536
  {   1, "global-NgENB-ID" },
1537
  { 0, NULL }
1538
};
1539
1540
static const per_choice_t Global_RAN_Node_ID_choice[] = {
1541
  {   0, &hf_sbc_ap_global_GNB_ID, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_Global_GNB_ID },
1542
  {   1, &hf_sbc_ap_global_NgENB_ID, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_Global_NgENB_ID },
1543
  { 0, NULL, 0, NULL }
1544
};
1545
1546
static unsigned
1547
0
dissect_sbc_ap_Global_RAN_Node_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1548
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1549
0
                                 ett_sbc_ap_Global_RAN_Node_ID, Global_RAN_Node_ID_choice,
1550
0
                                 NULL);
1551
1552
0
  return offset;
1553
0
}
1554
1555
1556
static const per_sequence_t Broadcast_Empty_Area_List_5GS_sequence_of[1] = {
1557
  { &hf_sbc_ap_Broadcast_Empty_Area_List_5GS_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Global_RAN_Node_ID },
1558
};
1559
1560
static unsigned
1561
0
dissect_sbc_ap_Broadcast_Empty_Area_List_5GS(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_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1563
0
                                                  ett_sbc_ap_Broadcast_Empty_Area_List_5GS, Broadcast_Empty_Area_List_5GS_sequence_of,
1564
0
                                                  1, maxnoofRANNodes, false);
1565
1566
0
  return offset;
1567
0
}
1568
1569
1570
static const value_string sbc_ap_Cause_vals[] = {
1571
  {   0, "message-accepted" },
1572
  {   1, "parameter-not-recognised" },
1573
  {   2, "parameter-value-invalid" },
1574
  {   3, "valid-message-not-identified" },
1575
  {   4, "tracking-area-not-valid" },
1576
  {   5, "unrecognised-message" },
1577
  {   6, "missing-mandatory-element" },
1578
  {   7, "mME-capacity-exceeded" },
1579
  {   8, "mME-memory-exceeded" },
1580
  {   9, "warning-broadcast-not-supported" },
1581
  {  10, "warning-broadcast-not-operational" },
1582
  {  11, "message-reference-already-used" },
1583
  {  12, "unspecifed-error" },
1584
  {  13, "transfer-syntax-error" },
1585
  {  14, "semantic-error" },
1586
  {  15, "message-not-compatible-with-receiver-state" },
1587
  {  16, "abstract-syntax-error-reject" },
1588
  {  17, "abstract-syntax-error-ignore-and-notify" },
1589
  {  18, "abstract-syntax-error-falsely-constructed-message" },
1590
  { 0, NULL }
1591
};
1592
1593
1594
static unsigned
1595
19
dissect_sbc_ap_Cause(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1596
19
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1597
19
                                                            0U, 255U, NULL, false);
1598
1599
19
  return offset;
1600
19
}
1601
1602
1603
static const value_string sbc_ap_Concurrent_Warning_Message_Indicator_vals[] = {
1604
  {   0, "true" },
1605
  { 0, NULL }
1606
};
1607
1608
1609
static unsigned
1610
0
dissect_sbc_ap_Concurrent_Warning_Message_Indicator(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1611
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1612
0
                                     1, NULL, false, 0, NULL);
1613
1614
0
  return offset;
1615
0
}
1616
1617
1618
static const value_string sbc_ap_TypeOfError_vals[] = {
1619
  {   0, "not-understood" },
1620
  {   1, "missing" },
1621
  { 0, NULL }
1622
};
1623
1624
1625
static unsigned
1626
15
dissect_sbc_ap_TypeOfError(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1627
15
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1628
15
                                     2, NULL, true, 0, NULL);
1629
1630
15
  return offset;
1631
15
}
1632
1633
1634
static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
1635
  { &hf_sbc_ap_iECriticality, ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
1636
  { &hf_sbc_ap_iE_ID        , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_ID },
1637
  { &hf_sbc_ap_typeOfError  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TypeOfError },
1638
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1639
  { NULL, 0, 0, NULL }
1640
};
1641
1642
static unsigned
1643
15
dissect_sbc_ap_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1644
15
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1645
15
                                   ett_sbc_ap_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
1646
1647
15
  return offset;
1648
15
}
1649
1650
1651
static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
1652
  { &hf_sbc_ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CriticalityDiagnostics_IE_List_item },
1653
};
1654
1655
static unsigned
1656
6
dissect_sbc_ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1657
6
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1658
6
                                                  ett_sbc_ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
1659
6
                                                  1, maxNrOfErrors, false);
1660
1661
6
  return offset;
1662
6
}
1663
1664
1665
static const per_sequence_t Criticality_Diagnostics_sequence[] = {
1666
  { &hf_sbc_ap_procedureCode, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProcedureCode },
1667
  { &hf_sbc_ap_triggeringMessage, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_TriggeringMessage },
1668
  { &hf_sbc_ap_procedureCriticality, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_Criticality },
1669
  { &hf_sbc_ap_iE_CriticalityDiagnostics, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_CriticalityDiagnostics_IE_List },
1670
  { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
1671
  { NULL, 0, 0, NULL }
1672
};
1673
1674
static unsigned
1675
8
dissect_sbc_ap_Criticality_Diagnostics(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1676
8
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1677
8
                                   ett_sbc_ap_Criticality_Diagnostics, Criticality_Diagnostics_sequence);
1678
1679
8
  return offset;
1680
8
}
1681
1682
1683
1684
static unsigned
1685
5
dissect_sbc_ap_Data_Coding_Scheme(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1686
5
  tvbuff_t *parameter_tvb = NULL;
1687
5
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1688
5
                                     8, 8, false, NULL, 0, &parameter_tvb, NULL);
1689
1690
5
  if (parameter_tvb) {
1691
5
    struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
1692
5
    proto_tree *subtree;
1693
1694
5
    subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Data_Coding_Scheme);
1695
5
    sbc_ap_data->data_coding_scheme = dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree, 0);
1696
5
  }
1697
1698
1699
5
  return offset;
1700
5
}
1701
1702
1703
static const per_sequence_t ECGIList_sequence_of[1] = {
1704
  { &hf_sbc_ap_ECGIList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1705
};
1706
1707
static unsigned
1708
2
dissect_sbc_ap_ECGIList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1709
2
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1710
2
                                                  ett_sbc_ap_ECGIList, ECGIList_sequence_of,
1711
2
                                                  1, maxnoofCellID, false);
1712
1713
2
  return offset;
1714
2
}
1715
1716
1717
static const per_sequence_t Emergency_Area_ID_List_sequence_of[1] = {
1718
  { &hf_sbc_ap_Emergency_Area_ID_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
1719
};
1720
1721
static unsigned
1722
0
dissect_sbc_ap_Emergency_Area_ID_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1723
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1724
0
                                                  ett_sbc_ap_Emergency_Area_ID_List, Emergency_Area_ID_List_sequence_of,
1725
0
                                                  1, maxnoofEmergencyAreaID, false);
1726
1727
0
  return offset;
1728
0
}
1729
1730
1731
1732
static unsigned
1733
4
dissect_sbc_ap_Extended_Repetition_Period(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1734
4
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1735
4
                                                            4096U, 131071U, NULL, false);
1736
1737
4
  return offset;
1738
4
}
1739
1740
1741
static const per_sequence_t Failed_Cell_List_sequence_of[1] = {
1742
  { &hf_sbc_ap_Failed_Cell_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1743
};
1744
1745
static unsigned
1746
3
dissect_sbc_ap_Failed_Cell_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1747
3
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1748
3
                                                  ett_sbc_ap_Failed_Cell_List, Failed_Cell_List_sequence_of,
1749
3
                                                  1, maxnoofFailedCells, false);
1750
1751
3
  return offset;
1752
3
}
1753
1754
1755
static const per_sequence_t Failed_Cell_List_NR_sequence_of[1] = {
1756
  { &hf_sbc_ap_Failed_Cell_List_NR_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1757
};
1758
1759
static unsigned
1760
0
dissect_sbc_ap_Failed_Cell_List_NR(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_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1762
0
                                                  ett_sbc_ap_Failed_Cell_List_NR, Failed_Cell_List_NR_sequence_of,
1763
0
                                                  1, maxnoofCellsingNB, false);
1764
1765
0
  return offset;
1766
0
}
1767
1768
1769
static const per_sequence_t List_of_TAIs_item_sequence[] = {
1770
  { &hf_sbc_ap_tai          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
1771
  { NULL, 0, 0, NULL }
1772
};
1773
1774
static unsigned
1775
161
dissect_sbc_ap_List_of_TAIs_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1776
161
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1777
161
                                   ett_sbc_ap_List_of_TAIs_item, List_of_TAIs_item_sequence);
1778
1779
161
  return offset;
1780
161
}
1781
1782
1783
static const per_sequence_t List_of_TAIs_sequence_of[1] = {
1784
  { &hf_sbc_ap_List_of_TAIs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_List_of_TAIs_item },
1785
};
1786
1787
static unsigned
1788
20
dissect_sbc_ap_List_of_TAIs(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1789
20
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1790
20
                                                  ett_sbc_ap_List_of_TAIs, List_of_TAIs_sequence_of,
1791
20
                                                  1, maxNrOfTAIs, false);
1792
1793
20
  return offset;
1794
20
}
1795
1796
1797
static const per_sequence_t List_of_TAIs_Restart_item_sequence[] = {
1798
  { &hf_sbc_ap_tai          , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
1799
  { NULL, 0, 0, NULL }
1800
};
1801
1802
static unsigned
1803
6
dissect_sbc_ap_List_of_TAIs_Restart_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1804
6
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1805
6
                                   ett_sbc_ap_List_of_TAIs_Restart_item, List_of_TAIs_Restart_item_sequence);
1806
1807
6
  return offset;
1808
6
}
1809
1810
1811
static const per_sequence_t List_of_TAIs_Restart_sequence_of[1] = {
1812
  { &hf_sbc_ap_List_of_TAIs_Restart_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_List_of_TAIs_Restart_item },
1813
};
1814
1815
static unsigned
1816
2
dissect_sbc_ap_List_of_TAIs_Restart(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1817
2
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1818
2
                                                  ett_sbc_ap_List_of_TAIs_Restart, List_of_TAIs_Restart_sequence_of,
1819
2
                                                  1, maxnoofRestartTAIs, false);
1820
1821
2
  return offset;
1822
2
}
1823
1824
1825
static const per_sequence_t List_of_EAIs_Restart_sequence_of[1] = {
1826
  { &hf_sbc_ap_List_of_EAIs_Restart_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
1827
};
1828
1829
static unsigned
1830
1
dissect_sbc_ap_List_of_EAIs_Restart(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1831
1
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1832
1
                                                  ett_sbc_ap_List_of_EAIs_Restart, List_of_EAIs_Restart_sequence_of,
1833
1
                                                  1, maxnoofRestartEAIs, false);
1834
1835
1
  return offset;
1836
1
}
1837
1838
1839
static const per_sequence_t List_of_5GS_TAIs_sequence_of[1] = {
1840
  { &hf_sbc_ap_List_of_5GS_TAIs_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1841
};
1842
1843
static unsigned
1844
0
dissect_sbc_ap_List_of_5GS_TAIs(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1845
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1846
0
                                                  ett_sbc_ap_List_of_5GS_TAIs, List_of_5GS_TAIs_sequence_of,
1847
0
                                                  1, maxnoof5GSTAIs, false);
1848
1849
0
  return offset;
1850
0
}
1851
1852
1853
static const per_sequence_t List_of_5GS_TAI_for_Restart_sequence_of[1] = {
1854
  { &hf_sbc_ap_List_of_5GS_TAI_for_Restart_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1855
};
1856
1857
static unsigned
1858
0
dissect_sbc_ap_List_of_5GS_TAI_for_Restart(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1859
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1860
0
                                                  ett_sbc_ap_List_of_5GS_TAI_for_Restart, List_of_5GS_TAI_for_Restart_sequence_of,
1861
0
                                                  1, maxnoofRestart5GSTAIs, false);
1862
1863
0
  return offset;
1864
0
}
1865
1866
1867
1868
static unsigned
1869
4
dissect_sbc_ap_Message_Identifier(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1870
4
  tvbuff_t *parameter_tvb = NULL;
1871
4
  offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
1872
4
                                     16, 16, false, NULL, 0, &parameter_tvb, NULL);
1873
1874
4
  if (parameter_tvb) {
1875
3
    actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
1876
3
  }
1877
1878
1879
4
  return offset;
1880
4
}
1881
1882
1883
1884
static unsigned
1885
0
dissect_sbc_ap_Number_of_Broadcasts_Requested(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1886
0
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1887
0
                                                            0U, 65535U, NULL, false);
1888
1889
0
  return offset;
1890
0
}
1891
1892
1893
static const per_sequence_t NR_CGIList_sequence_of[1] = {
1894
  { &hf_sbc_ap_NR_CGIList_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1895
};
1896
1897
static unsigned
1898
0
dissect_sbc_ap_NR_CGIList(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1899
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1900
0
                                                  ett_sbc_ap_NR_CGIList, NR_CGIList_sequence_of,
1901
0
                                                  1, maxnoofCellsingNB, false);
1902
1903
0
  return offset;
1904
0
}
1905
1906
1907
1908
static unsigned
1909
0
dissect_sbc_ap_Omc_Id(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1910
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1911
0
                                       1, 20, false, NULL);
1912
1913
0
  return offset;
1914
0
}
1915
1916
1917
1918
static unsigned
1919
1
dissect_sbc_ap_Repetition_Period(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1920
1
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1921
1
                                                            0U, 4096U, NULL, false);
1922
1923
1
  return offset;
1924
1
}
1925
1926
1927
static const per_sequence_t Restarted_Cell_List_sequence_of[1] = {
1928
  { &hf_sbc_ap_Restarted_Cell_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1929
};
1930
1931
static unsigned
1932
1
dissect_sbc_ap_Restarted_Cell_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1933
1
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1934
1
                                                  ett_sbc_ap_Restarted_Cell_List, Restarted_Cell_List_sequence_of,
1935
1
                                                  1, maxnoofRestartedCells, false);
1936
1937
1
  return offset;
1938
1
}
1939
1940
1941
static const value_string sbc_ap_RAT_Selector_5GS_vals[] = {
1942
  {   0, "true" },
1943
  { 0, NULL }
1944
};
1945
1946
1947
static unsigned
1948
0
dissect_sbc_ap_RAT_Selector_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1949
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1950
0
                                     1, NULL, false, 0, NULL);
1951
1952
0
  return offset;
1953
0
}
1954
1955
1956
static const per_sequence_t Restarted_Cell_List_NR_sequence_of[1] = {
1957
  { &hf_sbc_ap_Restarted_Cell_List_NR_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1958
};
1959
1960
static unsigned
1961
0
dissect_sbc_ap_Restarted_Cell_List_NR(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1962
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1963
0
                                                  ett_sbc_ap_Restarted_Cell_List_NR, Restarted_Cell_List_NR_sequence_of,
1964
0
                                                  1, maxnoofCellsforRestartNR, false);
1965
1966
0
  return offset;
1967
0
}
1968
1969
1970
static const value_string sbc_ap_Send_Write_Replace_Warning_Indication_vals[] = {
1971
  {   0, "true" },
1972
  { 0, NULL }
1973
};
1974
1975
1976
static unsigned
1977
5
dissect_sbc_ap_Send_Write_Replace_Warning_Indication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1978
5
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1979
5
                                     1, NULL, false, 0, NULL);
1980
1981
5
  return offset;
1982
5
}
1983
1984
1985
static const value_string sbc_ap_Send_Stop_Warning_Indication_vals[] = {
1986
  {   0, "true" },
1987
  { 0, NULL }
1988
};
1989
1990
1991
static unsigned
1992
0
dissect_sbc_ap_Send_Stop_Warning_Indication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1993
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1994
0
                                     1, NULL, false, 0, NULL);
1995
1996
0
  return offset;
1997
0
}
1998
1999
2000
2001
static unsigned
2002
4
dissect_sbc_ap_Serial_Number(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2003
4
  tvbuff_t *parameter_tvb = NULL;
2004
4
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
2005
4
                                     16, 16, false, NULL, 0, &parameter_tvb, NULL);
2006
2007
4
  if (parameter_tvb) {
2008
2
    proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Serial_Number);
2009
2
    proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_gs, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2010
2
    proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_msg_code, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2011
2
    proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_upd_nb, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2012
2
  }
2013
2014
2015
4
  return offset;
2016
4
}
2017
2018
2019
static const value_string sbc_ap_Stop_All_Indicator_vals[] = {
2020
  {   0, "true" },
2021
  { 0, NULL }
2022
};
2023
2024
2025
static unsigned
2026
0
dissect_sbc_ap_Stop_All_Indicator(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2027
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2028
0
                                     1, NULL, false, 0, NULL);
2029
2030
0
  return offset;
2031
0
}
2032
2033
2034
static const per_sequence_t TAI_List_for_Warning_sequence_of[1] = {
2035
  { &hf_sbc_ap_TAI_List_for_Warning_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
2036
};
2037
2038
static unsigned
2039
0
dissect_sbc_ap_TAI_List_for_Warning(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2040
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2041
0
                                                  ett_sbc_ap_TAI_List_for_Warning, TAI_List_for_Warning_sequence_of,
2042
0
                                                  1, maxnoofTAIforWarning, false);
2043
2044
0
  return offset;
2045
0
}
2046
2047
2048
static const per_sequence_t Unknown_5GS_Tracking_Area_List_sequence_of[1] = {
2049
  { &hf_sbc_ap_Unknown_5GS_Tracking_Area_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
2050
};
2051
2052
static unsigned
2053
0
dissect_sbc_ap_Unknown_5GS_Tracking_Area_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2054
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2055
0
                                                  ett_sbc_ap_Unknown_5GS_Tracking_Area_List, Unknown_5GS_Tracking_Area_List_sequence_of,
2056
0
                                                  1, maxnoof5GSTAIs, false);
2057
2058
0
  return offset;
2059
0
}
2060
2061
2062
static const value_string sbc_ap_Warning_Area_List_vals[] = {
2063
  {   0, "cell-ID-List" },
2064
  {   1, "tracking-Area-List-for-Warning" },
2065
  {   2, "emergency-Area-ID-List" },
2066
  { 0, NULL }
2067
};
2068
2069
static const per_choice_t Warning_Area_List_choice[] = {
2070
  {   0, &hf_sbc_ap_cell_ID_List , ASN1_EXTENSION_ROOT    , dissect_sbc_ap_ECGIList },
2071
  {   1, &hf_sbc_ap_tracking_Area_List_for_Warning, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_TAI_List_for_Warning },
2072
  {   2, &hf_sbc_ap_emergency_Area_ID_List, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_Emergency_Area_ID_List },
2073
  { 0, NULL, 0, NULL }
2074
};
2075
2076
static unsigned
2077
2
dissect_sbc_ap_Warning_Area_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2078
2
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2079
2
                                 ett_sbc_ap_Warning_Area_List, Warning_Area_List_choice,
2080
2
                                 NULL);
2081
2082
2
  return offset;
2083
2
}
2084
2085
2086
2087
static unsigned
2088
3
dissect_sbc_ap_Warning_Message_Content(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2089
3
  tvbuff_t *parameter_tvb = NULL;
2090
3
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2091
3
                                       1, 9600, false, &parameter_tvb);
2092
2093
3
  if (parameter_tvb) {
2094
0
    struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
2095
0
    proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Message_Contents);
2096
0
    dissect_s1ap_warningMessageContents(parameter_tvb, subtree, actx->pinfo, sbc_ap_data->data_coding_scheme, hf_sbc_ap_Warning_Message_Contents_nb_pages, hf_sbc_ap_Warning_Message_Contents_decoded_page);
2097
0
  }
2098
2099
2100
2101
3
  return offset;
2102
3
}
2103
2104
2105
2106
static unsigned
2107
3
dissect_sbc_ap_Warning_Area_Coordinates(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2108
3
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2109
3
                                       1, 1024, false, NULL);
2110
2111
3
  return offset;
2112
3
}
2113
2114
2115
2116
static unsigned
2117
2
dissect_sbc_ap_Warning_Security_Information(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2118
2
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2119
2
                                       50, 50, false, NULL);
2120
2121
2
  return offset;
2122
2
}
2123
2124
2125
2126
static unsigned
2127
2
dissect_sbc_ap_Warning_Type(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2128
2
  tvbuff_t *parameter_tvb = NULL;
2129
2
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2130
2
                                       2, 2, false, &parameter_tvb);
2131
2132
2
  if (parameter_tvb) {
2133
2
    proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Type);
2134
2
    proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_value, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2135
2
    proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_emergency_user_alert, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2136
2
    proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_popup, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2137
2
  }
2138
2139
2140
2141
2
  return offset;
2142
2
}
2143
2144
2145
static const value_string sbc_ap_Warning_Area_List_5GS_vals[] = {
2146
  {   0, "cell-ID-List" },
2147
  {   1, "nR-CGIList" },
2148
  {   2, "tAIList-5GS" },
2149
  {   3, "emergencyAreaIDList" },
2150
  { 0, NULL }
2151
};
2152
2153
static const per_choice_t Warning_Area_List_5GS_choice[] = {
2154
  {   0, &hf_sbc_ap_cell_ID_List , ASN1_EXTENSION_ROOT    , dissect_sbc_ap_ECGIList },
2155
  {   1, &hf_sbc_ap_nR_CGIList   , ASN1_EXTENSION_ROOT    , dissect_sbc_ap_NR_CGIList },
2156
  {   2, &hf_sbc_ap_tAIList_5GS  , ASN1_EXTENSION_ROOT    , dissect_sbc_ap_TAI_5GS },
2157
  {   3, &hf_sbc_ap_emergencyAreaIDList, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_Emergency_Area_ID_List },
2158
  { 0, NULL, 0, NULL }
2159
};
2160
2161
static unsigned
2162
1
dissect_sbc_ap_Warning_Area_List_5GS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2163
1
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2164
1
                                 ett_sbc_ap_Warning_Area_List_5GS, Warning_Area_List_5GS_choice,
2165
1
                                 NULL);
2166
2167
1
  return offset;
2168
1
}
2169
2170
2171
static const per_sequence_t Write_Replace_Warning_Request_sequence[] = {
2172
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2173
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2174
  { NULL, 0, 0, NULL }
2175
};
2176
2177
static unsigned
2178
16
dissect_sbc_ap_Write_Replace_Warning_Request(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2179
16
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Request");
2180
16
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2181
16
                                   ett_sbc_ap_Write_Replace_Warning_Request, Write_Replace_Warning_Request_sequence);
2182
2183
16
  return offset;
2184
16
}
2185
2186
2187
static const per_sequence_t Write_Replace_Warning_Response_sequence[] = {
2188
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2189
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2190
  { NULL, 0, 0, NULL }
2191
};
2192
2193
static unsigned
2194
7
dissect_sbc_ap_Write_Replace_Warning_Response(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2195
7
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Response");
2196
7
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2197
7
                                   ett_sbc_ap_Write_Replace_Warning_Response, Write_Replace_Warning_Response_sequence);
2198
2199
7
  return offset;
2200
7
}
2201
2202
2203
static const per_sequence_t Stop_Warning_Request_sequence[] = {
2204
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2205
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2206
  { NULL, 0, 0, NULL }
2207
};
2208
2209
static unsigned
2210
16
dissect_sbc_ap_Stop_Warning_Request(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2211
16
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Request");
2212
16
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2213
16
                                   ett_sbc_ap_Stop_Warning_Request, Stop_Warning_Request_sequence);
2214
2215
16
  return offset;
2216
16
}
2217
2218
2219
static const per_sequence_t Stop_Warning_Response_sequence[] = {
2220
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2221
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2222
  { NULL, 0, 0, NULL }
2223
};
2224
2225
static unsigned
2226
3
dissect_sbc_ap_Stop_Warning_Response(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2227
3
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Response");
2228
3
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2229
3
                                   ett_sbc_ap_Stop_Warning_Response, Stop_Warning_Response_sequence);
2230
2231
3
  return offset;
2232
3
}
2233
2234
2235
static const per_sequence_t Write_Replace_Warning_Indication_sequence[] = {
2236
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2237
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2238
  { NULL, 0, 0, NULL }
2239
};
2240
2241
static unsigned
2242
0
dissect_sbc_ap_Write_Replace_Warning_Indication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2243
0
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Indication");
2244
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2245
0
                                   ett_sbc_ap_Write_Replace_Warning_Indication, Write_Replace_Warning_Indication_sequence);
2246
2247
0
  return offset;
2248
0
}
2249
2250
2251
static const per_sequence_t Stop_Warning_Indication_sequence[] = {
2252
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2253
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2254
  { NULL, 0, 0, NULL }
2255
};
2256
2257
static unsigned
2258
18
dissect_sbc_ap_Stop_Warning_Indication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2259
18
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Indication");
2260
18
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2261
18
                                   ett_sbc_ap_Stop_Warning_Indication, Stop_Warning_Indication_sequence);
2262
2263
18
  return offset;
2264
18
}
2265
2266
2267
static const per_sequence_t PWS_Restart_Indication_sequence[] = {
2268
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2269
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2270
  { NULL, 0, 0, NULL }
2271
};
2272
2273
static unsigned
2274
0
dissect_sbc_ap_PWS_Restart_Indication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2275
0
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Restart-Indication");
2276
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2277
0
                                   ett_sbc_ap_PWS_Restart_Indication, PWS_Restart_Indication_sequence);
2278
2279
0
  return offset;
2280
0
}
2281
2282
2283
static const per_sequence_t PWS_Failure_Indication_sequence[] = {
2284
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2285
  { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_sbc_ap_ProtocolExtensionContainer },
2286
  { NULL, 0, 0, NULL }
2287
};
2288
2289
static unsigned
2290
1
dissect_sbc_ap_PWS_Failure_Indication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2291
1
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Failure-Indication");
2292
2293
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2294
1
                                   ett_sbc_ap_PWS_Failure_Indication, PWS_Failure_Indication_sequence);
2295
2296
1
  return offset;
2297
1
}
2298
2299
2300
static const per_sequence_t Error_Indication_sequence[] = {
2301
  { &hf_sbc_ap_protocolIEs  , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2302
  { NULL, 0, 0, NULL }
2303
};
2304
2305
static unsigned
2306
12
dissect_sbc_ap_Error_Indication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2307
12
  col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Error-Indication");
2308
12
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2309
12
                                   ett_sbc_ap_Error_Indication, Error_Indication_sequence);
2310
2311
12
  return offset;
2312
12
}
2313
2314
2315
2316
static unsigned
2317
65
dissect_sbc_ap_InitiatingMessage_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2318
  // InitiatingMessage/value -> InitiatingMessage/value
2319
65
  increment_dissection_depth_by_n(actx->pinfo, 1);
2320
65
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
2321
2322
65
  decrement_dissection_depth_by_n(actx->pinfo, 1);
2323
65
  return offset;
2324
65
}
2325
2326
2327
static const per_sequence_t InitiatingMessage_sequence[] = {
2328
  { &hf_sbc_ap_procedureCode, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProcedureCode },
2329
  { &hf_sbc_ap_criticality  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
2330
  { &hf_sbc_ap_initiatingMessagevalue, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_InitiatingMessage_value },
2331
  { NULL, 0, 0, NULL }
2332
};
2333
2334
static unsigned
2335
65
dissect_sbc_ap_InitiatingMessage(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2336
65
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2337
65
                                   ett_sbc_ap_InitiatingMessage, InitiatingMessage_sequence);
2338
2339
65
  return offset;
2340
65
}
2341
2342
2343
2344
static unsigned
2345
12
dissect_sbc_ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2346
  // SuccessfulOutcome/value -> SuccessfulOutcome/value
2347
12
  increment_dissection_depth_by_n(actx->pinfo, 1);
2348
12
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
2349
2350
12
  decrement_dissection_depth_by_n(actx->pinfo, 1);
2351
12
  return offset;
2352
12
}
2353
2354
2355
static const per_sequence_t SuccessfulOutcome_sequence[] = {
2356
  { &hf_sbc_ap_procedureCode, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProcedureCode },
2357
  { &hf_sbc_ap_criticality  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
2358
  { &hf_sbc_ap_successfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_SuccessfulOutcome_value },
2359
  { NULL, 0, 0, NULL }
2360
};
2361
2362
static unsigned
2363
12
dissect_sbc_ap_SuccessfulOutcome(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2364
12
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2365
12
                                   ett_sbc_ap_SuccessfulOutcome, SuccessfulOutcome_sequence);
2366
2367
12
  return offset;
2368
12
}
2369
2370
2371
2372
static unsigned
2373
1
dissect_sbc_ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2374
  // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value
2375
1
  increment_dissection_depth_by_n(actx->pinfo, 1);
2376
1
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
2377
2378
1
  decrement_dissection_depth_by_n(actx->pinfo, 1);
2379
1
  return offset;
2380
1
}
2381
2382
2383
static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
2384
  { &hf_sbc_ap_procedureCode, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProcedureCode },
2385
  { &hf_sbc_ap_criticality  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
2386
  { &hf_sbc_ap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_sbc_ap_UnsuccessfulOutcome_value },
2387
  { NULL, 0, 0, NULL }
2388
};
2389
2390
static unsigned
2391
1
dissect_sbc_ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2392
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2393
1
                                   ett_sbc_ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
2394
2395
1
  return offset;
2396
1
}
2397
2398
2399
static const value_string sbc_ap_SBC_AP_PDU_vals[] = {
2400
  {   0, "initiatingMessage" },
2401
  {   1, "successfulOutcome" },
2402
  {   2, "unsuccessfulOutcome" },
2403
  { 0, NULL }
2404
};
2405
2406
static const per_choice_t SBC_AP_PDU_choice[] = {
2407
  {   0, &hf_sbc_ap_initiatingMessage, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_InitiatingMessage },
2408
  {   1, &hf_sbc_ap_successfulOutcome, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_SuccessfulOutcome },
2409
  {   2, &hf_sbc_ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT    , dissect_sbc_ap_UnsuccessfulOutcome },
2410
  { 0, NULL, 0, NULL }
2411
};
2412
2413
static unsigned
2414
78
dissect_sbc_ap_SBC_AP_PDU(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2415
78
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2416
78
                                 ett_sbc_ap_SBC_AP_PDU, SBC_AP_PDU_choice,
2417
78
                                 NULL);
2418
2419
78
  return offset;
2420
78
}
2421
2422
/*--- PDUs ---*/
2423
2424
14
static int dissect_Broadcast_Scheduled_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2425
14
  unsigned offset = 0;
2426
14
  asn1_ctx_t asn1_ctx;
2427
14
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2428
14
  offset = dissect_sbc_ap_Broadcast_Scheduled_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Scheduled_Area_List_PDU);
2429
14
  offset += 7; offset >>= 3;
2430
14
  return offset;
2431
14
}
2432
0
static int dissect_Broadcast_Scheduled_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2433
0
  unsigned offset = 0;
2434
0
  asn1_ctx_t asn1_ctx;
2435
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2436
0
  offset = dissect_sbc_ap_Broadcast_Scheduled_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Scheduled_Area_List_5GS_PDU);
2437
0
  offset += 7; offset >>= 3;
2438
0
  return offset;
2439
0
}
2440
0
static int dissect_Broadcast_Cancelled_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2441
0
  unsigned offset = 0;
2442
0
  asn1_ctx_t asn1_ctx;
2443
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2444
0
  offset = dissect_sbc_ap_Broadcast_Cancelled_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Cancelled_Area_List_PDU);
2445
0
  offset += 7; offset >>= 3;
2446
0
  return offset;
2447
0
}
2448
0
static int dissect_Broadcast_Cancelled_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2449
0
  unsigned offset = 0;
2450
0
  asn1_ctx_t asn1_ctx;
2451
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2452
0
  offset = dissect_sbc_ap_Broadcast_Cancelled_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Cancelled_Area_List_5GS_PDU);
2453
0
  offset += 7; offset >>= 3;
2454
0
  return offset;
2455
0
}
2456
2
static int dissect_Broadcast_Empty_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2457
2
  unsigned offset = 0;
2458
2
  asn1_ctx_t asn1_ctx;
2459
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2460
2
  offset = dissect_sbc_ap_Broadcast_Empty_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Empty_Area_List_PDU);
2461
2
  offset += 7; offset >>= 3;
2462
2
  return offset;
2463
2
}
2464
0
static int dissect_Broadcast_Empty_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2465
0
  unsigned offset = 0;
2466
0
  asn1_ctx_t asn1_ctx;
2467
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2468
0
  offset = dissect_sbc_ap_Broadcast_Empty_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Empty_Area_List_5GS_PDU);
2469
0
  offset += 7; offset >>= 3;
2470
0
  return offset;
2471
0
}
2472
19
static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2473
19
  unsigned offset = 0;
2474
19
  asn1_ctx_t asn1_ctx;
2475
19
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2476
19
  offset = dissect_sbc_ap_Cause(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Cause_PDU);
2477
19
  offset += 7; offset >>= 3;
2478
19
  return offset;
2479
19
}
2480
0
static int dissect_Concurrent_Warning_Message_Indicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2481
0
  unsigned offset = 0;
2482
0
  asn1_ctx_t asn1_ctx;
2483
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2484
0
  offset = dissect_sbc_ap_Concurrent_Warning_Message_Indicator(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Concurrent_Warning_Message_Indicator_PDU);
2485
0
  offset += 7; offset >>= 3;
2486
0
  return offset;
2487
0
}
2488
8
static int dissect_Criticality_Diagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2489
8
  unsigned offset = 0;
2490
8
  asn1_ctx_t asn1_ctx;
2491
8
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2492
8
  offset = dissect_sbc_ap_Criticality_Diagnostics(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Criticality_Diagnostics_PDU);
2493
8
  offset += 7; offset >>= 3;
2494
8
  return offset;
2495
8
}
2496
5
static int dissect_Data_Coding_Scheme_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2497
5
  unsigned offset = 0;
2498
5
  asn1_ctx_t asn1_ctx;
2499
5
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2500
5
  offset = dissect_sbc_ap_Data_Coding_Scheme(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Data_Coding_Scheme_PDU);
2501
5
  offset += 7; offset >>= 3;
2502
5
  return offset;
2503
5
}
2504
4
static int dissect_Extended_Repetition_Period_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2505
4
  unsigned offset = 0;
2506
4
  asn1_ctx_t asn1_ctx;
2507
4
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2508
4
  offset = dissect_sbc_ap_Extended_Repetition_Period(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Extended_Repetition_Period_PDU);
2509
4
  offset += 7; offset >>= 3;
2510
4
  return offset;
2511
4
}
2512
3
static int dissect_Failed_Cell_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2513
3
  unsigned offset = 0;
2514
3
  asn1_ctx_t asn1_ctx;
2515
3
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2516
3
  offset = dissect_sbc_ap_Failed_Cell_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Failed_Cell_List_PDU);
2517
3
  offset += 7; offset >>= 3;
2518
3
  return offset;
2519
3
}
2520
0
static int dissect_Failed_Cell_List_NR_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2521
0
  unsigned offset = 0;
2522
0
  asn1_ctx_t asn1_ctx;
2523
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2524
0
  offset = dissect_sbc_ap_Failed_Cell_List_NR(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Failed_Cell_List_NR_PDU);
2525
0
  offset += 7; offset >>= 3;
2526
0
  return offset;
2527
0
}
2528
0
static int dissect_Global_ENB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2529
0
  unsigned offset = 0;
2530
0
  asn1_ctx_t asn1_ctx;
2531
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2532
0
  offset = dissect_sbc_ap_Global_ENB_ID(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Global_ENB_ID_PDU);
2533
0
  offset += 7; offset >>= 3;
2534
0
  return offset;
2535
0
}
2536
0
static int dissect_Global_RAN_Node_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2537
0
  unsigned offset = 0;
2538
0
  asn1_ctx_t asn1_ctx;
2539
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2540
0
  offset = dissect_sbc_ap_Global_RAN_Node_ID(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Global_RAN_Node_ID_PDU);
2541
0
  offset += 7; offset >>= 3;
2542
0
  return offset;
2543
0
}
2544
0
static int dissect_Global_GNB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2545
0
  unsigned offset = 0;
2546
0
  asn1_ctx_t asn1_ctx;
2547
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2548
0
  offset = dissect_sbc_ap_Global_GNB_ID(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Global_GNB_ID_PDU);
2549
0
  offset += 7; offset >>= 3;
2550
0
  return offset;
2551
0
}
2552
20
static int dissect_List_of_TAIs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2553
20
  unsigned offset = 0;
2554
20
  asn1_ctx_t asn1_ctx;
2555
20
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2556
20
  offset = dissect_sbc_ap_List_of_TAIs(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_TAIs_PDU);
2557
20
  offset += 7; offset >>= 3;
2558
20
  return offset;
2559
20
}
2560
2
static int dissect_List_of_TAIs_Restart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2561
2
  unsigned offset = 0;
2562
2
  asn1_ctx_t asn1_ctx;
2563
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2564
2
  offset = dissect_sbc_ap_List_of_TAIs_Restart(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_TAIs_Restart_PDU);
2565
2
  offset += 7; offset >>= 3;
2566
2
  return offset;
2567
2
}
2568
1
static int dissect_List_of_EAIs_Restart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2569
1
  unsigned offset = 0;
2570
1
  asn1_ctx_t asn1_ctx;
2571
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2572
1
  offset = dissect_sbc_ap_List_of_EAIs_Restart(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_EAIs_Restart_PDU);
2573
1
  offset += 7; offset >>= 3;
2574
1
  return offset;
2575
1
}
2576
0
static int dissect_List_of_5GS_TAIs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2577
0
  unsigned offset = 0;
2578
0
  asn1_ctx_t asn1_ctx;
2579
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2580
0
  offset = dissect_sbc_ap_List_of_5GS_TAIs(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_5GS_TAIs_PDU);
2581
0
  offset += 7; offset >>= 3;
2582
0
  return offset;
2583
0
}
2584
0
static int dissect_List_of_5GS_TAI_for_Restart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2585
0
  unsigned offset = 0;
2586
0
  asn1_ctx_t asn1_ctx;
2587
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2588
0
  offset = dissect_sbc_ap_List_of_5GS_TAI_for_Restart(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_5GS_TAI_for_Restart_PDU);
2589
0
  offset += 7; offset >>= 3;
2590
0
  return offset;
2591
0
}
2592
4
static int dissect_Message_Identifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2593
4
  unsigned offset = 0;
2594
4
  asn1_ctx_t asn1_ctx;
2595
4
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2596
4
  offset = dissect_sbc_ap_Message_Identifier(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Message_Identifier_PDU);
2597
4
  offset += 7; offset >>= 3;
2598
4
  return offset;
2599
4
}
2600
0
static int dissect_Number_of_Broadcasts_Requested_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2601
0
  unsigned offset = 0;
2602
0
  asn1_ctx_t asn1_ctx;
2603
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2604
0
  offset = dissect_sbc_ap_Number_of_Broadcasts_Requested(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Number_of_Broadcasts_Requested_PDU);
2605
0
  offset += 7; offset >>= 3;
2606
0
  return offset;
2607
0
}
2608
0
static int dissect_Omc_Id_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2609
0
  unsigned offset = 0;
2610
0
  asn1_ctx_t asn1_ctx;
2611
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2612
0
  offset = dissect_sbc_ap_Omc_Id(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Omc_Id_PDU);
2613
0
  offset += 7; offset >>= 3;
2614
0
  return offset;
2615
0
}
2616
1
static int dissect_Repetition_Period_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2617
1
  unsigned offset = 0;
2618
1
  asn1_ctx_t asn1_ctx;
2619
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2620
1
  offset = dissect_sbc_ap_Repetition_Period(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Repetition_Period_PDU);
2621
1
  offset += 7; offset >>= 3;
2622
1
  return offset;
2623
1
}
2624
1
static int dissect_Restarted_Cell_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2625
1
  unsigned offset = 0;
2626
1
  asn1_ctx_t asn1_ctx;
2627
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2628
1
  offset = dissect_sbc_ap_Restarted_Cell_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Restarted_Cell_List_PDU);
2629
1
  offset += 7; offset >>= 3;
2630
1
  return offset;
2631
1
}
2632
0
static int dissect_RAT_Selector_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2633
0
  unsigned offset = 0;
2634
0
  asn1_ctx_t asn1_ctx;
2635
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2636
0
  offset = dissect_sbc_ap_RAT_Selector_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_RAT_Selector_5GS_PDU);
2637
0
  offset += 7; offset >>= 3;
2638
0
  return offset;
2639
0
}
2640
0
static int dissect_Restarted_Cell_List_NR_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2641
0
  unsigned offset = 0;
2642
0
  asn1_ctx_t asn1_ctx;
2643
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2644
0
  offset = dissect_sbc_ap_Restarted_Cell_List_NR(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Restarted_Cell_List_NR_PDU);
2645
0
  offset += 7; offset >>= 3;
2646
0
  return offset;
2647
0
}
2648
5
static int dissect_Send_Write_Replace_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2649
5
  unsigned offset = 0;
2650
5
  asn1_ctx_t asn1_ctx;
2651
5
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2652
5
  offset = dissect_sbc_ap_Send_Write_Replace_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Send_Write_Replace_Warning_Indication_PDU);
2653
5
  offset += 7; offset >>= 3;
2654
5
  return offset;
2655
5
}
2656
0
static int dissect_Send_Stop_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2657
0
  unsigned offset = 0;
2658
0
  asn1_ctx_t asn1_ctx;
2659
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2660
0
  offset = dissect_sbc_ap_Send_Stop_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Send_Stop_Warning_Indication_PDU);
2661
0
  offset += 7; offset >>= 3;
2662
0
  return offset;
2663
0
}
2664
4
static int dissect_Serial_Number_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2665
4
  unsigned offset = 0;
2666
4
  asn1_ctx_t asn1_ctx;
2667
4
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2668
4
  offset = dissect_sbc_ap_Serial_Number(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Serial_Number_PDU);
2669
4
  offset += 7; offset >>= 3;
2670
4
  return offset;
2671
4
}
2672
0
static int dissect_Stop_All_Indicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2673
0
  unsigned offset = 0;
2674
0
  asn1_ctx_t asn1_ctx;
2675
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2676
0
  offset = dissect_sbc_ap_Stop_All_Indicator(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_All_Indicator_PDU);
2677
0
  offset += 7; offset >>= 3;
2678
0
  return offset;
2679
0
}
2680
0
static int dissect_Unknown_5GS_Tracking_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2681
0
  unsigned offset = 0;
2682
0
  asn1_ctx_t asn1_ctx;
2683
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2684
0
  offset = dissect_sbc_ap_Unknown_5GS_Tracking_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Unknown_5GS_Tracking_Area_List_PDU);
2685
0
  offset += 7; offset >>= 3;
2686
0
  return offset;
2687
0
}
2688
2
static int dissect_Warning_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2689
2
  unsigned offset = 0;
2690
2
  asn1_ctx_t asn1_ctx;
2691
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2692
2
  offset = dissect_sbc_ap_Warning_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Area_List_PDU);
2693
2
  offset += 7; offset >>= 3;
2694
2
  return offset;
2695
2
}
2696
3
static int dissect_Warning_Message_Content_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2697
3
  unsigned offset = 0;
2698
3
  asn1_ctx_t asn1_ctx;
2699
3
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2700
3
  offset = dissect_sbc_ap_Warning_Message_Content(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Message_Content_PDU);
2701
3
  offset += 7; offset >>= 3;
2702
3
  return offset;
2703
3
}
2704
3
static int dissect_Warning_Area_Coordinates_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2705
3
  unsigned offset = 0;
2706
3
  asn1_ctx_t asn1_ctx;
2707
3
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2708
3
  offset = dissect_sbc_ap_Warning_Area_Coordinates(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Area_Coordinates_PDU);
2709
3
  offset += 7; offset >>= 3;
2710
3
  return offset;
2711
3
}
2712
2
static int dissect_Warning_Security_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2713
2
  unsigned offset = 0;
2714
2
  asn1_ctx_t asn1_ctx;
2715
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2716
2
  offset = dissect_sbc_ap_Warning_Security_Information(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Security_Information_PDU);
2717
2
  offset += 7; offset >>= 3;
2718
2
  return offset;
2719
2
}
2720
2
static int dissect_Warning_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2721
2
  unsigned offset = 0;
2722
2
  asn1_ctx_t asn1_ctx;
2723
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2724
2
  offset = dissect_sbc_ap_Warning_Type(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Type_PDU);
2725
2
  offset += 7; offset >>= 3;
2726
2
  return offset;
2727
2
}
2728
1
static int dissect_Warning_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2729
1
  unsigned offset = 0;
2730
1
  asn1_ctx_t asn1_ctx;
2731
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2732
1
  offset = dissect_sbc_ap_Warning_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Area_List_5GS_PDU);
2733
1
  offset += 7; offset >>= 3;
2734
1
  return offset;
2735
1
}
2736
16
static int dissect_Write_Replace_Warning_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2737
16
  unsigned offset = 0;
2738
16
  asn1_ctx_t asn1_ctx;
2739
16
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2740
16
  offset = dissect_sbc_ap_Write_Replace_Warning_Request(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Write_Replace_Warning_Request_PDU);
2741
16
  offset += 7; offset >>= 3;
2742
16
  return offset;
2743
16
}
2744
7
static int dissect_Write_Replace_Warning_Response_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2745
7
  unsigned offset = 0;
2746
7
  asn1_ctx_t asn1_ctx;
2747
7
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2748
7
  offset = dissect_sbc_ap_Write_Replace_Warning_Response(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Write_Replace_Warning_Response_PDU);
2749
7
  offset += 7; offset >>= 3;
2750
7
  return offset;
2751
7
}
2752
16
static int dissect_Stop_Warning_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2753
16
  unsigned offset = 0;
2754
16
  asn1_ctx_t asn1_ctx;
2755
16
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2756
16
  offset = dissect_sbc_ap_Stop_Warning_Request(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_Warning_Request_PDU);
2757
16
  offset += 7; offset >>= 3;
2758
16
  return offset;
2759
16
}
2760
3
static int dissect_Stop_Warning_Response_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2761
3
  unsigned offset = 0;
2762
3
  asn1_ctx_t asn1_ctx;
2763
3
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2764
3
  offset = dissect_sbc_ap_Stop_Warning_Response(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_Warning_Response_PDU);
2765
3
  offset += 7; offset >>= 3;
2766
3
  return offset;
2767
3
}
2768
0
static int dissect_Write_Replace_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2769
0
  unsigned offset = 0;
2770
0
  asn1_ctx_t asn1_ctx;
2771
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2772
0
  offset = dissect_sbc_ap_Write_Replace_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Write_Replace_Warning_Indication_PDU);
2773
0
  offset += 7; offset >>= 3;
2774
0
  return offset;
2775
0
}
2776
18
static int dissect_Stop_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2777
18
  unsigned offset = 0;
2778
18
  asn1_ctx_t asn1_ctx;
2779
18
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2780
18
  offset = dissect_sbc_ap_Stop_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_Warning_Indication_PDU);
2781
18
  offset += 7; offset >>= 3;
2782
18
  return offset;
2783
18
}
2784
0
static int dissect_PWS_Restart_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2785
0
  unsigned offset = 0;
2786
0
  asn1_ctx_t asn1_ctx;
2787
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2788
0
  offset = dissect_sbc_ap_PWS_Restart_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_PWS_Restart_Indication_PDU);
2789
0
  offset += 7; offset >>= 3;
2790
0
  return offset;
2791
0
}
2792
1
static int dissect_PWS_Failure_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2793
1
  unsigned offset = 0;
2794
1
  asn1_ctx_t asn1_ctx;
2795
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2796
1
  offset = dissect_sbc_ap_PWS_Failure_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_PWS_Failure_Indication_PDU);
2797
1
  offset += 7; offset >>= 3;
2798
1
  return offset;
2799
1
}
2800
12
static int dissect_Error_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2801
12
  unsigned offset = 0;
2802
12
  asn1_ctx_t asn1_ctx;
2803
12
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2804
12
  offset = dissect_sbc_ap_Error_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Error_Indication_PDU);
2805
12
  offset += 7; offset >>= 3;
2806
12
  return offset;
2807
12
}
2808
78
static int dissect_SBC_AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2809
78
  unsigned offset = 0;
2810
78
  asn1_ctx_t asn1_ctx;
2811
78
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2812
78
  offset = dissect_sbc_ap_SBC_AP_PDU(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_SBC_AP_PDU_PDU);
2813
78
  offset += 7; offset >>= 3;
2814
78
  return offset;
2815
78
}
2816
2817
2818
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2819
397
{
2820
397
  return (dissector_try_uint(sbc_ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2821
397
}
2822
/* Currently not used
2823
static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2824
{
2825
  return (dissector_try_uint(sbc_ap_ies_p1_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2826
}
2827
2828
static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2829
{
2830
  return (dissector_try_uint(sbc_ap_ies_p2_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2831
}
2832
*/
2833
2834
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2835
93
{
2836
93
  return (dissector_try_uint(sbc_ap_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2837
93
}
2838
2839
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2840
65
{
2841
65
  return (dissector_try_uint(sbc_ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2842
65
}
2843
2844
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2845
12
{
2846
12
  return (dissector_try_uint(sbc_ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2847
12
}
2848
2849
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2850
1
{
2851
1
  return (dissector_try_uint(sbc_ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2852
1
}
2853
2854
2855
static int
2856
dissect_sbc_ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
2857
78
{
2858
78
    proto_item      *sbc_ap_item = NULL;
2859
78
    proto_tree      *sbc_ap_tree = NULL;
2860
2861
    /* make entry in the Protocol column on summary display */
2862
78
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "SBcAP");
2863
78
    col_clear(pinfo->cinfo, COL_INFO);
2864
2865
    /* create the sbc_ap protocol tree */
2866
78
    sbc_ap_item = proto_tree_add_item(tree, proto_sbc_ap, tvb, 0, -1, ENC_NA);
2867
78
    sbc_ap_tree = proto_item_add_subtree(sbc_ap_item, ett_sbc_ap);
2868
2869
78
    dissect_SBC_AP_PDU_PDU(tvb, pinfo, sbc_ap_tree, NULL);
2870
2871
78
    return tvb_captured_length(tvb);
2872
78
}
2873
/*--- proto_register_sbc_ap -------------------------------------------*/
2874
15
void proto_register_sbc_ap(void) {
2875
2876
  /* List of fields */
2877
15
  static hf_register_info hf[] = {
2878
15
    { &hf_sbc_ap_Serial_Number_gs,
2879
15
      { "Geographical Scope", "sbc_ap.SerialNumber.gs",
2880
15
        FT_UINT16, BASE_DEC, VALS(s1ap_serialNumber_gs_vals), 0xc000,
2881
15
        NULL, HFILL }},
2882
15
    { &hf_sbc_ap_Serial_Number_msg_code,
2883
15
      { "Message Code", "sbc_ap.SerialNumber.msg_code",
2884
15
        FT_UINT16, BASE_DEC, NULL, 0x3ff0,
2885
15
        NULL, HFILL }},
2886
15
    { &hf_sbc_ap_Serial_Number_upd_nb,
2887
15
      { "Update Number", "sbc_ap.SerialNumber.upd_nb",
2888
15
        FT_UINT16, BASE_DEC, NULL, 0x000f,
2889
15
        NULL, HFILL }},
2890
15
    { &hf_sbc_ap_Warning_Type_value,
2891
15
      { "Warning Type Value", "sbc-ap.WarningType.value",
2892
15
        FT_UINT16, BASE_DEC, VALS(s1ap_warningType_vals), 0xfe00,
2893
15
        NULL, HFILL }},
2894
15
    { &hf_sbc_ap_Warning_Type_emergency_user_alert,
2895
15
      { "Emergency User Alert", "sbc-ap.WarningType.emergency_user_alert",
2896
15
        FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100,
2897
15
        NULL, HFILL }},
2898
15
    { &hf_sbc_ap_Warning_Type_popup,
2899
15
      { "Popup", "sbc-ap.WarningType.popup",
2900
15
        FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
2901
15
        NULL, HFILL }},
2902
15
    { &hf_sbc_ap_Warning_Message_Contents_nb_pages,
2903
15
      { "Number of Pages", "sbc-ap.WarningMessageContents.nb_pages",
2904
15
        FT_UINT8, BASE_DEC, NULL, 0,
2905
15
        NULL, HFILL }},
2906
15
    { &hf_sbc_ap_Warning_Message_Contents_decoded_page,
2907
15
      { "Decoded Page", "sbc-ap.WarningMessageContents.decoded_page",
2908
15
        FT_STRING, BASE_NONE, NULL, 0,
2909
15
        NULL, HFILL }},
2910
15
    { &hf_sbc_ap_Broadcast_Scheduled_Area_List_PDU,
2911
15
      { "Broadcast-Scheduled-Area-List", "sbc-ap.Broadcast_Scheduled_Area_List_element",
2912
15
        FT_NONE, BASE_NONE, NULL, 0,
2913
15
        NULL, HFILL }},
2914
15
    { &hf_sbc_ap_Broadcast_Scheduled_Area_List_5GS_PDU,
2915
15
      { "Broadcast-Scheduled-Area-List-5GS", "sbc-ap.Broadcast_Scheduled_Area_List_5GS_element",
2916
15
        FT_NONE, BASE_NONE, NULL, 0,
2917
15
        NULL, HFILL }},
2918
15
    { &hf_sbc_ap_Broadcast_Cancelled_Area_List_PDU,
2919
15
      { "Broadcast-Cancelled-Area-List", "sbc-ap.Broadcast_Cancelled_Area_List_element",
2920
15
        FT_NONE, BASE_NONE, NULL, 0,
2921
15
        NULL, HFILL }},
2922
15
    { &hf_sbc_ap_Broadcast_Cancelled_Area_List_5GS_PDU,
2923
15
      { "Broadcast-Cancelled-Area-List-5GS", "sbc-ap.Broadcast_Cancelled_Area_List_5GS_element",
2924
15
        FT_NONE, BASE_NONE, NULL, 0,
2925
15
        NULL, HFILL }},
2926
15
    { &hf_sbc_ap_Broadcast_Empty_Area_List_PDU,
2927
15
      { "Broadcast-Empty-Area-List", "sbc-ap.Broadcast_Empty_Area_List",
2928
15
        FT_UINT32, BASE_DEC, NULL, 0,
2929
15
        NULL, HFILL }},
2930
15
    { &hf_sbc_ap_Broadcast_Empty_Area_List_5GS_PDU,
2931
15
      { "Broadcast-Empty-Area-List-5GS", "sbc-ap.Broadcast_Empty_Area_List_5GS",
2932
15
        FT_UINT32, BASE_DEC, NULL, 0,
2933
15
        NULL, HFILL }},
2934
15
    { &hf_sbc_ap_Cause_PDU,
2935
15
      { "Cause", "sbc-ap.Cause",
2936
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Cause_vals), 0,
2937
15
        NULL, HFILL }},
2938
15
    { &hf_sbc_ap_Concurrent_Warning_Message_Indicator_PDU,
2939
15
      { "Concurrent-Warning-Message-Indicator", "sbc-ap.Concurrent_Warning_Message_Indicator",
2940
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Concurrent_Warning_Message_Indicator_vals), 0,
2941
15
        NULL, HFILL }},
2942
15
    { &hf_sbc_ap_Criticality_Diagnostics_PDU,
2943
15
      { "Criticality-Diagnostics", "sbc-ap.Criticality_Diagnostics_element",
2944
15
        FT_NONE, BASE_NONE, NULL, 0,
2945
15
        NULL, HFILL }},
2946
15
    { &hf_sbc_ap_Data_Coding_Scheme_PDU,
2947
15
      { "Data-Coding-Scheme", "sbc-ap.Data_Coding_Scheme",
2948
15
        FT_BYTES, BASE_NONE, NULL, 0,
2949
15
        NULL, HFILL }},
2950
15
    { &hf_sbc_ap_Extended_Repetition_Period_PDU,
2951
15
      { "Extended-Repetition-Period", "sbc-ap.Extended_Repetition_Period",
2952
15
        FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
2953
15
        NULL, HFILL }},
2954
15
    { &hf_sbc_ap_Failed_Cell_List_PDU,
2955
15
      { "Failed-Cell-List", "sbc-ap.Failed_Cell_List",
2956
15
        FT_UINT32, BASE_DEC, NULL, 0,
2957
15
        NULL, HFILL }},
2958
15
    { &hf_sbc_ap_Failed_Cell_List_NR_PDU,
2959
15
      { "Failed-Cell-List-NR", "sbc-ap.Failed_Cell_List_NR",
2960
15
        FT_UINT32, BASE_DEC, NULL, 0,
2961
15
        NULL, HFILL }},
2962
15
    { &hf_sbc_ap_Global_ENB_ID_PDU,
2963
15
      { "Global-ENB-ID", "sbc-ap.Global_ENB_ID_element",
2964
15
        FT_NONE, BASE_NONE, NULL, 0,
2965
15
        NULL, HFILL }},
2966
15
    { &hf_sbc_ap_Global_RAN_Node_ID_PDU,
2967
15
      { "Global-RAN-Node-ID", "sbc-ap.Global_RAN_Node_ID",
2968
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Global_RAN_Node_ID_vals), 0,
2969
15
        NULL, HFILL }},
2970
15
    { &hf_sbc_ap_Global_GNB_ID_PDU,
2971
15
      { "Global-GNB-ID", "sbc-ap.Global_GNB_ID_element",
2972
15
        FT_NONE, BASE_NONE, NULL, 0,
2973
15
        NULL, HFILL }},
2974
15
    { &hf_sbc_ap_List_of_TAIs_PDU,
2975
15
      { "List-of-TAIs", "sbc-ap.List_of_TAIs",
2976
15
        FT_UINT32, BASE_DEC, NULL, 0,
2977
15
        NULL, HFILL }},
2978
15
    { &hf_sbc_ap_List_of_TAIs_Restart_PDU,
2979
15
      { "List-of-TAIs-Restart", "sbc-ap.List_of_TAIs_Restart",
2980
15
        FT_UINT32, BASE_DEC, NULL, 0,
2981
15
        NULL, HFILL }},
2982
15
    { &hf_sbc_ap_List_of_EAIs_Restart_PDU,
2983
15
      { "List-of-EAIs-Restart", "sbc-ap.List_of_EAIs_Restart",
2984
15
        FT_UINT32, BASE_DEC, NULL, 0,
2985
15
        NULL, HFILL }},
2986
15
    { &hf_sbc_ap_List_of_5GS_TAIs_PDU,
2987
15
      { "List-of-5GS-TAIs", "sbc-ap.List_of_5GS_TAIs",
2988
15
        FT_UINT32, BASE_DEC, NULL, 0,
2989
15
        NULL, HFILL }},
2990
15
    { &hf_sbc_ap_List_of_5GS_TAI_for_Restart_PDU,
2991
15
      { "List-of-5GS-TAI-for-Restart", "sbc-ap.List_of_5GS_TAI_for_Restart",
2992
15
        FT_UINT32, BASE_DEC, NULL, 0,
2993
15
        NULL, HFILL }},
2994
15
    { &hf_sbc_ap_Message_Identifier_PDU,
2995
15
      { "Message-Identifier", "sbc-ap.Message_Identifier",
2996
15
        FT_UINT16, BASE_DEC|BASE_EXT_STRING, &lte_rrc_messageIdentifier_vals_ext, 0,
2997
15
        NULL, HFILL }},
2998
15
    { &hf_sbc_ap_Number_of_Broadcasts_Requested_PDU,
2999
15
      { "Number-of-Broadcasts-Requested", "sbc-ap.Number_of_Broadcasts_Requested",
3000
15
        FT_UINT32, BASE_DEC, NULL, 0,
3001
15
        NULL, HFILL }},
3002
15
    { &hf_sbc_ap_Omc_Id_PDU,
3003
15
      { "Omc-Id", "sbc-ap.Omc_Id",
3004
15
        FT_BYTES, BASE_NONE, NULL, 0,
3005
15
        NULL, HFILL }},
3006
15
    { &hf_sbc_ap_Repetition_Period_PDU,
3007
15
      { "Repetition-Period", "sbc-ap.Repetition_Period",
3008
15
        FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
3009
15
        NULL, HFILL }},
3010
15
    { &hf_sbc_ap_Restarted_Cell_List_PDU,
3011
15
      { "Restarted-Cell-List", "sbc-ap.Restarted_Cell_List",
3012
15
        FT_UINT32, BASE_DEC, NULL, 0,
3013
15
        NULL, HFILL }},
3014
15
    { &hf_sbc_ap_RAT_Selector_5GS_PDU,
3015
15
      { "RAT-Selector-5GS", "sbc-ap.RAT_Selector_5GS",
3016
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_RAT_Selector_5GS_vals), 0,
3017
15
        NULL, HFILL }},
3018
15
    { &hf_sbc_ap_Restarted_Cell_List_NR_PDU,
3019
15
      { "Restarted-Cell-List-NR", "sbc-ap.Restarted_Cell_List_NR",
3020
15
        FT_UINT32, BASE_DEC, NULL, 0,
3021
15
        NULL, HFILL }},
3022
15
    { &hf_sbc_ap_Send_Write_Replace_Warning_Indication_PDU,
3023
15
      { "Send-Write-Replace-Warning-Indication", "sbc-ap.Send_Write_Replace_Warning_Indication",
3024
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Send_Write_Replace_Warning_Indication_vals), 0,
3025
15
        NULL, HFILL }},
3026
15
    { &hf_sbc_ap_Send_Stop_Warning_Indication_PDU,
3027
15
      { "Send-Stop-Warning-Indication", "sbc-ap.Send_Stop_Warning_Indication",
3028
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Send_Stop_Warning_Indication_vals), 0,
3029
15
        NULL, HFILL }},
3030
15
    { &hf_sbc_ap_Serial_Number_PDU,
3031
15
      { "Serial-Number", "sbc-ap.Serial_Number",
3032
15
        FT_BYTES, BASE_NONE, NULL, 0,
3033
15
        NULL, HFILL }},
3034
15
    { &hf_sbc_ap_Stop_All_Indicator_PDU,
3035
15
      { "Stop-All-Indicator", "sbc-ap.Stop_All_Indicator",
3036
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Stop_All_Indicator_vals), 0,
3037
15
        NULL, HFILL }},
3038
15
    { &hf_sbc_ap_Unknown_5GS_Tracking_Area_List_PDU,
3039
15
      { "Unknown-5GS-Tracking-Area-List", "sbc-ap.Unknown_5GS_Tracking_Area_List",
3040
15
        FT_UINT32, BASE_DEC, NULL, 0,
3041
15
        NULL, HFILL }},
3042
15
    { &hf_sbc_ap_Warning_Area_List_PDU,
3043
15
      { "Warning-Area-List", "sbc-ap.Warning_Area_List",
3044
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Warning_Area_List_vals), 0,
3045
15
        NULL, HFILL }},
3046
15
    { &hf_sbc_ap_Warning_Message_Content_PDU,
3047
15
      { "Warning-Message-Content", "sbc-ap.Warning_Message_Content",
3048
15
        FT_BYTES, BASE_NONE, NULL, 0,
3049
15
        NULL, HFILL }},
3050
15
    { &hf_sbc_ap_Warning_Area_Coordinates_PDU,
3051
15
      { "Warning-Area-Coordinates", "sbc-ap.Warning_Area_Coordinates",
3052
15
        FT_BYTES, BASE_NONE, NULL, 0,
3053
15
        NULL, HFILL }},
3054
15
    { &hf_sbc_ap_Warning_Security_Information_PDU,
3055
15
      { "Warning-Security-Information", "sbc-ap.Warning_Security_Information",
3056
15
        FT_BYTES, BASE_NONE, NULL, 0,
3057
15
        NULL, HFILL }},
3058
15
    { &hf_sbc_ap_Warning_Type_PDU,
3059
15
      { "Warning-Type", "sbc-ap.Warning_Type",
3060
15
        FT_BYTES, BASE_NONE, NULL, 0,
3061
15
        NULL, HFILL }},
3062
15
    { &hf_sbc_ap_Warning_Area_List_5GS_PDU,
3063
15
      { "Warning-Area-List-5GS", "sbc-ap.Warning_Area_List_5GS",
3064
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Warning_Area_List_5GS_vals), 0,
3065
15
        NULL, HFILL }},
3066
15
    { &hf_sbc_ap_Write_Replace_Warning_Request_PDU,
3067
15
      { "Write-Replace-Warning-Request", "sbc-ap.Write_Replace_Warning_Request_element",
3068
15
        FT_NONE, BASE_NONE, NULL, 0,
3069
15
        NULL, HFILL }},
3070
15
    { &hf_sbc_ap_Write_Replace_Warning_Response_PDU,
3071
15
      { "Write-Replace-Warning-Response", "sbc-ap.Write_Replace_Warning_Response_element",
3072
15
        FT_NONE, BASE_NONE, NULL, 0,
3073
15
        NULL, HFILL }},
3074
15
    { &hf_sbc_ap_Stop_Warning_Request_PDU,
3075
15
      { "Stop-Warning-Request", "sbc-ap.Stop_Warning_Request_element",
3076
15
        FT_NONE, BASE_NONE, NULL, 0,
3077
15
        NULL, HFILL }},
3078
15
    { &hf_sbc_ap_Stop_Warning_Response_PDU,
3079
15
      { "Stop-Warning-Response", "sbc-ap.Stop_Warning_Response_element",
3080
15
        FT_NONE, BASE_NONE, NULL, 0,
3081
15
        NULL, HFILL }},
3082
15
    { &hf_sbc_ap_Write_Replace_Warning_Indication_PDU,
3083
15
      { "Write-Replace-Warning-Indication", "sbc-ap.Write_Replace_Warning_Indication_element",
3084
15
        FT_NONE, BASE_NONE, NULL, 0,
3085
15
        NULL, HFILL }},
3086
15
    { &hf_sbc_ap_Stop_Warning_Indication_PDU,
3087
15
      { "Stop-Warning-Indication", "sbc-ap.Stop_Warning_Indication_element",
3088
15
        FT_NONE, BASE_NONE, NULL, 0,
3089
15
        NULL, HFILL }},
3090
15
    { &hf_sbc_ap_PWS_Restart_Indication_PDU,
3091
15
      { "PWS-Restart-Indication", "sbc-ap.PWS_Restart_Indication_element",
3092
15
        FT_NONE, BASE_NONE, NULL, 0,
3093
15
        NULL, HFILL }},
3094
15
    { &hf_sbc_ap_PWS_Failure_Indication_PDU,
3095
15
      { "PWS-Failure-Indication", "sbc-ap.PWS_Failure_Indication_element",
3096
15
        FT_NONE, BASE_NONE, NULL, 0,
3097
15
        NULL, HFILL }},
3098
15
    { &hf_sbc_ap_Error_Indication_PDU,
3099
15
      { "Error-Indication", "sbc-ap.Error_Indication_element",
3100
15
        FT_NONE, BASE_NONE, NULL, 0,
3101
15
        NULL, HFILL }},
3102
15
    { &hf_sbc_ap_SBC_AP_PDU_PDU,
3103
15
      { "SBC-AP-PDU", "sbc-ap.SBC_AP_PDU",
3104
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_SBC_AP_PDU_vals), 0,
3105
15
        NULL, HFILL }},
3106
15
    { &hf_sbc_ap_ProtocolIE_Container_item,
3107
15
      { "ProtocolIE-Field", "sbc-ap.ProtocolIE_Field_element",
3108
15
        FT_NONE, BASE_NONE, NULL, 0,
3109
15
        NULL, HFILL }},
3110
15
    { &hf_sbc_ap_id,
3111
15
      { "id", "sbc-ap.id",
3112
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_ProtocolIE_ID_vals), 0,
3113
15
        "ProtocolIE_ID", HFILL }},
3114
15
    { &hf_sbc_ap_criticality,
3115
15
      { "criticality", "sbc-ap.criticality",
3116
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Criticality_vals), 0,
3117
15
        NULL, HFILL }},
3118
15
    { &hf_sbc_ap_ie_field_value,
3119
15
      { "value", "sbc-ap.ie_field_value_element",
3120
15
        FT_NONE, BASE_NONE, NULL, 0,
3121
15
        "T_ie_field_value", HFILL }},
3122
15
    { &hf_sbc_ap_ProtocolExtensionContainer_item,
3123
15
      { "ProtocolExtensionField", "sbc-ap.ProtocolExtensionField_element",
3124
15
        FT_NONE, BASE_NONE, NULL, 0,
3125
15
        NULL, HFILL }},
3126
15
    { &hf_sbc_ap_ext_id,
3127
15
      { "id", "sbc-ap.ext_id",
3128
15
        FT_UINT8, BASE_DEC, VALS(sbc_ap_ProtocolIE_ID_vals), 0,
3129
15
        "ProtocolExtensionID", HFILL }},
3130
15
    { &hf_sbc_ap_extensionValue,
3131
15
      { "extensionValue", "sbc-ap.extensionValue_element",
3132
15
        FT_NONE, BASE_NONE, NULL, 0,
3133
15
        NULL, HFILL }},
3134
15
    { &hf_sbc_ap_cellId_Broadcast_List,
3135
15
      { "cellId-Broadcast-List", "sbc-ap.cellId_Broadcast_List",
3136
15
        FT_UINT32, BASE_DEC, NULL, 0,
3137
15
        NULL, HFILL }},
3138
15
    { &hf_sbc_ap_tAI_Broadcast_List,
3139
15
      { "tAI-Broadcast-List", "sbc-ap.tAI_Broadcast_List",
3140
15
        FT_UINT32, BASE_DEC, NULL, 0,
3141
15
        NULL, HFILL }},
3142
15
    { &hf_sbc_ap_emergencyAreaID_Broadcast_List,
3143
15
      { "emergencyAreaID-Broadcast-List", "sbc-ap.emergencyAreaID_Broadcast_List",
3144
15
        FT_UINT32, BASE_DEC, NULL, 0,
3145
15
        NULL, HFILL }},
3146
15
    { &hf_sbc_ap_iE_Extensions,
3147
15
      { "iE-Extensions", "sbc-ap.iE_Extensions",
3148
15
        FT_UINT32, BASE_DEC, NULL, 0,
3149
15
        "ProtocolExtensionContainer", HFILL }},
3150
15
    { &hf_sbc_ap_cellId_Broadcast_List_5GS,
3151
15
      { "cellId-Broadcast-List-5GS", "sbc-ap.cellId_Broadcast_List_5GS",
3152
15
        FT_UINT32, BASE_DEC, NULL, 0,
3153
15
        NULL, HFILL }},
3154
15
    { &hf_sbc_ap_tAI_Broadcast_List_5GS,
3155
15
      { "tAI-Broadcast-List-5GS", "sbc-ap.tAI_Broadcast_List_5GS",
3156
15
        FT_UINT32, BASE_DEC, NULL, 0,
3157
15
        NULL, HFILL }},
3158
15
    { &hf_sbc_ap_cellID_Cancelled_List,
3159
15
      { "cellID-Cancelled-List", "sbc-ap.cellID_Cancelled_List",
3160
15
        FT_UINT32, BASE_DEC, NULL, 0,
3161
15
        NULL, HFILL }},
3162
15
    { &hf_sbc_ap_tAI_Cancelled_List,
3163
15
      { "tAI-Cancelled-List", "sbc-ap.tAI_Cancelled_List",
3164
15
        FT_UINT32, BASE_DEC, NULL, 0,
3165
15
        NULL, HFILL }},
3166
15
    { &hf_sbc_ap_emergencyAreaID_Cancelled_List,
3167
15
      { "emergencyAreaID-Cancelled-List", "sbc-ap.emergencyAreaID_Cancelled_List",
3168
15
        FT_UINT32, BASE_DEC, NULL, 0,
3169
15
        NULL, HFILL }},
3170
15
    { &hf_sbc_ap_cellID_Cancelled_List_5GS,
3171
15
      { "cellID-Cancelled-List-5GS", "sbc-ap.cellID_Cancelled_List_5GS",
3172
15
        FT_UINT32, BASE_DEC, NULL, 0,
3173
15
        NULL, HFILL }},
3174
15
    { &hf_sbc_ap_tAI_Cancelled_List_5GS,
3175
15
      { "tAI-Cancelled-List-5GS", "sbc-ap.tAI_Cancelled_List_5GS",
3176
15
        FT_UINT32, BASE_DEC, NULL, 0,
3177
15
        NULL, HFILL }},
3178
15
    { &hf_sbc_ap_Broadcast_Empty_Area_List_item,
3179
15
      { "Global-ENB-ID", "sbc-ap.Global_ENB_ID_element",
3180
15
        FT_NONE, BASE_NONE, NULL, 0,
3181
15
        NULL, HFILL }},
3182
15
    { &hf_sbc_ap_Broadcast_Empty_Area_List_5GS_item,
3183
15
      { "Global-RAN-Node-ID", "sbc-ap.Global_RAN_Node_ID",
3184
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Global_RAN_Node_ID_vals), 0,
3185
15
        NULL, HFILL }},
3186
15
    { &hf_sbc_ap_CancelledCellinEAI_item,
3187
15
      { "CancelledCellinEAI-Item", "sbc-ap.CancelledCellinEAI_Item_element",
3188
15
        FT_NONE, BASE_NONE, NULL, 0,
3189
15
        NULL, HFILL }},
3190
15
    { &hf_sbc_ap_eCGI,
3191
15
      { "eCGI", "sbc-ap.eCGI_element",
3192
15
        FT_NONE, BASE_NONE, NULL, 0,
3193
15
        "EUTRAN_CGI", HFILL }},
3194
15
    { &hf_sbc_ap_numberOfBroadcasts,
3195
15
      { "numberOfBroadcasts", "sbc-ap.numberOfBroadcasts",
3196
15
        FT_UINT32, BASE_DEC, NULL, 0,
3197
15
        NULL, HFILL }},
3198
15
    { &hf_sbc_ap_CancelledCellinTAI_item,
3199
15
      { "CancelledCellinTAI-Item", "sbc-ap.CancelledCellinTAI_Item_element",
3200
15
        FT_NONE, BASE_NONE, NULL, 0,
3201
15
        NULL, HFILL }},
3202
15
    { &hf_sbc_ap_CancelledCellinTAI_5GS_item,
3203
15
      { "CancelledCellinTAI-5GS item", "sbc-ap.CancelledCellinTAI_5GS_item_element",
3204
15
        FT_NONE, BASE_NONE, NULL, 0,
3205
15
        NULL, HFILL }},
3206
15
    { &hf_sbc_ap_nR_CGI,
3207
15
      { "nR-CGI", "sbc-ap.nR_CGI_element",
3208
15
        FT_NONE, BASE_NONE, NULL, 0,
3209
15
        NULL, HFILL }},
3210
15
    { &hf_sbc_ap_CellId_Broadcast_List_item,
3211
15
      { "CellId-Broadcast-List-Item", "sbc-ap.CellId_Broadcast_List_Item_element",
3212
15
        FT_NONE, BASE_NONE, NULL, 0,
3213
15
        NULL, HFILL }},
3214
15
    { &hf_sbc_ap_CellId_Broadcast_List_5GS_item,
3215
15
      { "CellId-Broadcast-List-5GS item", "sbc-ap.CellId_Broadcast_List_5GS_item_element",
3216
15
        FT_NONE, BASE_NONE, NULL, 0,
3217
15
        NULL, HFILL }},
3218
15
    { &hf_sbc_ap_CellID_Cancelled_List_item,
3219
15
      { "CellID-Cancelled-Item", "sbc-ap.CellID_Cancelled_Item_element",
3220
15
        FT_NONE, BASE_NONE, NULL, 0,
3221
15
        NULL, HFILL }},
3222
15
    { &hf_sbc_ap_CellID_Cancelled_List_5GS_item,
3223
15
      { "CellID-Cancelled-List-5GS item", "sbc-ap.CellID_Cancelled_List_5GS_item_element",
3224
15
        FT_NONE, BASE_NONE, NULL, 0,
3225
15
        NULL, HFILL }},
3226
15
    { &hf_sbc_ap_procedureCode,
3227
15
      { "procedureCode", "sbc-ap.procedureCode",
3228
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_ProcedureCode_vals), 0,
3229
15
        NULL, HFILL }},
3230
15
    { &hf_sbc_ap_triggeringMessage,
3231
15
      { "triggeringMessage", "sbc-ap.triggeringMessage",
3232
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_TriggeringMessage_vals), 0,
3233
15
        NULL, HFILL }},
3234
15
    { &hf_sbc_ap_procedureCriticality,
3235
15
      { "procedureCriticality", "sbc-ap.procedureCriticality",
3236
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Criticality_vals), 0,
3237
15
        "Criticality", HFILL }},
3238
15
    { &hf_sbc_ap_iE_CriticalityDiagnostics,
3239
15
      { "iE-CriticalityDiagnostics", "sbc-ap.iE_CriticalityDiagnostics",
3240
15
        FT_UINT32, BASE_DEC, NULL, 0,
3241
15
        "CriticalityDiagnostics_IE_List", HFILL }},
3242
15
    { &hf_sbc_ap_CriticalityDiagnostics_IE_List_item,
3243
15
      { "CriticalityDiagnostics-IE-List item", "sbc-ap.CriticalityDiagnostics_IE_List_item_element",
3244
15
        FT_NONE, BASE_NONE, NULL, 0,
3245
15
        NULL, HFILL }},
3246
15
    { &hf_sbc_ap_iECriticality,
3247
15
      { "iECriticality", "sbc-ap.iECriticality",
3248
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_Criticality_vals), 0,
3249
15
        "Criticality", HFILL }},
3250
15
    { &hf_sbc_ap_iE_ID,
3251
15
      { "iE-ID", "sbc-ap.iE_ID",
3252
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_ProtocolIE_ID_vals), 0,
3253
15
        "ProtocolIE_ID", HFILL }},
3254
15
    { &hf_sbc_ap_typeOfError,
3255
15
      { "typeOfError", "sbc-ap.typeOfError",
3256
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_TypeOfError_vals), 0,
3257
15
        NULL, HFILL }},
3258
15
    { &hf_sbc_ap_ECGIList_item,
3259
15
      { "EUTRAN-CGI", "sbc-ap.EUTRAN_CGI_element",
3260
15
        FT_NONE, BASE_NONE, NULL, 0,
3261
15
        NULL, HFILL }},
3262
15
    { &hf_sbc_ap_Emergency_Area_ID_List_item,
3263
15
      { "Emergency-Area-ID", "sbc-ap.Emergency_Area_ID",
3264
15
        FT_BYTES, BASE_NONE, NULL, 0,
3265
15
        NULL, HFILL }},
3266
15
    { &hf_sbc_ap_EmergencyAreaID_Broadcast_List_item,
3267
15
      { "EmergencyAreaID-Broadcast-List-Item", "sbc-ap.EmergencyAreaID_Broadcast_List_Item_element",
3268
15
        FT_NONE, BASE_NONE, NULL, 0,
3269
15
        NULL, HFILL }},
3270
15
    { &hf_sbc_ap_emergencyAreaID,
3271
15
      { "emergencyAreaID", "sbc-ap.emergencyAreaID",
3272
15
        FT_BYTES, BASE_NONE, NULL, 0,
3273
15
        "Emergency_Area_ID", HFILL }},
3274
15
    { &hf_sbc_ap_scheduledCellinEAI,
3275
15
      { "scheduledCellinEAI", "sbc-ap.scheduledCellinEAI",
3276
15
        FT_UINT32, BASE_DEC, NULL, 0,
3277
15
        NULL, HFILL }},
3278
15
    { &hf_sbc_ap_EmergencyAreaID_Cancelled_List_item,
3279
15
      { "EmergencyAreaID-Cancelled-Item", "sbc-ap.EmergencyAreaID_Cancelled_Item_element",
3280
15
        FT_NONE, BASE_NONE, NULL, 0,
3281
15
        NULL, HFILL }},
3282
15
    { &hf_sbc_ap_cancelledCellinEAI,
3283
15
      { "cancelledCellinEAI", "sbc-ap.cancelledCellinEAI",
3284
15
        FT_UINT32, BASE_DEC, NULL, 0,
3285
15
        NULL, HFILL }},
3286
15
    { &hf_sbc_ap_pLMNidentity,
3287
15
      { "pLMNidentity", "sbc-ap.pLMNidentity",
3288
15
        FT_BYTES, BASE_NONE, NULL, 0,
3289
15
        NULL, HFILL }},
3290
15
    { &hf_sbc_ap_cell_ID,
3291
15
      { "cell-ID", "sbc-ap.cell_ID",
3292
15
        FT_BYTES, BASE_NONE, NULL, 0,
3293
15
        "CellIdentity", HFILL }},
3294
15
    { &hf_sbc_ap_macroENB_ID,
3295
15
      { "macroENB-ID", "sbc-ap.macroENB_ID",
3296
15
        FT_BYTES, BASE_NONE, NULL, 0,
3297
15
        "BIT_STRING_SIZE_20", HFILL }},
3298
15
    { &hf_sbc_ap_homeENB_ID,
3299
15
      { "homeENB-ID", "sbc-ap.homeENB_ID",
3300
15
        FT_BYTES, BASE_NONE, NULL, 0,
3301
15
        "BIT_STRING_SIZE_28", HFILL }},
3302
15
    { &hf_sbc_ap_short_macroENB_ID,
3303
15
      { "short-macroENB-ID", "sbc-ap.short_macroENB_ID",
3304
15
        FT_BYTES, BASE_NONE, NULL, 0,
3305
15
        "BIT_STRING_SIZE_18", HFILL }},
3306
15
    { &hf_sbc_ap_long_macroENB_ID,
3307
15
      { "long-macroENB-ID", "sbc-ap.long_macroENB_ID",
3308
15
        FT_BYTES, BASE_NONE, NULL, 0,
3309
15
        "BIT_STRING_SIZE_21", HFILL }},
3310
15
    { &hf_sbc_ap_Failed_Cell_List_item,
3311
15
      { "EUTRAN-CGI", "sbc-ap.EUTRAN_CGI_element",
3312
15
        FT_NONE, BASE_NONE, NULL, 0,
3313
15
        NULL, HFILL }},
3314
15
    { &hf_sbc_ap_Failed_Cell_List_NR_item,
3315
15
      { "NR-CGI", "sbc-ap.NR_CGI_element",
3316
15
        FT_NONE, BASE_NONE, NULL, 0,
3317
15
        NULL, HFILL }},
3318
15
    { &hf_sbc_ap_eNB_ID,
3319
15
      { "eNB-ID", "sbc-ap.eNB_ID",
3320
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_ENB_ID_vals), 0,
3321
15
        NULL, HFILL }},
3322
15
    { &hf_sbc_ap_global_GNB_ID,
3323
15
      { "global-GNB-ID", "sbc-ap.global_GNB_ID_element",
3324
15
        FT_NONE, BASE_NONE, NULL, 0,
3325
15
        NULL, HFILL }},
3326
15
    { &hf_sbc_ap_global_NgENB_ID,
3327
15
      { "global-NgENB-ID", "sbc-ap.global_NgENB_ID_element",
3328
15
        FT_NONE, BASE_NONE, NULL, 0,
3329
15
        NULL, HFILL }},
3330
15
    { &hf_sbc_ap_gnb_id_choice,
3331
15
      { "gNB-ID", "sbc-ap.gnb_id_choice",
3332
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_GNB_ID_vals), 0,
3333
15
        NULL, HFILL }},
3334
15
    { &hf_sbc_ap_gNB_ID,
3335
15
      { "gNB-ID", "sbc-ap.gNB_ID",
3336
15
        FT_BYTES, BASE_NONE, NULL, 0,
3337
15
        "BIT_STRING_SIZE_22_32", HFILL }},
3338
15
    { &hf_sbc_ap_ngENB_ID,
3339
15
      { "ngENB-ID", "sbc-ap.ngENB_ID",
3340
15
        FT_UINT32, BASE_DEC, VALS(sbc_ap_ENB_ID_vals), 0,
3341
15
        "ENB_ID", HFILL }},
3342
15
    { &hf_sbc_ap_List_of_TAIs_item,
3343
15
      { "List-of-TAIs item", "sbc-ap.List_of_TAIs_item_element",
3344
15
        FT_NONE, BASE_NONE, NULL, 0,
3345
15
        NULL, HFILL }},
3346
15
    { &hf_sbc_ap_tai,
3347
15
      { "tai", "sbc-ap.tai_element",
3348
15
        FT_NONE, BASE_NONE, NULL, 0,
3349
15
        NULL, HFILL }},
3350
15
    { &hf_sbc_ap_List_of_TAIs_Restart_item,
3351
15
      { "List-of-TAIs-Restart item", "sbc-ap.List_of_TAIs_Restart_item_element",
3352
15
        FT_NONE, BASE_NONE, NULL, 0,
3353
15
        NULL, HFILL }},
3354
15
    { &hf_sbc_ap_List_of_EAIs_Restart_item,
3355
15
      { "Emergency-Area-ID", "sbc-ap.Emergency_Area_ID",
3356
15
        FT_BYTES, BASE_NONE, NULL, 0,
3357
15
        NULL, HFILL }},
3358
15
    { &hf_sbc_ap_List_of_5GS_TAIs_item,
3359
15
      { "TAI-5GS", "sbc-ap.TAI_5GS_element",
3360
15
        FT_NONE, BASE_NONE, NULL, 0,
3361
15
        NULL, HFILL }},
3362
15
    { &hf_sbc_ap_List_of_5GS_TAI_for_Restart_item,
3363
15
      { "TAI-5GS", "sbc-ap.TAI_5GS_element",
3364
15
        FT_NONE, BASE_NONE, NULL, 0,
3365
15
        NULL, HFILL }},
3366
15
    { &hf_sbc_ap_NR_CGIList_item,
3367
15
      { "NR-CGI", "sbc-ap.NR_CGI_element",
3368
15
        FT_NONE, BASE_NONE, NULL, 0,
3369
15
        NULL, HFILL }},
3370
15
    { &hf_sbc_ap_nRCellIdentity,
3371
15
      { "nRCellIdentity", "sbc-ap.nRCellIdentity",
3372
15
        FT_BYTES, BASE_NONE, NULL, 0,
3373
15
        NULL, HFILL }},
3374
15
    { &hf_sbc_ap_Restarted_Cell_List_item,
3375
15
      { "EUTRAN-CGI", "sbc-ap.EUTRAN_CGI_element",
3376
15
        FT_NONE, BASE_NONE, NULL, 0,
3377
15
        NULL, HFILL }},
3378
15
    { &hf_sbc_ap_Restarted_Cell_List_NR_item,
3379
15
      { "NR-CGI", "sbc-ap.NR_CGI_element",
3380
15
        FT_NONE, BASE_NONE, NULL, 0,
3381
15
        NULL, HFILL }},
3382
15
    { &hf_sbc_ap_ScheduledCellinEAI_item,
3383
15
      { "ScheduledCellinEAI-Item", "sbc-ap.ScheduledCellinEAI_Item_element",
3384
15
        FT_NONE, BASE_NONE, NULL, 0,
3385
15
        NULL, HFILL }},
3386
15
    { &hf_sbc_ap_ScheduledCellinTAI_item,
3387
15
      { "ScheduledCellinTAI-Item", "sbc-ap.ScheduledCellinTAI_Item_element",
3388
15
        FT_NONE, BASE_NONE, NULL, 0,
3389
15
        NULL, HFILL }},
3390
15
    { &hf_sbc_ap_ScheduledCellinTAI_5GS_item,
3391
15
      { "ScheduledCellinTAI-5GS item", "sbc-ap.ScheduledCellinTAI_5GS_item_element",
3392
15
        FT_NONE, BASE_NONE, NULL, 0,
3393
15
        NULL, HFILL }},
3394
15
    { &hf_sbc_ap_TAI_Broadcast_List_item,
3395
15
      { "TAI-Broadcast-List-Item", "sbc-ap.TAI_Broadcast_List_Item_element",
3396
15
        FT_NONE, BASE_NONE, NULL, 0,
3397
15
        NULL, HFILL }},
3398
15
    { &hf_sbc_ap_tAI,
3399
15
      { "tAI", "sbc-ap.tAI_element",
3400
15
        FT_NONE, BASE_NONE, NULL, 0,
3401
15
        NULL, HFILL }},
3402
15
    { &hf_sbc_ap_scheduledCellinTAI,
3403
15
      { "scheduledCellinTAI", "sbc-ap.scheduledCellinTAI",
3404
15
        FT_UINT32, BASE_DEC, NULL, 0,
3405
15
        NULL, HFILL }},
3406
15
    { &hf_sbc_ap_TAI_Broadcast_List_5GS_item,
3407
15
      { "TAI-Broadcast-List-5GS item", "sbc-ap.TAI_Broadcast_List_5GS_item_element",
3408
15
        FT_NONE, BASE_NONE, NULL, 0,
3409
15
        NULL, HFILL }},
3410
15
    { &hf_sbc_ap_tAI_5GS,
3411
15
      { "tAI-5GS", "sbc-ap.tAI_5GS_element",
3412
15
        FT_NONE, BASE_NONE, NULL, 0,
3413
15
        NULL, HFILL }},
3414
15
    { &hf_sbc_ap_scheduledCellinTAI_5GS,
3415
15
      { "scheduledCellinTAI-5GS", "sbc-ap.scheduledCellinTAI_5GS",
3416
15
        FT_UINT32, BASE_DEC, NULL, 0,
3417
15
        NULL, HFILL }},
3418
15
    { &hf_sbc_ap_TAI_Cancelled_List_item,
3419
15
      { "TAI-Cancelled-List-Item", "sbc-ap.TAI_Cancelled_List_Item_element",
3420
15
        FT_NONE, BASE_NONE, NULL, 0,
3421
15
        NULL, HFILL }},
3422
15
    { &hf_sbc_ap_cancelledCellinTAI,
3423
15
      { "cancelledCellinTAI", "sbc-ap.cancelledCellinTAI",
3424
15
        FT_UINT32, BASE_DEC, NULL, 0,
3425
15
        NULL, HFILL }},
3426
15
    { &hf_sbc_ap_TAI_Cancelled_List_5GS_item,
3427
15
      { "TAI-Cancelled-List-5GS item", "sbc-ap.TAI_Cancelled_List_5GS_item_element",
3428
15
        FT_NONE, BASE_NONE, NULL, 0,
3429
15
        NULL, HFILL }},
3430
15
    { &hf_sbc_ap_cancelledCellinTAI_5GS,
3431
15
      { "cancelledCellinTAI-5GS", "sbc-ap.cancelledCellinTAI_5GS",
3432
15
        FT_UINT32, BASE_DEC, NULL, 0,
3433
15
        NULL, HFILL }},
3434
15
    { &hf_sbc_ap_TAI_List_for_Warning_item,
3435
15
      { "TAI", "sbc-ap.TAI_element",
3436
15
        FT_NONE, BASE_NONE, NULL, 0,
3437
15
        NULL, HFILL }},
3438
15
    { &hf_sbc_ap_tAC,
3439
15
      { "tAC", "sbc-ap.tAC",
3440
15
        FT_UINT16, BASE_DEC_HEX, NULL, 0,
3441
15
        NULL, HFILL }},
3442
15
    { &hf_sbc_ap_tAC_5GS,
3443
15
      { "tAC-5GS", "sbc-ap.tAC_5GS",
3444
15
        FT_UINT24, BASE_DEC_HEX, NULL, 0,
3445
15
        NULL, HFILL }},
3446
15
    { &hf_sbc_ap_Unknown_5GS_Tracking_Area_List_item,
3447
15
      { "TAI-5GS", "sbc-ap.TAI_5GS_element",
3448
15
        FT_NONE, BASE_NONE, NULL, 0,
3449
15
        NULL, HFILL }},
3450
15
    { &hf_sbc_ap_cell_ID_List,
3451
15
      { "cell-ID-List", "sbc-ap.cell_ID_List",
3452
15
        FT_UINT32, BASE_DEC, NULL, 0,
3453
15
        "ECGIList", HFILL }},
3454
15
    { &hf_sbc_ap_tracking_Area_List_for_Warning,
3455
15
      { "tracking-Area-List-for-Warning", "sbc-ap.tracking_Area_List_for_Warning",
3456
15
        FT_UINT32, BASE_DEC, NULL, 0,
3457
15
        "TAI_List_for_Warning", HFILL }},
3458
15
    { &hf_sbc_ap_emergency_Area_ID_List,
3459
15
      { "emergency-Area-ID-List", "sbc-ap.emergency_Area_ID_List",
3460
15
        FT_UINT32, BASE_DEC, NULL, 0,
3461
15
        NULL, HFILL }},
3462
15
    { &hf_sbc_ap_nR_CGIList,
3463
15
      { "nR-CGIList", "sbc-ap.nR_CGIList",
3464
15
        FT_UINT32, BASE_DEC, NULL, 0,
3465
15
        NULL, HFILL }},
3466
15
    { &hf_sbc_ap_tAIList_5GS,
3467
15
      { "tAIList-5GS", "sbc-ap.tAIList_5GS_element",
3468
15
        FT_NONE, BASE_NONE, NULL, 0,
3469
15
        "TAI_5GS", HFILL }},
3470
15
    { &hf_sbc_ap_emergencyAreaIDList,
3471
15
      { "emergencyAreaIDList", "sbc-ap.emergencyAreaIDList",
3472
15
        FT_UINT32, BASE_DEC, NULL, 0,
3473
15
        "Emergency_Area_ID_List", HFILL }},
3474
15
    { &hf_sbc_ap_protocolIEs,
3475
15
      { "protocolIEs", "sbc-ap.protocolIEs",
3476
15
        FT_UINT32, BASE_DEC, NULL, 0,
3477
15
        "ProtocolIE_Container", HFILL }},
3478
15
    { &hf_sbc_ap_protocolExtensions,
3479
15
      { "protocolExtensions", "sbc-ap.protocolExtensions",
3480
15
        FT_UINT32, BASE_DEC, NULL, 0,
3481
15
        "ProtocolExtensionContainer", HFILL }},
3482
15
    { &hf_sbc_ap_initiatingMessage,
3483
15
      { "initiatingMessage", "sbc-ap.initiatingMessage_element",
3484
15
        FT_NONE, BASE_NONE, NULL, 0,
3485
15
        NULL, HFILL }},
3486
15
    { &hf_sbc_ap_successfulOutcome,
3487
15
      { "successfulOutcome", "sbc-ap.successfulOutcome_element",
3488
15
        FT_NONE, BASE_NONE, NULL, 0,
3489
15
        NULL, HFILL }},
3490
15
    { &hf_sbc_ap_unsuccessfulOutcome,
3491
15
      { "unsuccessfulOutcome", "sbc-ap.unsuccessfulOutcome_element",
3492
15
        FT_NONE, BASE_NONE, NULL, 0,
3493
15
        NULL, HFILL }},
3494
15
    { &hf_sbc_ap_initiatingMessagevalue,
3495
15
      { "value", "sbc-ap.initiatingMessagevalue_element",
3496
15
        FT_NONE, BASE_NONE, NULL, 0,
3497
15
        "InitiatingMessage_value", HFILL }},
3498
15
    { &hf_sbc_ap_successfulOutcome_value,
3499
15
      { "value", "sbc-ap.successfulOutcome_value_element",
3500
15
        FT_NONE, BASE_NONE, NULL, 0,
3501
15
        "SuccessfulOutcome_value", HFILL }},
3502
15
    { &hf_sbc_ap_unsuccessfulOutcome_value,
3503
15
      { "value", "sbc-ap.unsuccessfulOutcome_value_element",
3504
15
        FT_NONE, BASE_NONE, NULL, 0,
3505
15
        "UnsuccessfulOutcome_value", HFILL }},
3506
15
  };
3507
3508
  /* List of subtrees */
3509
15
  static int *ett[] = {
3510
15
                  &ett_sbc_ap,
3511
15
                  &ett_sbc_ap_Serial_Number,
3512
15
                  &ett_sbc_ap_Warning_Type,
3513
15
                  &ett_sbc_ap_Data_Coding_Scheme,
3514
15
                  &ett_sbc_ap_Warning_Message_Contents,
3515
15
    &ett_sbc_ap_ProtocolIE_Container,
3516
15
    &ett_sbc_ap_ProtocolIE_Field,
3517
15
    &ett_sbc_ap_ProtocolExtensionContainer,
3518
15
    &ett_sbc_ap_ProtocolExtensionField,
3519
15
    &ett_sbc_ap_Broadcast_Scheduled_Area_List,
3520
15
    &ett_sbc_ap_Broadcast_Scheduled_Area_List_5GS,
3521
15
    &ett_sbc_ap_Broadcast_Cancelled_Area_List,
3522
15
    &ett_sbc_ap_Broadcast_Cancelled_Area_List_5GS,
3523
15
    &ett_sbc_ap_Broadcast_Empty_Area_List,
3524
15
    &ett_sbc_ap_Broadcast_Empty_Area_List_5GS,
3525
15
    &ett_sbc_ap_CancelledCellinEAI,
3526
15
    &ett_sbc_ap_CancelledCellinEAI_Item,
3527
15
    &ett_sbc_ap_CancelledCellinTAI,
3528
15
    &ett_sbc_ap_CancelledCellinTAI_Item,
3529
15
    &ett_sbc_ap_CancelledCellinTAI_5GS,
3530
15
    &ett_sbc_ap_CancelledCellinTAI_5GS_item,
3531
15
    &ett_sbc_ap_CellId_Broadcast_List,
3532
15
    &ett_sbc_ap_CellId_Broadcast_List_Item,
3533
15
    &ett_sbc_ap_CellId_Broadcast_List_5GS,
3534
15
    &ett_sbc_ap_CellId_Broadcast_List_5GS_item,
3535
15
    &ett_sbc_ap_CellID_Cancelled_List,
3536
15
    &ett_sbc_ap_CellID_Cancelled_Item,
3537
15
    &ett_sbc_ap_CellID_Cancelled_List_5GS,
3538
15
    &ett_sbc_ap_CellID_Cancelled_List_5GS_item,
3539
15
    &ett_sbc_ap_Criticality_Diagnostics,
3540
15
    &ett_sbc_ap_CriticalityDiagnostics_IE_List,
3541
15
    &ett_sbc_ap_CriticalityDiagnostics_IE_List_item,
3542
15
    &ett_sbc_ap_ECGIList,
3543
15
    &ett_sbc_ap_Emergency_Area_ID_List,
3544
15
    &ett_sbc_ap_EmergencyAreaID_Broadcast_List,
3545
15
    &ett_sbc_ap_EmergencyAreaID_Broadcast_List_Item,
3546
15
    &ett_sbc_ap_EmergencyAreaID_Cancelled_List,
3547
15
    &ett_sbc_ap_EmergencyAreaID_Cancelled_Item,
3548
15
    &ett_sbc_ap_EUTRAN_CGI,
3549
15
    &ett_sbc_ap_ENB_ID,
3550
15
    &ett_sbc_ap_Failed_Cell_List,
3551
15
    &ett_sbc_ap_Failed_Cell_List_NR,
3552
15
    &ett_sbc_ap_Global_ENB_ID,
3553
15
    &ett_sbc_ap_Global_RAN_Node_ID,
3554
15
    &ett_sbc_ap_Global_GNB_ID,
3555
15
    &ett_sbc_ap_GNB_ID,
3556
15
    &ett_sbc_ap_Global_NgENB_ID,
3557
15
    &ett_sbc_ap_List_of_TAIs,
3558
15
    &ett_sbc_ap_List_of_TAIs_item,
3559
15
    &ett_sbc_ap_List_of_TAIs_Restart,
3560
15
    &ett_sbc_ap_List_of_TAIs_Restart_item,
3561
15
    &ett_sbc_ap_List_of_EAIs_Restart,
3562
15
    &ett_sbc_ap_List_of_5GS_TAIs,
3563
15
    &ett_sbc_ap_List_of_5GS_TAI_for_Restart,
3564
15
    &ett_sbc_ap_NR_CGIList,
3565
15
    &ett_sbc_ap_NR_CGI,
3566
15
    &ett_sbc_ap_Restarted_Cell_List,
3567
15
    &ett_sbc_ap_Restarted_Cell_List_NR,
3568
15
    &ett_sbc_ap_ScheduledCellinEAI,
3569
15
    &ett_sbc_ap_ScheduledCellinEAI_Item,
3570
15
    &ett_sbc_ap_ScheduledCellinTAI,
3571
15
    &ett_sbc_ap_ScheduledCellinTAI_Item,
3572
15
    &ett_sbc_ap_ScheduledCellinTAI_5GS,
3573
15
    &ett_sbc_ap_ScheduledCellinTAI_5GS_item,
3574
15
    &ett_sbc_ap_TAI_Broadcast_List,
3575
15
    &ett_sbc_ap_TAI_Broadcast_List_Item,
3576
15
    &ett_sbc_ap_TAI_Broadcast_List_5GS,
3577
15
    &ett_sbc_ap_TAI_Broadcast_List_5GS_item,
3578
15
    &ett_sbc_ap_TAI_Cancelled_List,
3579
15
    &ett_sbc_ap_TAI_Cancelled_List_Item,
3580
15
    &ett_sbc_ap_TAI_Cancelled_List_5GS,
3581
15
    &ett_sbc_ap_TAI_Cancelled_List_5GS_item,
3582
15
    &ett_sbc_ap_TAI_List_for_Warning,
3583
15
    &ett_sbc_ap_TAI,
3584
15
    &ett_sbc_ap_TAI_5GS,
3585
15
    &ett_sbc_ap_Unknown_5GS_Tracking_Area_List,
3586
15
    &ett_sbc_ap_Warning_Area_List,
3587
15
    &ett_sbc_ap_Warning_Area_List_5GS,
3588
15
    &ett_sbc_ap_Write_Replace_Warning_Request,
3589
15
    &ett_sbc_ap_Write_Replace_Warning_Response,
3590
15
    &ett_sbc_ap_Stop_Warning_Request,
3591
15
    &ett_sbc_ap_Stop_Warning_Response,
3592
15
    &ett_sbc_ap_Write_Replace_Warning_Indication,
3593
15
    &ett_sbc_ap_Stop_Warning_Indication,
3594
15
    &ett_sbc_ap_PWS_Restart_Indication,
3595
15
    &ett_sbc_ap_PWS_Failure_Indication,
3596
15
    &ett_sbc_ap_Error_Indication,
3597
15
    &ett_sbc_ap_SBC_AP_PDU,
3598
15
    &ett_sbc_ap_InitiatingMessage,
3599
15
    &ett_sbc_ap_SuccessfulOutcome,
3600
15
    &ett_sbc_ap_UnsuccessfulOutcome,
3601
15
  };
3602
3603
3604
  /* Register protocol */
3605
15
  proto_sbc_ap = proto_register_protocol("SBc Application Part", "SBcAP", "sbcap");
3606
  /* Register fields and subtrees */
3607
15
  proto_register_field_array(proto_sbc_ap, hf, array_length(hf));
3608
15
  proto_register_subtree_array(ett, array_length(ett));
3609
3610
  /* Register dissector */
3611
15
  sbc_ap_handle = register_dissector("sbcap", dissect_sbc_ap, proto_sbc_ap);
3612
3613
  /* Register dissector tables */
3614
15
  sbc_ap_ies_dissector_table = register_dissector_table("sbc_ap.ies", "SBC-AP-PROTOCOL-IES", proto_sbc_ap, FT_UINT32, BASE_DEC);
3615
15
  sbc_ap_extension_dissector_table = register_dissector_table("sbc_ap.extension", "SBC-AP-PROTOCOL-EXTENSION", proto_sbc_ap, FT_UINT32, BASE_DEC);
3616
15
  sbc_ap_proc_imsg_dissector_table = register_dissector_table("sbc_ap.proc.imsg", "SBC-AP-ELEMENTARY-PROCEDURE InitiatingMessage", proto_sbc_ap, FT_UINT32, BASE_DEC);
3617
15
  sbc_ap_proc_sout_dissector_table = register_dissector_table("sbc_ap.proc.sout", "SBC-AP-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_sbc_ap, FT_UINT32, BASE_DEC);
3618
15
  sbc_ap_proc_uout_dissector_table = register_dissector_table("sbc_ap.proc.uout", "SBC-AP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_sbc_ap, FT_UINT32, BASE_DEC);
3619
3620
3621
15
}
3622
3623
3624
/*--- proto_reg_handoff_sbc_ap ---------------------------------------*/
3625
void
3626
proto_reg_handoff_sbc_ap(void)
3627
15
{
3628
15
    static bool inited = false;
3629
15
  static unsigned SctpPort;
3630
3631
15
    if( !inited ) {
3632
15
        dissector_add_uint("sctp.ppi", SBC_AP_PAYLOAD_PROTOCOL_ID,   sbc_ap_handle);
3633
15
        inited = true;
3634
15
  dissector_add_uint("sbc_ap.ies", id_Cause, create_dissector_handle(dissect_Cause_PDU, proto_sbc_ap));
3635
15
  dissector_add_uint("sbc_ap.ies", id_Criticality_Diagnostics, create_dissector_handle(dissect_Criticality_Diagnostics_PDU, proto_sbc_ap));
3636
15
  dissector_add_uint("sbc_ap.ies", id_Data_Coding_Scheme, create_dissector_handle(dissect_Data_Coding_Scheme_PDU, proto_sbc_ap));
3637
15
  dissector_add_uint("sbc_ap.ies", id_Message_Identifier, create_dissector_handle(dissect_Message_Identifier_PDU, proto_sbc_ap));
3638
15
  dissector_add_uint("sbc_ap.ies", id_Number_of_Broadcasts_Requested, create_dissector_handle(dissect_Number_of_Broadcasts_Requested_PDU, proto_sbc_ap));
3639
15
  dissector_add_uint("sbc_ap.ies", id_Repetition_Period, create_dissector_handle(dissect_Repetition_Period_PDU, proto_sbc_ap));
3640
15
  dissector_add_uint("sbc_ap.ies", id_Serial_Number, create_dissector_handle(dissect_Serial_Number_PDU, proto_sbc_ap));
3641
15
  dissector_add_uint("sbc_ap.ies", id_List_of_TAIs, create_dissector_handle(dissect_List_of_TAIs_PDU, proto_sbc_ap));
3642
15
  dissector_add_uint("sbc_ap.ies", id_Warning_Area_List, create_dissector_handle(dissect_Warning_Area_List_PDU, proto_sbc_ap));
3643
15
  dissector_add_uint("sbc_ap.ies", id_Warning_Message_Content, create_dissector_handle(dissect_Warning_Message_Content_PDU, proto_sbc_ap));
3644
15
  dissector_add_uint("sbc_ap.ies", id_Warning_Security_Information, create_dissector_handle(dissect_Warning_Security_Information_PDU, proto_sbc_ap));
3645
15
  dissector_add_uint("sbc_ap.ies", id_Warning_Type, create_dissector_handle(dissect_Warning_Type_PDU, proto_sbc_ap));
3646
15
  dissector_add_uint("sbc_ap.ies", id_Omc_Id, create_dissector_handle(dissect_Omc_Id_PDU, proto_sbc_ap));
3647
15
  dissector_add_uint("sbc_ap.ies", id_Concurrent_Warning_Message_Indicator, create_dissector_handle(dissect_Concurrent_Warning_Message_Indicator_PDU, proto_sbc_ap));
3648
15
  dissector_add_uint("sbc_ap.ies", id_Extended_Repetition_Period, create_dissector_handle(dissect_Extended_Repetition_Period_PDU, proto_sbc_ap));
3649
15
  dissector_add_uint("sbc_ap.ies", id_Unknown_Tracking_Area_List, create_dissector_handle(dissect_List_of_TAIs_PDU, proto_sbc_ap));
3650
15
  dissector_add_uint("sbc_ap.ies", id_Broadcast_Scheduled_Area_List, create_dissector_handle(dissect_Broadcast_Scheduled_Area_List_PDU, proto_sbc_ap));
3651
15
  dissector_add_uint("sbc_ap.ies", id_Send_Write_Replace_Warning_Indication, create_dissector_handle(dissect_Send_Write_Replace_Warning_Indication_PDU, proto_sbc_ap));
3652
15
  dissector_add_uint("sbc_ap.ies", id_Broadcast_Cancelled_Area_List, create_dissector_handle(dissect_Broadcast_Cancelled_Area_List_PDU, proto_sbc_ap));
3653
15
  dissector_add_uint("sbc_ap.ies", id_Send_Stop_Warning_Indication, create_dissector_handle(dissect_Send_Stop_Warning_Indication_PDU, proto_sbc_ap));
3654
15
  dissector_add_uint("sbc_ap.ies", id_Stop_All_Indicator, create_dissector_handle(dissect_Stop_All_Indicator_PDU, proto_sbc_ap));
3655
15
  dissector_add_uint("sbc_ap.ies", id_Global_ENB_ID, create_dissector_handle(dissect_Global_ENB_ID_PDU, proto_sbc_ap));
3656
15
  dissector_add_uint("sbc_ap.ies", id_Broadcast_Empty_Area_List, create_dissector_handle(dissect_Broadcast_Empty_Area_List_PDU, proto_sbc_ap));
3657
15
  dissector_add_uint("sbc_ap.ies", id_Restarted_Cell_List, create_dissector_handle(dissect_Restarted_Cell_List_PDU, proto_sbc_ap));
3658
15
  dissector_add_uint("sbc_ap.ies", id_List_of_TAIs_Restart, create_dissector_handle(dissect_List_of_TAIs_Restart_PDU, proto_sbc_ap));
3659
15
  dissector_add_uint("sbc_ap.ies", id_List_of_EAIs_Restart, create_dissector_handle(dissect_List_of_EAIs_Restart_PDU, proto_sbc_ap));
3660
15
  dissector_add_uint("sbc_ap.ies", id_Failed_Cell_List, create_dissector_handle(dissect_Failed_Cell_List_PDU, proto_sbc_ap));
3661
15
  dissector_add_uint("sbc_ap.extension", id_List_of_5GS_TAIs, create_dissector_handle(dissect_List_of_5GS_TAIs_PDU, proto_sbc_ap));
3662
15
  dissector_add_uint("sbc_ap.extension", id_Warning_Area_List_5GS, create_dissector_handle(dissect_Warning_Area_List_5GS_PDU, proto_sbc_ap));
3663
15
  dissector_add_uint("sbc_ap.extension", id_Global_RAN_Node_ID, create_dissector_handle(dissect_Global_RAN_Node_ID_PDU, proto_sbc_ap));
3664
15
  dissector_add_uint("sbc_ap.extension", id_Global_GNB_ID, create_dissector_handle(dissect_Global_GNB_ID_PDU, proto_sbc_ap));
3665
15
  dissector_add_uint("sbc_ap.extension", id_RAT_Selector_5GS, create_dissector_handle(dissect_RAT_Selector_5GS_PDU, proto_sbc_ap));
3666
15
  dissector_add_uint("sbc_ap.extension", id_Unknown_5GS_Tracking_Area_List, create_dissector_handle(dissect_Unknown_5GS_Tracking_Area_List_PDU, proto_sbc_ap));
3667
15
  dissector_add_uint("sbc_ap.extension", id_Broadcast_Scheduled_Area_List_5GS, create_dissector_handle(dissect_Broadcast_Scheduled_Area_List_5GS_PDU, proto_sbc_ap));
3668
15
  dissector_add_uint("sbc_ap.extension", id_Broadcast_Cancelled_Area_List_5GS, create_dissector_handle(dissect_Broadcast_Cancelled_Area_List_5GS_PDU, proto_sbc_ap));
3669
15
  dissector_add_uint("sbc_ap.extension", id_Broadcast_Empty_Area_List_5GS, create_dissector_handle(dissect_Broadcast_Empty_Area_List_5GS_PDU, proto_sbc_ap));
3670
15
  dissector_add_uint("sbc_ap.extension", id_Restarted_Cell_List_NR, create_dissector_handle(dissect_Restarted_Cell_List_NR_PDU, proto_sbc_ap));
3671
15
  dissector_add_uint("sbc_ap.extension", id_Failed_Cell_List_NR, create_dissector_handle(dissect_Failed_Cell_List_NR_PDU, proto_sbc_ap));
3672
15
  dissector_add_uint("sbc_ap.extension", id_List_of_5GS_TAI_for_Restart, create_dissector_handle(dissect_List_of_5GS_TAI_for_Restart_PDU, proto_sbc_ap));
3673
15
  dissector_add_uint("sbc_ap.ies", id_Warning_Area_Coordinates, create_dissector_handle(dissect_Warning_Area_Coordinates_PDU, proto_sbc_ap));
3674
15
  dissector_add_uint("sbc_ap.proc.imsg", id_Write_Replace_Warning, create_dissector_handle(dissect_Write_Replace_Warning_Request_PDU, proto_sbc_ap));
3675
15
  dissector_add_uint("sbc_ap.proc.sout", id_Write_Replace_Warning, create_dissector_handle(dissect_Write_Replace_Warning_Response_PDU, proto_sbc_ap));
3676
15
  dissector_add_uint("sbc_ap.proc.imsg", id_Stop_Warning, create_dissector_handle(dissect_Stop_Warning_Request_PDU, proto_sbc_ap));
3677
15
  dissector_add_uint("sbc_ap.proc.sout", id_Stop_Warning, create_dissector_handle(dissect_Stop_Warning_Response_PDU, proto_sbc_ap));
3678
15
  dissector_add_uint("sbc_ap.proc.imsg", id_Error_Indication, create_dissector_handle(dissect_Error_Indication_PDU, proto_sbc_ap));
3679
15
  dissector_add_uint("sbc_ap.proc.imsg", id_Write_Replace_Warning_Indication, create_dissector_handle(dissect_Write_Replace_Warning_Indication_PDU, proto_sbc_ap));
3680
15
  dissector_add_uint("sbc_ap.proc.imsg", id_Stop_Warning_Indication, create_dissector_handle(dissect_Stop_Warning_Indication_PDU, proto_sbc_ap));
3681
15
  dissector_add_uint("sbc_ap.proc.imsg", id_PWS_Restart_Indication, create_dissector_handle(dissect_PWS_Restart_Indication_PDU, proto_sbc_ap));
3682
15
  dissector_add_uint("sbc_ap.proc.imsg", id_PWS_Failure_Indication, create_dissector_handle(dissect_PWS_Failure_Indication_PDU, proto_sbc_ap));
3683
3684
15
  } else {
3685
0
    if (SctpPort != 0) {
3686
0
      dissector_delete_uint("sctp.port", SctpPort, sbc_ap_handle);
3687
0
    }
3688
0
  }
3689
3690
15
  SctpPort = global_sbc_ap_port;
3691
15
  if (SctpPort != 0) {
3692
15
    dissector_add_uint("sctp.port", SctpPort, sbc_ap_handle);
3693
15
  }
3694
3695
15
}
3696
3697
3698
/*
3699
 * Editor modelines
3700
 *
3701
 * Local Variables:
3702
 * c-basic-offset: 2
3703
 * tab-width: 8
3704
 * indent-tabs-mode: nil
3705
 * End:
3706
 *
3707
 * ex: set shiftwidth=2 tabstop=8 expandtab:
3708
 * :indentSize=2:tabSize=8:noTabs=true:
3709
 */