Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-sbc-ap.c
blobef8f07bbd2bda171ae3bfdbccb2abc45a058ee3c
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 */
6 /* packet-sbc-ap.c
7 * Routines for SBc Application Part (SBc-AP) packet dissection
9 * Wireshark - Network traffic analyzer
10 * By Gerald Combs <gerald@wireshark.org>
11 * Copyright 1998 Gerald Combs
13 * SPDX-License-Identifier: GPL-2.0-or-later
15 * Ref 3GPP TS 29.168
18 #include "config.h"
20 #include <epan/packet.h>
21 #include <epan/asn1.h>
22 #include <epan/sctpppids.h>
23 #include <epan/proto_data.h>
24 #include <epan/tfs.h>
25 #include <epan/unit_strings.h>
27 #include <wsutil/array.h>
29 #include "packet-ber.h"
30 #include "packet-per.h"
31 #include "packet-e212.h"
32 #include "packet-gsm_map.h"
33 #include "packet-s1ap.h"
34 #include "packet-lte-rrc.h"
36 #define PNAME "SBc Application Part"
37 #define PSNAME "SBcAP"
38 #define PFNAME "sbcap"
40 void proto_register_sbc_ap(void);
41 void proto_reg_handoff_sbc_ap(void);
43 /* The registered port number for SBc-AP is 29168.
44 * The registered payload protocol identifier for SBc-AP is 24.
46 #define SBC_AP_PORT 29168
47 static dissector_handle_t sbc_ap_handle;
50 #define maxNrOfErrors 256
51 #define maxnoofCellID 65535
52 #define maxnoofCellinEAI 65535
53 #define maxnoofCellinTAI 65535
54 #define maxNrOfTAIs 65535
55 #define maxnoofEmergencyAreaID 65535
56 #define maxnoofTAIforWarning 65535
57 #define maxProtocolExtensions 65535
58 #define maxProtocolIEs 65535
59 #define maxnoofeNBIds 256
60 #define maxnoofRestartedCells 256
61 #define maxnoofRestartTAIs 2048
62 #define maxnoofRestartEAIs 256
63 #define maxnoofFailedCells 256
64 #define maxnoof5GSTAIs 2048
65 #define maxnoofCellsingNB 16384
66 #define maxnoofCellsin5GS 16776960
67 #define maxnoofCellsin5GSTAI 65535
68 #define maxnoofRANNodes 65535
69 #define maxnoofRestart5GSTAIs 2048
70 #define maxnoofCellsforRestartNR 16384
72 typedef enum _ProcedureCode_enum {
73 id_Write_Replace_Warning = 0,
74 id_Stop_Warning = 1,
75 id_Error_Indication = 2,
76 id_Write_Replace_Warning_Indication = 3,
77 id_Stop_Warning_Indication = 4,
78 id_PWS_Restart_Indication = 5,
79 id_PWS_Failure_Indication = 6
80 } ProcedureCode_enum;
82 typedef enum _ProtocolIE_ID_enum {
83 id_Broadcast_Message_Content = 0,
84 id_Cause = 1,
85 id_Criticality_Diagnostics = 2,
86 id_Data_Coding_Scheme = 3,
87 id_Failure_List = 4,
88 id_Message_Identifier = 5,
89 id_Number_of_Broadcasts_Completed_List = 6,
90 id_Number_of_Broadcasts_Requested = 7,
91 id_Radio_Resource_Loading_List = 8,
92 id_Recovery_Indication = 9,
93 id_Repetition_Period = 10,
94 id_Serial_Number = 11,
95 id_Service_Areas_List = 12,
96 id_TypeOfError = 13,
97 id_List_of_TAIs = 14,
98 id_Warning_Area_List = 15,
99 id_Warning_Message_Content = 16,
100 id_Warning_Security_Information = 17,
101 id_Warning_Type = 18,
102 id_Omc_Id = 19,
103 id_Concurrent_Warning_Message_Indicator = 20,
104 id_Extended_Repetition_Period = 21,
105 id_Unknown_Tracking_Area_List = 22,
106 id_Broadcast_Scheduled_Area_List = 23,
107 id_Send_Write_Replace_Warning_Indication = 24,
108 id_Broadcast_Cancelled_Area_List = 25,
109 id_Send_Stop_Warning_Indication = 26,
110 id_Stop_All_Indicator = 27,
111 id_Global_ENB_ID = 28,
112 id_Broadcast_Empty_Area_List = 29,
113 id_Restarted_Cell_List = 30,
114 id_List_of_TAIs_Restart = 31,
115 id_List_of_EAIs_Restart = 32,
116 id_Failed_Cell_List = 33,
117 id_List_of_5GS_TAIs = 34,
118 id_Warning_Area_List_5GS = 35,
119 id_Global_RAN_Node_ID = 36,
120 id_Global_GNB_ID = 37,
121 id_RAT_Selector_5GS = 38,
122 id_Unknown_5GS_Tracking_Area_List = 39,
123 id_Broadcast_Scheduled_Area_List_5GS = 40,
124 id_Broadcast_Cancelled_Area_List_5GS = 41,
125 id_Broadcast_Empty_Area_List_5GS = 42,
126 id_Restarted_Cell_List_NR = 43,
127 id_Failed_Cell_List_NR = 44,
128 id_List_of_5GS_TAI_for_Restart = 45,
129 id_Warning_Area_Coordinates = 46
130 } ProtocolIE_ID_enum;
132 /* Initialize the protocol and registered fields */
133 static int proto_sbc_ap;
135 static int hf_sbc_ap_Serial_Number_gs;
136 static int hf_sbc_ap_Serial_Number_msg_code;
137 static int hf_sbc_ap_Serial_Number_upd_nb;
138 static int hf_sbc_ap_Warning_Type_value;
139 static int hf_sbc_ap_Warning_Type_emergency_user_alert;
140 static int hf_sbc_ap_Warning_Type_popup;
141 static int hf_sbc_ap_Warning_Message_Contents_nb_pages;
142 static int hf_sbc_ap_Warning_Message_Contents_decoded_page;
143 static int hf_sbc_ap_Broadcast_Scheduled_Area_List_PDU; /* Broadcast_Scheduled_Area_List */
144 static int hf_sbc_ap_Broadcast_Scheduled_Area_List_5GS_PDU; /* Broadcast_Scheduled_Area_List_5GS */
145 static int hf_sbc_ap_Broadcast_Cancelled_Area_List_PDU; /* Broadcast_Cancelled_Area_List */
146 static int hf_sbc_ap_Broadcast_Cancelled_Area_List_5GS_PDU; /* Broadcast_Cancelled_Area_List_5GS */
147 static int hf_sbc_ap_Broadcast_Empty_Area_List_PDU; /* Broadcast_Empty_Area_List */
148 static int hf_sbc_ap_Broadcast_Empty_Area_List_5GS_PDU; /* Broadcast_Empty_Area_List_5GS */
149 static int hf_sbc_ap_Cause_PDU; /* Cause */
150 static int hf_sbc_ap_Concurrent_Warning_Message_Indicator_PDU; /* Concurrent_Warning_Message_Indicator */
151 static int hf_sbc_ap_Criticality_Diagnostics_PDU; /* Criticality_Diagnostics */
152 static int hf_sbc_ap_Data_Coding_Scheme_PDU; /* Data_Coding_Scheme */
153 static int hf_sbc_ap_Extended_Repetition_Period_PDU; /* Extended_Repetition_Period */
154 static int hf_sbc_ap_Failed_Cell_List_PDU; /* Failed_Cell_List */
155 static int hf_sbc_ap_Failed_Cell_List_NR_PDU; /* Failed_Cell_List_NR */
156 static int hf_sbc_ap_Global_ENB_ID_PDU; /* Global_ENB_ID */
157 static int hf_sbc_ap_Global_RAN_Node_ID_PDU; /* Global_RAN_Node_ID */
158 static int hf_sbc_ap_Global_GNB_ID_PDU; /* Global_GNB_ID */
159 static int hf_sbc_ap_List_of_TAIs_PDU; /* List_of_TAIs */
160 static int hf_sbc_ap_List_of_TAIs_Restart_PDU; /* List_of_TAIs_Restart */
161 static int hf_sbc_ap_List_of_EAIs_Restart_PDU; /* List_of_EAIs_Restart */
162 static int hf_sbc_ap_List_of_5GS_TAIs_PDU; /* List_of_5GS_TAIs */
163 static int hf_sbc_ap_List_of_5GS_TAI_for_Restart_PDU; /* List_of_5GS_TAI_for_Restart */
164 static int hf_sbc_ap_Message_Identifier_PDU; /* Message_Identifier */
165 static int hf_sbc_ap_Number_of_Broadcasts_Requested_PDU; /* Number_of_Broadcasts_Requested */
166 static int hf_sbc_ap_Omc_Id_PDU; /* Omc_Id */
167 static int hf_sbc_ap_Repetition_Period_PDU; /* Repetition_Period */
168 static int hf_sbc_ap_Restarted_Cell_List_PDU; /* Restarted_Cell_List */
169 static int hf_sbc_ap_RAT_Selector_5GS_PDU; /* RAT_Selector_5GS */
170 static int hf_sbc_ap_Restarted_Cell_List_NR_PDU; /* Restarted_Cell_List_NR */
171 static int hf_sbc_ap_Send_Write_Replace_Warning_Indication_PDU; /* Send_Write_Replace_Warning_Indication */
172 static int hf_sbc_ap_Send_Stop_Warning_Indication_PDU; /* Send_Stop_Warning_Indication */
173 static int hf_sbc_ap_Serial_Number_PDU; /* Serial_Number */
174 static int hf_sbc_ap_Stop_All_Indicator_PDU; /* Stop_All_Indicator */
175 static int hf_sbc_ap_Unknown_5GS_Tracking_Area_List_PDU; /* Unknown_5GS_Tracking_Area_List */
176 static int hf_sbc_ap_Warning_Area_List_PDU; /* Warning_Area_List */
177 static int hf_sbc_ap_Warning_Message_Content_PDU; /* Warning_Message_Content */
178 static int hf_sbc_ap_Warning_Area_Coordinates_PDU; /* Warning_Area_Coordinates */
179 static int hf_sbc_ap_Warning_Security_Information_PDU; /* Warning_Security_Information */
180 static int hf_sbc_ap_Warning_Type_PDU; /* Warning_Type */
181 static int hf_sbc_ap_Warning_Area_List_5GS_PDU; /* Warning_Area_List_5GS */
182 static int hf_sbc_ap_Write_Replace_Warning_Request_PDU; /* Write_Replace_Warning_Request */
183 static int hf_sbc_ap_Write_Replace_Warning_Response_PDU; /* Write_Replace_Warning_Response */
184 static int hf_sbc_ap_Stop_Warning_Request_PDU; /* Stop_Warning_Request */
185 static int hf_sbc_ap_Stop_Warning_Response_PDU; /* Stop_Warning_Response */
186 static int hf_sbc_ap_Write_Replace_Warning_Indication_PDU; /* Write_Replace_Warning_Indication */
187 static int hf_sbc_ap_Stop_Warning_Indication_PDU; /* Stop_Warning_Indication */
188 static int hf_sbc_ap_PWS_Restart_Indication_PDU; /* PWS_Restart_Indication */
189 static int hf_sbc_ap_PWS_Failure_Indication_PDU; /* PWS_Failure_Indication */
190 static int hf_sbc_ap_Error_Indication_PDU; /* Error_Indication */
191 static int hf_sbc_ap_SBC_AP_PDU_PDU; /* SBC_AP_PDU */
192 static int hf_sbc_ap_ProtocolIE_Container_item; /* ProtocolIE_Field */
193 static int hf_sbc_ap_id; /* ProtocolIE_ID */
194 static int hf_sbc_ap_criticality; /* Criticality */
195 static int hf_sbc_ap_ie_field_value; /* T_ie_field_value */
196 static int hf_sbc_ap_ProtocolExtensionContainer_item; /* ProtocolExtensionField */
197 static int hf_sbc_ap_ext_id; /* ProtocolExtensionID */
198 static int hf_sbc_ap_extensionValue; /* T_extensionValue */
199 static int hf_sbc_ap_cellId_Broadcast_List; /* CellId_Broadcast_List */
200 static int hf_sbc_ap_tAI_Broadcast_List; /* TAI_Broadcast_List */
201 static int hf_sbc_ap_emergencyAreaID_Broadcast_List; /* EmergencyAreaID_Broadcast_List */
202 static int hf_sbc_ap_iE_Extensions; /* ProtocolExtensionContainer */
203 static int hf_sbc_ap_cellId_Broadcast_List_5GS; /* CellId_Broadcast_List_5GS */
204 static int hf_sbc_ap_tAI_Broadcast_List_5GS; /* TAI_Broadcast_List_5GS */
205 static int hf_sbc_ap_cellID_Cancelled_List; /* CellID_Cancelled_List */
206 static int hf_sbc_ap_tAI_Cancelled_List; /* TAI_Cancelled_List */
207 static int hf_sbc_ap_emergencyAreaID_Cancelled_List; /* EmergencyAreaID_Cancelled_List */
208 static int hf_sbc_ap_cellID_Cancelled_List_5GS; /* CellID_Cancelled_List_5GS */
209 static int hf_sbc_ap_tAI_Cancelled_List_5GS; /* TAI_Cancelled_List_5GS */
210 static int hf_sbc_ap_Broadcast_Empty_Area_List_item; /* Global_ENB_ID */
211 static int hf_sbc_ap_Broadcast_Empty_Area_List_5GS_item; /* Global_RAN_Node_ID */
212 static int hf_sbc_ap_CancelledCellinEAI_item; /* CancelledCellinEAI_Item */
213 static int hf_sbc_ap_eCGI; /* EUTRAN_CGI */
214 static int hf_sbc_ap_numberOfBroadcasts; /* NumberOfBroadcasts */
215 static int hf_sbc_ap_CancelledCellinTAI_item; /* CancelledCellinTAI_Item */
216 static int hf_sbc_ap_CancelledCellinTAI_5GS_item; /* CancelledCellinTAI_5GS_item */
217 static int hf_sbc_ap_nR_CGI; /* NR_CGI */
218 static int hf_sbc_ap_CellId_Broadcast_List_item; /* CellId_Broadcast_List_Item */
219 static int hf_sbc_ap_CellId_Broadcast_List_5GS_item; /* CellId_Broadcast_List_5GS_item */
220 static int hf_sbc_ap_CellID_Cancelled_List_item; /* CellID_Cancelled_Item */
221 static int hf_sbc_ap_CellID_Cancelled_List_5GS_item; /* CellID_Cancelled_List_5GS_item */
222 static int hf_sbc_ap_procedureCode; /* ProcedureCode */
223 static int hf_sbc_ap_triggeringMessage; /* TriggeringMessage */
224 static int hf_sbc_ap_procedureCriticality; /* Criticality */
225 static int hf_sbc_ap_iE_CriticalityDiagnostics; /* CriticalityDiagnostics_IE_List */
226 static int hf_sbc_ap_CriticalityDiagnostics_IE_List_item; /* CriticalityDiagnostics_IE_List_item */
227 static int hf_sbc_ap_iECriticality; /* Criticality */
228 static int hf_sbc_ap_iE_ID; /* ProtocolIE_ID */
229 static int hf_sbc_ap_typeOfError; /* TypeOfError */
230 static int hf_sbc_ap_ECGIList_item; /* EUTRAN_CGI */
231 static int hf_sbc_ap_Emergency_Area_ID_List_item; /* Emergency_Area_ID */
232 static int hf_sbc_ap_EmergencyAreaID_Broadcast_List_item; /* EmergencyAreaID_Broadcast_List_Item */
233 static int hf_sbc_ap_emergencyAreaID; /* Emergency_Area_ID */
234 static int hf_sbc_ap_scheduledCellinEAI; /* ScheduledCellinEAI */
235 static int hf_sbc_ap_EmergencyAreaID_Cancelled_List_item; /* EmergencyAreaID_Cancelled_Item */
236 static int hf_sbc_ap_cancelledCellinEAI; /* CancelledCellinEAI */
237 static int hf_sbc_ap_pLMNidentity; /* PLMNidentity */
238 static int hf_sbc_ap_cell_ID; /* CellIdentity */
239 static int hf_sbc_ap_macroENB_ID; /* BIT_STRING_SIZE_20 */
240 static int hf_sbc_ap_homeENB_ID; /* BIT_STRING_SIZE_28 */
241 static int hf_sbc_ap_short_macroENB_ID; /* BIT_STRING_SIZE_18 */
242 static int hf_sbc_ap_long_macroENB_ID; /* BIT_STRING_SIZE_21 */
243 static int hf_sbc_ap_Failed_Cell_List_item; /* EUTRAN_CGI */
244 static int hf_sbc_ap_Failed_Cell_List_NR_item; /* NR_CGI */
245 static int hf_sbc_ap_eNB_ID; /* ENB_ID */
246 static int hf_sbc_ap_global_GNB_ID; /* Global_GNB_ID */
247 static int hf_sbc_ap_global_NgENB_ID; /* Global_NgENB_ID */
248 static int hf_sbc_ap_gNB_ID; /* GNB_ID */
249 static int hf_sbc_ap_gNB_ID_01; /* BIT_STRING_SIZE_22_32 */
250 static int hf_sbc_ap_ngENB_ID; /* ENB_ID */
251 static int hf_sbc_ap_List_of_TAIs_item; /* List_of_TAIs_item */
252 static int hf_sbc_ap_tai; /* TAI */
253 static int hf_sbc_ap_List_of_TAIs_Restart_item; /* List_of_TAIs_Restart_item */
254 static int hf_sbc_ap_List_of_EAIs_Restart_item; /* Emergency_Area_ID */
255 static int hf_sbc_ap_List_of_5GS_TAIs_item; /* TAI_5GS */
256 static int hf_sbc_ap_List_of_5GS_TAI_for_Restart_item; /* TAI_5GS */
257 static int hf_sbc_ap_NR_CGIList_item; /* NR_CGI */
258 static int hf_sbc_ap_nRCellIdentity; /* NRCellIdentity */
259 static int hf_sbc_ap_Restarted_Cell_List_item; /* EUTRAN_CGI */
260 static int hf_sbc_ap_Restarted_Cell_List_NR_item; /* NR_CGI */
261 static int hf_sbc_ap_ScheduledCellinEAI_item; /* ScheduledCellinEAI_Item */
262 static int hf_sbc_ap_ScheduledCellinTAI_item; /* ScheduledCellinTAI_Item */
263 static int hf_sbc_ap_ScheduledCellinTAI_5GS_item; /* ScheduledCellinTAI_5GS_item */
264 static int hf_sbc_ap_TAI_Broadcast_List_item; /* TAI_Broadcast_List_Item */
265 static int hf_sbc_ap_tAI; /* TAI */
266 static int hf_sbc_ap_scheduledCellinTAI; /* ScheduledCellinTAI */
267 static int hf_sbc_ap_TAI_Broadcast_List_5GS_item; /* TAI_Broadcast_List_5GS_item */
268 static int hf_sbc_ap_tAI_5GS; /* TAI_5GS */
269 static int hf_sbc_ap_scheduledCellinTAI_5GS; /* ScheduledCellinTAI_5GS */
270 static int hf_sbc_ap_TAI_Cancelled_List_item; /* TAI_Cancelled_List_Item */
271 static int hf_sbc_ap_cancelledCellinTAI; /* CancelledCellinTAI */
272 static int hf_sbc_ap_TAI_Cancelled_List_5GS_item; /* TAI_Cancelled_List_5GS_item */
273 static int hf_sbc_ap_cancelledCellinTAI_5GS; /* CancelledCellinTAI_5GS */
274 static int hf_sbc_ap_TAI_List_for_Warning_item; /* TAI */
275 static int hf_sbc_ap_tAC; /* TAC */
276 static int hf_sbc_ap_tAC_5GS; /* TAC_5GS */
277 static int hf_sbc_ap_Unknown_5GS_Tracking_Area_List_item; /* TAI_5GS */
278 static int hf_sbc_ap_cell_ID_List; /* ECGIList */
279 static int hf_sbc_ap_tracking_Area_List_for_Warning; /* TAI_List_for_Warning */
280 static int hf_sbc_ap_emergency_Area_ID_List; /* Emergency_Area_ID_List */
281 static int hf_sbc_ap_nR_CGIList; /* NR_CGIList */
282 static int hf_sbc_ap_tAIList_5GS; /* TAI_5GS */
283 static int hf_sbc_ap_emergencyAreaIDList; /* Emergency_Area_ID_List */
284 static int hf_sbc_ap_protocolIEs; /* ProtocolIE_Container */
285 static int hf_sbc_ap_protocolExtensions; /* ProtocolExtensionContainer */
286 static int hf_sbc_ap_initiatingMessage; /* InitiatingMessage */
287 static int hf_sbc_ap_successfulOutcome; /* SuccessfulOutcome */
288 static int hf_sbc_ap_unsuccessfulOutcome; /* UnsuccessfulOutcome */
289 static int hf_sbc_ap_initiatingMessagevalue; /* InitiatingMessage_value */
290 static int hf_sbc_ap_successfulOutcome_value; /* SuccessfulOutcome_value */
291 static int hf_sbc_ap_unsuccessfulOutcome_value; /* UnsuccessfulOutcome_value */
293 /* Initialize the subtree pointers */
294 static int ett_sbc_ap;
295 static int ett_sbc_ap_Serial_Number;
296 static int ett_sbc_ap_Warning_Type;
297 static int ett_sbc_ap_Data_Coding_Scheme;
298 static int ett_sbc_ap_Warning_Message_Contents;
300 static int ett_sbc_ap_ProtocolIE_Container;
301 static int ett_sbc_ap_ProtocolIE_Field;
302 static int ett_sbc_ap_ProtocolExtensionContainer;
303 static int ett_sbc_ap_ProtocolExtensionField;
304 static int ett_sbc_ap_Broadcast_Scheduled_Area_List;
305 static int ett_sbc_ap_Broadcast_Scheduled_Area_List_5GS;
306 static int ett_sbc_ap_Broadcast_Cancelled_Area_List;
307 static int ett_sbc_ap_Broadcast_Cancelled_Area_List_5GS;
308 static int ett_sbc_ap_Broadcast_Empty_Area_List;
309 static int ett_sbc_ap_Broadcast_Empty_Area_List_5GS;
310 static int ett_sbc_ap_CancelledCellinEAI;
311 static int ett_sbc_ap_CancelledCellinEAI_Item;
312 static int ett_sbc_ap_CancelledCellinTAI;
313 static int ett_sbc_ap_CancelledCellinTAI_Item;
314 static int ett_sbc_ap_CancelledCellinTAI_5GS;
315 static int ett_sbc_ap_CancelledCellinTAI_5GS_item;
316 static int ett_sbc_ap_CellId_Broadcast_List;
317 static int ett_sbc_ap_CellId_Broadcast_List_Item;
318 static int ett_sbc_ap_CellId_Broadcast_List_5GS;
319 static int ett_sbc_ap_CellId_Broadcast_List_5GS_item;
320 static int ett_sbc_ap_CellID_Cancelled_List;
321 static int ett_sbc_ap_CellID_Cancelled_Item;
322 static int ett_sbc_ap_CellID_Cancelled_List_5GS;
323 static int ett_sbc_ap_CellID_Cancelled_List_5GS_item;
324 static int ett_sbc_ap_Criticality_Diagnostics;
325 static int ett_sbc_ap_CriticalityDiagnostics_IE_List;
326 static int ett_sbc_ap_CriticalityDiagnostics_IE_List_item;
327 static int ett_sbc_ap_ECGIList;
328 static int ett_sbc_ap_Emergency_Area_ID_List;
329 static int ett_sbc_ap_EmergencyAreaID_Broadcast_List;
330 static int ett_sbc_ap_EmergencyAreaID_Broadcast_List_Item;
331 static int ett_sbc_ap_EmergencyAreaID_Cancelled_List;
332 static int ett_sbc_ap_EmergencyAreaID_Cancelled_Item;
333 static int ett_sbc_ap_EUTRAN_CGI;
334 static int ett_sbc_ap_ENB_ID;
335 static int ett_sbc_ap_Failed_Cell_List;
336 static int ett_sbc_ap_Failed_Cell_List_NR;
337 static int ett_sbc_ap_Global_ENB_ID;
338 static int ett_sbc_ap_Global_RAN_Node_ID;
339 static int ett_sbc_ap_Global_GNB_ID;
340 static int ett_sbc_ap_GNB_ID;
341 static int ett_sbc_ap_Global_NgENB_ID;
342 static int ett_sbc_ap_List_of_TAIs;
343 static int ett_sbc_ap_List_of_TAIs_item;
344 static int ett_sbc_ap_List_of_TAIs_Restart;
345 static int ett_sbc_ap_List_of_TAIs_Restart_item;
346 static int ett_sbc_ap_List_of_EAIs_Restart;
347 static int ett_sbc_ap_List_of_5GS_TAIs;
348 static int ett_sbc_ap_List_of_5GS_TAI_for_Restart;
349 static int ett_sbc_ap_NR_CGIList;
350 static int ett_sbc_ap_NR_CGI;
351 static int ett_sbc_ap_Restarted_Cell_List;
352 static int ett_sbc_ap_Restarted_Cell_List_NR;
353 static int ett_sbc_ap_ScheduledCellinEAI;
354 static int ett_sbc_ap_ScheduledCellinEAI_Item;
355 static int ett_sbc_ap_ScheduledCellinTAI;
356 static int ett_sbc_ap_ScheduledCellinTAI_Item;
357 static int ett_sbc_ap_ScheduledCellinTAI_5GS;
358 static int ett_sbc_ap_ScheduledCellinTAI_5GS_item;
359 static int ett_sbc_ap_TAI_Broadcast_List;
360 static int ett_sbc_ap_TAI_Broadcast_List_Item;
361 static int ett_sbc_ap_TAI_Broadcast_List_5GS;
362 static int ett_sbc_ap_TAI_Broadcast_List_5GS_item;
363 static int ett_sbc_ap_TAI_Cancelled_List;
364 static int ett_sbc_ap_TAI_Cancelled_List_Item;
365 static int ett_sbc_ap_TAI_Cancelled_List_5GS;
366 static int ett_sbc_ap_TAI_Cancelled_List_5GS_item;
367 static int ett_sbc_ap_TAI_List_for_Warning;
368 static int ett_sbc_ap_TAI;
369 static int ett_sbc_ap_TAI_5GS;
370 static int ett_sbc_ap_Unknown_5GS_Tracking_Area_List;
371 static int ett_sbc_ap_Warning_Area_List;
372 static int ett_sbc_ap_Warning_Area_List_5GS;
373 static int ett_sbc_ap_Write_Replace_Warning_Request;
374 static int ett_sbc_ap_Write_Replace_Warning_Response;
375 static int ett_sbc_ap_Stop_Warning_Request;
376 static int ett_sbc_ap_Stop_Warning_Response;
377 static int ett_sbc_ap_Write_Replace_Warning_Indication;
378 static int ett_sbc_ap_Stop_Warning_Indication;
379 static int ett_sbc_ap_PWS_Restart_Indication;
380 static int ett_sbc_ap_PWS_Failure_Indication;
381 static int ett_sbc_ap_Error_Indication;
382 static int ett_sbc_ap_SBC_AP_PDU;
383 static int ett_sbc_ap_InitiatingMessage;
384 static int ett_sbc_ap_SuccessfulOutcome;
385 static int ett_sbc_ap_UnsuccessfulOutcome;
387 enum{
388 INITIATING_MESSAGE,
389 SUCCESSFUL_OUTCOME,
390 UNSUCCESSFUL_OUTCOME
393 struct sbc_ap_private_data {
394 uint8_t data_coding_scheme;
395 e212_number_type_t number_type;
398 /* Global variables */
399 static uint32_t ProcedureCode;
400 static uint32_t ProtocolIE_ID;
401 static uint32_t ProtocolExtensionID;
402 static int global_sbc_ap_port = SBC_AP_PORT;
404 /* Dissector tables */
405 static dissector_table_t sbc_ap_ies_dissector_table;
406 static dissector_table_t sbc_ap_extension_dissector_table;
407 static dissector_table_t sbc_ap_proc_imsg_dissector_table;
408 static dissector_table_t sbc_ap_proc_sout_dissector_table;
409 static dissector_table_t sbc_ap_proc_uout_dissector_table;
411 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
412 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
413 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
414 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
415 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
418 static struct sbc_ap_private_data*
419 sbc_ap_get_private_data(packet_info *pinfo)
421 struct sbc_ap_private_data *sbc_ap_data = (struct sbc_ap_private_data*)p_get_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0);
422 if (!sbc_ap_data) {
423 sbc_ap_data = wmem_new0(pinfo->pool, struct sbc_ap_private_data);
424 p_add_proto_data(pinfo->pool, pinfo, proto_sbc_ap, 0, sbc_ap_data);
426 return sbc_ap_data;
430 static const value_string sbc_ap_Criticality_vals[] = {
431 { 0, "reject" },
432 { 1, "ignore" },
433 { 2, "notify" },
434 { 0, NULL }
438 static int
439 dissect_sbc_ap_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
440 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
441 3, NULL, false, 0, NULL);
443 return offset;
447 static const value_string sbc_ap_ProcedureCode_vals[] = {
448 { id_Write_Replace_Warning, "id-Write-Replace-Warning" },
449 { id_Stop_Warning, "id-Stop-Warning" },
450 { id_Error_Indication, "id-Error-Indication" },
451 { id_Write_Replace_Warning_Indication, "id-Write-Replace-Warning-Indication" },
452 { id_Stop_Warning_Indication, "id-Stop-Warning-Indication" },
453 { id_PWS_Restart_Indication, "id-PWS-Restart-Indication" },
454 { id_PWS_Failure_Indication, "id-PWS-Failure-Indication" },
455 { 0, NULL }
459 static int
460 dissect_sbc_ap_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
461 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
462 0U, 255U, &ProcedureCode, false);
464 return offset;
469 static int
470 dissect_sbc_ap_ProtocolExtensionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
471 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
472 0U, 65535U, &ProtocolExtensionID, false);
474 return offset;
478 static const value_string sbc_ap_ProtocolIE_ID_vals[] = {
479 { id_Broadcast_Message_Content, "id-Broadcast-Message-Content" },
480 { id_Cause, "id-Cause" },
481 { id_Criticality_Diagnostics, "id-Criticality-Diagnostics" },
482 { id_Data_Coding_Scheme, "id-Data-Coding-Scheme" },
483 { id_Failure_List, "id-Failure-List" },
484 { id_Message_Identifier, "id-Message-Identifier" },
485 { id_Number_of_Broadcasts_Completed_List, "id-Number-of-Broadcasts-Completed-List" },
486 { id_Number_of_Broadcasts_Requested, "id-Number-of-Broadcasts-Requested" },
487 { id_Radio_Resource_Loading_List, "id-Radio-Resource-Loading-List" },
488 { id_Recovery_Indication, "id-Recovery-Indication" },
489 { id_Repetition_Period, "id-Repetition-Period" },
490 { id_Serial_Number, "id-Serial-Number" },
491 { id_Service_Areas_List, "id-Service-Areas-List" },
492 { id_TypeOfError, "id-TypeOfError" },
493 { id_List_of_TAIs, "id-List-of-TAIs" },
494 { id_Warning_Area_List, "id-Warning-Area-List" },
495 { id_Warning_Message_Content, "id-Warning-Message-Content" },
496 { id_Warning_Security_Information, "id-Warning-Security-Information" },
497 { id_Warning_Type, "id-Warning-Type" },
498 { id_Omc_Id, "id-Omc-Id" },
499 { id_Concurrent_Warning_Message_Indicator, "id-Concurrent-Warning-Message-Indicator" },
500 { id_Extended_Repetition_Period, "id-Extended-Repetition-Period" },
501 { id_Unknown_Tracking_Area_List, "id-Unknown-Tracking-Area-List" },
502 { id_Broadcast_Scheduled_Area_List, "id-Broadcast-Scheduled-Area-List" },
503 { id_Send_Write_Replace_Warning_Indication, "id-Send-Write-Replace-Warning-Indication" },
504 { id_Broadcast_Cancelled_Area_List, "id-Broadcast-Cancelled-Area-List" },
505 { id_Send_Stop_Warning_Indication, "id-Send-Stop-Warning-Indication" },
506 { id_Stop_All_Indicator, "id-Stop-All-Indicator" },
507 { id_Global_ENB_ID, "id-Global-ENB-ID" },
508 { id_Broadcast_Empty_Area_List, "id-Broadcast-Empty-Area-List" },
509 { id_Restarted_Cell_List, "id-Restarted-Cell-List" },
510 { id_List_of_TAIs_Restart, "id-List-of-TAIs-Restart" },
511 { id_List_of_EAIs_Restart, "id-List-of-EAIs-Restart" },
512 { id_Failed_Cell_List, "id-Failed-Cell-List" },
513 { id_List_of_5GS_TAIs, "id-List-of-5GS-TAIs" },
514 { id_Warning_Area_List_5GS, "id-Warning-Area-List-5GS" },
515 { id_Global_RAN_Node_ID, "id-Global-RAN-Node-ID" },
516 { id_Global_GNB_ID, "id-Global-GNB-ID" },
517 { id_RAT_Selector_5GS, "id-RAT-Selector-5GS" },
518 { id_Unknown_5GS_Tracking_Area_List, "id-Unknown-5GS-Tracking-Area-List" },
519 { id_Broadcast_Scheduled_Area_List_5GS, "id-Broadcast-Scheduled-Area-List-5GS" },
520 { id_Broadcast_Cancelled_Area_List_5GS, "id-Broadcast-Cancelled-Area-List-5GS" },
521 { id_Broadcast_Empty_Area_List_5GS, "id-Broadcast-Empty-Area-List-5GS" },
522 { id_Restarted_Cell_List_NR, "id-Restarted-Cell-List-NR" },
523 { id_Failed_Cell_List_NR, "id-Failed-Cell-List-NR" },
524 { id_List_of_5GS_TAI_for_Restart, "id-List-of-5GS-TAI-for-Restart" },
525 { id_Warning_Area_Coordinates, "id-Warning-Area-Coordinates" },
526 { 0, NULL }
530 static int
531 dissect_sbc_ap_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
532 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
533 0U, 65535U, &ProtocolIE_ID, false);
535 if (tree) {
536 proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(sbc_ap_ProtocolIE_ID_vals), "unknown (%d)"));
538 return offset;
542 static const value_string sbc_ap_TriggeringMessage_vals[] = {
543 { 0, "initiating-message" },
544 { 1, "successful-outcome" },
545 { 2, "unsuccessful-outcome" },
546 { 3, "outcome" },
547 { 0, NULL }
551 static int
552 dissect_sbc_ap_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
553 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
554 4, NULL, false, 0, NULL);
556 return offset;
561 static int
562 dissect_sbc_ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
563 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
565 return offset;
569 static const per_sequence_t ProtocolIE_Field_sequence[] = {
570 { &hf_sbc_ap_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_ID },
571 { &hf_sbc_ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
572 { &hf_sbc_ap_ie_field_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_T_ie_field_value },
573 { NULL, 0, 0, NULL }
576 static int
577 dissect_sbc_ap_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
578 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
579 ett_sbc_ap_ProtocolIE_Field, ProtocolIE_Field_sequence);
581 return offset;
585 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
586 { &hf_sbc_ap_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Field },
589 static int
590 dissect_sbc_ap_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
591 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
592 ett_sbc_ap_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
593 0, maxProtocolIEs, false);
595 return offset;
600 static int
601 dissect_sbc_ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
602 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
604 return offset;
608 static const per_sequence_t ProtocolExtensionField_sequence[] = {
609 { &hf_sbc_ap_ext_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolExtensionID },
610 { &hf_sbc_ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
611 { &hf_sbc_ap_extensionValue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_T_extensionValue },
612 { NULL, 0, 0, NULL }
615 static int
616 dissect_sbc_ap_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
617 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
618 ett_sbc_ap_ProtocolExtensionField, ProtocolExtensionField_sequence);
620 return offset;
624 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
625 { &hf_sbc_ap_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolExtensionField },
628 static int
629 dissect_sbc_ap_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
630 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
631 ett_sbc_ap_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
632 1, maxProtocolExtensions, false);
634 return offset;
640 static int
641 dissect_sbc_ap_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
642 tvbuff_t *parameter_tvb=NULL;
643 struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
644 e212_number_type_t number_type = sbc_ap_data->number_type;
645 sbc_ap_data->number_type = E212_NONE;
647 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
648 3, 3, false, &parameter_tvb);
649 if(tvb_reported_length(tvb)==0)
650 return offset;
652 if (!parameter_tvb)
653 return offset;
654 dissect_e212_mcc_mnc(parameter_tvb, actx->pinfo, tree, 0, number_type, false);
656 return offset;
661 static int
662 dissect_sbc_ap_CellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
663 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
664 28, 28, false, NULL, 0, NULL, NULL);
666 return offset;
670 static const per_sequence_t EUTRAN_CGI_sequence[] = {
671 { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
672 { &hf_sbc_ap_cell_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellIdentity },
673 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
674 { NULL, 0, 0, NULL }
677 static int
678 dissect_sbc_ap_EUTRAN_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
679 struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
680 sbc_ap_data->number_type = E212_ECGI;
681 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
682 ett_sbc_ap_EUTRAN_CGI, EUTRAN_CGI_sequence);
686 return offset;
690 static const per_sequence_t CellId_Broadcast_List_Item_sequence[] = {
691 { &hf_sbc_ap_eCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
692 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
693 { NULL, 0, 0, NULL }
696 static int
697 dissect_sbc_ap_CellId_Broadcast_List_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
698 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
699 ett_sbc_ap_CellId_Broadcast_List_Item, CellId_Broadcast_List_Item_sequence);
701 return offset;
705 static const per_sequence_t CellId_Broadcast_List_sequence_of[1] = {
706 { &hf_sbc_ap_CellId_Broadcast_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellId_Broadcast_List_Item },
709 static int
710 dissect_sbc_ap_CellId_Broadcast_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
711 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
712 ett_sbc_ap_CellId_Broadcast_List, CellId_Broadcast_List_sequence_of,
713 1, maxnoofCellID, false);
715 return offset;
720 static int
721 dissect_sbc_ap_TAC(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
722 tvbuff_t *parameter_tvb = NULL;
723 offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
724 2, 2, false, &parameter_tvb);
726 if (parameter_tvb) {
727 actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
731 return offset;
735 static const per_sequence_t TAI_sequence[] = {
736 { &hf_sbc_ap_pLMNidentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
737 { &hf_sbc_ap_tAC , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAC },
738 { &hf_sbc_ap_iE_Extensions, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
739 { NULL, 0, 0, NULL }
742 static int
743 dissect_sbc_ap_TAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
744 struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
745 sbc_ap_data->number_type = E212_TAI;
746 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
747 ett_sbc_ap_TAI, TAI_sequence);
751 return offset;
755 static const per_sequence_t ScheduledCellinTAI_Item_sequence[] = {
756 { &hf_sbc_ap_eCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
757 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
758 { NULL, 0, 0, NULL }
761 static int
762 dissect_sbc_ap_ScheduledCellinTAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
763 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
764 ett_sbc_ap_ScheduledCellinTAI_Item, ScheduledCellinTAI_Item_sequence);
766 return offset;
770 static const per_sequence_t ScheduledCellinTAI_sequence_of[1] = {
771 { &hf_sbc_ap_ScheduledCellinTAI_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI_Item },
774 static int
775 dissect_sbc_ap_ScheduledCellinTAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
776 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
777 ett_sbc_ap_ScheduledCellinTAI, ScheduledCellinTAI_sequence_of,
778 1, maxnoofCellinTAI, false);
780 return offset;
784 static const per_sequence_t TAI_Broadcast_List_Item_sequence[] = {
785 { &hf_sbc_ap_tAI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
786 { &hf_sbc_ap_scheduledCellinTAI, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI },
787 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
788 { NULL, 0, 0, NULL }
791 static int
792 dissect_sbc_ap_TAI_Broadcast_List_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
793 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
794 ett_sbc_ap_TAI_Broadcast_List_Item, TAI_Broadcast_List_Item_sequence);
796 return offset;
800 static const per_sequence_t TAI_Broadcast_List_sequence_of[1] = {
801 { &hf_sbc_ap_TAI_Broadcast_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Broadcast_List_Item },
804 static int
805 dissect_sbc_ap_TAI_Broadcast_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
806 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
807 ett_sbc_ap_TAI_Broadcast_List, TAI_Broadcast_List_sequence_of,
808 1, maxnoofTAIforWarning, false);
810 return offset;
815 static int
816 dissect_sbc_ap_Emergency_Area_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
817 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
818 3, 3, false, NULL);
820 return offset;
824 static const per_sequence_t ScheduledCellinEAI_Item_sequence[] = {
825 { &hf_sbc_ap_eCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
826 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
827 { NULL, 0, 0, NULL }
830 static int
831 dissect_sbc_ap_ScheduledCellinEAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
832 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
833 ett_sbc_ap_ScheduledCellinEAI_Item, ScheduledCellinEAI_Item_sequence);
835 return offset;
839 static const per_sequence_t ScheduledCellinEAI_sequence_of[1] = {
840 { &hf_sbc_ap_ScheduledCellinEAI_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinEAI_Item },
843 static int
844 dissect_sbc_ap_ScheduledCellinEAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
845 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
846 ett_sbc_ap_ScheduledCellinEAI, ScheduledCellinEAI_sequence_of,
847 1, maxnoofCellinEAI, false);
849 return offset;
853 static const per_sequence_t EmergencyAreaID_Broadcast_List_Item_sequence[] = {
854 { &hf_sbc_ap_emergencyAreaID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
855 { &hf_sbc_ap_scheduledCellinEAI, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinEAI },
856 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
857 { NULL, 0, 0, NULL }
860 static int
861 dissect_sbc_ap_EmergencyAreaID_Broadcast_List_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
862 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
863 ett_sbc_ap_EmergencyAreaID_Broadcast_List_Item, EmergencyAreaID_Broadcast_List_Item_sequence);
865 return offset;
869 static const per_sequence_t EmergencyAreaID_Broadcast_List_sequence_of[1] = {
870 { &hf_sbc_ap_EmergencyAreaID_Broadcast_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EmergencyAreaID_Broadcast_List_Item },
873 static int
874 dissect_sbc_ap_EmergencyAreaID_Broadcast_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
875 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
876 ett_sbc_ap_EmergencyAreaID_Broadcast_List, EmergencyAreaID_Broadcast_List_sequence_of,
877 1, maxnoofEmergencyAreaID, false);
879 return offset;
883 static const per_sequence_t Broadcast_Scheduled_Area_List_sequence[] = {
884 { &hf_sbc_ap_cellId_Broadcast_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_CellId_Broadcast_List },
885 { &hf_sbc_ap_tAI_Broadcast_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_TAI_Broadcast_List },
886 { &hf_sbc_ap_emergencyAreaID_Broadcast_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_EmergencyAreaID_Broadcast_List },
887 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
888 { NULL, 0, 0, NULL }
891 static int
892 dissect_sbc_ap_Broadcast_Scheduled_Area_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
893 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
894 ett_sbc_ap_Broadcast_Scheduled_Area_List, Broadcast_Scheduled_Area_List_sequence);
896 return offset;
901 static int
902 dissect_sbc_ap_NRCellIdentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
903 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
904 36, 36, false, NULL, 0, NULL, NULL);
906 return offset;
910 static const per_sequence_t NR_CGI_sequence[] = {
911 { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
912 { &hf_sbc_ap_nRCellIdentity, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NRCellIdentity },
913 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
914 { NULL, 0, 0, NULL }
917 static int
918 dissect_sbc_ap_NR_CGI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
919 struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
920 sbc_ap_data->number_type = E212_NRCGI;
921 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
922 ett_sbc_ap_NR_CGI, NR_CGI_sequence);
926 return offset;
930 static const per_sequence_t CellId_Broadcast_List_5GS_item_sequence[] = {
931 { &hf_sbc_ap_nR_CGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
932 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
933 { NULL, 0, 0, NULL }
936 static int
937 dissect_sbc_ap_CellId_Broadcast_List_5GS_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
938 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
939 ett_sbc_ap_CellId_Broadcast_List_5GS_item, CellId_Broadcast_List_5GS_item_sequence);
941 return offset;
945 static const per_sequence_t CellId_Broadcast_List_5GS_sequence_of[1] = {
946 { &hf_sbc_ap_CellId_Broadcast_List_5GS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellId_Broadcast_List_5GS_item },
949 static int
950 dissect_sbc_ap_CellId_Broadcast_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
951 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
952 ett_sbc_ap_CellId_Broadcast_List_5GS, CellId_Broadcast_List_5GS_sequence_of,
953 1, maxnoofCellsin5GS, false);
955 return offset;
960 static int
961 dissect_sbc_ap_TAC_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
962 tvbuff_t *parameter_tvb = NULL;
963 offset = dissect_per_octet_string(tvb, offset, actx, tree, -1,
964 3, 3, false, &parameter_tvb);
966 if (parameter_tvb) {
967 actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 3, ENC_BIG_ENDIAN);
972 return offset;
976 static const per_sequence_t TAI_5GS_sequence[] = {
977 { &hf_sbc_ap_pLMNidentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
978 { &hf_sbc_ap_tAC_5GS , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAC_5GS },
979 { &hf_sbc_ap_iE_Extensions, ASN1_NO_EXTENSIONS , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
980 { NULL, 0, 0, NULL }
983 static int
984 dissect_sbc_ap_TAI_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
985 struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
986 sbc_ap_data->number_type = E212_5GSTAI;
987 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
988 ett_sbc_ap_TAI_5GS, TAI_5GS_sequence);
992 return offset;
996 static const per_sequence_t ScheduledCellinTAI_5GS_item_sequence[] = {
997 { &hf_sbc_ap_nR_CGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
998 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
999 { NULL, 0, 0, NULL }
1002 static int
1003 dissect_sbc_ap_ScheduledCellinTAI_5GS_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1004 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1005 ett_sbc_ap_ScheduledCellinTAI_5GS_item, ScheduledCellinTAI_5GS_item_sequence);
1007 return offset;
1011 static const per_sequence_t ScheduledCellinTAI_5GS_sequence_of[1] = {
1012 { &hf_sbc_ap_ScheduledCellinTAI_5GS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI_5GS_item },
1015 static int
1016 dissect_sbc_ap_ScheduledCellinTAI_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1017 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1018 ett_sbc_ap_ScheduledCellinTAI_5GS, ScheduledCellinTAI_5GS_sequence_of,
1019 1, maxnoofCellsin5GSTAI, false);
1021 return offset;
1025 static const per_sequence_t TAI_Broadcast_List_5GS_item_sequence[] = {
1026 { &hf_sbc_ap_tAI_5GS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1027 { &hf_sbc_ap_scheduledCellinTAI_5GS, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ScheduledCellinTAI_5GS },
1028 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1029 { NULL, 0, 0, NULL }
1032 static int
1033 dissect_sbc_ap_TAI_Broadcast_List_5GS_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1034 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1035 ett_sbc_ap_TAI_Broadcast_List_5GS_item, TAI_Broadcast_List_5GS_item_sequence);
1037 return offset;
1041 static const per_sequence_t TAI_Broadcast_List_5GS_sequence_of[1] = {
1042 { &hf_sbc_ap_TAI_Broadcast_List_5GS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Broadcast_List_5GS_item },
1045 static int
1046 dissect_sbc_ap_TAI_Broadcast_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1047 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1048 ett_sbc_ap_TAI_Broadcast_List_5GS, TAI_Broadcast_List_5GS_sequence_of,
1049 1, maxnoof5GSTAIs, false);
1051 return offset;
1055 static const per_sequence_t Broadcast_Scheduled_Area_List_5GS_sequence[] = {
1056 { &hf_sbc_ap_cellId_Broadcast_List_5GS, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_CellId_Broadcast_List_5GS },
1057 { &hf_sbc_ap_tAI_Broadcast_List_5GS, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_TAI_Broadcast_List_5GS },
1058 { &hf_sbc_ap_emergencyAreaID_Broadcast_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_EmergencyAreaID_Broadcast_List },
1059 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1060 { NULL, 0, 0, NULL }
1063 static int
1064 dissect_sbc_ap_Broadcast_Scheduled_Area_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1065 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1066 ett_sbc_ap_Broadcast_Scheduled_Area_List_5GS, Broadcast_Scheduled_Area_List_5GS_sequence);
1068 return offset;
1073 static int
1074 dissect_sbc_ap_NumberOfBroadcasts(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1075 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1076 0U, 65535U, NULL, false);
1078 return offset;
1082 static const per_sequence_t CellID_Cancelled_Item_sequence[] = {
1083 { &hf_sbc_ap_eCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1084 { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1085 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1086 { NULL, 0, 0, NULL }
1089 static int
1090 dissect_sbc_ap_CellID_Cancelled_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1091 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1092 ett_sbc_ap_CellID_Cancelled_Item, CellID_Cancelled_Item_sequence);
1094 return offset;
1098 static const per_sequence_t CellID_Cancelled_List_sequence_of[1] = {
1099 { &hf_sbc_ap_CellID_Cancelled_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellID_Cancelled_Item },
1102 static int
1103 dissect_sbc_ap_CellID_Cancelled_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1104 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1105 ett_sbc_ap_CellID_Cancelled_List, CellID_Cancelled_List_sequence_of,
1106 1, maxnoofCellID, false);
1108 return offset;
1112 static const per_sequence_t CancelledCellinTAI_Item_sequence[] = {
1113 { &hf_sbc_ap_eCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1114 { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1115 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1116 { NULL, 0, 0, NULL }
1119 static int
1120 dissect_sbc_ap_CancelledCellinTAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1121 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1122 ett_sbc_ap_CancelledCellinTAI_Item, CancelledCellinTAI_Item_sequence);
1124 return offset;
1128 static const per_sequence_t CancelledCellinTAI_sequence_of[1] = {
1129 { &hf_sbc_ap_CancelledCellinTAI_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI_Item },
1132 static int
1133 dissect_sbc_ap_CancelledCellinTAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1134 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1135 ett_sbc_ap_CancelledCellinTAI, CancelledCellinTAI_sequence_of,
1136 1, maxnoofCellinTAI, false);
1138 return offset;
1142 static const per_sequence_t TAI_Cancelled_List_Item_sequence[] = {
1143 { &hf_sbc_ap_tAI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
1144 { &hf_sbc_ap_cancelledCellinTAI, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI },
1145 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1146 { NULL, 0, 0, NULL }
1149 static int
1150 dissect_sbc_ap_TAI_Cancelled_List_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1151 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1152 ett_sbc_ap_TAI_Cancelled_List_Item, TAI_Cancelled_List_Item_sequence);
1154 return offset;
1158 static const per_sequence_t TAI_Cancelled_List_sequence_of[1] = {
1159 { &hf_sbc_ap_TAI_Cancelled_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Cancelled_List_Item },
1162 static int
1163 dissect_sbc_ap_TAI_Cancelled_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1164 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1165 ett_sbc_ap_TAI_Cancelled_List, TAI_Cancelled_List_sequence_of,
1166 1, maxnoofTAIforWarning, false);
1168 return offset;
1172 static const per_sequence_t CancelledCellinEAI_Item_sequence[] = {
1173 { &hf_sbc_ap_eCGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1174 { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1175 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1176 { NULL, 0, 0, NULL }
1179 static int
1180 dissect_sbc_ap_CancelledCellinEAI_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1181 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1182 ett_sbc_ap_CancelledCellinEAI_Item, CancelledCellinEAI_Item_sequence);
1184 return offset;
1188 static const per_sequence_t CancelledCellinEAI_sequence_of[1] = {
1189 { &hf_sbc_ap_CancelledCellinEAI_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinEAI_Item },
1192 static int
1193 dissect_sbc_ap_CancelledCellinEAI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1194 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1195 ett_sbc_ap_CancelledCellinEAI, CancelledCellinEAI_sequence_of,
1196 1, maxnoofCellinEAI, false);
1198 return offset;
1202 static const per_sequence_t EmergencyAreaID_Cancelled_Item_sequence[] = {
1203 { &hf_sbc_ap_emergencyAreaID, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
1204 { &hf_sbc_ap_cancelledCellinEAI, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinEAI },
1205 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1206 { NULL, 0, 0, NULL }
1209 static int
1210 dissect_sbc_ap_EmergencyAreaID_Cancelled_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1211 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1212 ett_sbc_ap_EmergencyAreaID_Cancelled_Item, EmergencyAreaID_Cancelled_Item_sequence);
1214 return offset;
1218 static const per_sequence_t EmergencyAreaID_Cancelled_List_sequence_of[1] = {
1219 { &hf_sbc_ap_EmergencyAreaID_Cancelled_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EmergencyAreaID_Cancelled_Item },
1222 static int
1223 dissect_sbc_ap_EmergencyAreaID_Cancelled_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1224 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1225 ett_sbc_ap_EmergencyAreaID_Cancelled_List, EmergencyAreaID_Cancelled_List_sequence_of,
1226 1, maxnoofEmergencyAreaID, false);
1228 return offset;
1232 static const per_sequence_t Broadcast_Cancelled_Area_List_sequence[] = {
1233 { &hf_sbc_ap_cellID_Cancelled_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_CellID_Cancelled_List },
1234 { &hf_sbc_ap_tAI_Cancelled_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_TAI_Cancelled_List },
1235 { &hf_sbc_ap_emergencyAreaID_Cancelled_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_EmergencyAreaID_Cancelled_List },
1236 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1237 { NULL, 0, 0, NULL }
1240 static int
1241 dissect_sbc_ap_Broadcast_Cancelled_Area_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1242 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1243 ett_sbc_ap_Broadcast_Cancelled_Area_List, Broadcast_Cancelled_Area_List_sequence);
1245 return offset;
1249 static const per_sequence_t CellID_Cancelled_List_5GS_item_sequence[] = {
1250 { &hf_sbc_ap_nR_CGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1251 { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1252 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1253 { NULL, 0, 0, NULL }
1256 static int
1257 dissect_sbc_ap_CellID_Cancelled_List_5GS_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1258 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1259 ett_sbc_ap_CellID_Cancelled_List_5GS_item, CellID_Cancelled_List_5GS_item_sequence);
1261 return offset;
1265 static const per_sequence_t CellID_Cancelled_List_5GS_sequence_of[1] = {
1266 { &hf_sbc_ap_CellID_Cancelled_List_5GS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CellID_Cancelled_List_5GS_item },
1269 static int
1270 dissect_sbc_ap_CellID_Cancelled_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1271 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1272 ett_sbc_ap_CellID_Cancelled_List_5GS, CellID_Cancelled_List_5GS_sequence_of,
1273 1, maxnoofCellsin5GS, false);
1275 return offset;
1279 static const per_sequence_t CancelledCellinTAI_5GS_item_sequence[] = {
1280 { &hf_sbc_ap_nR_CGI , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1281 { &hf_sbc_ap_numberOfBroadcasts, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NumberOfBroadcasts },
1282 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1283 { NULL, 0, 0, NULL }
1286 static int
1287 dissect_sbc_ap_CancelledCellinTAI_5GS_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1288 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1289 ett_sbc_ap_CancelledCellinTAI_5GS_item, CancelledCellinTAI_5GS_item_sequence);
1291 return offset;
1295 static const per_sequence_t CancelledCellinTAI_5GS_sequence_of[1] = {
1296 { &hf_sbc_ap_CancelledCellinTAI_5GS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI_5GS_item },
1299 static int
1300 dissect_sbc_ap_CancelledCellinTAI_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1301 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1302 ett_sbc_ap_CancelledCellinTAI_5GS, CancelledCellinTAI_5GS_sequence_of,
1303 1, maxnoofCellsin5GSTAI, false);
1305 return offset;
1309 static const per_sequence_t TAI_Cancelled_List_5GS_item_sequence[] = {
1310 { &hf_sbc_ap_tAI_5GS , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1311 { &hf_sbc_ap_cancelledCellinTAI_5GS, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CancelledCellinTAI_5GS },
1312 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1313 { NULL, 0, 0, NULL }
1316 static int
1317 dissect_sbc_ap_TAI_Cancelled_List_5GS_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1318 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1319 ett_sbc_ap_TAI_Cancelled_List_5GS_item, TAI_Cancelled_List_5GS_item_sequence);
1321 return offset;
1325 static const per_sequence_t TAI_Cancelled_List_5GS_sequence_of[1] = {
1326 { &hf_sbc_ap_TAI_Cancelled_List_5GS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_Cancelled_List_5GS_item },
1329 static int
1330 dissect_sbc_ap_TAI_Cancelled_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1331 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1332 ett_sbc_ap_TAI_Cancelled_List_5GS, TAI_Cancelled_List_5GS_sequence_of,
1333 1, maxnoof5GSTAIs, false);
1335 return offset;
1339 static const per_sequence_t Broadcast_Cancelled_Area_List_5GS_sequence[] = {
1340 { &hf_sbc_ap_cellID_Cancelled_List_5GS, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_CellID_Cancelled_List_5GS },
1341 { &hf_sbc_ap_tAI_Cancelled_List_5GS, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_TAI_Cancelled_List_5GS },
1342 { &hf_sbc_ap_emergencyAreaID_Cancelled_List, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_EmergencyAreaID_Cancelled_List },
1343 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1344 { NULL, 0, 0, NULL }
1347 static int
1348 dissect_sbc_ap_Broadcast_Cancelled_Area_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1349 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1350 ett_sbc_ap_Broadcast_Cancelled_Area_List_5GS, Broadcast_Cancelled_Area_List_5GS_sequence);
1352 return offset;
1357 static int
1358 dissect_sbc_ap_BIT_STRING_SIZE_20(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1359 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1360 20, 20, false, NULL, 0, NULL, NULL);
1362 return offset;
1367 static int
1368 dissect_sbc_ap_BIT_STRING_SIZE_28(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1369 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1370 28, 28, false, NULL, 0, NULL, NULL);
1372 return offset;
1377 static int
1378 dissect_sbc_ap_BIT_STRING_SIZE_18(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1379 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1380 18, 18, false, NULL, 0, NULL, NULL);
1382 return offset;
1387 static int
1388 dissect_sbc_ap_BIT_STRING_SIZE_21(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1389 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1390 21, 21, false, NULL, 0, NULL, NULL);
1392 return offset;
1396 static const value_string sbc_ap_ENB_ID_vals[] = {
1397 { 0, "macroENB-ID" },
1398 { 1, "homeENB-ID" },
1399 { 2, "short-macroENB-ID" },
1400 { 3, "long-macroENB-ID" },
1401 { 0, NULL }
1404 static const per_choice_t ENB_ID_choice[] = {
1405 { 0, &hf_sbc_ap_macroENB_ID , ASN1_EXTENSION_ROOT , dissect_sbc_ap_BIT_STRING_SIZE_20 },
1406 { 1, &hf_sbc_ap_homeENB_ID , ASN1_EXTENSION_ROOT , dissect_sbc_ap_BIT_STRING_SIZE_28 },
1407 { 2, &hf_sbc_ap_short_macroENB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_sbc_ap_BIT_STRING_SIZE_18 },
1408 { 3, &hf_sbc_ap_long_macroENB_ID, ASN1_NOT_EXTENSION_ROOT, dissect_sbc_ap_BIT_STRING_SIZE_21 },
1409 { 0, NULL, 0, NULL }
1412 static int
1413 dissect_sbc_ap_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1414 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1415 ett_sbc_ap_ENB_ID, ENB_ID_choice,
1416 NULL);
1418 return offset;
1422 static const per_sequence_t Global_ENB_ID_sequence[] = {
1423 { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
1424 { &hf_sbc_ap_eNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ENB_ID },
1425 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1426 { NULL, 0, 0, NULL }
1429 static int
1430 dissect_sbc_ap_Global_ENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1431 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1432 ett_sbc_ap_Global_ENB_ID, Global_ENB_ID_sequence);
1434 return offset;
1438 static const per_sequence_t Broadcast_Empty_Area_List_sequence_of[1] = {
1439 { &hf_sbc_ap_Broadcast_Empty_Area_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Global_ENB_ID },
1442 static int
1443 dissect_sbc_ap_Broadcast_Empty_Area_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1444 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1445 ett_sbc_ap_Broadcast_Empty_Area_List, Broadcast_Empty_Area_List_sequence_of,
1446 1, maxnoofeNBIds, false);
1448 return offset;
1453 static int
1454 dissect_sbc_ap_BIT_STRING_SIZE_22_32(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1455 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1456 22, 32, false, NULL, 0, NULL, NULL);
1458 return offset;
1462 static const value_string sbc_ap_GNB_ID_vals[] = {
1463 { 0, "gNB-ID" },
1464 { 0, NULL }
1467 static const per_choice_t GNB_ID_choice[] = {
1468 { 0, &hf_sbc_ap_gNB_ID_01 , ASN1_EXTENSION_ROOT , dissect_sbc_ap_BIT_STRING_SIZE_22_32 },
1469 { 0, NULL, 0, NULL }
1472 static int
1473 dissect_sbc_ap_GNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1474 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1475 ett_sbc_ap_GNB_ID, GNB_ID_choice,
1476 NULL);
1478 return offset;
1482 static const per_sequence_t Global_GNB_ID_sequence[] = {
1483 { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
1484 { &hf_sbc_ap_gNB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_GNB_ID },
1485 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1486 { NULL, 0, 0, NULL }
1489 static int
1490 dissect_sbc_ap_Global_GNB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1491 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1492 ett_sbc_ap_Global_GNB_ID, Global_GNB_ID_sequence);
1494 return offset;
1498 static const per_sequence_t Global_NgENB_ID_sequence[] = {
1499 { &hf_sbc_ap_pLMNidentity , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_PLMNidentity },
1500 { &hf_sbc_ap_ngENB_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ENB_ID },
1501 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1502 { NULL, 0, 0, NULL }
1505 static int
1506 dissect_sbc_ap_Global_NgENB_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1507 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1508 ett_sbc_ap_Global_NgENB_ID, Global_NgENB_ID_sequence);
1510 return offset;
1514 static const value_string sbc_ap_Global_RAN_Node_ID_vals[] = {
1515 { 0, "global-GNB-ID" },
1516 { 1, "global-NgENB-ID" },
1517 { 0, NULL }
1520 static const per_choice_t Global_RAN_Node_ID_choice[] = {
1521 { 0, &hf_sbc_ap_global_GNB_ID, ASN1_EXTENSION_ROOT , dissect_sbc_ap_Global_GNB_ID },
1522 { 1, &hf_sbc_ap_global_NgENB_ID, ASN1_EXTENSION_ROOT , dissect_sbc_ap_Global_NgENB_ID },
1523 { 0, NULL, 0, NULL }
1526 static int
1527 dissect_sbc_ap_Global_RAN_Node_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1528 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1529 ett_sbc_ap_Global_RAN_Node_ID, Global_RAN_Node_ID_choice,
1530 NULL);
1532 return offset;
1536 static const per_sequence_t Broadcast_Empty_Area_List_5GS_sequence_of[1] = {
1537 { &hf_sbc_ap_Broadcast_Empty_Area_List_5GS_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Global_RAN_Node_ID },
1540 static int
1541 dissect_sbc_ap_Broadcast_Empty_Area_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1542 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1543 ett_sbc_ap_Broadcast_Empty_Area_List_5GS, Broadcast_Empty_Area_List_5GS_sequence_of,
1544 1, maxnoofRANNodes, false);
1546 return offset;
1550 static const value_string sbc_ap_Cause_vals[] = {
1551 { 0, "message-accepted" },
1552 { 1, "parameter-not-recognised" },
1553 { 2, "parameter-value-invalid" },
1554 { 3, "valid-message-not-identified" },
1555 { 4, "tracking-area-not-valid" },
1556 { 5, "unrecognised-message" },
1557 { 6, "missing-mandatory-element" },
1558 { 7, "mME-capacity-exceeded" },
1559 { 8, "mME-memory-exceeded" },
1560 { 9, "warning-broadcast-not-supported" },
1561 { 10, "warning-broadcast-not-operational" },
1562 { 11, "message-reference-already-used" },
1563 { 12, "unspecifed-error" },
1564 { 13, "transfer-syntax-error" },
1565 { 14, "semantic-error" },
1566 { 15, "message-not-compatible-with-receiver-state" },
1567 { 16, "abstract-syntax-error-reject" },
1568 { 17, "abstract-syntax-error-ignore-and-notify" },
1569 { 18, "abstract-syntax-error-falsely-constructed-message" },
1570 { 0, NULL }
1574 static int
1575 dissect_sbc_ap_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1576 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1577 0U, 255U, NULL, false);
1579 return offset;
1583 static const value_string sbc_ap_Concurrent_Warning_Message_Indicator_vals[] = {
1584 { 0, "true" },
1585 { 0, NULL }
1589 static int
1590 dissect_sbc_ap_Concurrent_Warning_Message_Indicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1591 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1592 1, NULL, false, 0, NULL);
1594 return offset;
1598 static const value_string sbc_ap_TypeOfError_vals[] = {
1599 { 0, "not-understood" },
1600 { 1, "missing" },
1601 { 0, NULL }
1605 static int
1606 dissect_sbc_ap_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1607 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1608 2, NULL, true, 0, NULL);
1610 return offset;
1614 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
1615 { &hf_sbc_ap_iECriticality, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
1616 { &hf_sbc_ap_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_ID },
1617 { &hf_sbc_ap_typeOfError , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TypeOfError },
1618 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1619 { NULL, 0, 0, NULL }
1622 static int
1623 dissect_sbc_ap_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1624 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1625 ett_sbc_ap_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
1627 return offset;
1631 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
1632 { &hf_sbc_ap_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_CriticalityDiagnostics_IE_List_item },
1635 static int
1636 dissect_sbc_ap_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1637 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1638 ett_sbc_ap_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
1639 1, maxNrOfErrors, false);
1641 return offset;
1645 static const per_sequence_t Criticality_Diagnostics_sequence[] = {
1646 { &hf_sbc_ap_procedureCode, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProcedureCode },
1647 { &hf_sbc_ap_triggeringMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_TriggeringMessage },
1648 { &hf_sbc_ap_procedureCriticality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_Criticality },
1649 { &hf_sbc_ap_iE_CriticalityDiagnostics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_CriticalityDiagnostics_IE_List },
1650 { &hf_sbc_ap_iE_Extensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
1651 { NULL, 0, 0, NULL }
1654 static int
1655 dissect_sbc_ap_Criticality_Diagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1656 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1657 ett_sbc_ap_Criticality_Diagnostics, Criticality_Diagnostics_sequence);
1659 return offset;
1664 static int
1665 dissect_sbc_ap_Data_Coding_Scheme(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1666 tvbuff_t *parameter_tvb = NULL;
1667 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1668 8, 8, false, NULL, 0, &parameter_tvb, NULL);
1670 if (parameter_tvb) {
1671 struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
1672 proto_tree *subtree;
1674 subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Data_Coding_Scheme);
1675 sbc_ap_data->data_coding_scheme = dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree, 0);
1679 return offset;
1683 static const per_sequence_t ECGIList_sequence_of[1] = {
1684 { &hf_sbc_ap_ECGIList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1687 static int
1688 dissect_sbc_ap_ECGIList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1689 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1690 ett_sbc_ap_ECGIList, ECGIList_sequence_of,
1691 1, maxnoofCellID, false);
1693 return offset;
1697 static const per_sequence_t Emergency_Area_ID_List_sequence_of[1] = {
1698 { &hf_sbc_ap_Emergency_Area_ID_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
1701 static int
1702 dissect_sbc_ap_Emergency_Area_ID_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1703 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1704 ett_sbc_ap_Emergency_Area_ID_List, Emergency_Area_ID_List_sequence_of,
1705 1, maxnoofEmergencyAreaID, false);
1707 return offset;
1712 static int
1713 dissect_sbc_ap_Extended_Repetition_Period(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1714 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1715 4096U, 131071U, NULL, false);
1717 return offset;
1721 static const per_sequence_t Failed_Cell_List_sequence_of[1] = {
1722 { &hf_sbc_ap_Failed_Cell_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1725 static int
1726 dissect_sbc_ap_Failed_Cell_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1727 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1728 ett_sbc_ap_Failed_Cell_List, Failed_Cell_List_sequence_of,
1729 1, maxnoofFailedCells, false);
1731 return offset;
1735 static const per_sequence_t Failed_Cell_List_NR_sequence_of[1] = {
1736 { &hf_sbc_ap_Failed_Cell_List_NR_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1739 static int
1740 dissect_sbc_ap_Failed_Cell_List_NR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1741 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1742 ett_sbc_ap_Failed_Cell_List_NR, Failed_Cell_List_NR_sequence_of,
1743 1, maxnoofCellsingNB, false);
1745 return offset;
1749 static const per_sequence_t List_of_TAIs_item_sequence[] = {
1750 { &hf_sbc_ap_tai , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
1751 { NULL, 0, 0, NULL }
1754 static int
1755 dissect_sbc_ap_List_of_TAIs_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1756 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1757 ett_sbc_ap_List_of_TAIs_item, List_of_TAIs_item_sequence);
1759 return offset;
1763 static const per_sequence_t List_of_TAIs_sequence_of[1] = {
1764 { &hf_sbc_ap_List_of_TAIs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_List_of_TAIs_item },
1767 static int
1768 dissect_sbc_ap_List_of_TAIs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1769 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1770 ett_sbc_ap_List_of_TAIs, List_of_TAIs_sequence_of,
1771 1, maxNrOfTAIs, false);
1773 return offset;
1777 static const per_sequence_t List_of_TAIs_Restart_item_sequence[] = {
1778 { &hf_sbc_ap_tai , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
1779 { NULL, 0, 0, NULL }
1782 static int
1783 dissect_sbc_ap_List_of_TAIs_Restart_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1784 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1785 ett_sbc_ap_List_of_TAIs_Restart_item, List_of_TAIs_Restart_item_sequence);
1787 return offset;
1791 static const per_sequence_t List_of_TAIs_Restart_sequence_of[1] = {
1792 { &hf_sbc_ap_List_of_TAIs_Restart_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_List_of_TAIs_Restart_item },
1795 static int
1796 dissect_sbc_ap_List_of_TAIs_Restart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1797 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1798 ett_sbc_ap_List_of_TAIs_Restart, List_of_TAIs_Restart_sequence_of,
1799 1, maxnoofRestartTAIs, false);
1801 return offset;
1805 static const per_sequence_t List_of_EAIs_Restart_sequence_of[1] = {
1806 { &hf_sbc_ap_List_of_EAIs_Restart_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Emergency_Area_ID },
1809 static int
1810 dissect_sbc_ap_List_of_EAIs_Restart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1811 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1812 ett_sbc_ap_List_of_EAIs_Restart, List_of_EAIs_Restart_sequence_of,
1813 1, maxnoofRestartEAIs, false);
1815 return offset;
1819 static const per_sequence_t List_of_5GS_TAIs_sequence_of[1] = {
1820 { &hf_sbc_ap_List_of_5GS_TAIs_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1823 static int
1824 dissect_sbc_ap_List_of_5GS_TAIs(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1825 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1826 ett_sbc_ap_List_of_5GS_TAIs, List_of_5GS_TAIs_sequence_of,
1827 1, maxnoof5GSTAIs, false);
1829 return offset;
1833 static const per_sequence_t List_of_5GS_TAI_for_Restart_sequence_of[1] = {
1834 { &hf_sbc_ap_List_of_5GS_TAI_for_Restart_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
1837 static int
1838 dissect_sbc_ap_List_of_5GS_TAI_for_Restart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1839 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1840 ett_sbc_ap_List_of_5GS_TAI_for_Restart, List_of_5GS_TAI_for_Restart_sequence_of,
1841 1, maxnoofRestart5GSTAIs, false);
1843 return offset;
1848 static int
1849 dissect_sbc_ap_Message_Identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1850 tvbuff_t *parameter_tvb = NULL;
1851 offset = dissect_per_bit_string(tvb, offset, actx, tree, -1,
1852 16, 16, false, NULL, 0, &parameter_tvb, NULL);
1854 if (parameter_tvb) {
1855 actx->created_item = proto_tree_add_item(tree, hf_index, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
1859 return offset;
1864 static int
1865 dissect_sbc_ap_Number_of_Broadcasts_Requested(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1866 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1867 0U, 65535U, NULL, false);
1869 return offset;
1873 static const per_sequence_t NR_CGIList_sequence_of[1] = {
1874 { &hf_sbc_ap_NR_CGIList_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1877 static int
1878 dissect_sbc_ap_NR_CGIList(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1879 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1880 ett_sbc_ap_NR_CGIList, NR_CGIList_sequence_of,
1881 1, maxnoofCellsingNB, false);
1883 return offset;
1888 static int
1889 dissect_sbc_ap_Omc_Id(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1890 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
1891 1, 20, false, NULL);
1893 return offset;
1898 static int
1899 dissect_sbc_ap_Repetition_Period(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1900 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
1901 0U, 4096U, NULL, false);
1903 return offset;
1907 static const per_sequence_t Restarted_Cell_List_sequence_of[1] = {
1908 { &hf_sbc_ap_Restarted_Cell_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_EUTRAN_CGI },
1911 static int
1912 dissect_sbc_ap_Restarted_Cell_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1913 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1914 ett_sbc_ap_Restarted_Cell_List, Restarted_Cell_List_sequence_of,
1915 1, maxnoofRestartedCells, false);
1917 return offset;
1921 static const value_string sbc_ap_RAT_Selector_5GS_vals[] = {
1922 { 0, "true" },
1923 { 0, NULL }
1927 static int
1928 dissect_sbc_ap_RAT_Selector_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1929 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1930 1, NULL, false, 0, NULL);
1932 return offset;
1936 static const per_sequence_t Restarted_Cell_List_NR_sequence_of[1] = {
1937 { &hf_sbc_ap_Restarted_Cell_List_NR_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_NR_CGI },
1940 static int
1941 dissect_sbc_ap_Restarted_Cell_List_NR(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1942 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
1943 ett_sbc_ap_Restarted_Cell_List_NR, Restarted_Cell_List_NR_sequence_of,
1944 1, maxnoofCellsforRestartNR, false);
1946 return offset;
1950 static const value_string sbc_ap_Send_Write_Replace_Warning_Indication_vals[] = {
1951 { 0, "true" },
1952 { 0, NULL }
1956 static int
1957 dissect_sbc_ap_Send_Write_Replace_Warning_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1958 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1959 1, NULL, false, 0, NULL);
1961 return offset;
1965 static const value_string sbc_ap_Send_Stop_Warning_Indication_vals[] = {
1966 { 0, "true" },
1967 { 0, NULL }
1971 static int
1972 dissect_sbc_ap_Send_Stop_Warning_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1973 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
1974 1, NULL, false, 0, NULL);
1976 return offset;
1981 static int
1982 dissect_sbc_ap_Serial_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1983 tvbuff_t *parameter_tvb = NULL;
1984 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
1985 16, 16, false, NULL, 0, &parameter_tvb, NULL);
1987 if (parameter_tvb) {
1988 proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Serial_Number);
1989 proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_gs, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
1990 proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_msg_code, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
1991 proto_tree_add_item(subtree, hf_sbc_ap_Serial_Number_upd_nb, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
1995 return offset;
1999 static const value_string sbc_ap_Stop_All_Indicator_vals[] = {
2000 { 0, "true" },
2001 { 0, NULL }
2005 static int
2006 dissect_sbc_ap_Stop_All_Indicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2007 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
2008 1, NULL, false, 0, NULL);
2010 return offset;
2014 static const per_sequence_t TAI_List_for_Warning_sequence_of[1] = {
2015 { &hf_sbc_ap_TAI_List_for_Warning_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI },
2018 static int
2019 dissect_sbc_ap_TAI_List_for_Warning(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2020 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2021 ett_sbc_ap_TAI_List_for_Warning, TAI_List_for_Warning_sequence_of,
2022 1, maxnoofTAIforWarning, false);
2024 return offset;
2028 static const per_sequence_t Unknown_5GS_Tracking_Area_List_sequence_of[1] = {
2029 { &hf_sbc_ap_Unknown_5GS_Tracking_Area_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_TAI_5GS },
2032 static int
2033 dissect_sbc_ap_Unknown_5GS_Tracking_Area_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2034 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
2035 ett_sbc_ap_Unknown_5GS_Tracking_Area_List, Unknown_5GS_Tracking_Area_List_sequence_of,
2036 1, maxnoof5GSTAIs, false);
2038 return offset;
2042 static const value_string sbc_ap_Warning_Area_List_vals[] = {
2043 { 0, "cell-ID-List" },
2044 { 1, "tracking-Area-List-for-Warning" },
2045 { 2, "emergency-Area-ID-List" },
2046 { 0, NULL }
2049 static const per_choice_t Warning_Area_List_choice[] = {
2050 { 0, &hf_sbc_ap_cell_ID_List , ASN1_EXTENSION_ROOT , dissect_sbc_ap_ECGIList },
2051 { 1, &hf_sbc_ap_tracking_Area_List_for_Warning, ASN1_EXTENSION_ROOT , dissect_sbc_ap_TAI_List_for_Warning },
2052 { 2, &hf_sbc_ap_emergency_Area_ID_List, ASN1_EXTENSION_ROOT , dissect_sbc_ap_Emergency_Area_ID_List },
2053 { 0, NULL, 0, NULL }
2056 static int
2057 dissect_sbc_ap_Warning_Area_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2058 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2059 ett_sbc_ap_Warning_Area_List, Warning_Area_List_choice,
2060 NULL);
2062 return offset;
2067 static int
2068 dissect_sbc_ap_Warning_Message_Content(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2069 tvbuff_t *parameter_tvb = NULL;
2070 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2071 1, 9600, false, &parameter_tvb);
2073 if (parameter_tvb) {
2074 struct sbc_ap_private_data *sbc_ap_data = sbc_ap_get_private_data(actx->pinfo);
2075 proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Message_Contents);
2076 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);
2081 return offset;
2086 static int
2087 dissect_sbc_ap_Warning_Area_Coordinates(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2088 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2089 1, 1024, false, NULL);
2091 return offset;
2096 static int
2097 dissect_sbc_ap_Warning_Security_Information(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2098 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2099 50, 50, false, NULL);
2101 return offset;
2106 static int
2107 dissect_sbc_ap_Warning_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2108 tvbuff_t *parameter_tvb = NULL;
2109 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
2110 2, 2, false, &parameter_tvb);
2112 if (parameter_tvb) {
2113 proto_tree *subtree = proto_item_add_subtree(actx->created_item, ett_sbc_ap_Warning_Type);
2114 proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_value, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2115 proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_emergency_user_alert, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2116 proto_tree_add_item(subtree, hf_sbc_ap_Warning_Type_popup, parameter_tvb, 0, 2, ENC_BIG_ENDIAN);
2121 return offset;
2125 static const value_string sbc_ap_Warning_Area_List_5GS_vals[] = {
2126 { 0, "cell-ID-List" },
2127 { 1, "nR-CGIList" },
2128 { 2, "tAIList-5GS" },
2129 { 3, "emergencyAreaIDList" },
2130 { 0, NULL }
2133 static const per_choice_t Warning_Area_List_5GS_choice[] = {
2134 { 0, &hf_sbc_ap_cell_ID_List , ASN1_EXTENSION_ROOT , dissect_sbc_ap_ECGIList },
2135 { 1, &hf_sbc_ap_nR_CGIList , ASN1_EXTENSION_ROOT , dissect_sbc_ap_NR_CGIList },
2136 { 2, &hf_sbc_ap_tAIList_5GS , ASN1_EXTENSION_ROOT , dissect_sbc_ap_TAI_5GS },
2137 { 3, &hf_sbc_ap_emergencyAreaIDList, ASN1_EXTENSION_ROOT , dissect_sbc_ap_Emergency_Area_ID_List },
2138 { 0, NULL, 0, NULL }
2141 static int
2142 dissect_sbc_ap_Warning_Area_List_5GS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2143 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2144 ett_sbc_ap_Warning_Area_List_5GS, Warning_Area_List_5GS_choice,
2145 NULL);
2147 return offset;
2151 static const per_sequence_t Write_Replace_Warning_Request_sequence[] = {
2152 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2153 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2154 { NULL, 0, 0, NULL }
2157 static int
2158 dissect_sbc_ap_Write_Replace_Warning_Request(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2159 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Request");
2160 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2161 ett_sbc_ap_Write_Replace_Warning_Request, Write_Replace_Warning_Request_sequence);
2163 return offset;
2167 static const per_sequence_t Write_Replace_Warning_Response_sequence[] = {
2168 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2169 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2170 { NULL, 0, 0, NULL }
2173 static int
2174 dissect_sbc_ap_Write_Replace_Warning_Response(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2175 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Response");
2176 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2177 ett_sbc_ap_Write_Replace_Warning_Response, Write_Replace_Warning_Response_sequence);
2179 return offset;
2183 static const per_sequence_t Stop_Warning_Request_sequence[] = {
2184 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2185 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2186 { NULL, 0, 0, NULL }
2189 static int
2190 dissect_sbc_ap_Stop_Warning_Request(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2191 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Request");
2192 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2193 ett_sbc_ap_Stop_Warning_Request, Stop_Warning_Request_sequence);
2195 return offset;
2199 static const per_sequence_t Stop_Warning_Response_sequence[] = {
2200 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2201 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2202 { NULL, 0, 0, NULL }
2205 static int
2206 dissect_sbc_ap_Stop_Warning_Response(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2207 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Response");
2208 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2209 ett_sbc_ap_Stop_Warning_Response, Stop_Warning_Response_sequence);
2211 return offset;
2215 static const per_sequence_t Write_Replace_Warning_Indication_sequence[] = {
2216 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2217 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2218 { NULL, 0, 0, NULL }
2221 static int
2222 dissect_sbc_ap_Write_Replace_Warning_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2223 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Write-Replace-Warning-Indication");
2224 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2225 ett_sbc_ap_Write_Replace_Warning_Indication, Write_Replace_Warning_Indication_sequence);
2227 return offset;
2231 static const per_sequence_t Stop_Warning_Indication_sequence[] = {
2232 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2233 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2234 { NULL, 0, 0, NULL }
2237 static int
2238 dissect_sbc_ap_Stop_Warning_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2239 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Stop-Warning-Indication");
2240 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2241 ett_sbc_ap_Stop_Warning_Indication, Stop_Warning_Indication_sequence);
2243 return offset;
2247 static const per_sequence_t PWS_Restart_Indication_sequence[] = {
2248 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2249 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2250 { NULL, 0, 0, NULL }
2253 static int
2254 dissect_sbc_ap_PWS_Restart_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2255 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Restart-Indication");
2256 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2257 ett_sbc_ap_PWS_Restart_Indication, PWS_Restart_Indication_sequence);
2259 return offset;
2263 static const per_sequence_t PWS_Failure_Indication_sequence[] = {
2264 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2265 { &hf_sbc_ap_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sbc_ap_ProtocolExtensionContainer },
2266 { NULL, 0, 0, NULL }
2269 static int
2270 dissect_sbc_ap_PWS_Failure_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2271 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "PWS-Failure-Indication");
2273 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2274 ett_sbc_ap_PWS_Failure_Indication, PWS_Failure_Indication_sequence);
2276 return offset;
2280 static const per_sequence_t Error_Indication_sequence[] = {
2281 { &hf_sbc_ap_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProtocolIE_Container },
2282 { NULL, 0, 0, NULL }
2285 static int
2286 dissect_sbc_ap_Error_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2287 col_append_sep_str(actx->pinfo->cinfo, COL_INFO, NULL, "Error-Indication");
2288 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2289 ett_sbc_ap_Error_Indication, Error_Indication_sequence);
2291 return offset;
2296 static int
2297 dissect_sbc_ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2298 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
2300 return offset;
2304 static const per_sequence_t InitiatingMessage_sequence[] = {
2305 { &hf_sbc_ap_procedureCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProcedureCode },
2306 { &hf_sbc_ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
2307 { &hf_sbc_ap_initiatingMessagevalue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_InitiatingMessage_value },
2308 { NULL, 0, 0, NULL }
2311 static int
2312 dissect_sbc_ap_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2313 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2314 ett_sbc_ap_InitiatingMessage, InitiatingMessage_sequence);
2316 return offset;
2321 static int
2322 dissect_sbc_ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2323 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
2325 return offset;
2329 static const per_sequence_t SuccessfulOutcome_sequence[] = {
2330 { &hf_sbc_ap_procedureCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProcedureCode },
2331 { &hf_sbc_ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
2332 { &hf_sbc_ap_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_SuccessfulOutcome_value },
2333 { NULL, 0, 0, NULL }
2336 static int
2337 dissect_sbc_ap_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2338 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2339 ett_sbc_ap_SuccessfulOutcome, SuccessfulOutcome_sequence);
2341 return offset;
2346 static int
2347 dissect_sbc_ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2348 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
2350 return offset;
2354 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
2355 { &hf_sbc_ap_procedureCode, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_ProcedureCode },
2356 { &hf_sbc_ap_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_Criticality },
2357 { &hf_sbc_ap_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sbc_ap_UnsuccessfulOutcome_value },
2358 { NULL, 0, 0, NULL }
2361 static int
2362 dissect_sbc_ap_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2363 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
2364 ett_sbc_ap_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
2366 return offset;
2370 static const value_string sbc_ap_SBC_AP_PDU_vals[] = {
2371 { 0, "initiatingMessage" },
2372 { 1, "successfulOutcome" },
2373 { 2, "unsuccessfulOutcome" },
2374 { 0, NULL }
2377 static const per_choice_t SBC_AP_PDU_choice[] = {
2378 { 0, &hf_sbc_ap_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_sbc_ap_InitiatingMessage },
2379 { 1, &hf_sbc_ap_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_sbc_ap_SuccessfulOutcome },
2380 { 2, &hf_sbc_ap_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_sbc_ap_UnsuccessfulOutcome },
2381 { 0, NULL, 0, NULL }
2384 static int
2385 dissect_sbc_ap_SBC_AP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2386 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
2387 ett_sbc_ap_SBC_AP_PDU, SBC_AP_PDU_choice,
2388 NULL);
2390 return offset;
2393 /*--- PDUs ---*/
2395 static int dissect_Broadcast_Scheduled_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2396 int offset = 0;
2397 asn1_ctx_t asn1_ctx;
2398 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2399 offset = dissect_sbc_ap_Broadcast_Scheduled_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Scheduled_Area_List_PDU);
2400 offset += 7; offset >>= 3;
2401 return offset;
2403 static int dissect_Broadcast_Scheduled_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2404 int offset = 0;
2405 asn1_ctx_t asn1_ctx;
2406 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2407 offset = dissect_sbc_ap_Broadcast_Scheduled_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Scheduled_Area_List_5GS_PDU);
2408 offset += 7; offset >>= 3;
2409 return offset;
2411 static int dissect_Broadcast_Cancelled_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2412 int offset = 0;
2413 asn1_ctx_t asn1_ctx;
2414 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2415 offset = dissect_sbc_ap_Broadcast_Cancelled_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Cancelled_Area_List_PDU);
2416 offset += 7; offset >>= 3;
2417 return offset;
2419 static int dissect_Broadcast_Cancelled_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2420 int offset = 0;
2421 asn1_ctx_t asn1_ctx;
2422 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2423 offset = dissect_sbc_ap_Broadcast_Cancelled_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Cancelled_Area_List_5GS_PDU);
2424 offset += 7; offset >>= 3;
2425 return offset;
2427 static int dissect_Broadcast_Empty_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2428 int offset = 0;
2429 asn1_ctx_t asn1_ctx;
2430 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2431 offset = dissect_sbc_ap_Broadcast_Empty_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Empty_Area_List_PDU);
2432 offset += 7; offset >>= 3;
2433 return offset;
2435 static int dissect_Broadcast_Empty_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2436 int offset = 0;
2437 asn1_ctx_t asn1_ctx;
2438 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2439 offset = dissect_sbc_ap_Broadcast_Empty_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Broadcast_Empty_Area_List_5GS_PDU);
2440 offset += 7; offset >>= 3;
2441 return offset;
2443 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2444 int offset = 0;
2445 asn1_ctx_t asn1_ctx;
2446 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2447 offset = dissect_sbc_ap_Cause(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Cause_PDU);
2448 offset += 7; offset >>= 3;
2449 return offset;
2451 static int dissect_Concurrent_Warning_Message_Indicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2452 int offset = 0;
2453 asn1_ctx_t asn1_ctx;
2454 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2455 offset = dissect_sbc_ap_Concurrent_Warning_Message_Indicator(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Concurrent_Warning_Message_Indicator_PDU);
2456 offset += 7; offset >>= 3;
2457 return offset;
2459 static int dissect_Criticality_Diagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2460 int offset = 0;
2461 asn1_ctx_t asn1_ctx;
2462 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2463 offset = dissect_sbc_ap_Criticality_Diagnostics(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Criticality_Diagnostics_PDU);
2464 offset += 7; offset >>= 3;
2465 return offset;
2467 static int dissect_Data_Coding_Scheme_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2468 int offset = 0;
2469 asn1_ctx_t asn1_ctx;
2470 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2471 offset = dissect_sbc_ap_Data_Coding_Scheme(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Data_Coding_Scheme_PDU);
2472 offset += 7; offset >>= 3;
2473 return offset;
2475 static int dissect_Extended_Repetition_Period_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2476 int offset = 0;
2477 asn1_ctx_t asn1_ctx;
2478 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2479 offset = dissect_sbc_ap_Extended_Repetition_Period(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Extended_Repetition_Period_PDU);
2480 offset += 7; offset >>= 3;
2481 return offset;
2483 static int dissect_Failed_Cell_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2484 int offset = 0;
2485 asn1_ctx_t asn1_ctx;
2486 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2487 offset = dissect_sbc_ap_Failed_Cell_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Failed_Cell_List_PDU);
2488 offset += 7; offset >>= 3;
2489 return offset;
2491 static int dissect_Failed_Cell_List_NR_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2492 int offset = 0;
2493 asn1_ctx_t asn1_ctx;
2494 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2495 offset = dissect_sbc_ap_Failed_Cell_List_NR(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Failed_Cell_List_NR_PDU);
2496 offset += 7; offset >>= 3;
2497 return offset;
2499 static int dissect_Global_ENB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2500 int offset = 0;
2501 asn1_ctx_t asn1_ctx;
2502 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2503 offset = dissect_sbc_ap_Global_ENB_ID(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Global_ENB_ID_PDU);
2504 offset += 7; offset >>= 3;
2505 return offset;
2507 static int dissect_Global_RAN_Node_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2508 int offset = 0;
2509 asn1_ctx_t asn1_ctx;
2510 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2511 offset = dissect_sbc_ap_Global_RAN_Node_ID(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Global_RAN_Node_ID_PDU);
2512 offset += 7; offset >>= 3;
2513 return offset;
2515 static int dissect_Global_GNB_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2516 int offset = 0;
2517 asn1_ctx_t asn1_ctx;
2518 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2519 offset = dissect_sbc_ap_Global_GNB_ID(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Global_GNB_ID_PDU);
2520 offset += 7; offset >>= 3;
2521 return offset;
2523 static int dissect_List_of_TAIs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2524 int offset = 0;
2525 asn1_ctx_t asn1_ctx;
2526 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2527 offset = dissect_sbc_ap_List_of_TAIs(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_TAIs_PDU);
2528 offset += 7; offset >>= 3;
2529 return offset;
2531 static int dissect_List_of_TAIs_Restart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2532 int offset = 0;
2533 asn1_ctx_t asn1_ctx;
2534 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2535 offset = dissect_sbc_ap_List_of_TAIs_Restart(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_TAIs_Restart_PDU);
2536 offset += 7; offset >>= 3;
2537 return offset;
2539 static int dissect_List_of_EAIs_Restart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2540 int offset = 0;
2541 asn1_ctx_t asn1_ctx;
2542 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2543 offset = dissect_sbc_ap_List_of_EAIs_Restart(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_EAIs_Restart_PDU);
2544 offset += 7; offset >>= 3;
2545 return offset;
2547 static int dissect_List_of_5GS_TAIs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2548 int offset = 0;
2549 asn1_ctx_t asn1_ctx;
2550 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2551 offset = dissect_sbc_ap_List_of_5GS_TAIs(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_List_of_5GS_TAIs_PDU);
2552 offset += 7; offset >>= 3;
2553 return offset;
2555 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_) {
2556 int offset = 0;
2557 asn1_ctx_t asn1_ctx;
2558 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2559 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);
2560 offset += 7; offset >>= 3;
2561 return offset;
2563 static int dissect_Message_Identifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2564 int offset = 0;
2565 asn1_ctx_t asn1_ctx;
2566 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2567 offset = dissect_sbc_ap_Message_Identifier(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Message_Identifier_PDU);
2568 offset += 7; offset >>= 3;
2569 return offset;
2571 static int dissect_Number_of_Broadcasts_Requested_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2572 int offset = 0;
2573 asn1_ctx_t asn1_ctx;
2574 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2575 offset = dissect_sbc_ap_Number_of_Broadcasts_Requested(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Number_of_Broadcasts_Requested_PDU);
2576 offset += 7; offset >>= 3;
2577 return offset;
2579 static int dissect_Omc_Id_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2580 int offset = 0;
2581 asn1_ctx_t asn1_ctx;
2582 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2583 offset = dissect_sbc_ap_Omc_Id(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Omc_Id_PDU);
2584 offset += 7; offset >>= 3;
2585 return offset;
2587 static int dissect_Repetition_Period_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2588 int offset = 0;
2589 asn1_ctx_t asn1_ctx;
2590 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2591 offset = dissect_sbc_ap_Repetition_Period(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Repetition_Period_PDU);
2592 offset += 7; offset >>= 3;
2593 return offset;
2595 static int dissect_Restarted_Cell_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2596 int offset = 0;
2597 asn1_ctx_t asn1_ctx;
2598 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2599 offset = dissect_sbc_ap_Restarted_Cell_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Restarted_Cell_List_PDU);
2600 offset += 7; offset >>= 3;
2601 return offset;
2603 static int dissect_RAT_Selector_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2604 int offset = 0;
2605 asn1_ctx_t asn1_ctx;
2606 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2607 offset = dissect_sbc_ap_RAT_Selector_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_RAT_Selector_5GS_PDU);
2608 offset += 7; offset >>= 3;
2609 return offset;
2611 static int dissect_Restarted_Cell_List_NR_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2612 int offset = 0;
2613 asn1_ctx_t asn1_ctx;
2614 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2615 offset = dissect_sbc_ap_Restarted_Cell_List_NR(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Restarted_Cell_List_NR_PDU);
2616 offset += 7; offset >>= 3;
2617 return offset;
2619 static int dissect_Send_Write_Replace_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2620 int offset = 0;
2621 asn1_ctx_t asn1_ctx;
2622 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2623 offset = dissect_sbc_ap_Send_Write_Replace_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Send_Write_Replace_Warning_Indication_PDU);
2624 offset += 7; offset >>= 3;
2625 return offset;
2627 static int dissect_Send_Stop_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2628 int offset = 0;
2629 asn1_ctx_t asn1_ctx;
2630 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2631 offset = dissect_sbc_ap_Send_Stop_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Send_Stop_Warning_Indication_PDU);
2632 offset += 7; offset >>= 3;
2633 return offset;
2635 static int dissect_Serial_Number_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2636 int offset = 0;
2637 asn1_ctx_t asn1_ctx;
2638 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2639 offset = dissect_sbc_ap_Serial_Number(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Serial_Number_PDU);
2640 offset += 7; offset >>= 3;
2641 return offset;
2643 static int dissect_Stop_All_Indicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2644 int offset = 0;
2645 asn1_ctx_t asn1_ctx;
2646 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2647 offset = dissect_sbc_ap_Stop_All_Indicator(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_All_Indicator_PDU);
2648 offset += 7; offset >>= 3;
2649 return offset;
2651 static int dissect_Unknown_5GS_Tracking_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2652 int offset = 0;
2653 asn1_ctx_t asn1_ctx;
2654 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2655 offset = dissect_sbc_ap_Unknown_5GS_Tracking_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Unknown_5GS_Tracking_Area_List_PDU);
2656 offset += 7; offset >>= 3;
2657 return offset;
2659 static int dissect_Warning_Area_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2660 int offset = 0;
2661 asn1_ctx_t asn1_ctx;
2662 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2663 offset = dissect_sbc_ap_Warning_Area_List(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Area_List_PDU);
2664 offset += 7; offset >>= 3;
2665 return offset;
2667 static int dissect_Warning_Message_Content_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2668 int offset = 0;
2669 asn1_ctx_t asn1_ctx;
2670 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2671 offset = dissect_sbc_ap_Warning_Message_Content(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Message_Content_PDU);
2672 offset += 7; offset >>= 3;
2673 return offset;
2675 static int dissect_Warning_Area_Coordinates_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2676 int offset = 0;
2677 asn1_ctx_t asn1_ctx;
2678 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2679 offset = dissect_sbc_ap_Warning_Area_Coordinates(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Area_Coordinates_PDU);
2680 offset += 7; offset >>= 3;
2681 return offset;
2683 static int dissect_Warning_Security_Information_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2684 int offset = 0;
2685 asn1_ctx_t asn1_ctx;
2686 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2687 offset = dissect_sbc_ap_Warning_Security_Information(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Security_Information_PDU);
2688 offset += 7; offset >>= 3;
2689 return offset;
2691 static int dissect_Warning_Type_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2692 int offset = 0;
2693 asn1_ctx_t asn1_ctx;
2694 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2695 offset = dissect_sbc_ap_Warning_Type(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Type_PDU);
2696 offset += 7; offset >>= 3;
2697 return offset;
2699 static int dissect_Warning_Area_List_5GS_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2700 int offset = 0;
2701 asn1_ctx_t asn1_ctx;
2702 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2703 offset = dissect_sbc_ap_Warning_Area_List_5GS(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Warning_Area_List_5GS_PDU);
2704 offset += 7; offset >>= 3;
2705 return offset;
2707 static int dissect_Write_Replace_Warning_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2708 int offset = 0;
2709 asn1_ctx_t asn1_ctx;
2710 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2711 offset = dissect_sbc_ap_Write_Replace_Warning_Request(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Write_Replace_Warning_Request_PDU);
2712 offset += 7; offset >>= 3;
2713 return offset;
2715 static int dissect_Write_Replace_Warning_Response_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2716 int offset = 0;
2717 asn1_ctx_t asn1_ctx;
2718 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2719 offset = dissect_sbc_ap_Write_Replace_Warning_Response(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Write_Replace_Warning_Response_PDU);
2720 offset += 7; offset >>= 3;
2721 return offset;
2723 static int dissect_Stop_Warning_Request_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2724 int offset = 0;
2725 asn1_ctx_t asn1_ctx;
2726 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2727 offset = dissect_sbc_ap_Stop_Warning_Request(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_Warning_Request_PDU);
2728 offset += 7; offset >>= 3;
2729 return offset;
2731 static int dissect_Stop_Warning_Response_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2732 int offset = 0;
2733 asn1_ctx_t asn1_ctx;
2734 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2735 offset = dissect_sbc_ap_Stop_Warning_Response(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_Warning_Response_PDU);
2736 offset += 7; offset >>= 3;
2737 return offset;
2739 static int dissect_Write_Replace_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2740 int offset = 0;
2741 asn1_ctx_t asn1_ctx;
2742 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2743 offset = dissect_sbc_ap_Write_Replace_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Write_Replace_Warning_Indication_PDU);
2744 offset += 7; offset >>= 3;
2745 return offset;
2747 static int dissect_Stop_Warning_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2748 int offset = 0;
2749 asn1_ctx_t asn1_ctx;
2750 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2751 offset = dissect_sbc_ap_Stop_Warning_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Stop_Warning_Indication_PDU);
2752 offset += 7; offset >>= 3;
2753 return offset;
2755 static int dissect_PWS_Restart_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2756 int offset = 0;
2757 asn1_ctx_t asn1_ctx;
2758 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2759 offset = dissect_sbc_ap_PWS_Restart_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_PWS_Restart_Indication_PDU);
2760 offset += 7; offset >>= 3;
2761 return offset;
2763 static int dissect_PWS_Failure_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2764 int offset = 0;
2765 asn1_ctx_t asn1_ctx;
2766 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2767 offset = dissect_sbc_ap_PWS_Failure_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_PWS_Failure_Indication_PDU);
2768 offset += 7; offset >>= 3;
2769 return offset;
2771 static int dissect_Error_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2772 int offset = 0;
2773 asn1_ctx_t asn1_ctx;
2774 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2775 offset = dissect_sbc_ap_Error_Indication(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_Error_Indication_PDU);
2776 offset += 7; offset >>= 3;
2777 return offset;
2779 static int dissect_SBC_AP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
2780 int offset = 0;
2781 asn1_ctx_t asn1_ctx;
2782 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
2783 offset = dissect_sbc_ap_SBC_AP_PDU(tvb, offset, &asn1_ctx, tree, hf_sbc_ap_SBC_AP_PDU_PDU);
2784 offset += 7; offset >>= 3;
2785 return offset;
2789 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2791 return (dissector_try_uint(sbc_ap_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2793 /* Currently not used
2794 static int dissect_ProtocolIEFieldPairFirstValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2796 return (dissector_try_uint(sbc_ap_ies_p1_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2799 static int dissect_ProtocolIEFieldPairSecondValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2801 return (dissector_try_uint(sbc_ap_ies_p2_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2805 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2807 return (dissector_try_uint(sbc_ap_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2810 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2812 return (dissector_try_uint(sbc_ap_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2815 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2817 return (dissector_try_uint(sbc_ap_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2820 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
2822 return (dissector_try_uint(sbc_ap_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_captured_length(tvb) : 0;
2826 static int
2827 dissect_sbc_ap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
2829 proto_item *sbc_ap_item = NULL;
2830 proto_tree *sbc_ap_tree = NULL;
2832 /* make entry in the Protocol column on summary display */
2833 col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
2834 col_clear(pinfo->cinfo, COL_INFO);
2836 /* create the sbc_ap protocol tree */
2837 sbc_ap_item = proto_tree_add_item(tree, proto_sbc_ap, tvb, 0, -1, ENC_NA);
2838 sbc_ap_tree = proto_item_add_subtree(sbc_ap_item, ett_sbc_ap);
2840 dissect_SBC_AP_PDU_PDU(tvb, pinfo, sbc_ap_tree, NULL);
2842 return tvb_captured_length(tvb);
2844 /*--- proto_register_sbc_ap -------------------------------------------*/
2845 void proto_register_sbc_ap(void) {
2847 /* List of fields */
2848 static hf_register_info hf[] = {
2849 { &hf_sbc_ap_Serial_Number_gs,
2850 { "Geographical Scope", "sbc_ap.SerialNumber.gs",
2851 FT_UINT16, BASE_DEC, VALS(s1ap_serialNumber_gs_vals), 0xc000,
2852 NULL, HFILL }},
2853 { &hf_sbc_ap_Serial_Number_msg_code,
2854 { "Message Code", "sbc_ap.SerialNumber.msg_code",
2855 FT_UINT16, BASE_DEC, NULL, 0x3ff0,
2856 NULL, HFILL }},
2857 { &hf_sbc_ap_Serial_Number_upd_nb,
2858 { "Update Number", "sbc_ap.SerialNumber.upd_nb",
2859 FT_UINT16, BASE_DEC, NULL, 0x000f,
2860 NULL, HFILL }},
2861 { &hf_sbc_ap_Warning_Type_value,
2862 { "Warning Type Value", "sbc-ap.WarningType.value",
2863 FT_UINT16, BASE_DEC, VALS(s1ap_warningType_vals), 0xfe00,
2864 NULL, HFILL }},
2865 { &hf_sbc_ap_Warning_Type_emergency_user_alert,
2866 { "Emergency User Alert", "sbc-ap.WarningType.emergency_user_alert",
2867 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0100,
2868 NULL, HFILL }},
2869 { &hf_sbc_ap_Warning_Type_popup,
2870 { "Popup", "sbc-ap.WarningType.popup",
2871 FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0080,
2872 NULL, HFILL }},
2873 { &hf_sbc_ap_Warning_Message_Contents_nb_pages,
2874 { "Number of Pages", "sbc-ap.WarningMessageContents.nb_pages",
2875 FT_UINT8, BASE_DEC, NULL, 0,
2876 NULL, HFILL }},
2877 { &hf_sbc_ap_Warning_Message_Contents_decoded_page,
2878 { "Decoded Page", "sbc-ap.WarningMessageContents.decoded_page",
2879 FT_STRING, BASE_NONE, NULL, 0,
2880 NULL, HFILL }},
2881 { &hf_sbc_ap_Broadcast_Scheduled_Area_List_PDU,
2882 { "Broadcast-Scheduled-Area-List", "sbc-ap.Broadcast_Scheduled_Area_List_element",
2883 FT_NONE, BASE_NONE, NULL, 0,
2884 NULL, HFILL }},
2885 { &hf_sbc_ap_Broadcast_Scheduled_Area_List_5GS_PDU,
2886 { "Broadcast-Scheduled-Area-List-5GS", "sbc-ap.Broadcast_Scheduled_Area_List_5GS_element",
2887 FT_NONE, BASE_NONE, NULL, 0,
2888 NULL, HFILL }},
2889 { &hf_sbc_ap_Broadcast_Cancelled_Area_List_PDU,
2890 { "Broadcast-Cancelled-Area-List", "sbc-ap.Broadcast_Cancelled_Area_List_element",
2891 FT_NONE, BASE_NONE, NULL, 0,
2892 NULL, HFILL }},
2893 { &hf_sbc_ap_Broadcast_Cancelled_Area_List_5GS_PDU,
2894 { "Broadcast-Cancelled-Area-List-5GS", "sbc-ap.Broadcast_Cancelled_Area_List_5GS_element",
2895 FT_NONE, BASE_NONE, NULL, 0,
2896 NULL, HFILL }},
2897 { &hf_sbc_ap_Broadcast_Empty_Area_List_PDU,
2898 { "Broadcast-Empty-Area-List", "sbc-ap.Broadcast_Empty_Area_List",
2899 FT_UINT32, BASE_DEC, NULL, 0,
2900 NULL, HFILL }},
2901 { &hf_sbc_ap_Broadcast_Empty_Area_List_5GS_PDU,
2902 { "Broadcast-Empty-Area-List-5GS", "sbc-ap.Broadcast_Empty_Area_List_5GS",
2903 FT_UINT32, BASE_DEC, NULL, 0,
2904 NULL, HFILL }},
2905 { &hf_sbc_ap_Cause_PDU,
2906 { "Cause", "sbc-ap.Cause",
2907 FT_UINT32, BASE_DEC, VALS(sbc_ap_Cause_vals), 0,
2908 NULL, HFILL }},
2909 { &hf_sbc_ap_Concurrent_Warning_Message_Indicator_PDU,
2910 { "Concurrent-Warning-Message-Indicator", "sbc-ap.Concurrent_Warning_Message_Indicator",
2911 FT_UINT32, BASE_DEC, VALS(sbc_ap_Concurrent_Warning_Message_Indicator_vals), 0,
2912 NULL, HFILL }},
2913 { &hf_sbc_ap_Criticality_Diagnostics_PDU,
2914 { "Criticality-Diagnostics", "sbc-ap.Criticality_Diagnostics_element",
2915 FT_NONE, BASE_NONE, NULL, 0,
2916 NULL, HFILL }},
2917 { &hf_sbc_ap_Data_Coding_Scheme_PDU,
2918 { "Data-Coding-Scheme", "sbc-ap.Data_Coding_Scheme",
2919 FT_BYTES, BASE_NONE, NULL, 0,
2920 NULL, HFILL }},
2921 { &hf_sbc_ap_Extended_Repetition_Period_PDU,
2922 { "Extended-Repetition-Period", "sbc-ap.Extended_Repetition_Period",
2923 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
2924 NULL, HFILL }},
2925 { &hf_sbc_ap_Failed_Cell_List_PDU,
2926 { "Failed-Cell-List", "sbc-ap.Failed_Cell_List",
2927 FT_UINT32, BASE_DEC, NULL, 0,
2928 NULL, HFILL }},
2929 { &hf_sbc_ap_Failed_Cell_List_NR_PDU,
2930 { "Failed-Cell-List-NR", "sbc-ap.Failed_Cell_List_NR",
2931 FT_UINT32, BASE_DEC, NULL, 0,
2932 NULL, HFILL }},
2933 { &hf_sbc_ap_Global_ENB_ID_PDU,
2934 { "Global-ENB-ID", "sbc-ap.Global_ENB_ID_element",
2935 FT_NONE, BASE_NONE, NULL, 0,
2936 NULL, HFILL }},
2937 { &hf_sbc_ap_Global_RAN_Node_ID_PDU,
2938 { "Global-RAN-Node-ID", "sbc-ap.Global_RAN_Node_ID",
2939 FT_UINT32, BASE_DEC, VALS(sbc_ap_Global_RAN_Node_ID_vals), 0,
2940 NULL, HFILL }},
2941 { &hf_sbc_ap_Global_GNB_ID_PDU,
2942 { "Global-GNB-ID", "sbc-ap.Global_GNB_ID_element",
2943 FT_NONE, BASE_NONE, NULL, 0,
2944 NULL, HFILL }},
2945 { &hf_sbc_ap_List_of_TAIs_PDU,
2946 { "List-of-TAIs", "sbc-ap.List_of_TAIs",
2947 FT_UINT32, BASE_DEC, NULL, 0,
2948 NULL, HFILL }},
2949 { &hf_sbc_ap_List_of_TAIs_Restart_PDU,
2950 { "List-of-TAIs-Restart", "sbc-ap.List_of_TAIs_Restart",
2951 FT_UINT32, BASE_DEC, NULL, 0,
2952 NULL, HFILL }},
2953 { &hf_sbc_ap_List_of_EAIs_Restart_PDU,
2954 { "List-of-EAIs-Restart", "sbc-ap.List_of_EAIs_Restart",
2955 FT_UINT32, BASE_DEC, NULL, 0,
2956 NULL, HFILL }},
2957 { &hf_sbc_ap_List_of_5GS_TAIs_PDU,
2958 { "List-of-5GS-TAIs", "sbc-ap.List_of_5GS_TAIs",
2959 FT_UINT32, BASE_DEC, NULL, 0,
2960 NULL, HFILL }},
2961 { &hf_sbc_ap_List_of_5GS_TAI_for_Restart_PDU,
2962 { "List-of-5GS-TAI-for-Restart", "sbc-ap.List_of_5GS_TAI_for_Restart",
2963 FT_UINT32, BASE_DEC, NULL, 0,
2964 NULL, HFILL }},
2965 { &hf_sbc_ap_Message_Identifier_PDU,
2966 { "Message-Identifier", "sbc-ap.Message_Identifier",
2967 FT_UINT16, BASE_DEC|BASE_EXT_STRING, &lte_rrc_messageIdentifier_vals_ext, 0,
2968 NULL, HFILL }},
2969 { &hf_sbc_ap_Number_of_Broadcasts_Requested_PDU,
2970 { "Number-of-Broadcasts-Requested", "sbc-ap.Number_of_Broadcasts_Requested",
2971 FT_UINT32, BASE_DEC, NULL, 0,
2972 NULL, HFILL }},
2973 { &hf_sbc_ap_Omc_Id_PDU,
2974 { "Omc-Id", "sbc-ap.Omc_Id",
2975 FT_BYTES, BASE_NONE, NULL, 0,
2976 NULL, HFILL }},
2977 { &hf_sbc_ap_Repetition_Period_PDU,
2978 { "Repetition-Period", "sbc-ap.Repetition_Period",
2979 FT_UINT32, BASE_DEC|BASE_UNIT_STRING, UNS(&units_seconds), 0,
2980 NULL, HFILL }},
2981 { &hf_sbc_ap_Restarted_Cell_List_PDU,
2982 { "Restarted-Cell-List", "sbc-ap.Restarted_Cell_List",
2983 FT_UINT32, BASE_DEC, NULL, 0,
2984 NULL, HFILL }},
2985 { &hf_sbc_ap_RAT_Selector_5GS_PDU,
2986 { "RAT-Selector-5GS", "sbc-ap.RAT_Selector_5GS",
2987 FT_UINT32, BASE_DEC, VALS(sbc_ap_RAT_Selector_5GS_vals), 0,
2988 NULL, HFILL }},
2989 { &hf_sbc_ap_Restarted_Cell_List_NR_PDU,
2990 { "Restarted-Cell-List-NR", "sbc-ap.Restarted_Cell_List_NR",
2991 FT_UINT32, BASE_DEC, NULL, 0,
2992 NULL, HFILL }},
2993 { &hf_sbc_ap_Send_Write_Replace_Warning_Indication_PDU,
2994 { "Send-Write-Replace-Warning-Indication", "sbc-ap.Send_Write_Replace_Warning_Indication",
2995 FT_UINT32, BASE_DEC, VALS(sbc_ap_Send_Write_Replace_Warning_Indication_vals), 0,
2996 NULL, HFILL }},
2997 { &hf_sbc_ap_Send_Stop_Warning_Indication_PDU,
2998 { "Send-Stop-Warning-Indication", "sbc-ap.Send_Stop_Warning_Indication",
2999 FT_UINT32, BASE_DEC, VALS(sbc_ap_Send_Stop_Warning_Indication_vals), 0,
3000 NULL, HFILL }},
3001 { &hf_sbc_ap_Serial_Number_PDU,
3002 { "Serial-Number", "sbc-ap.Serial_Number",
3003 FT_BYTES, BASE_NONE, NULL, 0,
3004 NULL, HFILL }},
3005 { &hf_sbc_ap_Stop_All_Indicator_PDU,
3006 { "Stop-All-Indicator", "sbc-ap.Stop_All_Indicator",
3007 FT_UINT32, BASE_DEC, VALS(sbc_ap_Stop_All_Indicator_vals), 0,
3008 NULL, HFILL }},
3009 { &hf_sbc_ap_Unknown_5GS_Tracking_Area_List_PDU,
3010 { "Unknown-5GS-Tracking-Area-List", "sbc-ap.Unknown_5GS_Tracking_Area_List",
3011 FT_UINT32, BASE_DEC, NULL, 0,
3012 NULL, HFILL }},
3013 { &hf_sbc_ap_Warning_Area_List_PDU,
3014 { "Warning-Area-List", "sbc-ap.Warning_Area_List",
3015 FT_UINT32, BASE_DEC, VALS(sbc_ap_Warning_Area_List_vals), 0,
3016 NULL, HFILL }},
3017 { &hf_sbc_ap_Warning_Message_Content_PDU,
3018 { "Warning-Message-Content", "sbc-ap.Warning_Message_Content",
3019 FT_BYTES, BASE_NONE, NULL, 0,
3020 NULL, HFILL }},
3021 { &hf_sbc_ap_Warning_Area_Coordinates_PDU,
3022 { "Warning-Area-Coordinates", "sbc-ap.Warning_Area_Coordinates",
3023 FT_BYTES, BASE_NONE, NULL, 0,
3024 NULL, HFILL }},
3025 { &hf_sbc_ap_Warning_Security_Information_PDU,
3026 { "Warning-Security-Information", "sbc-ap.Warning_Security_Information",
3027 FT_BYTES, BASE_NONE, NULL, 0,
3028 NULL, HFILL }},
3029 { &hf_sbc_ap_Warning_Type_PDU,
3030 { "Warning-Type", "sbc-ap.Warning_Type",
3031 FT_BYTES, BASE_NONE, NULL, 0,
3032 NULL, HFILL }},
3033 { &hf_sbc_ap_Warning_Area_List_5GS_PDU,
3034 { "Warning-Area-List-5GS", "sbc-ap.Warning_Area_List_5GS",
3035 FT_UINT32, BASE_DEC, VALS(sbc_ap_Warning_Area_List_5GS_vals), 0,
3036 NULL, HFILL }},
3037 { &hf_sbc_ap_Write_Replace_Warning_Request_PDU,
3038 { "Write-Replace-Warning-Request", "sbc-ap.Write_Replace_Warning_Request_element",
3039 FT_NONE, BASE_NONE, NULL, 0,
3040 NULL, HFILL }},
3041 { &hf_sbc_ap_Write_Replace_Warning_Response_PDU,
3042 { "Write-Replace-Warning-Response", "sbc-ap.Write_Replace_Warning_Response_element",
3043 FT_NONE, BASE_NONE, NULL, 0,
3044 NULL, HFILL }},
3045 { &hf_sbc_ap_Stop_Warning_Request_PDU,
3046 { "Stop-Warning-Request", "sbc-ap.Stop_Warning_Request_element",
3047 FT_NONE, BASE_NONE, NULL, 0,
3048 NULL, HFILL }},
3049 { &hf_sbc_ap_Stop_Warning_Response_PDU,
3050 { "Stop-Warning-Response", "sbc-ap.Stop_Warning_Response_element",
3051 FT_NONE, BASE_NONE, NULL, 0,
3052 NULL, HFILL }},
3053 { &hf_sbc_ap_Write_Replace_Warning_Indication_PDU,
3054 { "Write-Replace-Warning-Indication", "sbc-ap.Write_Replace_Warning_Indication_element",
3055 FT_NONE, BASE_NONE, NULL, 0,
3056 NULL, HFILL }},
3057 { &hf_sbc_ap_Stop_Warning_Indication_PDU,
3058 { "Stop-Warning-Indication", "sbc-ap.Stop_Warning_Indication_element",
3059 FT_NONE, BASE_NONE, NULL, 0,
3060 NULL, HFILL }},
3061 { &hf_sbc_ap_PWS_Restart_Indication_PDU,
3062 { "PWS-Restart-Indication", "sbc-ap.PWS_Restart_Indication_element",
3063 FT_NONE, BASE_NONE, NULL, 0,
3064 NULL, HFILL }},
3065 { &hf_sbc_ap_PWS_Failure_Indication_PDU,
3066 { "PWS-Failure-Indication", "sbc-ap.PWS_Failure_Indication_element",
3067 FT_NONE, BASE_NONE, NULL, 0,
3068 NULL, HFILL }},
3069 { &hf_sbc_ap_Error_Indication_PDU,
3070 { "Error-Indication", "sbc-ap.Error_Indication_element",
3071 FT_NONE, BASE_NONE, NULL, 0,
3072 NULL, HFILL }},
3073 { &hf_sbc_ap_SBC_AP_PDU_PDU,
3074 { "SBC-AP-PDU", "sbc-ap.SBC_AP_PDU",
3075 FT_UINT32, BASE_DEC, VALS(sbc_ap_SBC_AP_PDU_vals), 0,
3076 NULL, HFILL }},
3077 { &hf_sbc_ap_ProtocolIE_Container_item,
3078 { "ProtocolIE-Field", "sbc-ap.ProtocolIE_Field_element",
3079 FT_NONE, BASE_NONE, NULL, 0,
3080 NULL, HFILL }},
3081 { &hf_sbc_ap_id,
3082 { "id", "sbc-ap.id",
3083 FT_UINT32, BASE_DEC, VALS(sbc_ap_ProtocolIE_ID_vals), 0,
3084 "ProtocolIE_ID", HFILL }},
3085 { &hf_sbc_ap_criticality,
3086 { "criticality", "sbc-ap.criticality",
3087 FT_UINT32, BASE_DEC, VALS(sbc_ap_Criticality_vals), 0,
3088 NULL, HFILL }},
3089 { &hf_sbc_ap_ie_field_value,
3090 { "value", "sbc-ap.value_element",
3091 FT_NONE, BASE_NONE, NULL, 0,
3092 "T_ie_field_value", HFILL }},
3093 { &hf_sbc_ap_ProtocolExtensionContainer_item,
3094 { "ProtocolExtensionField", "sbc-ap.ProtocolExtensionField_element",
3095 FT_NONE, BASE_NONE, NULL, 0,
3096 NULL, HFILL }},
3097 { &hf_sbc_ap_ext_id,
3098 { "id", "sbc-ap.id",
3099 FT_UINT8, BASE_DEC, VALS(sbc_ap_ProtocolIE_ID_vals), 0,
3100 "ProtocolExtensionID", HFILL }},
3101 { &hf_sbc_ap_extensionValue,
3102 { "extensionValue", "sbc-ap.extensionValue_element",
3103 FT_NONE, BASE_NONE, NULL, 0,
3104 NULL, HFILL }},
3105 { &hf_sbc_ap_cellId_Broadcast_List,
3106 { "cellId-Broadcast-List", "sbc-ap.cellId_Broadcast_List",
3107 FT_UINT32, BASE_DEC, NULL, 0,
3108 NULL, HFILL }},
3109 { &hf_sbc_ap_tAI_Broadcast_List,
3110 { "tAI-Broadcast-List", "sbc-ap.tAI_Broadcast_List",
3111 FT_UINT32, BASE_DEC, NULL, 0,
3112 NULL, HFILL }},
3113 { &hf_sbc_ap_emergencyAreaID_Broadcast_List,
3114 { "emergencyAreaID-Broadcast-List", "sbc-ap.emergencyAreaID_Broadcast_List",
3115 FT_UINT32, BASE_DEC, NULL, 0,
3116 NULL, HFILL }},
3117 { &hf_sbc_ap_iE_Extensions,
3118 { "iE-Extensions", "sbc-ap.iE_Extensions",
3119 FT_UINT32, BASE_DEC, NULL, 0,
3120 "ProtocolExtensionContainer", HFILL }},
3121 { &hf_sbc_ap_cellId_Broadcast_List_5GS,
3122 { "cellId-Broadcast-List-5GS", "sbc-ap.cellId_Broadcast_List_5GS",
3123 FT_UINT32, BASE_DEC, NULL, 0,
3124 NULL, HFILL }},
3125 { &hf_sbc_ap_tAI_Broadcast_List_5GS,
3126 { "tAI-Broadcast-List-5GS", "sbc-ap.tAI_Broadcast_List_5GS",
3127 FT_UINT32, BASE_DEC, NULL, 0,
3128 NULL, HFILL }},
3129 { &hf_sbc_ap_cellID_Cancelled_List,
3130 { "cellID-Cancelled-List", "sbc-ap.cellID_Cancelled_List",
3131 FT_UINT32, BASE_DEC, NULL, 0,
3132 NULL, HFILL }},
3133 { &hf_sbc_ap_tAI_Cancelled_List,
3134 { "tAI-Cancelled-List", "sbc-ap.tAI_Cancelled_List",
3135 FT_UINT32, BASE_DEC, NULL, 0,
3136 NULL, HFILL }},
3137 { &hf_sbc_ap_emergencyAreaID_Cancelled_List,
3138 { "emergencyAreaID-Cancelled-List", "sbc-ap.emergencyAreaID_Cancelled_List",
3139 FT_UINT32, BASE_DEC, NULL, 0,
3140 NULL, HFILL }},
3141 { &hf_sbc_ap_cellID_Cancelled_List_5GS,
3142 { "cellID-Cancelled-List-5GS", "sbc-ap.cellID_Cancelled_List_5GS",
3143 FT_UINT32, BASE_DEC, NULL, 0,
3144 NULL, HFILL }},
3145 { &hf_sbc_ap_tAI_Cancelled_List_5GS,
3146 { "tAI-Cancelled-List-5GS", "sbc-ap.tAI_Cancelled_List_5GS",
3147 FT_UINT32, BASE_DEC, NULL, 0,
3148 NULL, HFILL }},
3149 { &hf_sbc_ap_Broadcast_Empty_Area_List_item,
3150 { "Global-ENB-ID", "sbc-ap.Global_ENB_ID_element",
3151 FT_NONE, BASE_NONE, NULL, 0,
3152 NULL, HFILL }},
3153 { &hf_sbc_ap_Broadcast_Empty_Area_List_5GS_item,
3154 { "Global-RAN-Node-ID", "sbc-ap.Global_RAN_Node_ID",
3155 FT_UINT32, BASE_DEC, VALS(sbc_ap_Global_RAN_Node_ID_vals), 0,
3156 NULL, HFILL }},
3157 { &hf_sbc_ap_CancelledCellinEAI_item,
3158 { "CancelledCellinEAI-Item", "sbc-ap.CancelledCellinEAI_Item_element",
3159 FT_NONE, BASE_NONE, NULL, 0,
3160 NULL, HFILL }},
3161 { &hf_sbc_ap_eCGI,
3162 { "eCGI", "sbc-ap.eCGI_element",
3163 FT_NONE, BASE_NONE, NULL, 0,
3164 "EUTRAN_CGI", HFILL }},
3165 { &hf_sbc_ap_numberOfBroadcasts,
3166 { "numberOfBroadcasts", "sbc-ap.numberOfBroadcasts",
3167 FT_UINT32, BASE_DEC, NULL, 0,
3168 NULL, HFILL }},
3169 { &hf_sbc_ap_CancelledCellinTAI_item,
3170 { "CancelledCellinTAI-Item", "sbc-ap.CancelledCellinTAI_Item_element",
3171 FT_NONE, BASE_NONE, NULL, 0,
3172 NULL, HFILL }},
3173 { &hf_sbc_ap_CancelledCellinTAI_5GS_item,
3174 { "CancelledCellinTAI-5GS item", "sbc-ap.CancelledCellinTAI_5GS_item_element",
3175 FT_NONE, BASE_NONE, NULL, 0,
3176 NULL, HFILL }},
3177 { &hf_sbc_ap_nR_CGI,
3178 { "nR-CGI", "sbc-ap.nR_CGI_element",
3179 FT_NONE, BASE_NONE, NULL, 0,
3180 NULL, HFILL }},
3181 { &hf_sbc_ap_CellId_Broadcast_List_item,
3182 { "CellId-Broadcast-List-Item", "sbc-ap.CellId_Broadcast_List_Item_element",
3183 FT_NONE, BASE_NONE, NULL, 0,
3184 NULL, HFILL }},
3185 { &hf_sbc_ap_CellId_Broadcast_List_5GS_item,
3186 { "CellId-Broadcast-List-5GS item", "sbc-ap.CellId_Broadcast_List_5GS_item_element",
3187 FT_NONE, BASE_NONE, NULL, 0,
3188 NULL, HFILL }},
3189 { &hf_sbc_ap_CellID_Cancelled_List_item,
3190 { "CellID-Cancelled-Item", "sbc-ap.CellID_Cancelled_Item_element",
3191 FT_NONE, BASE_NONE, NULL, 0,
3192 NULL, HFILL }},
3193 { &hf_sbc_ap_CellID_Cancelled_List_5GS_item,
3194 { "CellID-Cancelled-List-5GS item", "sbc-ap.CellID_Cancelled_List_5GS_item_element",
3195 FT_NONE, BASE_NONE, NULL, 0,
3196 NULL, HFILL }},
3197 { &hf_sbc_ap_procedureCode,
3198 { "procedureCode", "sbc-ap.procedureCode",
3199 FT_UINT32, BASE_DEC, VALS(sbc_ap_ProcedureCode_vals), 0,
3200 NULL, HFILL }},
3201 { &hf_sbc_ap_triggeringMessage,
3202 { "triggeringMessage", "sbc-ap.triggeringMessage",
3203 FT_UINT32, BASE_DEC, VALS(sbc_ap_TriggeringMessage_vals), 0,
3204 NULL, HFILL }},
3205 { &hf_sbc_ap_procedureCriticality,
3206 { "procedureCriticality", "sbc-ap.procedureCriticality",
3207 FT_UINT32, BASE_DEC, VALS(sbc_ap_Criticality_vals), 0,
3208 "Criticality", HFILL }},
3209 { &hf_sbc_ap_iE_CriticalityDiagnostics,
3210 { "iE-CriticalityDiagnostics", "sbc-ap.iE_CriticalityDiagnostics",
3211 FT_UINT32, BASE_DEC, NULL, 0,
3212 "CriticalityDiagnostics_IE_List", HFILL }},
3213 { &hf_sbc_ap_CriticalityDiagnostics_IE_List_item,
3214 { "CriticalityDiagnostics-IE-List item", "sbc-ap.CriticalityDiagnostics_IE_List_item_element",
3215 FT_NONE, BASE_NONE, NULL, 0,
3216 NULL, HFILL }},
3217 { &hf_sbc_ap_iECriticality,
3218 { "iECriticality", "sbc-ap.iECriticality",
3219 FT_UINT32, BASE_DEC, VALS(sbc_ap_Criticality_vals), 0,
3220 "Criticality", HFILL }},
3221 { &hf_sbc_ap_iE_ID,
3222 { "iE-ID", "sbc-ap.iE_ID",
3223 FT_UINT32, BASE_DEC, VALS(sbc_ap_ProtocolIE_ID_vals), 0,
3224 "ProtocolIE_ID", HFILL }},
3225 { &hf_sbc_ap_typeOfError,
3226 { "typeOfError", "sbc-ap.typeOfError",
3227 FT_UINT32, BASE_DEC, VALS(sbc_ap_TypeOfError_vals), 0,
3228 NULL, HFILL }},
3229 { &hf_sbc_ap_ECGIList_item,
3230 { "EUTRAN-CGI", "sbc-ap.EUTRAN_CGI_element",
3231 FT_NONE, BASE_NONE, NULL, 0,
3232 NULL, HFILL }},
3233 { &hf_sbc_ap_Emergency_Area_ID_List_item,
3234 { "Emergency-Area-ID", "sbc-ap.Emergency_Area_ID",
3235 FT_BYTES, BASE_NONE, NULL, 0,
3236 NULL, HFILL }},
3237 { &hf_sbc_ap_EmergencyAreaID_Broadcast_List_item,
3238 { "EmergencyAreaID-Broadcast-List-Item", "sbc-ap.EmergencyAreaID_Broadcast_List_Item_element",
3239 FT_NONE, BASE_NONE, NULL, 0,
3240 NULL, HFILL }},
3241 { &hf_sbc_ap_emergencyAreaID,
3242 { "emergencyAreaID", "sbc-ap.emergencyAreaID",
3243 FT_BYTES, BASE_NONE, NULL, 0,
3244 "Emergency_Area_ID", HFILL }},
3245 { &hf_sbc_ap_scheduledCellinEAI,
3246 { "scheduledCellinEAI", "sbc-ap.scheduledCellinEAI",
3247 FT_UINT32, BASE_DEC, NULL, 0,
3248 NULL, HFILL }},
3249 { &hf_sbc_ap_EmergencyAreaID_Cancelled_List_item,
3250 { "EmergencyAreaID-Cancelled-Item", "sbc-ap.EmergencyAreaID_Cancelled_Item_element",
3251 FT_NONE, BASE_NONE, NULL, 0,
3252 NULL, HFILL }},
3253 { &hf_sbc_ap_cancelledCellinEAI,
3254 { "cancelledCellinEAI", "sbc-ap.cancelledCellinEAI",
3255 FT_UINT32, BASE_DEC, NULL, 0,
3256 NULL, HFILL }},
3257 { &hf_sbc_ap_pLMNidentity,
3258 { "pLMNidentity", "sbc-ap.pLMNidentity",
3259 FT_BYTES, BASE_NONE, NULL, 0,
3260 NULL, HFILL }},
3261 { &hf_sbc_ap_cell_ID,
3262 { "cell-ID", "sbc-ap.cell_ID",
3263 FT_BYTES, BASE_NONE, NULL, 0,
3264 "CellIdentity", HFILL }},
3265 { &hf_sbc_ap_macroENB_ID,
3266 { "macroENB-ID", "sbc-ap.macroENB_ID",
3267 FT_BYTES, BASE_NONE, NULL, 0,
3268 "BIT_STRING_SIZE_20", HFILL }},
3269 { &hf_sbc_ap_homeENB_ID,
3270 { "homeENB-ID", "sbc-ap.homeENB_ID",
3271 FT_BYTES, BASE_NONE, NULL, 0,
3272 "BIT_STRING_SIZE_28", HFILL }},
3273 { &hf_sbc_ap_short_macroENB_ID,
3274 { "short-macroENB-ID", "sbc-ap.short_macroENB_ID",
3275 FT_BYTES, BASE_NONE, NULL, 0,
3276 "BIT_STRING_SIZE_18", HFILL }},
3277 { &hf_sbc_ap_long_macroENB_ID,
3278 { "long-macroENB-ID", "sbc-ap.long_macroENB_ID",
3279 FT_BYTES, BASE_NONE, NULL, 0,
3280 "BIT_STRING_SIZE_21", HFILL }},
3281 { &hf_sbc_ap_Failed_Cell_List_item,
3282 { "EUTRAN-CGI", "sbc-ap.EUTRAN_CGI_element",
3283 FT_NONE, BASE_NONE, NULL, 0,
3284 NULL, HFILL }},
3285 { &hf_sbc_ap_Failed_Cell_List_NR_item,
3286 { "NR-CGI", "sbc-ap.NR_CGI_element",
3287 FT_NONE, BASE_NONE, NULL, 0,
3288 NULL, HFILL }},
3289 { &hf_sbc_ap_eNB_ID,
3290 { "eNB-ID", "sbc-ap.eNB_ID",
3291 FT_UINT32, BASE_DEC, VALS(sbc_ap_ENB_ID_vals), 0,
3292 NULL, HFILL }},
3293 { &hf_sbc_ap_global_GNB_ID,
3294 { "global-GNB-ID", "sbc-ap.global_GNB_ID_element",
3295 FT_NONE, BASE_NONE, NULL, 0,
3296 NULL, HFILL }},
3297 { &hf_sbc_ap_global_NgENB_ID,
3298 { "global-NgENB-ID", "sbc-ap.global_NgENB_ID_element",
3299 FT_NONE, BASE_NONE, NULL, 0,
3300 NULL, HFILL }},
3301 { &hf_sbc_ap_gNB_ID,
3302 { "gNB-ID", "sbc-ap.gNB_ID",
3303 FT_UINT32, BASE_DEC, VALS(sbc_ap_GNB_ID_vals), 0,
3304 NULL, HFILL }},
3305 { &hf_sbc_ap_gNB_ID_01,
3306 { "gNB-ID", "sbc-ap.gNB_ID",
3307 FT_BYTES, BASE_NONE, NULL, 0,
3308 "BIT_STRING_SIZE_22_32", HFILL }},
3309 { &hf_sbc_ap_ngENB_ID,
3310 { "ngENB-ID", "sbc-ap.ngENB_ID",
3311 FT_UINT32, BASE_DEC, VALS(sbc_ap_ENB_ID_vals), 0,
3312 "ENB_ID", HFILL }},
3313 { &hf_sbc_ap_List_of_TAIs_item,
3314 { "List-of-TAIs item", "sbc-ap.List_of_TAIs_item_element",
3315 FT_NONE, BASE_NONE, NULL, 0,
3316 NULL, HFILL }},
3317 { &hf_sbc_ap_tai,
3318 { "tai", "sbc-ap.tai_element",
3319 FT_NONE, BASE_NONE, NULL, 0,
3320 NULL, HFILL }},
3321 { &hf_sbc_ap_List_of_TAIs_Restart_item,
3322 { "List-of-TAIs-Restart item", "sbc-ap.List_of_TAIs_Restart_item_element",
3323 FT_NONE, BASE_NONE, NULL, 0,
3324 NULL, HFILL }},
3325 { &hf_sbc_ap_List_of_EAIs_Restart_item,
3326 { "Emergency-Area-ID", "sbc-ap.Emergency_Area_ID",
3327 FT_BYTES, BASE_NONE, NULL, 0,
3328 NULL, HFILL }},
3329 { &hf_sbc_ap_List_of_5GS_TAIs_item,
3330 { "TAI-5GS", "sbc-ap.TAI_5GS_element",
3331 FT_NONE, BASE_NONE, NULL, 0,
3332 NULL, HFILL }},
3333 { &hf_sbc_ap_List_of_5GS_TAI_for_Restart_item,
3334 { "TAI-5GS", "sbc-ap.TAI_5GS_element",
3335 FT_NONE, BASE_NONE, NULL, 0,
3336 NULL, HFILL }},
3337 { &hf_sbc_ap_NR_CGIList_item,
3338 { "NR-CGI", "sbc-ap.NR_CGI_element",
3339 FT_NONE, BASE_NONE, NULL, 0,
3340 NULL, HFILL }},
3341 { &hf_sbc_ap_nRCellIdentity,
3342 { "nRCellIdentity", "sbc-ap.nRCellIdentity",
3343 FT_BYTES, BASE_NONE, NULL, 0,
3344 NULL, HFILL }},
3345 { &hf_sbc_ap_Restarted_Cell_List_item,
3346 { "EUTRAN-CGI", "sbc-ap.EUTRAN_CGI_element",
3347 FT_NONE, BASE_NONE, NULL, 0,
3348 NULL, HFILL }},
3349 { &hf_sbc_ap_Restarted_Cell_List_NR_item,
3350 { "NR-CGI", "sbc-ap.NR_CGI_element",
3351 FT_NONE, BASE_NONE, NULL, 0,
3352 NULL, HFILL }},
3353 { &hf_sbc_ap_ScheduledCellinEAI_item,
3354 { "ScheduledCellinEAI-Item", "sbc-ap.ScheduledCellinEAI_Item_element",
3355 FT_NONE, BASE_NONE, NULL, 0,
3356 NULL, HFILL }},
3357 { &hf_sbc_ap_ScheduledCellinTAI_item,
3358 { "ScheduledCellinTAI-Item", "sbc-ap.ScheduledCellinTAI_Item_element",
3359 FT_NONE, BASE_NONE, NULL, 0,
3360 NULL, HFILL }},
3361 { &hf_sbc_ap_ScheduledCellinTAI_5GS_item,
3362 { "ScheduledCellinTAI-5GS item", "sbc-ap.ScheduledCellinTAI_5GS_item_element",
3363 FT_NONE, BASE_NONE, NULL, 0,
3364 NULL, HFILL }},
3365 { &hf_sbc_ap_TAI_Broadcast_List_item,
3366 { "TAI-Broadcast-List-Item", "sbc-ap.TAI_Broadcast_List_Item_element",
3367 FT_NONE, BASE_NONE, NULL, 0,
3368 NULL, HFILL }},
3369 { &hf_sbc_ap_tAI,
3370 { "tAI", "sbc-ap.tAI_element",
3371 FT_NONE, BASE_NONE, NULL, 0,
3372 NULL, HFILL }},
3373 { &hf_sbc_ap_scheduledCellinTAI,
3374 { "scheduledCellinTAI", "sbc-ap.scheduledCellinTAI",
3375 FT_UINT32, BASE_DEC, NULL, 0,
3376 NULL, HFILL }},
3377 { &hf_sbc_ap_TAI_Broadcast_List_5GS_item,
3378 { "TAI-Broadcast-List-5GS item", "sbc-ap.TAI_Broadcast_List_5GS_item_element",
3379 FT_NONE, BASE_NONE, NULL, 0,
3380 NULL, HFILL }},
3381 { &hf_sbc_ap_tAI_5GS,
3382 { "tAI-5GS", "sbc-ap.tAI_5GS_element",
3383 FT_NONE, BASE_NONE, NULL, 0,
3384 NULL, HFILL }},
3385 { &hf_sbc_ap_scheduledCellinTAI_5GS,
3386 { "scheduledCellinTAI-5GS", "sbc-ap.scheduledCellinTAI_5GS",
3387 FT_UINT32, BASE_DEC, NULL, 0,
3388 NULL, HFILL }},
3389 { &hf_sbc_ap_TAI_Cancelled_List_item,
3390 { "TAI-Cancelled-List-Item", "sbc-ap.TAI_Cancelled_List_Item_element",
3391 FT_NONE, BASE_NONE, NULL, 0,
3392 NULL, HFILL }},
3393 { &hf_sbc_ap_cancelledCellinTAI,
3394 { "cancelledCellinTAI", "sbc-ap.cancelledCellinTAI",
3395 FT_UINT32, BASE_DEC, NULL, 0,
3396 NULL, HFILL }},
3397 { &hf_sbc_ap_TAI_Cancelled_List_5GS_item,
3398 { "TAI-Cancelled-List-5GS item", "sbc-ap.TAI_Cancelled_List_5GS_item_element",
3399 FT_NONE, BASE_NONE, NULL, 0,
3400 NULL, HFILL }},
3401 { &hf_sbc_ap_cancelledCellinTAI_5GS,
3402 { "cancelledCellinTAI-5GS", "sbc-ap.cancelledCellinTAI_5GS",
3403 FT_UINT32, BASE_DEC, NULL, 0,
3404 NULL, HFILL }},
3405 { &hf_sbc_ap_TAI_List_for_Warning_item,
3406 { "TAI", "sbc-ap.TAI_element",
3407 FT_NONE, BASE_NONE, NULL, 0,
3408 NULL, HFILL }},
3409 { &hf_sbc_ap_tAC,
3410 { "tAC", "sbc-ap.tAC",
3411 FT_UINT16, BASE_DEC_HEX, NULL, 0,
3412 NULL, HFILL }},
3413 { &hf_sbc_ap_tAC_5GS,
3414 { "tAC-5GS", "sbc-ap.tAC_5GS",
3415 FT_UINT24, BASE_DEC_HEX, NULL, 0,
3416 NULL, HFILL }},
3417 { &hf_sbc_ap_Unknown_5GS_Tracking_Area_List_item,
3418 { "TAI-5GS", "sbc-ap.TAI_5GS_element",
3419 FT_NONE, BASE_NONE, NULL, 0,
3420 NULL, HFILL }},
3421 { &hf_sbc_ap_cell_ID_List,
3422 { "cell-ID-List", "sbc-ap.cell_ID_List",
3423 FT_UINT32, BASE_DEC, NULL, 0,
3424 "ECGIList", HFILL }},
3425 { &hf_sbc_ap_tracking_Area_List_for_Warning,
3426 { "tracking-Area-List-for-Warning", "sbc-ap.tracking_Area_List_for_Warning",
3427 FT_UINT32, BASE_DEC, NULL, 0,
3428 "TAI_List_for_Warning", HFILL }},
3429 { &hf_sbc_ap_emergency_Area_ID_List,
3430 { "emergency-Area-ID-List", "sbc-ap.emergency_Area_ID_List",
3431 FT_UINT32, BASE_DEC, NULL, 0,
3432 NULL, HFILL }},
3433 { &hf_sbc_ap_nR_CGIList,
3434 { "nR-CGIList", "sbc-ap.nR_CGIList",
3435 FT_UINT32, BASE_DEC, NULL, 0,
3436 NULL, HFILL }},
3437 { &hf_sbc_ap_tAIList_5GS,
3438 { "tAIList-5GS", "sbc-ap.tAIList_5GS_element",
3439 FT_NONE, BASE_NONE, NULL, 0,
3440 "TAI_5GS", HFILL }},
3441 { &hf_sbc_ap_emergencyAreaIDList,
3442 { "emergencyAreaIDList", "sbc-ap.emergencyAreaIDList",
3443 FT_UINT32, BASE_DEC, NULL, 0,
3444 "Emergency_Area_ID_List", HFILL }},
3445 { &hf_sbc_ap_protocolIEs,
3446 { "protocolIEs", "sbc-ap.protocolIEs",
3447 FT_UINT32, BASE_DEC, NULL, 0,
3448 "ProtocolIE_Container", HFILL }},
3449 { &hf_sbc_ap_protocolExtensions,
3450 { "protocolExtensions", "sbc-ap.protocolExtensions",
3451 FT_UINT32, BASE_DEC, NULL, 0,
3452 "ProtocolExtensionContainer", HFILL }},
3453 { &hf_sbc_ap_initiatingMessage,
3454 { "initiatingMessage", "sbc-ap.initiatingMessage_element",
3455 FT_NONE, BASE_NONE, NULL, 0,
3456 NULL, HFILL }},
3457 { &hf_sbc_ap_successfulOutcome,
3458 { "successfulOutcome", "sbc-ap.successfulOutcome_element",
3459 FT_NONE, BASE_NONE, NULL, 0,
3460 NULL, HFILL }},
3461 { &hf_sbc_ap_unsuccessfulOutcome,
3462 { "unsuccessfulOutcome", "sbc-ap.unsuccessfulOutcome_element",
3463 FT_NONE, BASE_NONE, NULL, 0,
3464 NULL, HFILL }},
3465 { &hf_sbc_ap_initiatingMessagevalue,
3466 { "value", "sbc-ap.value_element",
3467 FT_NONE, BASE_NONE, NULL, 0,
3468 "InitiatingMessage_value", HFILL }},
3469 { &hf_sbc_ap_successfulOutcome_value,
3470 { "value", "sbc-ap.value_element",
3471 FT_NONE, BASE_NONE, NULL, 0,
3472 "SuccessfulOutcome_value", HFILL }},
3473 { &hf_sbc_ap_unsuccessfulOutcome_value,
3474 { "value", "sbc-ap.value_element",
3475 FT_NONE, BASE_NONE, NULL, 0,
3476 "UnsuccessfulOutcome_value", HFILL }},
3479 /* List of subtrees */
3480 static int *ett[] = {
3481 &ett_sbc_ap,
3482 &ett_sbc_ap_Serial_Number,
3483 &ett_sbc_ap_Warning_Type,
3484 &ett_sbc_ap_Data_Coding_Scheme,
3485 &ett_sbc_ap_Warning_Message_Contents,
3486 &ett_sbc_ap_ProtocolIE_Container,
3487 &ett_sbc_ap_ProtocolIE_Field,
3488 &ett_sbc_ap_ProtocolExtensionContainer,
3489 &ett_sbc_ap_ProtocolExtensionField,
3490 &ett_sbc_ap_Broadcast_Scheduled_Area_List,
3491 &ett_sbc_ap_Broadcast_Scheduled_Area_List_5GS,
3492 &ett_sbc_ap_Broadcast_Cancelled_Area_List,
3493 &ett_sbc_ap_Broadcast_Cancelled_Area_List_5GS,
3494 &ett_sbc_ap_Broadcast_Empty_Area_List,
3495 &ett_sbc_ap_Broadcast_Empty_Area_List_5GS,
3496 &ett_sbc_ap_CancelledCellinEAI,
3497 &ett_sbc_ap_CancelledCellinEAI_Item,
3498 &ett_sbc_ap_CancelledCellinTAI,
3499 &ett_sbc_ap_CancelledCellinTAI_Item,
3500 &ett_sbc_ap_CancelledCellinTAI_5GS,
3501 &ett_sbc_ap_CancelledCellinTAI_5GS_item,
3502 &ett_sbc_ap_CellId_Broadcast_List,
3503 &ett_sbc_ap_CellId_Broadcast_List_Item,
3504 &ett_sbc_ap_CellId_Broadcast_List_5GS,
3505 &ett_sbc_ap_CellId_Broadcast_List_5GS_item,
3506 &ett_sbc_ap_CellID_Cancelled_List,
3507 &ett_sbc_ap_CellID_Cancelled_Item,
3508 &ett_sbc_ap_CellID_Cancelled_List_5GS,
3509 &ett_sbc_ap_CellID_Cancelled_List_5GS_item,
3510 &ett_sbc_ap_Criticality_Diagnostics,
3511 &ett_sbc_ap_CriticalityDiagnostics_IE_List,
3512 &ett_sbc_ap_CriticalityDiagnostics_IE_List_item,
3513 &ett_sbc_ap_ECGIList,
3514 &ett_sbc_ap_Emergency_Area_ID_List,
3515 &ett_sbc_ap_EmergencyAreaID_Broadcast_List,
3516 &ett_sbc_ap_EmergencyAreaID_Broadcast_List_Item,
3517 &ett_sbc_ap_EmergencyAreaID_Cancelled_List,
3518 &ett_sbc_ap_EmergencyAreaID_Cancelled_Item,
3519 &ett_sbc_ap_EUTRAN_CGI,
3520 &ett_sbc_ap_ENB_ID,
3521 &ett_sbc_ap_Failed_Cell_List,
3522 &ett_sbc_ap_Failed_Cell_List_NR,
3523 &ett_sbc_ap_Global_ENB_ID,
3524 &ett_sbc_ap_Global_RAN_Node_ID,
3525 &ett_sbc_ap_Global_GNB_ID,
3526 &ett_sbc_ap_GNB_ID,
3527 &ett_sbc_ap_Global_NgENB_ID,
3528 &ett_sbc_ap_List_of_TAIs,
3529 &ett_sbc_ap_List_of_TAIs_item,
3530 &ett_sbc_ap_List_of_TAIs_Restart,
3531 &ett_sbc_ap_List_of_TAIs_Restart_item,
3532 &ett_sbc_ap_List_of_EAIs_Restart,
3533 &ett_sbc_ap_List_of_5GS_TAIs,
3534 &ett_sbc_ap_List_of_5GS_TAI_for_Restart,
3535 &ett_sbc_ap_NR_CGIList,
3536 &ett_sbc_ap_NR_CGI,
3537 &ett_sbc_ap_Restarted_Cell_List,
3538 &ett_sbc_ap_Restarted_Cell_List_NR,
3539 &ett_sbc_ap_ScheduledCellinEAI,
3540 &ett_sbc_ap_ScheduledCellinEAI_Item,
3541 &ett_sbc_ap_ScheduledCellinTAI,
3542 &ett_sbc_ap_ScheduledCellinTAI_Item,
3543 &ett_sbc_ap_ScheduledCellinTAI_5GS,
3544 &ett_sbc_ap_ScheduledCellinTAI_5GS_item,
3545 &ett_sbc_ap_TAI_Broadcast_List,
3546 &ett_sbc_ap_TAI_Broadcast_List_Item,
3547 &ett_sbc_ap_TAI_Broadcast_List_5GS,
3548 &ett_sbc_ap_TAI_Broadcast_List_5GS_item,
3549 &ett_sbc_ap_TAI_Cancelled_List,
3550 &ett_sbc_ap_TAI_Cancelled_List_Item,
3551 &ett_sbc_ap_TAI_Cancelled_List_5GS,
3552 &ett_sbc_ap_TAI_Cancelled_List_5GS_item,
3553 &ett_sbc_ap_TAI_List_for_Warning,
3554 &ett_sbc_ap_TAI,
3555 &ett_sbc_ap_TAI_5GS,
3556 &ett_sbc_ap_Unknown_5GS_Tracking_Area_List,
3557 &ett_sbc_ap_Warning_Area_List,
3558 &ett_sbc_ap_Warning_Area_List_5GS,
3559 &ett_sbc_ap_Write_Replace_Warning_Request,
3560 &ett_sbc_ap_Write_Replace_Warning_Response,
3561 &ett_sbc_ap_Stop_Warning_Request,
3562 &ett_sbc_ap_Stop_Warning_Response,
3563 &ett_sbc_ap_Write_Replace_Warning_Indication,
3564 &ett_sbc_ap_Stop_Warning_Indication,
3565 &ett_sbc_ap_PWS_Restart_Indication,
3566 &ett_sbc_ap_PWS_Failure_Indication,
3567 &ett_sbc_ap_Error_Indication,
3568 &ett_sbc_ap_SBC_AP_PDU,
3569 &ett_sbc_ap_InitiatingMessage,
3570 &ett_sbc_ap_SuccessfulOutcome,
3571 &ett_sbc_ap_UnsuccessfulOutcome,
3575 /* Register protocol */
3576 proto_sbc_ap = proto_register_protocol(PNAME, PSNAME, PFNAME);
3577 /* Register fields and subtrees */
3578 proto_register_field_array(proto_sbc_ap, hf, array_length(hf));
3579 proto_register_subtree_array(ett, array_length(ett));
3581 /* Register dissector */
3582 sbc_ap_handle = register_dissector(PFNAME, dissect_sbc_ap, proto_sbc_ap);
3584 /* Register dissector tables */
3585 sbc_ap_ies_dissector_table = register_dissector_table("sbc_ap.ies", "SBC-AP-PROTOCOL-IES", proto_sbc_ap, FT_UINT32, BASE_DEC);
3586 sbc_ap_extension_dissector_table = register_dissector_table("sbc_ap.extension", "SBC-AP-PROTOCOL-EXTENSION", proto_sbc_ap, FT_UINT32, BASE_DEC);
3587 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);
3588 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);
3589 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);
3595 /*--- proto_reg_handoff_sbc_ap ---------------------------------------*/
3596 void
3597 proto_reg_handoff_sbc_ap(void)
3599 static bool inited = false;
3600 static unsigned SctpPort;
3602 if( !inited ) {
3603 dissector_add_uint("sctp.ppi", SBC_AP_PAYLOAD_PROTOCOL_ID, sbc_ap_handle);
3604 inited = true;
3605 dissector_add_uint("sbc_ap.ies", id_Cause, create_dissector_handle(dissect_Cause_PDU, proto_sbc_ap));
3606 dissector_add_uint("sbc_ap.ies", id_Criticality_Diagnostics, create_dissector_handle(dissect_Criticality_Diagnostics_PDU, proto_sbc_ap));
3607 dissector_add_uint("sbc_ap.ies", id_Data_Coding_Scheme, create_dissector_handle(dissect_Data_Coding_Scheme_PDU, proto_sbc_ap));
3608 dissector_add_uint("sbc_ap.ies", id_Message_Identifier, create_dissector_handle(dissect_Message_Identifier_PDU, proto_sbc_ap));
3609 dissector_add_uint("sbc_ap.ies", id_Number_of_Broadcasts_Requested, create_dissector_handle(dissect_Number_of_Broadcasts_Requested_PDU, proto_sbc_ap));
3610 dissector_add_uint("sbc_ap.ies", id_Repetition_Period, create_dissector_handle(dissect_Repetition_Period_PDU, proto_sbc_ap));
3611 dissector_add_uint("sbc_ap.ies", id_Serial_Number, create_dissector_handle(dissect_Serial_Number_PDU, proto_sbc_ap));
3612 dissector_add_uint("sbc_ap.ies", id_List_of_TAIs, create_dissector_handle(dissect_List_of_TAIs_PDU, proto_sbc_ap));
3613 dissector_add_uint("sbc_ap.ies", id_Warning_Area_List, create_dissector_handle(dissect_Warning_Area_List_PDU, proto_sbc_ap));
3614 dissector_add_uint("sbc_ap.ies", id_Warning_Message_Content, create_dissector_handle(dissect_Warning_Message_Content_PDU, proto_sbc_ap));
3615 dissector_add_uint("sbc_ap.ies", id_Warning_Security_Information, create_dissector_handle(dissect_Warning_Security_Information_PDU, proto_sbc_ap));
3616 dissector_add_uint("sbc_ap.ies", id_Warning_Type, create_dissector_handle(dissect_Warning_Type_PDU, proto_sbc_ap));
3617 dissector_add_uint("sbc_ap.ies", id_Omc_Id, create_dissector_handle(dissect_Omc_Id_PDU, proto_sbc_ap));
3618 dissector_add_uint("sbc_ap.ies", id_Concurrent_Warning_Message_Indicator, create_dissector_handle(dissect_Concurrent_Warning_Message_Indicator_PDU, proto_sbc_ap));
3619 dissector_add_uint("sbc_ap.ies", id_Extended_Repetition_Period, create_dissector_handle(dissect_Extended_Repetition_Period_PDU, proto_sbc_ap));
3620 dissector_add_uint("sbc_ap.ies", id_Unknown_Tracking_Area_List, create_dissector_handle(dissect_List_of_TAIs_PDU, proto_sbc_ap));
3621 dissector_add_uint("sbc_ap.ies", id_Broadcast_Scheduled_Area_List, create_dissector_handle(dissect_Broadcast_Scheduled_Area_List_PDU, proto_sbc_ap));
3622 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));
3623 dissector_add_uint("sbc_ap.ies", id_Broadcast_Cancelled_Area_List, create_dissector_handle(dissect_Broadcast_Cancelled_Area_List_PDU, proto_sbc_ap));
3624 dissector_add_uint("sbc_ap.ies", id_Send_Stop_Warning_Indication, create_dissector_handle(dissect_Send_Stop_Warning_Indication_PDU, proto_sbc_ap));
3625 dissector_add_uint("sbc_ap.ies", id_Stop_All_Indicator, create_dissector_handle(dissect_Stop_All_Indicator_PDU, proto_sbc_ap));
3626 dissector_add_uint("sbc_ap.ies", id_Global_ENB_ID, create_dissector_handle(dissect_Global_ENB_ID_PDU, proto_sbc_ap));
3627 dissector_add_uint("sbc_ap.ies", id_Broadcast_Empty_Area_List, create_dissector_handle(dissect_Broadcast_Empty_Area_List_PDU, proto_sbc_ap));
3628 dissector_add_uint("sbc_ap.ies", id_Restarted_Cell_List, create_dissector_handle(dissect_Restarted_Cell_List_PDU, proto_sbc_ap));
3629 dissector_add_uint("sbc_ap.ies", id_List_of_TAIs_Restart, create_dissector_handle(dissect_List_of_TAIs_Restart_PDU, proto_sbc_ap));
3630 dissector_add_uint("sbc_ap.ies", id_List_of_EAIs_Restart, create_dissector_handle(dissect_List_of_EAIs_Restart_PDU, proto_sbc_ap));
3631 dissector_add_uint("sbc_ap.ies", id_Failed_Cell_List, create_dissector_handle(dissect_Failed_Cell_List_PDU, proto_sbc_ap));
3632 dissector_add_uint("sbc_ap.extension", id_List_of_5GS_TAIs, create_dissector_handle(dissect_List_of_5GS_TAIs_PDU, proto_sbc_ap));
3633 dissector_add_uint("sbc_ap.extension", id_Warning_Area_List_5GS, create_dissector_handle(dissect_Warning_Area_List_5GS_PDU, proto_sbc_ap));
3634 dissector_add_uint("sbc_ap.extension", id_Global_RAN_Node_ID, create_dissector_handle(dissect_Global_RAN_Node_ID_PDU, proto_sbc_ap));
3635 dissector_add_uint("sbc_ap.extension", id_Global_GNB_ID, create_dissector_handle(dissect_Global_GNB_ID_PDU, proto_sbc_ap));
3636 dissector_add_uint("sbc_ap.extension", id_RAT_Selector_5GS, create_dissector_handle(dissect_RAT_Selector_5GS_PDU, proto_sbc_ap));
3637 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));
3638 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));
3639 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));
3640 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));
3641 dissector_add_uint("sbc_ap.extension", id_Restarted_Cell_List_NR, create_dissector_handle(dissect_Restarted_Cell_List_NR_PDU, proto_sbc_ap));
3642 dissector_add_uint("sbc_ap.extension", id_Failed_Cell_List_NR, create_dissector_handle(dissect_Failed_Cell_List_NR_PDU, proto_sbc_ap));
3643 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));
3644 dissector_add_uint("sbc_ap.ies", id_Warning_Area_Coordinates, create_dissector_handle(dissect_Warning_Area_Coordinates_PDU, proto_sbc_ap));
3645 dissector_add_uint("sbc_ap.proc.imsg", id_Write_Replace_Warning, create_dissector_handle(dissect_Write_Replace_Warning_Request_PDU, proto_sbc_ap));
3646 dissector_add_uint("sbc_ap.proc.sout", id_Write_Replace_Warning, create_dissector_handle(dissect_Write_Replace_Warning_Response_PDU, proto_sbc_ap));
3647 dissector_add_uint("sbc_ap.proc.imsg", id_Stop_Warning, create_dissector_handle(dissect_Stop_Warning_Request_PDU, proto_sbc_ap));
3648 dissector_add_uint("sbc_ap.proc.sout", id_Stop_Warning, create_dissector_handle(dissect_Stop_Warning_Response_PDU, proto_sbc_ap));
3649 dissector_add_uint("sbc_ap.proc.imsg", id_Error_Indication, create_dissector_handle(dissect_Error_Indication_PDU, proto_sbc_ap));
3650 dissector_add_uint("sbc_ap.proc.imsg", id_Write_Replace_Warning_Indication, create_dissector_handle(dissect_Write_Replace_Warning_Indication_PDU, proto_sbc_ap));
3651 dissector_add_uint("sbc_ap.proc.imsg", id_Stop_Warning_Indication, create_dissector_handle(dissect_Stop_Warning_Indication_PDU, proto_sbc_ap));
3652 dissector_add_uint("sbc_ap.proc.imsg", id_PWS_Restart_Indication, create_dissector_handle(dissect_PWS_Restart_Indication_PDU, proto_sbc_ap));
3653 dissector_add_uint("sbc_ap.proc.imsg", id_PWS_Failure_Indication, create_dissector_handle(dissect_PWS_Failure_Indication_PDU, proto_sbc_ap));
3655 } else {
3656 if (SctpPort != 0) {
3657 dissector_delete_uint("sctp.port", SctpPort, sbc_ap_handle);
3661 SctpPort = global_sbc_ap_port;
3662 if (SctpPort != 0) {
3663 dissector_add_uint("sctp.port", SctpPort, sbc_ap_handle);
3670 * Editor modelines
3672 * Local Variables:
3673 * c-basic-offset: 2
3674 * tab-width: 8
3675 * indent-tabs-mode: nil
3676 * End:
3678 * ex: set shiftwidth=2 tabstop=8 expandtab:
3679 * :indentSize=2:tabSize=8:noTabs=true: