1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -p sabp -c sabp.cnf -s packet-sabp-template SABP-CommonDataTypes.asn SABP-Constants.asn SABP-Containers.asn SABP-IEs.asn SABP-PDU-Contents.asn SABP-PDU-Descriptions.asn */
6 /* Input file: packet-sabp-template.c */
8 #line 1 "packet-sabp-template.c"
10 * Routines for UTRAN Iu-BC Interface: Service Area Broadcast Protocol (SBAP) packet dissection
11 * Copyright 2007, Tomas Kukosa <tomas.kukosa@siemens.com>
15 * Wireshark - Network traffic analyzer
16 * By Gerald Combs <gerald@wireshark.org>
17 * Copyright 1998 Gerald Combs
19 * This program is free software; you can redistribute it and/or
20 * modify it under the terms of the GNU General Public License
21 * as published by the Free Software Foundation; either version 2
22 * of the License, or (at your option) any later version.
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27 * GNU General Public License for more details.
29 * You should have received a copy of the GNU General Public License
30 * along with this program; if not, write to the Free Software
31 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
33 * Ref: 3GPP TS 25.419 version 7.7.0 (2006-03)
41 #include <epan/packet.h>
42 #include <epan/conversation.h>
47 #include <epan/asn1.h>
48 #include <epan/emem.h>
50 #include "packet-tcp.h"
51 #include "packet-per.h"
52 #include "packet-e212.h"
53 #include "packet-gsm_map.h"
54 #include "packet-gsm_sms.h"
57 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
58 #pragma warning(disable:4146)
61 #define PNAME "UTRAN IuBC interface SABP signaling"
66 /*--- Included file: packet-sabp-val.h ---*/
67 #line 1 "packet-sabp-val.h"
68 #define maxNrOfErrors 256
69 #define maxnoofSAI 65535
70 #define maxProtocolExtensions 65535
71 #define maxProtocolIEs 65535
72 #define maxNrOfLevels 256
74 typedef enum _ProcedureCode_enum {
77 id_Load_Status_Enquiry = 2,
78 id_Message_Status_Query = 3,
79 id_Restart_Indication = 4,
81 id_Failure_Indication = 6,
82 id_Error_Indication = 7
85 typedef enum _ProtocolIE_ID_enum {
86 id_Broadcast_Message_Content = 0,
89 id_Criticality_Diagnostics = 3,
90 id_Data_Coding_Scheme = 4,
92 id_Message_Identifier = 6,
93 id_New_Serial_Number = 7,
94 id_Number_of_Broadcasts_Completed_List = 8,
95 id_Number_of_Broadcasts_Requested = 9,
96 id_Old_Serial_Number = 10,
97 id_Radio_Resource_Loading_List = 11,
98 id_Recovery_Indication = 12,
99 id_Repetition_Period = 13,
100 id_Serial_Number = 14,
101 id_Service_Areas_List = 15,
102 id_MessageStructure = 16,
104 } ProtocolIE_ID_enum;
106 /*--- End of included file: packet-sabp-val.h ---*/
107 #line 58 "packet-sabp-template.c"
109 /* Initialize the protocol and registered fields */
110 static int proto_sabp = -1;
112 static int hf_sabp_no_of_pages = -1;
114 /*--- Included file: packet-sabp-hf.c ---*/
115 #line 1 "packet-sabp-hf.c"
116 static int hf_sabp_Broadcast_Message_Content_PDU = -1; /* Broadcast_Message_Content */
117 static int hf_sabp_Category_PDU = -1; /* Category */
118 static int hf_sabp_Cause_PDU = -1; /* Cause */
119 static int hf_sabp_Criticality_Diagnostics_PDU = -1; /* Criticality_Diagnostics */
120 static int hf_sabp_MessageStructure_PDU = -1; /* MessageStructure */
121 static int hf_sabp_Data_Coding_Scheme_PDU = -1; /* Data_Coding_Scheme */
122 static int hf_sabp_Failure_List_PDU = -1; /* Failure_List */
123 static int hf_sabp_Message_Identifier_PDU = -1; /* Message_Identifier */
124 static int hf_sabp_New_Serial_Number_PDU = -1; /* New_Serial_Number */
125 static int hf_sabp_Number_of_Broadcasts_Completed_List_PDU = -1; /* Number_of_Broadcasts_Completed_List */
126 static int hf_sabp_Number_of_Broadcasts_Requested_PDU = -1; /* Number_of_Broadcasts_Requested */
127 static int hf_sabp_Old_Serial_Number_PDU = -1; /* Old_Serial_Number */
128 static int hf_sabp_Radio_Resource_Loading_List_PDU = -1; /* Radio_Resource_Loading_List */
129 static int hf_sabp_Recovery_Indication_PDU = -1; /* Recovery_Indication */
130 static int hf_sabp_Repetition_Period_PDU = -1; /* Repetition_Period */
131 static int hf_sabp_Serial_Number_PDU = -1; /* Serial_Number */
132 static int hf_sabp_Service_Areas_List_PDU = -1; /* Service_Areas_List */
133 static int hf_sabp_TypeOfError_PDU = -1; /* TypeOfError */
134 static int hf_sabp_Write_Replace_PDU = -1; /* Write_Replace */
135 static int hf_sabp_Write_Replace_Complete_PDU = -1; /* Write_Replace_Complete */
136 static int hf_sabp_Write_Replace_Failure_PDU = -1; /* Write_Replace_Failure */
137 static int hf_sabp_Kill_PDU = -1; /* Kill */
138 static int hf_sabp_Kill_Complete_PDU = -1; /* Kill_Complete */
139 static int hf_sabp_Kill_Failure_PDU = -1; /* Kill_Failure */
140 static int hf_sabp_Load_Query_PDU = -1; /* Load_Query */
141 static int hf_sabp_Load_Query_Complete_PDU = -1; /* Load_Query_Complete */
142 static int hf_sabp_Load_Query_Failure_PDU = -1; /* Load_Query_Failure */
143 static int hf_sabp_Message_Status_Query_PDU = -1; /* Message_Status_Query */
144 static int hf_sabp_Message_Status_Query_Complete_PDU = -1; /* Message_Status_Query_Complete */
145 static int hf_sabp_Message_Status_Query_Failure_PDU = -1; /* Message_Status_Query_Failure */
146 static int hf_sabp_Reset_PDU = -1; /* Reset */
147 static int hf_sabp_Reset_Complete_PDU = -1; /* Reset_Complete */
148 static int hf_sabp_Reset_Failure_PDU = -1; /* Reset_Failure */
149 static int hf_sabp_Restart_PDU = -1; /* Restart */
150 static int hf_sabp_Failure_PDU = -1; /* Failure */
151 static int hf_sabp_Error_Indication_PDU = -1; /* Error_Indication */
152 static int hf_sabp_SABP_PDU_PDU = -1; /* SABP_PDU */
153 static int hf_sabp_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */
154 static int hf_sabp_id = -1; /* ProtocolIE_ID */
155 static int hf_sabp_criticality = -1; /* Criticality */
156 static int hf_sabp_protocolIE_Field_value = -1; /* ProtocolIE_Field_value */
157 static int hf_sabp_ProtocolExtensionContainer_item = -1; /* ProtocolExtensionField */
158 static int hf_sabp_ext_id = -1; /* ProtocolExtensionID */
159 static int hf_sabp_extensionValue = -1; /* T_extensionValue */
160 static int hf_sabp_procedureCode = -1; /* ProcedureCode */
161 static int hf_sabp_triggeringMessage = -1; /* TriggeringMessage */
162 static int hf_sabp_procedureCriticality = -1; /* Criticality */
163 static int hf_sabp_iEsCriticalityDiagnostics = -1; /* CriticalityDiagnostics_IE_List */
164 static int hf_sabp_iE_Extensions = -1; /* ProtocolExtensionContainer */
165 static int hf_sabp_CriticalityDiagnostics_IE_List_item = -1; /* CriticalityDiagnostics_IE_List_item */
166 static int hf_sabp_iECriticality = -1; /* Criticality */
167 static int hf_sabp_iE_ID = -1; /* ProtocolIE_ID */
168 static int hf_sabp_repetitionNumber = -1; /* RepetitionNumber0 */
169 static int hf_sabp_MessageStructure_item = -1; /* MessageStructure_item */
170 static int hf_sabp_repetitionNumber1 = -1; /* RepetitionNumber1 */
171 static int hf_sabp_Failure_List_item = -1; /* Failure_List_Item */
172 static int hf_sabp_service_area_identifier = -1; /* Service_Area_Identifier */
173 static int hf_sabp_cause = -1; /* Cause */
174 static int hf_sabp_Number_of_Broadcasts_Completed_List_item = -1; /* Number_of_Broadcasts_Completed_List_Item */
175 static int hf_sabp_number_of_broadcasts_completed = -1; /* INTEGER_0_65535 */
176 static int hf_sabp_number_of_broadcasts_completed_info = -1; /* Number_Of_Broadcasts_Completed_Info */
177 static int hf_sabp_Radio_Resource_Loading_List_item = -1; /* Radio_Resource_Loading_List_Item */
178 static int hf_sabp_available_bandwidth = -1; /* Available_Bandwidth */
179 static int hf_sabp_pLMNidentity = -1; /* PLMNidentity */
180 static int hf_sabp_lac = -1; /* OCTET_STRING_SIZE_2 */
181 static int hf_sabp_sac = -1; /* OCTET_STRING_SIZE_2 */
182 static int hf_sabp_Service_Areas_List_item = -1; /* Service_Area_Identifier */
183 static int hf_sabp_protocolIEs = -1; /* ProtocolIE_Container */
184 static int hf_sabp_protocolExtensions = -1; /* ProtocolExtensionContainer */
185 static int hf_sabp_initiatingMessage = -1; /* InitiatingMessage */
186 static int hf_sabp_successfulOutcome = -1; /* SuccessfulOutcome */
187 static int hf_sabp_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */
188 static int hf_sabp_initiatingMessage_value = -1; /* InitiatingMessage_value */
189 static int hf_sabp_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
190 static int hf_sabp_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */
192 /*--- End of included file: packet-sabp-hf.c ---*/
193 #line 64 "packet-sabp-template.c"
195 /* Initialize the subtree pointers */
196 static int ett_sabp = -1;
197 static int ett_sabp_e212 = -1;
198 static int ett_sabp_cbs_data_coding = -1;
199 static int ett_sabp_bcast_msg = -1;
202 /*--- Included file: packet-sabp-ett.c ---*/
203 #line 1 "packet-sabp-ett.c"
204 static gint ett_sabp_ProtocolIE_Container = -1;
205 static gint ett_sabp_ProtocolIE_Field = -1;
206 static gint ett_sabp_ProtocolExtensionContainer = -1;
207 static gint ett_sabp_ProtocolExtensionField = -1;
208 static gint ett_sabp_Criticality_Diagnostics = -1;
209 static gint ett_sabp_CriticalityDiagnostics_IE_List = -1;
210 static gint ett_sabp_CriticalityDiagnostics_IE_List_item = -1;
211 static gint ett_sabp_MessageStructure = -1;
212 static gint ett_sabp_MessageStructure_item = -1;
213 static gint ett_sabp_Failure_List = -1;
214 static gint ett_sabp_Failure_List_Item = -1;
215 static gint ett_sabp_Number_of_Broadcasts_Completed_List = -1;
216 static gint ett_sabp_Number_of_Broadcasts_Completed_List_Item = -1;
217 static gint ett_sabp_Radio_Resource_Loading_List = -1;
218 static gint ett_sabp_Radio_Resource_Loading_List_Item = -1;
219 static gint ett_sabp_Service_Area_Identifier = -1;
220 static gint ett_sabp_Service_Areas_List = -1;
221 static gint ett_sabp_Write_Replace = -1;
222 static gint ett_sabp_Write_Replace_Complete = -1;
223 static gint ett_sabp_Write_Replace_Failure = -1;
224 static gint ett_sabp_Kill = -1;
225 static gint ett_sabp_Kill_Complete = -1;
226 static gint ett_sabp_Kill_Failure = -1;
227 static gint ett_sabp_Load_Query = -1;
228 static gint ett_sabp_Load_Query_Complete = -1;
229 static gint ett_sabp_Load_Query_Failure = -1;
230 static gint ett_sabp_Message_Status_Query = -1;
231 static gint ett_sabp_Message_Status_Query_Complete = -1;
232 static gint ett_sabp_Message_Status_Query_Failure = -1;
233 static gint ett_sabp_Reset = -1;
234 static gint ett_sabp_Reset_Complete = -1;
235 static gint ett_sabp_Reset_Failure = -1;
236 static gint ett_sabp_Restart = -1;
237 static gint ett_sabp_Failure = -1;
238 static gint ett_sabp_Error_Indication = -1;
239 static gint ett_sabp_SABP_PDU = -1;
240 static gint ett_sabp_InitiatingMessage = -1;
241 static gint ett_sabp_SuccessfulOutcome = -1;
242 static gint ett_sabp_UnsuccessfulOutcome = -1;
244 /*--- End of included file: packet-sabp-ett.c ---*/
245 #line 72 "packet-sabp-template.c"
247 /* Global variables */
248 static guint32 ProcedureCode;
249 static guint32 ProtocolIE_ID;
250 static guint32 ProtocolExtensionID;
251 static guint8 sms_encoding;
253 /* desegmentation of sabp over TCP */
254 static gboolean gbl_sabp_desegment = TRUE;
256 /* Dissector tables */
257 static dissector_table_t sabp_ies_dissector_table;
258 static dissector_table_t sabp_extension_dissector_table;
259 static dissector_table_t sabp_proc_imsg_dissector_table;
260 static dissector_table_t sabp_proc_sout_dissector_table;
261 static dissector_table_t sabp_proc_uout_dissector_table;
263 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
264 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
265 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
266 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
267 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree);
270 /*--- Included file: packet-sabp-fn.c ---*/
271 #line 1 "packet-sabp-fn.c"
273 static const value_string sabp_Criticality_vals[] = {
282 dissect_sabp_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
283 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
284 3, NULL, FALSE, 0, NULL);
290 static const value_string sabp_ProcedureCode_vals[] = {
291 { id_Write_Replace, "id-Write-Replace" },
292 { id_Kill, "id-Kill" },
293 { id_Load_Status_Enquiry, "id-Load-Status-Enquiry" },
294 { id_Message_Status_Query, "id-Message-Status-Query" },
295 { id_Restart_Indication, "id-Restart-Indication" },
296 { id_Reset, "id-Reset" },
297 { id_Failure_Indication, "id-Failure-Indication" },
298 { id_Error_Indication, "id-Error-Indication" },
304 dissect_sabp_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
305 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
306 0U, 255U, &ProcedureCode, FALSE);
309 if (check_col(actx->pinfo->cinfo, COL_INFO))
310 col_add_fstr(actx->pinfo->cinfo, COL_INFO, "%s ",
311 val_to_str(ProcedureCode, sabp_ProcedureCode_vals,
320 dissect_sabp_ProtocolExtensionID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
321 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
322 0U, 65535U, &ProtocolExtensionID, FALSE);
328 static const value_string sabp_ProtocolIE_ID_vals[] = {
329 { id_Broadcast_Message_Content, "id-Broadcast-Message-Content" },
330 { id_Category, "id-Category" },
331 { id_Cause, "id-Cause" },
332 { id_Criticality_Diagnostics, "id-Criticality-Diagnostics" },
333 { id_Data_Coding_Scheme, "id-Data-Coding-Scheme" },
334 { id_Failure_List, "id-Failure-List" },
335 { id_Message_Identifier, "id-Message-Identifier" },
336 { id_New_Serial_Number, "id-New-Serial-Number" },
337 { id_Number_of_Broadcasts_Completed_List, "id-Number-of-Broadcasts-Completed-List" },
338 { id_Number_of_Broadcasts_Requested, "id-Number-of-Broadcasts-Requested" },
339 { id_Old_Serial_Number, "id-Old-Serial-Number" },
340 { id_Radio_Resource_Loading_List, "id-Radio-Resource-Loading-List" },
341 { id_Recovery_Indication, "id-Recovery-Indication" },
342 { id_Repetition_Period, "id-Repetition-Period" },
343 { id_Serial_Number, "id-Serial-Number" },
344 { id_Service_Areas_List, "id-Service-Areas-List" },
345 { id_MessageStructure, "id-MessageStructure" },
346 { id_TypeOfError, "id-TypeOfError" },
352 dissect_sabp_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
353 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
354 0U, 65535U, &ProtocolIE_ID, FALSE);
358 proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(sabp_ProtocolIE_ID_vals), "unknown (%d)"));
365 static const value_string sabp_TriggeringMessage_vals[] = {
366 { 0, "initiating-message" },
367 { 1, "successful-outcome" },
368 { 2, "unsuccessful-outcome" },
375 dissect_sabp_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
376 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
377 4, NULL, FALSE, 0, NULL);
385 dissect_sabp_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
386 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
392 static const per_sequence_t ProtocolIE_Field_sequence[] = {
393 { &hf_sabp_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_ID },
394 { &hf_sabp_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Criticality },
395 { &hf_sabp_protocolIE_Field_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Field_value },
400 dissect_sabp_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
401 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
402 ett_sabp_ProtocolIE_Field, ProtocolIE_Field_sequence);
408 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
409 { &hf_sabp_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Field },
413 dissect_sabp_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
414 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
415 ett_sabp_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
424 dissect_sabp_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
425 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
431 static const per_sequence_t ProtocolExtensionField_sequence[] = {
432 { &hf_sabp_ext_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolExtensionID },
433 { &hf_sabp_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Criticality },
434 { &hf_sabp_extensionValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_T_extensionValue },
439 dissect_sabp_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
440 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
441 ett_sabp_ProtocolExtensionField, ProtocolExtensionField_sequence);
447 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
448 { &hf_sabp_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolExtensionField },
452 dissect_sabp_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
453 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
454 ett_sabp_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
455 1, maxProtocolExtensions);
463 dissect_sabp_Available_Bandwidth(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
464 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
465 0U, 20480U, NULL, FALSE);
473 dissect_sabp_Broadcast_Message_Content(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
474 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
475 1, 9968, FALSE, NULL);
481 static const value_string sabp_Category_vals[] = {
482 { 0, "high-priority" },
483 { 1, "background-priority" },
484 { 2, "normal-priority" },
485 { 3, "default-priority" },
491 dissect_sabp_Category(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
492 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
493 4, NULL, TRUE, 0, NULL);
499 static const value_string sabp_Cause_vals[] = {
500 { 0, "parameter-not-recognised" },
501 { 1, "parameter-value-invalid" },
502 { 2, "valid-CN-message-not-identified" },
503 { 3, "service-area-identity-not-valid" },
504 { 4, "unrecognised-message" },
505 { 5, "missing-mandatory-element" },
506 { 6, "rNC-capacity-exceeded" },
507 { 7, "rNC-memory-exceeded" },
508 { 8, "service-area-broadcast-not-supported" },
509 { 9, "service-area-broadcast-not-operational" },
510 { 10, "message-reference-already-used" },
511 { 11, "unspecifed-error" },
512 { 12, "transfer-syntax-error" },
513 { 13, "semantic-error" },
514 { 14, "message-not-compatible-with-receiver-state" },
515 { 15, "abstract-syntax-error-reject" },
516 { 16, "abstract-syntax-error-ignore-and-notify" },
517 { 17, "abstract-syntax-error-falsely-constructed-message" },
523 dissect_sabp_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
524 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
525 0U, 255U, NULL, FALSE);
533 dissect_sabp_RepetitionNumber0(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
534 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
535 0U, 255U, NULL, FALSE);
541 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
542 { &hf_sabp_iECriticality , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_Criticality },
543 { &hf_sabp_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_ID },
544 { &hf_sabp_repetitionNumber, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_RepetitionNumber0 },
545 { &hf_sabp_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
550 dissect_sabp_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
551 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
552 ett_sabp_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
558 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
559 { &hf_sabp_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_CriticalityDiagnostics_IE_List_item },
563 dissect_sabp_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
564 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
565 ett_sabp_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
572 static const per_sequence_t Criticality_Diagnostics_sequence[] = {
573 { &hf_sabp_procedureCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProcedureCode },
574 { &hf_sabp_triggeringMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_TriggeringMessage },
575 { &hf_sabp_procedureCriticality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_Criticality },
576 { &hf_sabp_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_CriticalityDiagnostics_IE_List },
577 { &hf_sabp_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
582 dissect_sabp_Criticality_Diagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
583 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
584 ett_sabp_Criticality_Diagnostics, Criticality_Diagnostics_sequence);
592 dissect_sabp_RepetitionNumber1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
593 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
594 1U, 256U, NULL, FALSE);
600 static const per_sequence_t MessageStructure_item_sequence[] = {
601 { &hf_sabp_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_ID },
602 { &hf_sabp_repetitionNumber1, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_RepetitionNumber1 },
603 { &hf_sabp_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
608 dissect_sabp_MessageStructure_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
609 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
610 ett_sabp_MessageStructure_item, MessageStructure_item_sequence);
616 static const per_sequence_t MessageStructure_sequence_of[1] = {
617 { &hf_sabp_MessageStructure_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_MessageStructure_item },
621 dissect_sabp_MessageStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
622 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
623 ett_sabp_MessageStructure, MessageStructure_sequence_of,
632 dissect_sabp_Data_Coding_Scheme(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
634 tvbuff_t *parameter_tvb=NULL;
637 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
638 8, 8, FALSE, ¶meter_tvb);
643 subtree = proto_item_add_subtree(actx->created_item, ett_sabp_cbs_data_coding);
644 sms_encoding = dissect_cbs_data_coding_scheme(parameter_tvb, actx->pinfo, subtree);
656 dissect_sabp_PLMNidentity(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
658 tvbuff_t *parameter_tvb=NULL;
661 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
662 3, 3, FALSE, ¶meter_tvb);
666 subtree = proto_item_add_subtree(actx->created_item, ett_sabp_e212);
667 dissect_e212_mcc_mnc(parameter_tvb, subtree, 0);
677 dissect_sabp_OCTET_STRING_SIZE_2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
678 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
685 static const per_sequence_t Service_Area_Identifier_sequence[] = {
686 { &hf_sabp_pLMNidentity , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_PLMNidentity },
687 { &hf_sabp_lac , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_OCTET_STRING_SIZE_2 },
688 { &hf_sabp_sac , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_OCTET_STRING_SIZE_2 },
693 dissect_sabp_Service_Area_Identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
694 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
695 ett_sabp_Service_Area_Identifier, Service_Area_Identifier_sequence);
701 static const per_sequence_t Failure_List_Item_sequence[] = {
702 { &hf_sabp_service_area_identifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_Service_Area_Identifier },
703 { &hf_sabp_cause , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_Cause },
704 { &hf_sabp_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
709 dissect_sabp_Failure_List_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
710 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
711 ett_sabp_Failure_List_Item, Failure_List_Item_sequence);
717 static const per_sequence_t Failure_List_sequence_of[1] = {
718 { &hf_sabp_Failure_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Failure_List_Item },
722 dissect_sabp_Failure_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
723 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
724 ett_sabp_Failure_List, Failure_List_sequence_of,
733 dissect_sabp_Message_Identifier(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
734 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
735 16, 16, FALSE, NULL);
743 dissect_sabp_Serial_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
744 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
745 16, 16, FALSE, NULL);
753 dissect_sabp_New_Serial_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
754 offset = dissect_sabp_Serial_Number(tvb, offset, actx, tree, hf_index);
762 dissect_sabp_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
763 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
764 0U, 65535U, NULL, FALSE);
770 static const value_string sabp_Number_Of_Broadcasts_Completed_Info_vals[] = {
778 dissect_sabp_Number_Of_Broadcasts_Completed_Info(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
779 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
780 2, NULL, TRUE, 0, NULL);
786 static const per_sequence_t Number_of_Broadcasts_Completed_List_Item_sequence[] = {
787 { &hf_sabp_service_area_identifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_Service_Area_Identifier },
788 { &hf_sabp_number_of_broadcasts_completed, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_INTEGER_0_65535 },
789 { &hf_sabp_number_of_broadcasts_completed_info, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_Number_Of_Broadcasts_Completed_Info },
790 { &hf_sabp_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
795 dissect_sabp_Number_of_Broadcasts_Completed_List_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
796 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
797 ett_sabp_Number_of_Broadcasts_Completed_List_Item, Number_of_Broadcasts_Completed_List_Item_sequence);
803 static const per_sequence_t Number_of_Broadcasts_Completed_List_sequence_of[1] = {
804 { &hf_sabp_Number_of_Broadcasts_Completed_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Number_of_Broadcasts_Completed_List_Item },
808 dissect_sabp_Number_of_Broadcasts_Completed_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
809 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
810 ett_sabp_Number_of_Broadcasts_Completed_List, Number_of_Broadcasts_Completed_List_sequence_of,
817 static const value_string sabp_Number_of_Broadcasts_Requested_vals[] = {
818 { 0, "broadcast-indefinitely" },
824 dissect_sabp_Number_of_Broadcasts_Requested(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
825 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
826 0U, 65535U, NULL, FALSE);
834 dissect_sabp_Old_Serial_Number(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
835 offset = dissect_sabp_Serial_Number(tvb, offset, actx, tree, hf_index);
841 static const per_sequence_t Radio_Resource_Loading_List_Item_sequence[] = {
842 { &hf_sabp_service_area_identifier, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_Service_Area_Identifier },
843 { &hf_sabp_available_bandwidth, ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_Available_Bandwidth },
844 { &hf_sabp_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
849 dissect_sabp_Radio_Resource_Loading_List_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
850 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
851 ett_sabp_Radio_Resource_Loading_List_Item, Radio_Resource_Loading_List_Item_sequence);
857 static const per_sequence_t Radio_Resource_Loading_List_sequence_of[1] = {
858 { &hf_sabp_Radio_Resource_Loading_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Radio_Resource_Loading_List_Item },
862 dissect_sabp_Radio_Resource_Loading_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
863 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
864 ett_sabp_Radio_Resource_Loading_List, Radio_Resource_Loading_List_sequence_of,
871 static const value_string sabp_Recovery_Indication_vals[] = {
873 { 1, "data-available" },
879 dissect_sabp_Recovery_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
880 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
881 2, NULL, FALSE, 0, NULL);
889 dissect_sabp_Repetition_Period(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
890 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
891 1U, 4096U, NULL, FALSE);
897 static const per_sequence_t Service_Areas_List_sequence_of[1] = {
898 { &hf_sabp_Service_Areas_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Service_Area_Identifier },
902 dissect_sabp_Service_Areas_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
903 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
904 ett_sabp_Service_Areas_List, Service_Areas_List_sequence_of,
911 static const value_string sabp_TypeOfError_vals[] = {
912 { 0, "not-understood" },
919 dissect_sabp_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
920 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
921 2, NULL, TRUE, 0, NULL);
927 static const per_sequence_t Write_Replace_sequence[] = {
928 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
929 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
934 dissect_sabp_Write_Replace(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
935 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
936 ett_sabp_Write_Replace, Write_Replace_sequence);
942 static const per_sequence_t Write_Replace_Complete_sequence[] = {
943 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
944 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
949 dissect_sabp_Write_Replace_Complete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
950 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
951 ett_sabp_Write_Replace_Complete, Write_Replace_Complete_sequence);
957 static const per_sequence_t Write_Replace_Failure_sequence[] = {
958 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
959 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
964 dissect_sabp_Write_Replace_Failure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
965 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
966 ett_sabp_Write_Replace_Failure, Write_Replace_Failure_sequence);
972 static const per_sequence_t Kill_sequence[] = {
973 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
974 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
979 dissect_sabp_Kill(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
980 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
981 ett_sabp_Kill, Kill_sequence);
987 static const per_sequence_t Kill_Complete_sequence[] = {
988 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
989 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
994 dissect_sabp_Kill_Complete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
995 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
996 ett_sabp_Kill_Complete, Kill_Complete_sequence);
1002 static const per_sequence_t Kill_Failure_sequence[] = {
1003 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1004 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1005 { NULL, 0, 0, NULL }
1009 dissect_sabp_Kill_Failure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1010 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1011 ett_sabp_Kill_Failure, Kill_Failure_sequence);
1017 static const per_sequence_t Load_Query_sequence[] = {
1018 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1019 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1020 { NULL, 0, 0, NULL }
1024 dissect_sabp_Load_Query(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1025 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1026 ett_sabp_Load_Query, Load_Query_sequence);
1032 static const per_sequence_t Load_Query_Complete_sequence[] = {
1033 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1034 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1035 { NULL, 0, 0, NULL }
1039 dissect_sabp_Load_Query_Complete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1040 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1041 ett_sabp_Load_Query_Complete, Load_Query_Complete_sequence);
1047 static const per_sequence_t Load_Query_Failure_sequence[] = {
1048 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1049 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1050 { NULL, 0, 0, NULL }
1054 dissect_sabp_Load_Query_Failure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1055 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1056 ett_sabp_Load_Query_Failure, Load_Query_Failure_sequence);
1062 static const per_sequence_t Message_Status_Query_sequence[] = {
1063 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1064 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1065 { NULL, 0, 0, NULL }
1069 dissect_sabp_Message_Status_Query(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1070 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1071 ett_sabp_Message_Status_Query, Message_Status_Query_sequence);
1077 static const per_sequence_t Message_Status_Query_Complete_sequence[] = {
1078 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1079 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1080 { NULL, 0, 0, NULL }
1084 dissect_sabp_Message_Status_Query_Complete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1085 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1086 ett_sabp_Message_Status_Query_Complete, Message_Status_Query_Complete_sequence);
1092 static const per_sequence_t Message_Status_Query_Failure_sequence[] = {
1093 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1094 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1095 { NULL, 0, 0, NULL }
1099 dissect_sabp_Message_Status_Query_Failure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1100 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1101 ett_sabp_Message_Status_Query_Failure, Message_Status_Query_Failure_sequence);
1107 static const per_sequence_t Reset_sequence[] = {
1108 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1109 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1110 { NULL, 0, 0, NULL }
1114 dissect_sabp_Reset(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1115 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1116 ett_sabp_Reset, Reset_sequence);
1122 static const per_sequence_t Reset_Complete_sequence[] = {
1123 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1124 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1125 { NULL, 0, 0, NULL }
1129 dissect_sabp_Reset_Complete(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1130 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1131 ett_sabp_Reset_Complete, Reset_Complete_sequence);
1137 static const per_sequence_t Reset_Failure_sequence[] = {
1138 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1139 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1140 { NULL, 0, 0, NULL }
1144 dissect_sabp_Reset_Failure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1145 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1146 ett_sabp_Reset_Failure, Reset_Failure_sequence);
1152 static const per_sequence_t Restart_sequence[] = {
1153 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1154 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1155 { NULL, 0, 0, NULL }
1159 dissect_sabp_Restart(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1160 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1161 ett_sabp_Restart, Restart_sequence);
1167 static const per_sequence_t Failure_sequence[] = {
1168 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1169 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1170 { NULL, 0, 0, NULL }
1174 dissect_sabp_Failure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1175 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1176 ett_sabp_Failure, Failure_sequence);
1182 static const per_sequence_t Error_Indication_sequence[] = {
1183 { &hf_sabp_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_sabp_ProtocolIE_Container },
1184 { &hf_sabp_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sabp_ProtocolExtensionContainer },
1185 { NULL, 0, 0, NULL }
1189 dissect_sabp_Error_Indication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1190 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1191 ett_sabp_Error_Indication, Error_Indication_sequence);
1199 dissect_sabp_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1200 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
1206 static const per_sequence_t InitiatingMessage_sequence[] = {
1207 { &hf_sabp_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProcedureCode },
1208 { &hf_sabp_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Criticality },
1209 { &hf_sabp_initiatingMessage_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_InitiatingMessage_value },
1210 { NULL, 0, 0, NULL }
1214 dissect_sabp_InitiatingMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1215 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1216 ett_sabp_InitiatingMessage, InitiatingMessage_sequence);
1224 dissect_sabp_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1225 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
1231 static const per_sequence_t SuccessfulOutcome_sequence[] = {
1232 { &hf_sabp_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProcedureCode },
1233 { &hf_sabp_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Criticality },
1234 { &hf_sabp_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_SuccessfulOutcome_value },
1235 { NULL, 0, 0, NULL }
1239 dissect_sabp_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1240 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1241 ett_sabp_SuccessfulOutcome, SuccessfulOutcome_sequence);
1249 dissect_sabp_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1250 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
1256 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
1257 { &hf_sabp_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_ProcedureCode },
1258 { &hf_sabp_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_Criticality },
1259 { &hf_sabp_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_sabp_UnsuccessfulOutcome_value },
1260 { NULL, 0, 0, NULL }
1264 dissect_sabp_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1265 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1266 ett_sabp_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
1272 static const value_string sabp_SABP_PDU_vals[] = {
1273 { 0, "initiatingMessage" },
1274 { 1, "successfulOutcome" },
1275 { 2, "unsuccessfulOutcome" },
1279 static const per_choice_t SABP_PDU_choice[] = {
1280 { 0, &hf_sabp_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_sabp_InitiatingMessage },
1281 { 1, &hf_sabp_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_sabp_SuccessfulOutcome },
1282 { 2, &hf_sabp_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_sabp_UnsuccessfulOutcome },
1283 { 0, NULL, 0, NULL }
1287 dissect_sabp_SABP_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1288 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1289 ett_sabp_SABP_PDU, SABP_PDU_choice,
1297 static int dissect_Broadcast_Message_Content_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1299 asn1_ctx_t asn1_ctx;
1300 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1301 offset = dissect_sabp_Broadcast_Message_Content(tvb, offset, &asn1_ctx, tree, hf_sabp_Broadcast_Message_Content_PDU);
1302 offset += 7; offset >>= 3;
1305 static int dissect_Category_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1307 asn1_ctx_t asn1_ctx;
1308 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1309 offset = dissect_sabp_Category(tvb, offset, &asn1_ctx, tree, hf_sabp_Category_PDU);
1310 offset += 7; offset >>= 3;
1313 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1315 asn1_ctx_t asn1_ctx;
1316 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1317 offset = dissect_sabp_Cause(tvb, offset, &asn1_ctx, tree, hf_sabp_Cause_PDU);
1318 offset += 7; offset >>= 3;
1321 static int dissect_Criticality_Diagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1323 asn1_ctx_t asn1_ctx;
1324 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1325 offset = dissect_sabp_Criticality_Diagnostics(tvb, offset, &asn1_ctx, tree, hf_sabp_Criticality_Diagnostics_PDU);
1326 offset += 7; offset >>= 3;
1329 static int dissect_MessageStructure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1331 asn1_ctx_t asn1_ctx;
1332 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1333 offset = dissect_sabp_MessageStructure(tvb, offset, &asn1_ctx, tree, hf_sabp_MessageStructure_PDU);
1334 offset += 7; offset >>= 3;
1337 static int dissect_Data_Coding_Scheme_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1339 asn1_ctx_t asn1_ctx;
1340 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1341 offset = dissect_sabp_Data_Coding_Scheme(tvb, offset, &asn1_ctx, tree, hf_sabp_Data_Coding_Scheme_PDU);
1342 offset += 7; offset >>= 3;
1345 static int dissect_Failure_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1347 asn1_ctx_t asn1_ctx;
1348 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1349 offset = dissect_sabp_Failure_List(tvb, offset, &asn1_ctx, tree, hf_sabp_Failure_List_PDU);
1350 offset += 7; offset >>= 3;
1353 static int dissect_Message_Identifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1355 asn1_ctx_t asn1_ctx;
1356 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1357 offset = dissect_sabp_Message_Identifier(tvb, offset, &asn1_ctx, tree, hf_sabp_Message_Identifier_PDU);
1358 offset += 7; offset >>= 3;
1361 static int dissect_New_Serial_Number_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1363 asn1_ctx_t asn1_ctx;
1364 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1365 offset = dissect_sabp_New_Serial_Number(tvb, offset, &asn1_ctx, tree, hf_sabp_New_Serial_Number_PDU);
1366 offset += 7; offset >>= 3;
1369 static int dissect_Number_of_Broadcasts_Completed_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1371 asn1_ctx_t asn1_ctx;
1372 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1373 offset = dissect_sabp_Number_of_Broadcasts_Completed_List(tvb, offset, &asn1_ctx, tree, hf_sabp_Number_of_Broadcasts_Completed_List_PDU);
1374 offset += 7; offset >>= 3;
1377 static int dissect_Number_of_Broadcasts_Requested_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1379 asn1_ctx_t asn1_ctx;
1380 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1381 offset = dissect_sabp_Number_of_Broadcasts_Requested(tvb, offset, &asn1_ctx, tree, hf_sabp_Number_of_Broadcasts_Requested_PDU);
1382 offset += 7; offset >>= 3;
1385 static int dissect_Old_Serial_Number_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1387 asn1_ctx_t asn1_ctx;
1388 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1389 offset = dissect_sabp_Old_Serial_Number(tvb, offset, &asn1_ctx, tree, hf_sabp_Old_Serial_Number_PDU);
1390 offset += 7; offset >>= 3;
1393 static int dissect_Radio_Resource_Loading_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1395 asn1_ctx_t asn1_ctx;
1396 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1397 offset = dissect_sabp_Radio_Resource_Loading_List(tvb, offset, &asn1_ctx, tree, hf_sabp_Radio_Resource_Loading_List_PDU);
1398 offset += 7; offset >>= 3;
1401 static int dissect_Recovery_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1403 asn1_ctx_t asn1_ctx;
1404 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1405 offset = dissect_sabp_Recovery_Indication(tvb, offset, &asn1_ctx, tree, hf_sabp_Recovery_Indication_PDU);
1406 offset += 7; offset >>= 3;
1409 static int dissect_Repetition_Period_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1411 asn1_ctx_t asn1_ctx;
1412 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1413 offset = dissect_sabp_Repetition_Period(tvb, offset, &asn1_ctx, tree, hf_sabp_Repetition_Period_PDU);
1414 offset += 7; offset >>= 3;
1417 static int dissect_Serial_Number_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1419 asn1_ctx_t asn1_ctx;
1420 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1421 offset = dissect_sabp_Serial_Number(tvb, offset, &asn1_ctx, tree, hf_sabp_Serial_Number_PDU);
1422 offset += 7; offset >>= 3;
1425 static int dissect_Service_Areas_List_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1427 asn1_ctx_t asn1_ctx;
1428 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1429 offset = dissect_sabp_Service_Areas_List(tvb, offset, &asn1_ctx, tree, hf_sabp_Service_Areas_List_PDU);
1430 offset += 7; offset >>= 3;
1433 static int dissect_TypeOfError_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1435 asn1_ctx_t asn1_ctx;
1436 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1437 offset = dissect_sabp_TypeOfError(tvb, offset, &asn1_ctx, tree, hf_sabp_TypeOfError_PDU);
1438 offset += 7; offset >>= 3;
1441 static int dissect_Write_Replace_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1443 asn1_ctx_t asn1_ctx;
1444 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1445 offset = dissect_sabp_Write_Replace(tvb, offset, &asn1_ctx, tree, hf_sabp_Write_Replace_PDU);
1446 offset += 7; offset >>= 3;
1449 static int dissect_Write_Replace_Complete_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1451 asn1_ctx_t asn1_ctx;
1452 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1453 offset = dissect_sabp_Write_Replace_Complete(tvb, offset, &asn1_ctx, tree, hf_sabp_Write_Replace_Complete_PDU);
1454 offset += 7; offset >>= 3;
1457 static int dissect_Write_Replace_Failure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1459 asn1_ctx_t asn1_ctx;
1460 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1461 offset = dissect_sabp_Write_Replace_Failure(tvb, offset, &asn1_ctx, tree, hf_sabp_Write_Replace_Failure_PDU);
1462 offset += 7; offset >>= 3;
1465 static int dissect_Kill_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1467 asn1_ctx_t asn1_ctx;
1468 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1469 offset = dissect_sabp_Kill(tvb, offset, &asn1_ctx, tree, hf_sabp_Kill_PDU);
1470 offset += 7; offset >>= 3;
1473 static int dissect_Kill_Complete_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1475 asn1_ctx_t asn1_ctx;
1476 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1477 offset = dissect_sabp_Kill_Complete(tvb, offset, &asn1_ctx, tree, hf_sabp_Kill_Complete_PDU);
1478 offset += 7; offset >>= 3;
1481 static int dissect_Kill_Failure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1483 asn1_ctx_t asn1_ctx;
1484 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1485 offset = dissect_sabp_Kill_Failure(tvb, offset, &asn1_ctx, tree, hf_sabp_Kill_Failure_PDU);
1486 offset += 7; offset >>= 3;
1489 static int dissect_Load_Query_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1491 asn1_ctx_t asn1_ctx;
1492 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1493 offset = dissect_sabp_Load_Query(tvb, offset, &asn1_ctx, tree, hf_sabp_Load_Query_PDU);
1494 offset += 7; offset >>= 3;
1497 static int dissect_Load_Query_Complete_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1499 asn1_ctx_t asn1_ctx;
1500 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1501 offset = dissect_sabp_Load_Query_Complete(tvb, offset, &asn1_ctx, tree, hf_sabp_Load_Query_Complete_PDU);
1502 offset += 7; offset >>= 3;
1505 static int dissect_Load_Query_Failure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1507 asn1_ctx_t asn1_ctx;
1508 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1509 offset = dissect_sabp_Load_Query_Failure(tvb, offset, &asn1_ctx, tree, hf_sabp_Load_Query_Failure_PDU);
1510 offset += 7; offset >>= 3;
1513 static int dissect_Message_Status_Query_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1515 asn1_ctx_t asn1_ctx;
1516 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1517 offset = dissect_sabp_Message_Status_Query(tvb, offset, &asn1_ctx, tree, hf_sabp_Message_Status_Query_PDU);
1518 offset += 7; offset >>= 3;
1521 static int dissect_Message_Status_Query_Complete_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1523 asn1_ctx_t asn1_ctx;
1524 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1525 offset = dissect_sabp_Message_Status_Query_Complete(tvb, offset, &asn1_ctx, tree, hf_sabp_Message_Status_Query_Complete_PDU);
1526 offset += 7; offset >>= 3;
1529 static int dissect_Message_Status_Query_Failure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1531 asn1_ctx_t asn1_ctx;
1532 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1533 offset = dissect_sabp_Message_Status_Query_Failure(tvb, offset, &asn1_ctx, tree, hf_sabp_Message_Status_Query_Failure_PDU);
1534 offset += 7; offset >>= 3;
1537 static int dissect_Reset_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1539 asn1_ctx_t asn1_ctx;
1540 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1541 offset = dissect_sabp_Reset(tvb, offset, &asn1_ctx, tree, hf_sabp_Reset_PDU);
1542 offset += 7; offset >>= 3;
1545 static int dissect_Reset_Complete_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1547 asn1_ctx_t asn1_ctx;
1548 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1549 offset = dissect_sabp_Reset_Complete(tvb, offset, &asn1_ctx, tree, hf_sabp_Reset_Complete_PDU);
1550 offset += 7; offset >>= 3;
1553 static int dissect_Reset_Failure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1555 asn1_ctx_t asn1_ctx;
1556 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1557 offset = dissect_sabp_Reset_Failure(tvb, offset, &asn1_ctx, tree, hf_sabp_Reset_Failure_PDU);
1558 offset += 7; offset >>= 3;
1561 static int dissect_Restart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1563 asn1_ctx_t asn1_ctx;
1564 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1565 offset = dissect_sabp_Restart(tvb, offset, &asn1_ctx, tree, hf_sabp_Restart_PDU);
1566 offset += 7; offset >>= 3;
1569 static int dissect_Failure_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1571 asn1_ctx_t asn1_ctx;
1572 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1573 offset = dissect_sabp_Failure(tvb, offset, &asn1_ctx, tree, hf_sabp_Failure_PDU);
1574 offset += 7; offset >>= 3;
1577 static int dissect_Error_Indication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1579 asn1_ctx_t asn1_ctx;
1580 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1581 offset = dissect_sabp_Error_Indication(tvb, offset, &asn1_ctx, tree, hf_sabp_Error_Indication_PDU);
1582 offset += 7; offset >>= 3;
1585 static int dissect_SABP_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
1587 asn1_ctx_t asn1_ctx;
1588 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1589 offset = dissect_sabp_SABP_PDU(tvb, offset, &asn1_ctx, tree, hf_sabp_SABP_PDU_PDU);
1590 offset += 7; offset >>= 3;
1595 /*--- End of included file: packet-sabp-fn.c ---*/
1596 #line 96 "packet-sabp-template.c"
1598 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1600 return (dissector_try_port(sabp_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1603 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1605 return (dissector_try_port(sabp_extension_dissector_table, ProtocolExtensionID, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1608 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1610 return (dissector_try_port(sabp_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1613 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1615 return (dissector_try_port(sabp_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1618 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1620 return (dissector_try_port(sabp_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree)) ? tvb_length(tvb) : 0;
1624 get_sabp_pdu_len(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
1626 guint32 type_length;
1628 asn1_ctx_t asn1_ctx;
1629 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1631 /* Length should be in the 3:d octet */
1632 offset = offset + 3;
1634 bit_offset = offset<<3;
1635 /* Get the length of the sabp packet. offset in bits */
1636 offset = dissect_per_length_determinant(tvb, bit_offset, &asn1_ctx, NULL, -1, &type_length);
1638 /* return the remaining length of the PDU */
1639 return type_length+5;
1644 dissect_sabp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1646 proto_item *sabp_item = NULL;
1647 proto_tree *sabp_tree = NULL;
1649 /* make entry in the Protocol column on summary display */
1650 if (check_col(pinfo->cinfo, COL_PROTOCOL))
1651 col_set_str(pinfo->cinfo, COL_PROTOCOL, PSNAME);
1653 /* create the sbap protocol tree */
1654 sabp_item = proto_tree_add_item(tree, proto_sabp, tvb, 0, -1, FALSE);
1655 sabp_tree = proto_item_add_subtree(sabp_item, ett_sabp);
1657 dissect_SABP_PDU_PDU(tvb, pinfo, sabp_tree);
1660 /* Note a little bit of a hack assumes length max takes two bytes and that the length starts at byte 4 */
1662 dissect_sabp_tcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1664 tcp_dissect_pdus(tvb, pinfo, tree, gbl_sabp_desegment, 5,
1665 get_sabp_pdu_len, dissect_sabp);
1668 /*--- proto_register_sbap -------------------------------------------*/
1669 void proto_register_sabp(void) {
1671 /* List of fields */
1673 static hf_register_info hf[] = {
1674 { &hf_sabp_no_of_pages,
1675 { "Number-of-Pages", "sabp.no_of_pages",
1676 FT_UINT8, BASE_DEC, NULL, 0,
1677 "Number-of-Pages", HFILL }},
1680 /*--- Included file: packet-sabp-hfarr.c ---*/
1681 #line 1 "packet-sabp-hfarr.c"
1682 { &hf_sabp_Broadcast_Message_Content_PDU,
1683 { "Broadcast-Message-Content", "sabp.Broadcast_Message_Content",
1684 FT_BYTES, BASE_HEX, NULL, 0,
1685 "sabp.Broadcast_Message_Content", HFILL }},
1686 { &hf_sabp_Category_PDU,
1687 { "Category", "sabp.Category",
1688 FT_UINT32, BASE_DEC, VALS(sabp_Category_vals), 0,
1689 "sabp.Category", HFILL }},
1690 { &hf_sabp_Cause_PDU,
1691 { "Cause", "sabp.Cause",
1692 FT_UINT32, BASE_DEC, VALS(sabp_Cause_vals), 0,
1693 "sabp.Cause", HFILL }},
1694 { &hf_sabp_Criticality_Diagnostics_PDU,
1695 { "Criticality-Diagnostics", "sabp.Criticality_Diagnostics",
1696 FT_NONE, BASE_NONE, NULL, 0,
1697 "sabp.Criticality_Diagnostics", HFILL }},
1698 { &hf_sabp_MessageStructure_PDU,
1699 { "MessageStructure", "sabp.MessageStructure",
1700 FT_UINT32, BASE_DEC, NULL, 0,
1701 "sabp.MessageStructure", HFILL }},
1702 { &hf_sabp_Data_Coding_Scheme_PDU,
1703 { "Data-Coding-Scheme", "sabp.Data_Coding_Scheme",
1704 FT_BYTES, BASE_HEX, NULL, 0,
1705 "sabp.Data_Coding_Scheme", HFILL }},
1706 { &hf_sabp_Failure_List_PDU,
1707 { "Failure-List", "sabp.Failure_List",
1708 FT_UINT32, BASE_DEC, NULL, 0,
1709 "sabp.Failure_List", HFILL }},
1710 { &hf_sabp_Message_Identifier_PDU,
1711 { "Message-Identifier", "sabp.Message_Identifier",
1712 FT_BYTES, BASE_HEX, NULL, 0,
1713 "sabp.Message_Identifier", HFILL }},
1714 { &hf_sabp_New_Serial_Number_PDU,
1715 { "New-Serial-Number", "sabp.New_Serial_Number",
1716 FT_BYTES, BASE_HEX, NULL, 0,
1717 "sabp.New_Serial_Number", HFILL }},
1718 { &hf_sabp_Number_of_Broadcasts_Completed_List_PDU,
1719 { "Number-of-Broadcasts-Completed-List", "sabp.Number_of_Broadcasts_Completed_List",
1720 FT_UINT32, BASE_DEC, NULL, 0,
1721 "sabp.Number_of_Broadcasts_Completed_List", HFILL }},
1722 { &hf_sabp_Number_of_Broadcasts_Requested_PDU,
1723 { "Number-of-Broadcasts-Requested", "sabp.Number_of_Broadcasts_Requested",
1724 FT_UINT32, BASE_DEC, VALS(sabp_Number_of_Broadcasts_Requested_vals), 0,
1725 "sabp.Number_of_Broadcasts_Requested", HFILL }},
1726 { &hf_sabp_Old_Serial_Number_PDU,
1727 { "Old-Serial-Number", "sabp.Old_Serial_Number",
1728 FT_BYTES, BASE_HEX, NULL, 0,
1729 "sabp.Old_Serial_Number", HFILL }},
1730 { &hf_sabp_Radio_Resource_Loading_List_PDU,
1731 { "Radio-Resource-Loading-List", "sabp.Radio_Resource_Loading_List",
1732 FT_UINT32, BASE_DEC, NULL, 0,
1733 "sabp.Radio_Resource_Loading_List", HFILL }},
1734 { &hf_sabp_Recovery_Indication_PDU,
1735 { "Recovery-Indication", "sabp.Recovery_Indication",
1736 FT_UINT32, BASE_DEC, VALS(sabp_Recovery_Indication_vals), 0,
1737 "sabp.Recovery_Indication", HFILL }},
1738 { &hf_sabp_Repetition_Period_PDU,
1739 { "Repetition-Period", "sabp.Repetition_Period",
1740 FT_UINT32, BASE_DEC, NULL, 0,
1741 "sabp.Repetition_Period", HFILL }},
1742 { &hf_sabp_Serial_Number_PDU,
1743 { "Serial-Number", "sabp.Serial_Number",
1744 FT_BYTES, BASE_HEX, NULL, 0,
1745 "sabp.Serial_Number", HFILL }},
1746 { &hf_sabp_Service_Areas_List_PDU,
1747 { "Service-Areas-List", "sabp.Service_Areas_List",
1748 FT_UINT32, BASE_DEC, NULL, 0,
1749 "sabp.Service_Areas_List", HFILL }},
1750 { &hf_sabp_TypeOfError_PDU,
1751 { "TypeOfError", "sabp.TypeOfError",
1752 FT_UINT32, BASE_DEC, VALS(sabp_TypeOfError_vals), 0,
1753 "sabp.TypeOfError", HFILL }},
1754 { &hf_sabp_Write_Replace_PDU,
1755 { "Write-Replace", "sabp.Write_Replace",
1756 FT_NONE, BASE_NONE, NULL, 0,
1757 "sabp.Write_Replace", HFILL }},
1758 { &hf_sabp_Write_Replace_Complete_PDU,
1759 { "Write-Replace-Complete", "sabp.Write_Replace_Complete",
1760 FT_NONE, BASE_NONE, NULL, 0,
1761 "sabp.Write_Replace_Complete", HFILL }},
1762 { &hf_sabp_Write_Replace_Failure_PDU,
1763 { "Write-Replace-Failure", "sabp.Write_Replace_Failure",
1764 FT_NONE, BASE_NONE, NULL, 0,
1765 "sabp.Write_Replace_Failure", HFILL }},
1766 { &hf_sabp_Kill_PDU,
1767 { "Kill", "sabp.Kill",
1768 FT_NONE, BASE_NONE, NULL, 0,
1769 "sabp.Kill", HFILL }},
1770 { &hf_sabp_Kill_Complete_PDU,
1771 { "Kill-Complete", "sabp.Kill_Complete",
1772 FT_NONE, BASE_NONE, NULL, 0,
1773 "sabp.Kill_Complete", HFILL }},
1774 { &hf_sabp_Kill_Failure_PDU,
1775 { "Kill-Failure", "sabp.Kill_Failure",
1776 FT_NONE, BASE_NONE, NULL, 0,
1777 "sabp.Kill_Failure", HFILL }},
1778 { &hf_sabp_Load_Query_PDU,
1779 { "Load-Query", "sabp.Load_Query",
1780 FT_NONE, BASE_NONE, NULL, 0,
1781 "sabp.Load_Query", HFILL }},
1782 { &hf_sabp_Load_Query_Complete_PDU,
1783 { "Load-Query-Complete", "sabp.Load_Query_Complete",
1784 FT_NONE, BASE_NONE, NULL, 0,
1785 "sabp.Load_Query_Complete", HFILL }},
1786 { &hf_sabp_Load_Query_Failure_PDU,
1787 { "Load-Query-Failure", "sabp.Load_Query_Failure",
1788 FT_NONE, BASE_NONE, NULL, 0,
1789 "sabp.Load_Query_Failure", HFILL }},
1790 { &hf_sabp_Message_Status_Query_PDU,
1791 { "Message-Status-Query", "sabp.Message_Status_Query",
1792 FT_NONE, BASE_NONE, NULL, 0,
1793 "sabp.Message_Status_Query", HFILL }},
1794 { &hf_sabp_Message_Status_Query_Complete_PDU,
1795 { "Message-Status-Query-Complete", "sabp.Message_Status_Query_Complete",
1796 FT_NONE, BASE_NONE, NULL, 0,
1797 "sabp.Message_Status_Query_Complete", HFILL }},
1798 { &hf_sabp_Message_Status_Query_Failure_PDU,
1799 { "Message-Status-Query-Failure", "sabp.Message_Status_Query_Failure",
1800 FT_NONE, BASE_NONE, NULL, 0,
1801 "sabp.Message_Status_Query_Failure", HFILL }},
1802 { &hf_sabp_Reset_PDU,
1803 { "Reset", "sabp.Reset",
1804 FT_NONE, BASE_NONE, NULL, 0,
1805 "sabp.Reset", HFILL }},
1806 { &hf_sabp_Reset_Complete_PDU,
1807 { "Reset-Complete", "sabp.Reset_Complete",
1808 FT_NONE, BASE_NONE, NULL, 0,
1809 "sabp.Reset_Complete", HFILL }},
1810 { &hf_sabp_Reset_Failure_PDU,
1811 { "Reset-Failure", "sabp.Reset_Failure",
1812 FT_NONE, BASE_NONE, NULL, 0,
1813 "sabp.Reset_Failure", HFILL }},
1814 { &hf_sabp_Restart_PDU,
1815 { "Restart", "sabp.Restart",
1816 FT_NONE, BASE_NONE, NULL, 0,
1817 "sabp.Restart", HFILL }},
1818 { &hf_sabp_Failure_PDU,
1819 { "Failure", "sabp.Failure",
1820 FT_NONE, BASE_NONE, NULL, 0,
1821 "sabp.Failure", HFILL }},
1822 { &hf_sabp_Error_Indication_PDU,
1823 { "Error-Indication", "sabp.Error_Indication",
1824 FT_NONE, BASE_NONE, NULL, 0,
1825 "sabp.Error_Indication", HFILL }},
1826 { &hf_sabp_SABP_PDU_PDU,
1827 { "SABP-PDU", "sabp.SABP_PDU",
1828 FT_UINT32, BASE_DEC, VALS(sabp_SABP_PDU_vals), 0,
1829 "sabp.SABP_PDU", HFILL }},
1830 { &hf_sabp_ProtocolIE_Container_item,
1831 { "ProtocolIE-Container", "sabp.ProtocolIE_Container_item",
1832 FT_NONE, BASE_NONE, NULL, 0,
1833 "sabp.ProtocolIE_Field", HFILL }},
1836 FT_UINT32, BASE_DEC, VALS(sabp_ProtocolIE_ID_vals), 0,
1837 "sabp.ProtocolIE_ID", HFILL }},
1838 { &hf_sabp_criticality,
1839 { "criticality", "sabp.criticality",
1840 FT_UINT32, BASE_DEC, VALS(sabp_Criticality_vals), 0,
1841 "sabp.Criticality", HFILL }},
1842 { &hf_sabp_protocolIE_Field_value,
1843 { "value", "sabp.value",
1844 FT_NONE, BASE_NONE, NULL, 0,
1845 "sabp.ProtocolIE_Field_value", HFILL }},
1846 { &hf_sabp_ProtocolExtensionContainer_item,
1847 { "ProtocolExtensionContainer", "sabp.ProtocolExtensionContainer_item",
1848 FT_NONE, BASE_NONE, NULL, 0,
1849 "sabp.ProtocolExtensionField", HFILL }},
1852 FT_UINT32, BASE_DEC, NULL, 0,
1853 "sabp.ProtocolExtensionID", HFILL }},
1854 { &hf_sabp_extensionValue,
1855 { "extensionValue", "sabp.extensionValue",
1856 FT_NONE, BASE_NONE, NULL, 0,
1857 "sabp.T_extensionValue", HFILL }},
1858 { &hf_sabp_procedureCode,
1859 { "procedureCode", "sabp.procedureCode",
1860 FT_UINT32, BASE_DEC, VALS(sabp_ProcedureCode_vals), 0,
1861 "sabp.ProcedureCode", HFILL }},
1862 { &hf_sabp_triggeringMessage,
1863 { "triggeringMessage", "sabp.triggeringMessage",
1864 FT_UINT32, BASE_DEC, VALS(sabp_TriggeringMessage_vals), 0,
1865 "sabp.TriggeringMessage", HFILL }},
1866 { &hf_sabp_procedureCriticality,
1867 { "procedureCriticality", "sabp.procedureCriticality",
1868 FT_UINT32, BASE_DEC, VALS(sabp_Criticality_vals), 0,
1869 "sabp.Criticality", HFILL }},
1870 { &hf_sabp_iEsCriticalityDiagnostics,
1871 { "iEsCriticalityDiagnostics", "sabp.iEsCriticalityDiagnostics",
1872 FT_UINT32, BASE_DEC, NULL, 0,
1873 "sabp.CriticalityDiagnostics_IE_List", HFILL }},
1874 { &hf_sabp_iE_Extensions,
1875 { "iE-Extensions", "sabp.iE_Extensions",
1876 FT_UINT32, BASE_DEC, NULL, 0,
1877 "sabp.ProtocolExtensionContainer", HFILL }},
1878 { &hf_sabp_CriticalityDiagnostics_IE_List_item,
1879 { "CriticalityDiagnostics-IE-List", "sabp.CriticalityDiagnostics_IE_List_item",
1880 FT_NONE, BASE_NONE, NULL, 0,
1881 "sabp.CriticalityDiagnostics_IE_List_item", HFILL }},
1882 { &hf_sabp_iECriticality,
1883 { "iECriticality", "sabp.iECriticality",
1884 FT_UINT32, BASE_DEC, VALS(sabp_Criticality_vals), 0,
1885 "sabp.Criticality", HFILL }},
1887 { "iE-ID", "sabp.iE_ID",
1888 FT_UINT32, BASE_DEC, VALS(sabp_ProtocolIE_ID_vals), 0,
1889 "sabp.ProtocolIE_ID", HFILL }},
1890 { &hf_sabp_repetitionNumber,
1891 { "repetitionNumber", "sabp.repetitionNumber",
1892 FT_UINT32, BASE_DEC, NULL, 0,
1893 "sabp.RepetitionNumber0", HFILL }},
1894 { &hf_sabp_MessageStructure_item,
1895 { "MessageStructure", "sabp.MessageStructure_item",
1896 FT_NONE, BASE_NONE, NULL, 0,
1897 "sabp.MessageStructure_item", HFILL }},
1898 { &hf_sabp_repetitionNumber1,
1899 { "repetitionNumber", "sabp.repetitionNumber",
1900 FT_UINT32, BASE_DEC, NULL, 0,
1901 "sabp.RepetitionNumber1", HFILL }},
1902 { &hf_sabp_Failure_List_item,
1903 { "Failure-List", "sabp.Failure_List_item",
1904 FT_NONE, BASE_NONE, NULL, 0,
1905 "sabp.Failure_List_Item", HFILL }},
1906 { &hf_sabp_service_area_identifier,
1907 { "service-area-identifier", "sabp.service_area_identifier",
1908 FT_NONE, BASE_NONE, NULL, 0,
1909 "sabp.Service_Area_Identifier", HFILL }},
1911 { "cause", "sabp.cause",
1912 FT_UINT32, BASE_DEC, VALS(sabp_Cause_vals), 0,
1913 "sabp.Cause", HFILL }},
1914 { &hf_sabp_Number_of_Broadcasts_Completed_List_item,
1915 { "Number-of-Broadcasts-Completed-List", "sabp.Number_of_Broadcasts_Completed_List_item",
1916 FT_NONE, BASE_NONE, NULL, 0,
1917 "sabp.Number_of_Broadcasts_Completed_List_Item", HFILL }},
1918 { &hf_sabp_number_of_broadcasts_completed,
1919 { "number-of-broadcasts-completed", "sabp.number_of_broadcasts_completed",
1920 FT_UINT32, BASE_DEC, NULL, 0,
1921 "sabp.INTEGER_0_65535", HFILL }},
1922 { &hf_sabp_number_of_broadcasts_completed_info,
1923 { "number-of-broadcasts-completed-info", "sabp.number_of_broadcasts_completed_info",
1924 FT_UINT32, BASE_DEC, VALS(sabp_Number_Of_Broadcasts_Completed_Info_vals), 0,
1925 "sabp.Number_Of_Broadcasts_Completed_Info", HFILL }},
1926 { &hf_sabp_Radio_Resource_Loading_List_item,
1927 { "Radio-Resource-Loading-List", "sabp.Radio_Resource_Loading_List_item",
1928 FT_NONE, BASE_NONE, NULL, 0,
1929 "sabp.Radio_Resource_Loading_List_Item", HFILL }},
1930 { &hf_sabp_available_bandwidth,
1931 { "available-bandwidth", "sabp.available_bandwidth",
1932 FT_UINT32, BASE_DEC, NULL, 0,
1933 "sabp.Available_Bandwidth", HFILL }},
1934 { &hf_sabp_pLMNidentity,
1935 { "pLMNidentity", "sabp.pLMNidentity",
1936 FT_BYTES, BASE_HEX, NULL, 0,
1937 "sabp.PLMNidentity", HFILL }},
1939 { "lac", "sabp.lac",
1940 FT_BYTES, BASE_HEX, NULL, 0,
1941 "sabp.OCTET_STRING_SIZE_2", HFILL }},
1943 { "sac", "sabp.sac",
1944 FT_BYTES, BASE_HEX, NULL, 0,
1945 "sabp.OCTET_STRING_SIZE_2", HFILL }},
1946 { &hf_sabp_Service_Areas_List_item,
1947 { "Service-Areas-List", "sabp.Service_Areas_List_item",
1948 FT_NONE, BASE_NONE, NULL, 0,
1949 "sabp.Service_Area_Identifier", HFILL }},
1950 { &hf_sabp_protocolIEs,
1951 { "protocolIEs", "sabp.protocolIEs",
1952 FT_UINT32, BASE_DEC, NULL, 0,
1953 "sabp.ProtocolIE_Container", HFILL }},
1954 { &hf_sabp_protocolExtensions,
1955 { "protocolExtensions", "sabp.protocolExtensions",
1956 FT_UINT32, BASE_DEC, NULL, 0,
1957 "sabp.ProtocolExtensionContainer", HFILL }},
1958 { &hf_sabp_initiatingMessage,
1959 { "initiatingMessage", "sabp.initiatingMessage",
1960 FT_NONE, BASE_NONE, NULL, 0,
1961 "sabp.InitiatingMessage", HFILL }},
1962 { &hf_sabp_successfulOutcome,
1963 { "successfulOutcome", "sabp.successfulOutcome",
1964 FT_NONE, BASE_NONE, NULL, 0,
1965 "sabp.SuccessfulOutcome", HFILL }},
1966 { &hf_sabp_unsuccessfulOutcome,
1967 { "unsuccessfulOutcome", "sabp.unsuccessfulOutcome",
1968 FT_NONE, BASE_NONE, NULL, 0,
1969 "sabp.UnsuccessfulOutcome", HFILL }},
1970 { &hf_sabp_initiatingMessage_value,
1971 { "value", "sabp.value",
1972 FT_NONE, BASE_NONE, NULL, 0,
1973 "sabp.InitiatingMessage_value", HFILL }},
1974 { &hf_sabp_successfulOutcome_value,
1975 { "value", "sabp.value",
1976 FT_NONE, BASE_NONE, NULL, 0,
1977 "sabp.SuccessfulOutcome_value", HFILL }},
1978 { &hf_sabp_unsuccessfulOutcome_value,
1979 { "value", "sabp.value",
1980 FT_NONE, BASE_NONE, NULL, 0,
1981 "sabp.UnsuccessfulOutcome_value", HFILL }},
1983 /*--- End of included file: packet-sabp-hfarr.c ---*/
1984 #line 179 "packet-sabp-template.c"
1987 /* List of subtrees */
1988 static gint *ett[] = {
1991 &ett_sabp_cbs_data_coding,
1992 &ett_sabp_bcast_msg,
1994 /*--- Included file: packet-sabp-ettarr.c ---*/
1995 #line 1 "packet-sabp-ettarr.c"
1996 &ett_sabp_ProtocolIE_Container,
1997 &ett_sabp_ProtocolIE_Field,
1998 &ett_sabp_ProtocolExtensionContainer,
1999 &ett_sabp_ProtocolExtensionField,
2000 &ett_sabp_Criticality_Diagnostics,
2001 &ett_sabp_CriticalityDiagnostics_IE_List,
2002 &ett_sabp_CriticalityDiagnostics_IE_List_item,
2003 &ett_sabp_MessageStructure,
2004 &ett_sabp_MessageStructure_item,
2005 &ett_sabp_Failure_List,
2006 &ett_sabp_Failure_List_Item,
2007 &ett_sabp_Number_of_Broadcasts_Completed_List,
2008 &ett_sabp_Number_of_Broadcasts_Completed_List_Item,
2009 &ett_sabp_Radio_Resource_Loading_List,
2010 &ett_sabp_Radio_Resource_Loading_List_Item,
2011 &ett_sabp_Service_Area_Identifier,
2012 &ett_sabp_Service_Areas_List,
2013 &ett_sabp_Write_Replace,
2014 &ett_sabp_Write_Replace_Complete,
2015 &ett_sabp_Write_Replace_Failure,
2017 &ett_sabp_Kill_Complete,
2018 &ett_sabp_Kill_Failure,
2019 &ett_sabp_Load_Query,
2020 &ett_sabp_Load_Query_Complete,
2021 &ett_sabp_Load_Query_Failure,
2022 &ett_sabp_Message_Status_Query,
2023 &ett_sabp_Message_Status_Query_Complete,
2024 &ett_sabp_Message_Status_Query_Failure,
2026 &ett_sabp_Reset_Complete,
2027 &ett_sabp_Reset_Failure,
2030 &ett_sabp_Error_Indication,
2032 &ett_sabp_InitiatingMessage,
2033 &ett_sabp_SuccessfulOutcome,
2034 &ett_sabp_UnsuccessfulOutcome,
2036 /*--- End of included file: packet-sabp-ettarr.c ---*/
2037 #line 188 "packet-sabp-template.c"
2041 /* Register protocol */
2042 proto_sabp = proto_register_protocol(PNAME, PSNAME, PFNAME);
2043 /* Register fields and subtrees */
2044 proto_register_field_array(proto_sabp, hf, array_length(hf));
2045 proto_register_subtree_array(ett, array_length(ett));
2047 /* Register dissector */
2048 register_dissector("sabp", dissect_sabp, proto_sabp);
2049 register_dissector("sabp.tcp", dissect_sabp_tcp, proto_sabp);
2051 /* Register dissector tables */
2052 sabp_ies_dissector_table = register_dissector_table("sabp.ies", "SABP-PROTOCOL-IES", FT_UINT32, BASE_DEC);
2053 sabp_extension_dissector_table = register_dissector_table("sabp.extension", "SABP-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
2054 sabp_proc_imsg_dissector_table = register_dissector_table("sabp.proc.imsg", "SABP-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
2055 sabp_proc_sout_dissector_table = register_dissector_table("sabp.proc.sout", "SABP-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
2056 sabp_proc_uout_dissector_table = register_dissector_table("sabp.proc.uout", "SABP-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
2061 /*--- proto_reg_handoff_sbap ---------------------------------------*/
2063 proto_reg_handoff_sabp(void)
2065 dissector_handle_t sabp_handle;
2066 dissector_handle_t sabp_tcp_handle;
2068 sabp_handle = find_dissector("sabp");
2069 sabp_tcp_handle = find_dissector("sabp.tcp");
2070 dissector_add("udp.port", 3452, sabp_handle);
2071 dissector_add("tcp.port", 3452, sabp_tcp_handle);
2074 /*--- Included file: packet-sabp-dis-tab.c ---*/
2075 #line 1 "packet-sabp-dis-tab.c"
2076 dissector_add("sabp.ies", id_Message_Identifier, new_create_dissector_handle(dissect_Message_Identifier_PDU, proto_sabp));
2077 dissector_add("sabp.ies", id_New_Serial_Number, new_create_dissector_handle(dissect_New_Serial_Number_PDU, proto_sabp));
2078 dissector_add("sabp.ies", id_Old_Serial_Number, new_create_dissector_handle(dissect_Old_Serial_Number_PDU, proto_sabp));
2079 dissector_add("sabp.ies", id_Service_Areas_List, new_create_dissector_handle(dissect_Service_Areas_List_PDU, proto_sabp));
2080 dissector_add("sabp.ies", id_Category, new_create_dissector_handle(dissect_Category_PDU, proto_sabp));
2081 dissector_add("sabp.ies", id_Repetition_Period, new_create_dissector_handle(dissect_Repetition_Period_PDU, proto_sabp));
2082 dissector_add("sabp.ies", id_Number_of_Broadcasts_Requested, new_create_dissector_handle(dissect_Number_of_Broadcasts_Requested_PDU, proto_sabp));
2083 dissector_add("sabp.ies", id_Data_Coding_Scheme, new_create_dissector_handle(dissect_Data_Coding_Scheme_PDU, proto_sabp));
2084 dissector_add("sabp.ies", id_Broadcast_Message_Content, new_create_dissector_handle(dissect_Broadcast_Message_Content_PDU, proto_sabp));
2085 dissector_add("sabp.ies", id_Number_of_Broadcasts_Completed_List, new_create_dissector_handle(dissect_Number_of_Broadcasts_Completed_List_PDU, proto_sabp));
2086 dissector_add("sabp.ies", id_Criticality_Diagnostics, new_create_dissector_handle(dissect_Criticality_Diagnostics_PDU, proto_sabp));
2087 dissector_add("sabp.ies", id_Failure_List, new_create_dissector_handle(dissect_Failure_List_PDU, proto_sabp));
2088 dissector_add("sabp.ies", id_Radio_Resource_Loading_List, new_create_dissector_handle(dissect_Radio_Resource_Loading_List_PDU, proto_sabp));
2089 dissector_add("sabp.ies", id_Recovery_Indication, new_create_dissector_handle(dissect_Recovery_Indication_PDU, proto_sabp));
2090 dissector_add("sabp.ies", id_Serial_Number, new_create_dissector_handle(dissect_Serial_Number_PDU, proto_sabp));
2091 dissector_add("sabp.ies", id_Cause, new_create_dissector_handle(dissect_Cause_PDU, proto_sabp));
2092 dissector_add("sabp.extension", id_MessageStructure, new_create_dissector_handle(dissect_MessageStructure_PDU, proto_sabp));
2093 dissector_add("sabp.extension", id_TypeOfError, new_create_dissector_handle(dissect_TypeOfError_PDU, proto_sabp));
2094 dissector_add("sabp.proc.imsg", id_Write_Replace, new_create_dissector_handle(dissect_Write_Replace_PDU, proto_sabp));
2095 dissector_add("sabp.proc.sout", id_Write_Replace, new_create_dissector_handle(dissect_Write_Replace_Complete_PDU, proto_sabp));
2096 dissector_add("sabp.proc.uout", id_Write_Replace, new_create_dissector_handle(dissect_Write_Replace_Failure_PDU, proto_sabp));
2097 dissector_add("sabp.proc.imsg", id_Kill, new_create_dissector_handle(dissect_Kill_PDU, proto_sabp));
2098 dissector_add("sabp.proc.sout", id_Kill, new_create_dissector_handle(dissect_Kill_Complete_PDU, proto_sabp));
2099 dissector_add("sabp.proc.uout", id_Kill, new_create_dissector_handle(dissect_Kill_Failure_PDU, proto_sabp));
2100 dissector_add("sabp.proc.imsg", id_Load_Status_Enquiry, new_create_dissector_handle(dissect_Load_Query_PDU, proto_sabp));
2101 dissector_add("sabp.proc.sout", id_Load_Status_Enquiry, new_create_dissector_handle(dissect_Load_Query_Complete_PDU, proto_sabp));
2102 dissector_add("sabp.proc.uout", id_Load_Status_Enquiry, new_create_dissector_handle(dissect_Load_Query_Failure_PDU, proto_sabp));
2103 dissector_add("sabp.proc.imsg", id_Message_Status_Query, new_create_dissector_handle(dissect_Message_Status_Query_PDU, proto_sabp));
2104 dissector_add("sabp.proc.sout", id_Message_Status_Query, new_create_dissector_handle(dissect_Message_Status_Query_Complete_PDU, proto_sabp));
2105 dissector_add("sabp.proc.uout", id_Message_Status_Query, new_create_dissector_handle(dissect_Message_Status_Query_Failure_PDU, proto_sabp));
2106 dissector_add("sabp.proc.imsg", id_Reset, new_create_dissector_handle(dissect_Reset_PDU, proto_sabp));
2107 dissector_add("sabp.proc.sout", id_Reset, new_create_dissector_handle(dissect_Reset_Complete_PDU, proto_sabp));
2108 dissector_add("sabp.proc.uout", id_Reset, new_create_dissector_handle(dissect_Reset_Failure_PDU, proto_sabp));
2109 dissector_add("sabp.proc.imsg", id_Restart_Indication, new_create_dissector_handle(dissect_Restart_PDU, proto_sabp));
2110 dissector_add("sabp.proc.imsg", id_Failure_Indication, new_create_dissector_handle(dissect_Failure_PDU, proto_sabp));
2111 dissector_add("sabp.proc.imsg", id_Error_Indication, new_create_dissector_handle(dissect_Error_Indication_PDU, proto_sabp));
2114 /*--- End of included file: packet-sabp-dis-tab.c ---*/
2115 #line 224 "packet-sabp-template.c"