MSWSP: fix dissect_mswsp_smb()
[wireshark-wip.git] / epan / dissectors / packet-rua.c
blob8602178b0fb53a9f0df9e811d75f68b435fb76bf
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-rua.c */
4 /* ../../tools/asn2wrs.py -p rua -c ./rua.cnf -s ./packet-rua-template -D . -O ../../epan/dissectors RUA-CommonDataTypes.asn RUA-Constants.asn RUA-Containers.asn RUA-IEs.asn RUA-PDU-Contents.asn RUA-PDU-Descriptions.asn */
6 /* Input file: packet-rua-template.c */
8 #line 1 "../../asn1/rua/packet-rua-template.c"
9 /* packet-rua-template.c
10 * Routines for UMTS Home Node B RANAP User Adaptation (RUA) packet dissection
11 * Copyright 2010 Neil Piercy, ip.access Limited <Neil.Piercy@ipaccess.com>
13 * $Id$
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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
33 * Ref: 3GPP TS 25.468 version 8.1.0 Release 8
36 #include "config.h"
38 #include <glib.h>
39 #include <string.h>
41 #include <epan/packet.h>
42 #include <epan/sctpppids.h>
43 #include <epan/asn1.h>
44 #include <epan/prefs.h>
46 #include "packet-per.h"
48 #ifdef _MSC_VER
49 /* disable: "warning C4146: unary minus operator applied to unsigned type, result still unsigned" */
50 #pragma warning(disable:4146)
51 #endif
53 #define PNAME "UTRAN Iuh interface RUA signalling"
54 #define PSNAME "RUA"
55 #define PFNAME "rua"
56 /* Dissector to use SCTP PPID 19 or a configured SCTP port. IANA assigned port = 29169*/
57 #define SCTP_PORT_RUA 29169;
59 void proto_register_rua(void);
62 /*--- Included file: packet-rua-val.h ---*/
63 #line 1 "../../asn1/rua/packet-rua-val.h"
64 #define maxPrivateIEs 65535
65 #define maxProtocolExtensions 65535
66 #define maxProtocolIEs 65535
67 #define maxNrOfErrors 256
69 typedef enum _ProcedureCode_enum {
70 id_Connect = 1,
71 id_DirectTransfer = 2,
72 id_Disconnect = 3,
73 id_ConnectionlessTransfer = 4,
74 id_ErrorIndication = 5,
75 id_privateMessage = 6
76 } ProcedureCode_enum;
78 typedef enum _ProtocolIE_ID_enum {
79 id_Cause = 1,
80 id_CriticalityDiagnostics = 2,
81 id_Context_ID = 3,
82 id_RANAP_Message = 4,
83 id_IntraDomainNasNodeSelector = 5,
84 id_Establishment_Cause = 6,
85 id_CN_DomainIndicator = 7,
86 id_CSGMembershipStatus = 9
87 } ProtocolIE_ID_enum;
89 /*--- End of included file: packet-rua-val.h ---*/
90 #line 54 "../../asn1/rua/packet-rua-template.c"
92 /* Initialize the protocol and registered fields */
93 static int proto_rua = -1;
96 /*--- Included file: packet-rua-hf.c ---*/
97 #line 1 "../../asn1/rua/packet-rua-hf.c"
98 static int hf_rua_CN_DomainIndicator_PDU = -1; /* CN_DomainIndicator */
99 static int hf_rua_CSGMembershipStatus_PDU = -1; /* CSGMembershipStatus */
100 static int hf_rua_Establishment_Cause_PDU = -1; /* Establishment_Cause */
101 static int hf_rua_Context_ID_PDU = -1; /* Context_ID */
102 static int hf_rua_IntraDomainNasNodeSelector_PDU = -1; /* IntraDomainNasNodeSelector */
103 static int hf_rua_RANAP_Message_PDU = -1; /* RANAP_Message */
104 static int hf_rua_Cause_PDU = -1; /* Cause */
105 static int hf_rua_CriticalityDiagnostics_PDU = -1; /* CriticalityDiagnostics */
106 static int hf_rua_Connect_PDU = -1; /* Connect */
107 static int hf_rua_DirectTransfer_PDU = -1; /* DirectTransfer */
108 static int hf_rua_Disconnect_PDU = -1; /* Disconnect */
109 static int hf_rua_ConnectionlessTransfer_PDU = -1; /* ConnectionlessTransfer */
110 static int hf_rua_ErrorIndication_PDU = -1; /* ErrorIndication */
111 static int hf_rua_PrivateMessage_PDU = -1; /* PrivateMessage */
112 static int hf_rua_RUA_PDU_PDU = -1; /* RUA_PDU */
113 static int hf_rua_local = -1; /* INTEGER_0_65535 */
114 static int hf_rua_global = -1; /* OBJECT_IDENTIFIER */
115 static int hf_rua_ProtocolIE_Container_item = -1; /* ProtocolIE_Field */
116 static int hf_rua_protocol_ie_field_id = -1; /* ProtocolIE_ID */
117 static int hf_rua_criticality = -1; /* Criticality */
118 static int hf_rua_ie_field_value = -1; /* ProtocolIE_Field_value */
119 static int hf_rua_ProtocolExtensionContainer_item = -1; /* ProtocolExtensionField */
120 static int hf_rua_id = -1; /* ProtocolIE_ID */
121 static int hf_rua_extensionValue = -1; /* T_extensionValue */
122 static int hf_rua_PrivateIE_Container_item = -1; /* PrivateIE_Field */
123 static int hf_rua_private_ie_field_id = -1; /* PrivateIE_ID */
124 static int hf_rua_private_value = -1; /* PrivateIE_Field_value */
125 static int hf_rua_version = -1; /* T_version */
126 static int hf_rua_release99 = -1; /* T_release99 */
127 static int hf_rua_cn_Type = -1; /* T_cn_Type */
128 static int hf_rua_gsm_Map_IDNNS = -1; /* Gsm_map_IDNNS */
129 static int hf_rua_ansi_41_IDNNS = -1; /* Ansi_41_IDNNS */
130 static int hf_rua_later = -1; /* T_later */
131 static int hf_rua_futurecoding = -1; /* BIT_STRING_SIZE_15 */
132 static int hf_rua_routingbasis = -1; /* T_routingbasis */
133 static int hf_rua_localPTMSI = -1; /* T_localPTMSI */
134 static int hf_rua_routingparameter = -1; /* RoutingParameter */
135 static int hf_rua_tMSIofsamePLMN = -1; /* T_tMSIofsamePLMN */
136 static int hf_rua_tMSIofdifferentPLMN = -1; /* T_tMSIofdifferentPLMN */
137 static int hf_rua_iMSIresponsetopaging = -1; /* T_iMSIresponsetopaging */
138 static int hf_rua_iMSIcauseUEinitiatedEvent = -1; /* T_iMSIcauseUEinitiatedEvent */
139 static int hf_rua_iMEI = -1; /* T_iMEI */
140 static int hf_rua_spare2 = -1; /* T_spare2 */
141 static int hf_rua_spare1 = -1; /* T_spare1 */
142 static int hf_rua_dummy = -1; /* BOOLEAN */
143 static int hf_rua_radioNetwork = -1; /* CauseRadioNetwork */
144 static int hf_rua_transport = -1; /* CauseTransport */
145 static int hf_rua_protocol = -1; /* CauseProtocol */
146 static int hf_rua_misc = -1; /* CauseMisc */
147 static int hf_rua_procedureCode = -1; /* ProcedureCode */
148 static int hf_rua_triggeringMessage = -1; /* TriggeringMessage */
149 static int hf_rua_procedureCriticality = -1; /* Criticality */
150 static int hf_rua_iEsCriticalityDiagnostics = -1; /* CriticalityDiagnostics_IE_List */
151 static int hf_rua_iE_Extensions = -1; /* ProtocolExtensionContainer */
152 static int hf_rua_CriticalityDiagnostics_IE_List_item = -1; /* CriticalityDiagnostics_IE_List_item */
153 static int hf_rua_iECriticality = -1; /* Criticality */
154 static int hf_rua_iE_ID = -1; /* ProtocolIE_ID */
155 static int hf_rua_typeOfError = -1; /* TypeOfError */
156 static int hf_rua_protocolIEs = -1; /* ProtocolIE_Container */
157 static int hf_rua_protocolExtensions = -1; /* ProtocolExtensionContainer */
158 static int hf_rua_privateIEs = -1; /* PrivateIE_Container */
159 static int hf_rua_initiatingMessage = -1; /* InitiatingMessage */
160 static int hf_rua_successfulOutcome = -1; /* SuccessfulOutcome */
161 static int hf_rua_unsuccessfulOutcome = -1; /* UnsuccessfulOutcome */
162 static int hf_rua_initiatingMessagevalue = -1; /* InitiatingMessage_value */
163 static int hf_rua_successfulOutcome_value = -1; /* SuccessfulOutcome_value */
164 static int hf_rua_unsuccessfulOutcome_value = -1; /* UnsuccessfulOutcome_value */
166 /*--- End of included file: packet-rua-hf.c ---*/
167 #line 59 "../../asn1/rua/packet-rua-template.c"
169 /* Initialize the subtree pointers */
170 static int ett_rua = -1;
172 /* initialise sub-dissector handles */
173 static dissector_handle_t ranap_handle = NULL;
176 /*--- Included file: packet-rua-ett.c ---*/
177 #line 1 "../../asn1/rua/packet-rua-ett.c"
178 static gint ett_rua_PrivateIE_ID = -1;
179 static gint ett_rua_ProtocolIE_Container = -1;
180 static gint ett_rua_ProtocolIE_Field = -1;
181 static gint ett_rua_ProtocolExtensionContainer = -1;
182 static gint ett_rua_ProtocolExtensionField = -1;
183 static gint ett_rua_PrivateIE_Container = -1;
184 static gint ett_rua_PrivateIE_Field = -1;
185 static gint ett_rua_IntraDomainNasNodeSelector = -1;
186 static gint ett_rua_T_version = -1;
187 static gint ett_rua_T_release99 = -1;
188 static gint ett_rua_T_cn_Type = -1;
189 static gint ett_rua_T_later = -1;
190 static gint ett_rua_Gsm_map_IDNNS = -1;
191 static gint ett_rua_T_routingbasis = -1;
192 static gint ett_rua_T_localPTMSI = -1;
193 static gint ett_rua_T_tMSIofsamePLMN = -1;
194 static gint ett_rua_T_tMSIofdifferentPLMN = -1;
195 static gint ett_rua_T_iMSIresponsetopaging = -1;
196 static gint ett_rua_T_iMSIcauseUEinitiatedEvent = -1;
197 static gint ett_rua_T_iMEI = -1;
198 static gint ett_rua_T_spare2 = -1;
199 static gint ett_rua_T_spare1 = -1;
200 static gint ett_rua_Cause = -1;
201 static gint ett_rua_CriticalityDiagnostics = -1;
202 static gint ett_rua_CriticalityDiagnostics_IE_List = -1;
203 static gint ett_rua_CriticalityDiagnostics_IE_List_item = -1;
204 static gint ett_rua_Connect = -1;
205 static gint ett_rua_DirectTransfer = -1;
206 static gint ett_rua_Disconnect = -1;
207 static gint ett_rua_ConnectionlessTransfer = -1;
208 static gint ett_rua_ErrorIndication = -1;
209 static gint ett_rua_PrivateMessage = -1;
210 static gint ett_rua_RUA_PDU = -1;
211 static gint ett_rua_InitiatingMessage = -1;
212 static gint ett_rua_SuccessfulOutcome = -1;
213 static gint ett_rua_UnsuccessfulOutcome = -1;
215 /*--- End of included file: packet-rua-ett.c ---*/
216 #line 67 "../../asn1/rua/packet-rua-template.c"
218 /* Global variables */
219 static guint32 ProcedureCode;
220 static guint32 ProtocolIE_ID;
221 static guint global_sctp_port = SCTP_PORT_RUA
223 /* Dissector tables */
224 static dissector_table_t rua_ies_dissector_table;
225 static dissector_table_t rua_extension_dissector_table;
226 static dissector_table_t rua_proc_imsg_dissector_table;
227 static dissector_table_t rua_proc_sout_dissector_table;
228 static dissector_table_t rua_proc_uout_dissector_table;
230 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
231 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
232 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
233 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
234 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
236 void proto_reg_handoff_rua(void);
239 /*--- Included file: packet-rua-fn.c ---*/
240 #line 1 "../../asn1/rua/packet-rua-fn.c"
242 static const value_string rua_Criticality_vals[] = {
243 { 0, "reject" },
244 { 1, "ignore" },
245 { 2, "notify" },
246 { 0, NULL }
250 static int
251 dissect_rua_Criticality(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
252 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
253 3, NULL, FALSE, 0, NULL);
255 return offset;
259 static const value_string rua_ProcedureCode_vals[] = {
260 { id_Connect, "id-Connect" },
261 { id_DirectTransfer, "id-DirectTransfer" },
262 { id_Disconnect, "id-Disconnect" },
263 { id_ConnectionlessTransfer, "id-ConnectionlessTransfer" },
264 { id_ErrorIndication, "id-ErrorIndication" },
265 { id_privateMessage, "id-privateMessage" },
266 { 0, NULL }
270 static int
271 dissect_rua_ProcedureCode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
272 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
273 0U, 255U, &ProcedureCode, FALSE);
275 #line 53 "../../asn1/rua/rua.cnf"
276 if (strcmp(val_to_str(ProcedureCode, rua_ProcedureCode_vals, "Unknown"), "Unknown") == 0) {
277 col_set_str(actx->pinfo->cinfo, COL_INFO,
278 "Unknown Message ");
279 } /* Known Procedures should be included below and broken out as ELEMENTARY names to avoid confusion */
282 return offset;
287 static int
288 dissect_rua_INTEGER_0_65535(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
289 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
290 0U, 65535U, NULL, FALSE);
292 return offset;
297 static int
298 dissect_rua_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
299 offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
301 return offset;
305 static const value_string rua_PrivateIE_ID_vals[] = {
306 { 0, "local" },
307 { 1, "global" },
308 { 0, NULL }
311 static const per_choice_t PrivateIE_ID_choice[] = {
312 { 0, &hf_rua_local , ASN1_NO_EXTENSIONS , dissect_rua_INTEGER_0_65535 },
313 { 1, &hf_rua_global , ASN1_NO_EXTENSIONS , dissect_rua_OBJECT_IDENTIFIER },
314 { 0, NULL, 0, NULL }
317 static int
318 dissect_rua_PrivateIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
319 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
320 ett_rua_PrivateIE_ID, PrivateIE_ID_choice,
321 NULL);
323 return offset;
327 static const value_string rua_ProtocolIE_ID_vals[] = {
328 { id_Cause, "id-Cause" },
329 { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" },
330 { id_Context_ID, "id-Context-ID" },
331 { id_RANAP_Message, "id-RANAP-Message" },
332 { id_IntraDomainNasNodeSelector, "id-IntraDomainNasNodeSelector" },
333 { id_Establishment_Cause, "id-Establishment-Cause" },
334 { id_CN_DomainIndicator, "id-CN-DomainIndicator" },
335 { id_CSGMembershipStatus, "id-CSGMembershipStatus" },
336 { 0, NULL }
340 static int
341 dissect_rua_ProtocolIE_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
342 offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
343 0U, maxProtocolIEs, &ProtocolIE_ID, FALSE);
345 #line 42 "../../asn1/rua/rua.cnf"
346 if (tree) {
347 proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s", val_to_str(ProtocolIE_ID, VALS(rua_ProtocolIE_ID_vals), "unknown (%d)"));
350 return offset;
354 static const value_string rua_TriggeringMessage_vals[] = {
355 { 0, "initiating-message" },
356 { 1, "successful-outcome" },
357 { 2, "unsuccessful-outcome" },
358 { 0, NULL }
362 static int
363 dissect_rua_TriggeringMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
364 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
365 3, NULL, FALSE, 0, NULL);
367 return offset;
372 static int
373 dissect_rua_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
374 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
376 return offset;
380 static const per_sequence_t ProtocolIE_Field_sequence[] = {
381 { &hf_rua_protocol_ie_field_id, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_ID },
382 { &hf_rua_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
383 { &hf_rua_ie_field_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Field_value },
384 { NULL, 0, 0, NULL }
387 static int
388 dissect_rua_ProtocolIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
389 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
390 ett_rua_ProtocolIE_Field, ProtocolIE_Field_sequence);
392 return offset;
396 static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
397 { &hf_rua_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Field },
400 static int
401 dissect_rua_ProtocolIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
402 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
403 ett_rua_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
404 0, maxProtocolIEs, FALSE);
406 return offset;
411 static int
412 dissect_rua_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
413 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
415 return offset;
419 static const per_sequence_t ProtocolExtensionField_sequence[] = {
420 { &hf_rua_id , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_ID },
421 { &hf_rua_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
422 { &hf_rua_extensionValue , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_T_extensionValue },
423 { NULL, 0, 0, NULL }
426 static int
427 dissect_rua_ProtocolExtensionField(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
428 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
429 ett_rua_ProtocolExtensionField, ProtocolExtensionField_sequence);
431 return offset;
435 static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
436 { &hf_rua_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolExtensionField },
439 static int
440 dissect_rua_ProtocolExtensionContainer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
441 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
442 ett_rua_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
443 1, maxProtocolExtensions, FALSE);
445 return offset;
450 static int
451 dissect_rua_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
452 offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
454 return offset;
458 static const per_sequence_t PrivateIE_Field_sequence[] = {
459 { &hf_rua_private_ie_field_id, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_ID },
460 { &hf_rua_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
461 { &hf_rua_private_value , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_Field_value },
462 { NULL, 0, 0, NULL }
465 static int
466 dissect_rua_PrivateIE_Field(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
467 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
468 ett_rua_PrivateIE_Field, PrivateIE_Field_sequence);
470 return offset;
474 static const per_sequence_t PrivateIE_Container_sequence_of[1] = {
475 { &hf_rua_PrivateIE_Container_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_Field },
478 static int
479 dissect_rua_PrivateIE_Container(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
480 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
481 ett_rua_PrivateIE_Container, PrivateIE_Container_sequence_of,
482 1, maxPrivateIEs, FALSE);
484 return offset;
488 static const value_string rua_CN_DomainIndicator_vals[] = {
489 { 0, "cs-domain" },
490 { 1, "ps-domain" },
491 { 0, NULL }
495 static int
496 dissect_rua_CN_DomainIndicator(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
497 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
498 2, NULL, FALSE, 0, NULL);
500 return offset;
504 static const value_string rua_CSGMembershipStatus_vals[] = {
505 { 0, "member" },
506 { 1, "non-member" },
507 { 0, NULL }
511 static int
512 dissect_rua_CSGMembershipStatus(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
513 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
514 2, NULL, TRUE, 0, NULL);
516 return offset;
520 static const value_string rua_Establishment_Cause_vals[] = {
521 { 0, "emergency-call" },
522 { 1, "normal-call" },
523 { 0, NULL }
527 static int
528 dissect_rua_Establishment_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
529 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
530 2, NULL, TRUE, 0, NULL);
532 return offset;
537 static int
538 dissect_rua_Context_ID(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
539 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
540 24, 24, FALSE, NULL);
542 return offset;
547 static int
548 dissect_rua_RoutingParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
549 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
550 10, 10, FALSE, NULL);
552 return offset;
556 static const per_sequence_t T_localPTMSI_sequence[] = {
557 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
558 { NULL, 0, 0, NULL }
561 static int
562 dissect_rua_T_localPTMSI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
563 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
564 ett_rua_T_localPTMSI, T_localPTMSI_sequence);
566 return offset;
570 static const per_sequence_t T_tMSIofsamePLMN_sequence[] = {
571 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
572 { NULL, 0, 0, NULL }
575 static int
576 dissect_rua_T_tMSIofsamePLMN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
577 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
578 ett_rua_T_tMSIofsamePLMN, T_tMSIofsamePLMN_sequence);
580 return offset;
584 static const per_sequence_t T_tMSIofdifferentPLMN_sequence[] = {
585 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
586 { NULL, 0, 0, NULL }
589 static int
590 dissect_rua_T_tMSIofdifferentPLMN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
591 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
592 ett_rua_T_tMSIofdifferentPLMN, T_tMSIofdifferentPLMN_sequence);
594 return offset;
598 static const per_sequence_t T_iMSIresponsetopaging_sequence[] = {
599 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
600 { NULL, 0, 0, NULL }
603 static int
604 dissect_rua_T_iMSIresponsetopaging(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
605 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
606 ett_rua_T_iMSIresponsetopaging, T_iMSIresponsetopaging_sequence);
608 return offset;
612 static const per_sequence_t T_iMSIcauseUEinitiatedEvent_sequence[] = {
613 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
614 { NULL, 0, 0, NULL }
617 static int
618 dissect_rua_T_iMSIcauseUEinitiatedEvent(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
619 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
620 ett_rua_T_iMSIcauseUEinitiatedEvent, T_iMSIcauseUEinitiatedEvent_sequence);
622 return offset;
626 static const per_sequence_t T_iMEI_sequence[] = {
627 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
628 { NULL, 0, 0, NULL }
631 static int
632 dissect_rua_T_iMEI(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
633 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
634 ett_rua_T_iMEI, T_iMEI_sequence);
636 return offset;
640 static const per_sequence_t T_spare2_sequence[] = {
641 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
642 { NULL, 0, 0, NULL }
645 static int
646 dissect_rua_T_spare2(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
647 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
648 ett_rua_T_spare2, T_spare2_sequence);
650 return offset;
654 static const per_sequence_t T_spare1_sequence[] = {
655 { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
656 { NULL, 0, 0, NULL }
659 static int
660 dissect_rua_T_spare1(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
661 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
662 ett_rua_T_spare1, T_spare1_sequence);
664 return offset;
668 static const value_string rua_T_routingbasis_vals[] = {
669 { 0, "localPTMSI" },
670 { 1, "tMSIofsamePLMN" },
671 { 2, "tMSIofdifferentPLMN" },
672 { 3, "iMSIresponsetopaging" },
673 { 4, "iMSIcauseUEinitiatedEvent" },
674 { 5, "iMEI" },
675 { 6, "spare2" },
676 { 7, "spare1" },
677 { 0, NULL }
680 static const per_choice_t T_routingbasis_choice[] = {
681 { 0, &hf_rua_localPTMSI , ASN1_NO_EXTENSIONS , dissect_rua_T_localPTMSI },
682 { 1, &hf_rua_tMSIofsamePLMN , ASN1_NO_EXTENSIONS , dissect_rua_T_tMSIofsamePLMN },
683 { 2, &hf_rua_tMSIofdifferentPLMN, ASN1_NO_EXTENSIONS , dissect_rua_T_tMSIofdifferentPLMN },
684 { 3, &hf_rua_iMSIresponsetopaging, ASN1_NO_EXTENSIONS , dissect_rua_T_iMSIresponsetopaging },
685 { 4, &hf_rua_iMSIcauseUEinitiatedEvent, ASN1_NO_EXTENSIONS , dissect_rua_T_iMSIcauseUEinitiatedEvent },
686 { 5, &hf_rua_iMEI , ASN1_NO_EXTENSIONS , dissect_rua_T_iMEI },
687 { 6, &hf_rua_spare2 , ASN1_NO_EXTENSIONS , dissect_rua_T_spare2 },
688 { 7, &hf_rua_spare1 , ASN1_NO_EXTENSIONS , dissect_rua_T_spare1 },
689 { 0, NULL, 0, NULL }
692 static int
693 dissect_rua_T_routingbasis(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
694 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
695 ett_rua_T_routingbasis, T_routingbasis_choice,
696 NULL);
698 return offset;
703 static int
704 dissect_rua_BOOLEAN(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
705 offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
707 return offset;
711 static const per_sequence_t Gsm_map_IDNNS_sequence[] = {
712 { &hf_rua_routingbasis , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_T_routingbasis },
713 { &hf_rua_dummy , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_BOOLEAN },
714 { NULL, 0, 0, NULL }
717 static int
718 dissect_rua_Gsm_map_IDNNS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
719 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
720 ett_rua_Gsm_map_IDNNS, Gsm_map_IDNNS_sequence);
722 return offset;
727 static int
728 dissect_rua_Ansi_41_IDNNS(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
729 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
730 14, 14, FALSE, NULL);
732 return offset;
736 static const value_string rua_T_cn_Type_vals[] = {
737 { 0, "gsm-Map-IDNNS" },
738 { 1, "ansi-41-IDNNS" },
739 { 0, NULL }
742 static const per_choice_t T_cn_Type_choice[] = {
743 { 0, &hf_rua_gsm_Map_IDNNS , ASN1_NO_EXTENSIONS , dissect_rua_Gsm_map_IDNNS },
744 { 1, &hf_rua_ansi_41_IDNNS , ASN1_NO_EXTENSIONS , dissect_rua_Ansi_41_IDNNS },
745 { 0, NULL, 0, NULL }
748 static int
749 dissect_rua_T_cn_Type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
750 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
751 ett_rua_T_cn_Type, T_cn_Type_choice,
752 NULL);
754 return offset;
758 static const per_sequence_t T_release99_sequence[] = {
759 { &hf_rua_cn_Type , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_T_cn_Type },
760 { NULL, 0, 0, NULL }
763 static int
764 dissect_rua_T_release99(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
765 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
766 ett_rua_T_release99, T_release99_sequence);
768 return offset;
773 static int
774 dissect_rua_BIT_STRING_SIZE_15(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
775 offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
776 15, 15, FALSE, NULL);
778 return offset;
782 static const per_sequence_t T_later_sequence[] = {
783 { &hf_rua_futurecoding , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_BIT_STRING_SIZE_15 },
784 { NULL, 0, 0, NULL }
787 static int
788 dissect_rua_T_later(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
789 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
790 ett_rua_T_later, T_later_sequence);
792 return offset;
796 static const value_string rua_T_version_vals[] = {
797 { 0, "release99" },
798 { 1, "later" },
799 { 0, NULL }
802 static const per_choice_t T_version_choice[] = {
803 { 0, &hf_rua_release99 , ASN1_NO_EXTENSIONS , dissect_rua_T_release99 },
804 { 1, &hf_rua_later , ASN1_NO_EXTENSIONS , dissect_rua_T_later },
805 { 0, NULL, 0, NULL }
808 static int
809 dissect_rua_T_version(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
810 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
811 ett_rua_T_version, T_version_choice,
812 NULL);
814 return offset;
818 static const per_sequence_t IntraDomainNasNodeSelector_sequence[] = {
819 { &hf_rua_version , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_T_version },
820 { NULL, 0, 0, NULL }
823 static int
824 dissect_rua_IntraDomainNasNodeSelector(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
825 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
826 ett_rua_IntraDomainNasNodeSelector, IntraDomainNasNodeSelector_sequence);
828 return offset;
833 static int
834 dissect_rua_RANAP_Message(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
835 #line 96 "../../asn1/rua/rua.cnf"
836 tvbuff_t *ranap_message_tvb=NULL;
837 offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
838 NO_BOUND, NO_BOUND, FALSE, &ranap_message_tvb);
840 if ((tvb_length(ranap_message_tvb)>0)&&(ranap_handle)) { /* RUA has a RANAP-PDU */
841 col_set_str(actx->pinfo->cinfo, COL_INFO,
842 "(RUA) "); /* Set info to (RUA) to make room for RANAP */
843 col_set_fence(actx->pinfo->cinfo, COL_INFO);
844 call_dissector(ranap_handle,ranap_message_tvb,actx->pinfo, proto_tree_get_root(tree));
848 return offset;
852 static const value_string rua_CauseRadioNetwork_vals[] = {
853 { 0, "normal" },
854 { 1, "connect-failed" },
855 { 2, "network-release" },
856 { 3, "unspecified" },
857 { 0, NULL }
861 static int
862 dissect_rua_CauseRadioNetwork(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
863 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
864 4, NULL, TRUE, 0, NULL);
866 return offset;
870 static const value_string rua_CauseTransport_vals[] = {
871 { 0, "transport-resource-unavailable" },
872 { 1, "unspecified" },
873 { 0, NULL }
877 static int
878 dissect_rua_CauseTransport(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
879 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
880 2, NULL, TRUE, 0, NULL);
882 return offset;
886 static const value_string rua_CauseProtocol_vals[] = {
887 { 0, "transfer-syntax-error" },
888 { 1, "abstract-syntax-error-reject" },
889 { 2, "abstract-syntax-error-ignore-and-notify" },
890 { 3, "message-not-compatible-with-receiver-state" },
891 { 4, "semantic-error" },
892 { 5, "unspecified" },
893 { 6, "abstract-syntax-error-falsely-constructed-message" },
894 { 0, NULL }
898 static int
899 dissect_rua_CauseProtocol(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
900 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
901 7, NULL, TRUE, 0, NULL);
903 return offset;
907 static const value_string rua_CauseMisc_vals[] = {
908 { 0, "processing-overload" },
909 { 1, "hardware-failure" },
910 { 2, "o-and-m-intervention" },
911 { 3, "unspecified" },
912 { 0, NULL }
916 static int
917 dissect_rua_CauseMisc(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
918 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
919 4, NULL, TRUE, 0, NULL);
921 return offset;
925 static const value_string rua_Cause_vals[] = {
926 { 0, "radioNetwork" },
927 { 1, "transport" },
928 { 2, "protocol" },
929 { 3, "misc" },
930 { 0, NULL }
933 static const per_choice_t Cause_choice[] = {
934 { 0, &hf_rua_radioNetwork , ASN1_EXTENSION_ROOT , dissect_rua_CauseRadioNetwork },
935 { 1, &hf_rua_transport , ASN1_EXTENSION_ROOT , dissect_rua_CauseTransport },
936 { 2, &hf_rua_protocol , ASN1_EXTENSION_ROOT , dissect_rua_CauseProtocol },
937 { 3, &hf_rua_misc , ASN1_EXTENSION_ROOT , dissect_rua_CauseMisc },
938 { 0, NULL, 0, NULL }
941 static int
942 dissect_rua_Cause(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
943 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
944 ett_rua_Cause, Cause_choice,
945 NULL);
947 return offset;
951 static const value_string rua_TypeOfError_vals[] = {
952 { 0, "not-understood" },
953 { 1, "missing" },
954 { 0, NULL }
958 static int
959 dissect_rua_TypeOfError(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
960 offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
961 2, NULL, TRUE, 0, NULL);
963 return offset;
967 static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
968 { &hf_rua_iECriticality , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
969 { &hf_rua_iE_ID , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_ID },
970 { &hf_rua_typeOfError , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_TypeOfError },
971 { &hf_rua_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProtocolExtensionContainer },
972 { NULL, 0, 0, NULL }
975 static int
976 dissect_rua_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
977 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
978 ett_rua_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
980 return offset;
984 static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
985 { &hf_rua_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_CriticalityDiagnostics_IE_List_item },
988 static int
989 dissect_rua_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
990 offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
991 ett_rua_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
992 1, maxNrOfErrors, FALSE);
994 return offset;
998 static const per_sequence_t CriticalityDiagnostics_sequence[] = {
999 { &hf_rua_procedureCode , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProcedureCode },
1000 { &hf_rua_triggeringMessage, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_TriggeringMessage },
1001 { &hf_rua_procedureCriticality, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_Criticality },
1002 { &hf_rua_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_CriticalityDiagnostics_IE_List },
1003 { &hf_rua_iE_Extensions , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProtocolExtensionContainer },
1004 { NULL, 0, 0, NULL }
1007 static int
1008 dissect_rua_CriticalityDiagnostics(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1009 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1010 ett_rua_CriticalityDiagnostics, CriticalityDiagnostics_sequence);
1012 return offset;
1016 static const per_sequence_t Connect_sequence[] = {
1017 { &hf_rua_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1018 { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProtocolExtensionContainer },
1019 { NULL, 0, 0, NULL }
1022 static int
1023 dissect_rua_Connect(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1024 #line 65 "../../asn1/rua/rua.cnf"
1025 col_set_str(actx->pinfo->cinfo, COL_INFO,
1026 "CONNECT ");
1027 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1028 ett_rua_Connect, Connect_sequence);
1033 return offset;
1037 static const per_sequence_t DirectTransfer_sequence[] = {
1038 { &hf_rua_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1039 { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProtocolExtensionContainer },
1040 { NULL, 0, 0, NULL }
1043 static int
1044 dissect_rua_DirectTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1045 #line 70 "../../asn1/rua/rua.cnf"
1046 col_set_str(actx->pinfo->cinfo, COL_INFO,
1047 "DIRECT_TRANSFER ");
1048 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1049 ett_rua_DirectTransfer, DirectTransfer_sequence);
1054 return offset;
1058 static const per_sequence_t Disconnect_sequence[] = {
1059 { &hf_rua_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1060 { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProtocolExtensionContainer },
1061 { NULL, 0, 0, NULL }
1064 static int
1065 dissect_rua_Disconnect(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1066 #line 75 "../../asn1/rua/rua.cnf"
1067 col_set_str(actx->pinfo->cinfo, COL_INFO,
1068 "DISCONNECT ");
1069 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1070 ett_rua_Disconnect, Disconnect_sequence);
1075 return offset;
1079 static const per_sequence_t ConnectionlessTransfer_sequence[] = {
1080 { &hf_rua_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1081 { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProtocolExtensionContainer },
1082 { NULL, 0, 0, NULL }
1085 static int
1086 dissect_rua_ConnectionlessTransfer(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1087 #line 80 "../../asn1/rua/rua.cnf"
1088 col_set_str(actx->pinfo->cinfo, COL_INFO,
1089 "CONNECTIONLESS_TRANSFER ");
1090 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1091 ett_rua_ConnectionlessTransfer, ConnectionlessTransfer_sequence);
1096 return offset;
1100 static const per_sequence_t ErrorIndication_sequence[] = {
1101 { &hf_rua_protocolIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1102 { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_rua_ProtocolExtensionContainer },
1103 { NULL, 0, 0, NULL }
1106 static int
1107 dissect_rua_ErrorIndication(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1108 #line 85 "../../asn1/rua/rua.cnf"
1109 col_set_str(actx->pinfo->cinfo, COL_INFO,
1110 "ERROR_INDICATION ");
1111 col_set_fence(actx->pinfo->cinfo, COL_INFO); /* Protect info from CriticalityDiagnostics decodes */
1112 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1113 ett_rua_ErrorIndication, ErrorIndication_sequence);
1118 return offset;
1122 static const per_sequence_t PrivateMessage_sequence[] = {
1123 { &hf_rua_privateIEs , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_Container },
1124 { NULL, 0, 0, NULL }
1127 static int
1128 dissect_rua_PrivateMessage(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1129 #line 91 "../../asn1/rua/rua.cnf"
1130 col_set_str(actx->pinfo->cinfo, COL_INFO,
1131 "PRIVATE_MESSAGE ");
1132 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1133 ett_rua_PrivateMessage, PrivateMessage_sequence);
1138 return offset;
1143 static int
1144 dissect_rua_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1145 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
1147 return offset;
1151 static const per_sequence_t InitiatingMessage_sequence[] = {
1152 { &hf_rua_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProcedureCode },
1153 { &hf_rua_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
1154 { &hf_rua_initiatingMessagevalue, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_InitiatingMessage_value },
1155 { NULL, 0, 0, NULL }
1158 static int
1159 dissect_rua_InitiatingMessage(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_rua_InitiatingMessage, InitiatingMessage_sequence);
1163 return offset;
1168 static int
1169 dissect_rua_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1170 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
1172 return offset;
1176 static const per_sequence_t SuccessfulOutcome_sequence[] = {
1177 { &hf_rua_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProcedureCode },
1178 { &hf_rua_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
1179 { &hf_rua_successfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_SuccessfulOutcome_value },
1180 { NULL, 0, 0, NULL }
1183 static int
1184 dissect_rua_SuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1185 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1186 ett_rua_SuccessfulOutcome, SuccessfulOutcome_sequence);
1188 return offset;
1193 static int
1194 dissect_rua_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1195 offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
1197 return offset;
1201 static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
1202 { &hf_rua_procedureCode , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_ProcedureCode },
1203 { &hf_rua_criticality , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
1204 { &hf_rua_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_rua_UnsuccessfulOutcome_value },
1205 { NULL, 0, 0, NULL }
1208 static int
1209 dissect_rua_UnsuccessfulOutcome(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1210 offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1211 ett_rua_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
1213 return offset;
1217 static const value_string rua_RUA_PDU_vals[] = {
1218 { 0, "initiatingMessage" },
1219 { 1, "successfulOutcome" },
1220 { 2, "unsuccessfulOutcome" },
1221 { 0, NULL }
1224 static const per_choice_t RUA_PDU_choice[] = {
1225 { 0, &hf_rua_initiatingMessage, ASN1_EXTENSION_ROOT , dissect_rua_InitiatingMessage },
1226 { 1, &hf_rua_successfulOutcome, ASN1_EXTENSION_ROOT , dissect_rua_SuccessfulOutcome },
1227 { 2, &hf_rua_unsuccessfulOutcome, ASN1_EXTENSION_ROOT , dissect_rua_UnsuccessfulOutcome },
1228 { 0, NULL, 0, NULL }
1231 static int
1232 dissect_rua_RUA_PDU(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1233 offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1234 ett_rua_RUA_PDU, RUA_PDU_choice,
1235 NULL);
1237 return offset;
1240 /*--- PDUs ---*/
1242 static int dissect_CN_DomainIndicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1243 int offset = 0;
1244 asn1_ctx_t asn1_ctx;
1245 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1246 offset = dissect_rua_CN_DomainIndicator(tvb, offset, &asn1_ctx, tree, hf_rua_CN_DomainIndicator_PDU);
1247 offset += 7; offset >>= 3;
1248 return offset;
1250 static int dissect_CSGMembershipStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1251 int offset = 0;
1252 asn1_ctx_t asn1_ctx;
1253 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1254 offset = dissect_rua_CSGMembershipStatus(tvb, offset, &asn1_ctx, tree, hf_rua_CSGMembershipStatus_PDU);
1255 offset += 7; offset >>= 3;
1256 return offset;
1258 static int dissect_Establishment_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1259 int offset = 0;
1260 asn1_ctx_t asn1_ctx;
1261 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1262 offset = dissect_rua_Establishment_Cause(tvb, offset, &asn1_ctx, tree, hf_rua_Establishment_Cause_PDU);
1263 offset += 7; offset >>= 3;
1264 return offset;
1266 static int dissect_Context_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1267 int offset = 0;
1268 asn1_ctx_t asn1_ctx;
1269 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1270 offset = dissect_rua_Context_ID(tvb, offset, &asn1_ctx, tree, hf_rua_Context_ID_PDU);
1271 offset += 7; offset >>= 3;
1272 return offset;
1274 static int dissect_IntraDomainNasNodeSelector_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1275 int offset = 0;
1276 asn1_ctx_t asn1_ctx;
1277 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1278 offset = dissect_rua_IntraDomainNasNodeSelector(tvb, offset, &asn1_ctx, tree, hf_rua_IntraDomainNasNodeSelector_PDU);
1279 offset += 7; offset >>= 3;
1280 return offset;
1282 static int dissect_RANAP_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1283 int offset = 0;
1284 asn1_ctx_t asn1_ctx;
1285 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1286 offset = dissect_rua_RANAP_Message(tvb, offset, &asn1_ctx, tree, hf_rua_RANAP_Message_PDU);
1287 offset += 7; offset >>= 3;
1288 return offset;
1290 static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1291 int offset = 0;
1292 asn1_ctx_t asn1_ctx;
1293 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1294 offset = dissect_rua_Cause(tvb, offset, &asn1_ctx, tree, hf_rua_Cause_PDU);
1295 offset += 7; offset >>= 3;
1296 return offset;
1298 static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1299 int offset = 0;
1300 asn1_ctx_t asn1_ctx;
1301 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1302 offset = dissect_rua_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_rua_CriticalityDiagnostics_PDU);
1303 offset += 7; offset >>= 3;
1304 return offset;
1306 static int dissect_Connect_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1307 int offset = 0;
1308 asn1_ctx_t asn1_ctx;
1309 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1310 offset = dissect_rua_Connect(tvb, offset, &asn1_ctx, tree, hf_rua_Connect_PDU);
1311 offset += 7; offset >>= 3;
1312 return offset;
1314 static int dissect_DirectTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1315 int offset = 0;
1316 asn1_ctx_t asn1_ctx;
1317 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1318 offset = dissect_rua_DirectTransfer(tvb, offset, &asn1_ctx, tree, hf_rua_DirectTransfer_PDU);
1319 offset += 7; offset >>= 3;
1320 return offset;
1322 static int dissect_Disconnect_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1323 int offset = 0;
1324 asn1_ctx_t asn1_ctx;
1325 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1326 offset = dissect_rua_Disconnect(tvb, offset, &asn1_ctx, tree, hf_rua_Disconnect_PDU);
1327 offset += 7; offset >>= 3;
1328 return offset;
1330 static int dissect_ConnectionlessTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1331 int offset = 0;
1332 asn1_ctx_t asn1_ctx;
1333 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1334 offset = dissect_rua_ConnectionlessTransfer(tvb, offset, &asn1_ctx, tree, hf_rua_ConnectionlessTransfer_PDU);
1335 offset += 7; offset >>= 3;
1336 return offset;
1338 static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1339 int offset = 0;
1340 asn1_ctx_t asn1_ctx;
1341 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1342 offset = dissect_rua_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_rua_ErrorIndication_PDU);
1343 offset += 7; offset >>= 3;
1344 return offset;
1346 static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1347 int offset = 0;
1348 asn1_ctx_t asn1_ctx;
1349 asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, TRUE, pinfo);
1350 offset = dissect_rua_PrivateMessage(tvb, offset, &asn1_ctx, tree, hf_rua_PrivateMessage_PDU);
1351 offset += 7; offset >>= 3;
1352 return offset;
1354 static void dissect_RUA_PDU_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 dissect_rua_RUA_PDU(tvb, 0, &asn1_ctx, tree, hf_rua_RUA_PDU_PDU);
1361 /*--- End of included file: packet-rua-fn.c ---*/
1362 #line 89 "../../asn1/rua/packet-rua-template.c"
1364 static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1366 return (dissector_try_uint_new(rua_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE, NULL)) ? tvb_length(tvb) : 0;
1369 static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1371 return (dissector_try_uint_new(rua_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, FALSE, NULL)) ? tvb_length(tvb) : 0;
1374 static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1376 return (dissector_try_uint_new(rua_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE, NULL)) ? tvb_length(tvb) : 0;
1379 static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1381 return (dissector_try_uint_new(rua_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE, NULL)) ? tvb_length(tvb) : 0;
1384 static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1386 return (dissector_try_uint_new(rua_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree, FALSE, NULL)) ? tvb_length(tvb) : 0;
1389 static void
1390 dissect_rua(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
1392 proto_item *rua_item = NULL;
1393 proto_tree *rua_tree = NULL;
1395 /* make entry in the Protocol column on summary display */
1396 col_set_str(pinfo->cinfo, COL_PROTOCOL, "RUA");
1398 /* create the rua protocol tree */
1399 rua_item = proto_tree_add_item(tree, proto_rua, tvb, 0, -1, ENC_NA);
1400 rua_tree = proto_item_add_subtree(rua_item, ett_rua);
1402 dissect_RUA_PDU_PDU(tvb, pinfo, rua_tree);
1405 /*--- proto_register_rua -------------------------------------------*/
1406 void proto_register_rua(void) {
1407 module_t *rua_module;
1409 /* List of fields */
1411 static hf_register_info hf[] = {
1414 /*--- Included file: packet-rua-hfarr.c ---*/
1415 #line 1 "../../asn1/rua/packet-rua-hfarr.c"
1416 { &hf_rua_CN_DomainIndicator_PDU,
1417 { "CN-DomainIndicator", "rua.CN_DomainIndicator",
1418 FT_UINT32, BASE_DEC, VALS(rua_CN_DomainIndicator_vals), 0,
1419 NULL, HFILL }},
1420 { &hf_rua_CSGMembershipStatus_PDU,
1421 { "CSGMembershipStatus", "rua.CSGMembershipStatus",
1422 FT_UINT32, BASE_DEC, VALS(rua_CSGMembershipStatus_vals), 0,
1423 NULL, HFILL }},
1424 { &hf_rua_Establishment_Cause_PDU,
1425 { "Establishment-Cause", "rua.Establishment_Cause",
1426 FT_UINT32, BASE_DEC, VALS(rua_Establishment_Cause_vals), 0,
1427 NULL, HFILL }},
1428 { &hf_rua_Context_ID_PDU,
1429 { "Context-ID", "rua.Context_ID",
1430 FT_BYTES, BASE_NONE, NULL, 0,
1431 NULL, HFILL }},
1432 { &hf_rua_IntraDomainNasNodeSelector_PDU,
1433 { "IntraDomainNasNodeSelector", "rua.IntraDomainNasNodeSelector_element",
1434 FT_NONE, BASE_NONE, NULL, 0,
1435 NULL, HFILL }},
1436 { &hf_rua_RANAP_Message_PDU,
1437 { "RANAP-Message", "rua.RANAP_Message",
1438 FT_BYTES, BASE_NONE, NULL, 0,
1439 NULL, HFILL }},
1440 { &hf_rua_Cause_PDU,
1441 { "Cause", "rua.Cause",
1442 FT_UINT32, BASE_DEC, VALS(rua_Cause_vals), 0,
1443 NULL, HFILL }},
1444 { &hf_rua_CriticalityDiagnostics_PDU,
1445 { "CriticalityDiagnostics", "rua.CriticalityDiagnostics_element",
1446 FT_NONE, BASE_NONE, NULL, 0,
1447 NULL, HFILL }},
1448 { &hf_rua_Connect_PDU,
1449 { "Connect", "rua.Connect_element",
1450 FT_NONE, BASE_NONE, NULL, 0,
1451 NULL, HFILL }},
1452 { &hf_rua_DirectTransfer_PDU,
1453 { "DirectTransfer", "rua.DirectTransfer_element",
1454 FT_NONE, BASE_NONE, NULL, 0,
1455 NULL, HFILL }},
1456 { &hf_rua_Disconnect_PDU,
1457 { "Disconnect", "rua.Disconnect_element",
1458 FT_NONE, BASE_NONE, NULL, 0,
1459 NULL, HFILL }},
1460 { &hf_rua_ConnectionlessTransfer_PDU,
1461 { "ConnectionlessTransfer", "rua.ConnectionlessTransfer_element",
1462 FT_NONE, BASE_NONE, NULL, 0,
1463 NULL, HFILL }},
1464 { &hf_rua_ErrorIndication_PDU,
1465 { "ErrorIndication", "rua.ErrorIndication_element",
1466 FT_NONE, BASE_NONE, NULL, 0,
1467 NULL, HFILL }},
1468 { &hf_rua_PrivateMessage_PDU,
1469 { "PrivateMessage", "rua.PrivateMessage_element",
1470 FT_NONE, BASE_NONE, NULL, 0,
1471 NULL, HFILL }},
1472 { &hf_rua_RUA_PDU_PDU,
1473 { "RUA-PDU", "rua.RUA_PDU",
1474 FT_UINT32, BASE_DEC, VALS(rua_RUA_PDU_vals), 0,
1475 NULL, HFILL }},
1476 { &hf_rua_local,
1477 { "local", "rua.local",
1478 FT_UINT32, BASE_DEC, NULL, 0,
1479 "INTEGER_0_65535", HFILL }},
1480 { &hf_rua_global,
1481 { "global", "rua.global",
1482 FT_OID, BASE_NONE, NULL, 0,
1483 "OBJECT_IDENTIFIER", HFILL }},
1484 { &hf_rua_ProtocolIE_Container_item,
1485 { "ProtocolIE-Field", "rua.ProtocolIE_Field_element",
1486 FT_NONE, BASE_NONE, NULL, 0,
1487 NULL, HFILL }},
1488 { &hf_rua_protocol_ie_field_id,
1489 { "id", "rua.id",
1490 FT_UINT32, BASE_DEC, VALS(rua_ProtocolIE_ID_vals), 0,
1491 "ProtocolIE_ID", HFILL }},
1492 { &hf_rua_criticality,
1493 { "criticality", "rua.criticality",
1494 FT_UINT32, BASE_DEC, VALS(rua_Criticality_vals), 0,
1495 NULL, HFILL }},
1496 { &hf_rua_ie_field_value,
1497 { "value", "rua.value_element",
1498 FT_NONE, BASE_NONE, NULL, 0,
1499 "ProtocolIE_Field_value", HFILL }},
1500 { &hf_rua_ProtocolExtensionContainer_item,
1501 { "ProtocolExtensionField", "rua.ProtocolExtensionField_element",
1502 FT_NONE, BASE_NONE, NULL, 0,
1503 NULL, HFILL }},
1504 { &hf_rua_id,
1505 { "id", "rua.id",
1506 FT_UINT32, BASE_DEC, VALS(rua_ProtocolIE_ID_vals), 0,
1507 "ProtocolIE_ID", HFILL }},
1508 { &hf_rua_extensionValue,
1509 { "extensionValue", "rua.extensionValue_element",
1510 FT_NONE, BASE_NONE, NULL, 0,
1511 NULL, HFILL }},
1512 { &hf_rua_PrivateIE_Container_item,
1513 { "PrivateIE-Field", "rua.PrivateIE_Field_element",
1514 FT_NONE, BASE_NONE, NULL, 0,
1515 NULL, HFILL }},
1516 { &hf_rua_private_ie_field_id,
1517 { "id", "rua.id",
1518 FT_UINT32, BASE_DEC, VALS(rua_PrivateIE_ID_vals), 0,
1519 "PrivateIE_ID", HFILL }},
1520 { &hf_rua_private_value,
1521 { "value", "rua.value_element",
1522 FT_NONE, BASE_NONE, NULL, 0,
1523 "PrivateIE_Field_value", HFILL }},
1524 { &hf_rua_version,
1525 { "version", "rua.version",
1526 FT_UINT32, BASE_DEC, VALS(rua_T_version_vals), 0,
1527 NULL, HFILL }},
1528 { &hf_rua_release99,
1529 { "release99", "rua.release99_element",
1530 FT_NONE, BASE_NONE, NULL, 0,
1531 NULL, HFILL }},
1532 { &hf_rua_cn_Type,
1533 { "cn-Type", "rua.cn_Type",
1534 FT_UINT32, BASE_DEC, VALS(rua_T_cn_Type_vals), 0,
1535 NULL, HFILL }},
1536 { &hf_rua_gsm_Map_IDNNS,
1537 { "gsm-Map-IDNNS", "rua.gsm_Map_IDNNS_element",
1538 FT_NONE, BASE_NONE, NULL, 0,
1539 NULL, HFILL }},
1540 { &hf_rua_ansi_41_IDNNS,
1541 { "ansi-41-IDNNS", "rua.ansi_41_IDNNS",
1542 FT_BYTES, BASE_NONE, NULL, 0,
1543 NULL, HFILL }},
1544 { &hf_rua_later,
1545 { "later", "rua.later_element",
1546 FT_NONE, BASE_NONE, NULL, 0,
1547 NULL, HFILL }},
1548 { &hf_rua_futurecoding,
1549 { "futurecoding", "rua.futurecoding",
1550 FT_BYTES, BASE_NONE, NULL, 0,
1551 "BIT_STRING_SIZE_15", HFILL }},
1552 { &hf_rua_routingbasis,
1553 { "routingbasis", "rua.routingbasis",
1554 FT_UINT32, BASE_DEC, VALS(rua_T_routingbasis_vals), 0,
1555 NULL, HFILL }},
1556 { &hf_rua_localPTMSI,
1557 { "localPTMSI", "rua.localPTMSI_element",
1558 FT_NONE, BASE_NONE, NULL, 0,
1559 NULL, HFILL }},
1560 { &hf_rua_routingparameter,
1561 { "routingparameter", "rua.routingparameter",
1562 FT_BYTES, BASE_NONE, NULL, 0,
1563 NULL, HFILL }},
1564 { &hf_rua_tMSIofsamePLMN,
1565 { "tMSIofsamePLMN", "rua.tMSIofsamePLMN_element",
1566 FT_NONE, BASE_NONE, NULL, 0,
1567 NULL, HFILL }},
1568 { &hf_rua_tMSIofdifferentPLMN,
1569 { "tMSIofdifferentPLMN", "rua.tMSIofdifferentPLMN_element",
1570 FT_NONE, BASE_NONE, NULL, 0,
1571 NULL, HFILL }},
1572 { &hf_rua_iMSIresponsetopaging,
1573 { "iMSIresponsetopaging", "rua.iMSIresponsetopaging_element",
1574 FT_NONE, BASE_NONE, NULL, 0,
1575 NULL, HFILL }},
1576 { &hf_rua_iMSIcauseUEinitiatedEvent,
1577 { "iMSIcauseUEinitiatedEvent", "rua.iMSIcauseUEinitiatedEvent_element",
1578 FT_NONE, BASE_NONE, NULL, 0,
1579 NULL, HFILL }},
1580 { &hf_rua_iMEI,
1581 { "iMEI", "rua.iMEI_element",
1582 FT_NONE, BASE_NONE, NULL, 0,
1583 NULL, HFILL }},
1584 { &hf_rua_spare2,
1585 { "spare2", "rua.spare2_element",
1586 FT_NONE, BASE_NONE, NULL, 0,
1587 NULL, HFILL }},
1588 { &hf_rua_spare1,
1589 { "spare1", "rua.spare1_element",
1590 FT_NONE, BASE_NONE, NULL, 0,
1591 NULL, HFILL }},
1592 { &hf_rua_dummy,
1593 { "dummy", "rua.dummy",
1594 FT_BOOLEAN, BASE_NONE, NULL, 0,
1595 "BOOLEAN", HFILL }},
1596 { &hf_rua_radioNetwork,
1597 { "radioNetwork", "rua.radioNetwork",
1598 FT_UINT32, BASE_DEC, VALS(rua_CauseRadioNetwork_vals), 0,
1599 "CauseRadioNetwork", HFILL }},
1600 { &hf_rua_transport,
1601 { "transport", "rua.transport",
1602 FT_UINT32, BASE_DEC, VALS(rua_CauseTransport_vals), 0,
1603 "CauseTransport", HFILL }},
1604 { &hf_rua_protocol,
1605 { "protocol", "rua.protocol",
1606 FT_UINT32, BASE_DEC, VALS(rua_CauseProtocol_vals), 0,
1607 "CauseProtocol", HFILL }},
1608 { &hf_rua_misc,
1609 { "misc", "rua.misc",
1610 FT_UINT32, BASE_DEC, VALS(rua_CauseMisc_vals), 0,
1611 "CauseMisc", HFILL }},
1612 { &hf_rua_procedureCode,
1613 { "procedureCode", "rua.procedureCode",
1614 FT_UINT32, BASE_DEC, VALS(rua_ProcedureCode_vals), 0,
1615 NULL, HFILL }},
1616 { &hf_rua_triggeringMessage,
1617 { "triggeringMessage", "rua.triggeringMessage",
1618 FT_UINT32, BASE_DEC, VALS(rua_TriggeringMessage_vals), 0,
1619 NULL, HFILL }},
1620 { &hf_rua_procedureCriticality,
1621 { "procedureCriticality", "rua.procedureCriticality",
1622 FT_UINT32, BASE_DEC, VALS(rua_Criticality_vals), 0,
1623 "Criticality", HFILL }},
1624 { &hf_rua_iEsCriticalityDiagnostics,
1625 { "iEsCriticalityDiagnostics", "rua.iEsCriticalityDiagnostics",
1626 FT_UINT32, BASE_DEC, NULL, 0,
1627 "CriticalityDiagnostics_IE_List", HFILL }},
1628 { &hf_rua_iE_Extensions,
1629 { "iE-Extensions", "rua.iE_Extensions",
1630 FT_UINT32, BASE_DEC, NULL, 0,
1631 "ProtocolExtensionContainer", HFILL }},
1632 { &hf_rua_CriticalityDiagnostics_IE_List_item,
1633 { "CriticalityDiagnostics-IE-List item", "rua.CriticalityDiagnostics_IE_List_item_element",
1634 FT_NONE, BASE_NONE, NULL, 0,
1635 NULL, HFILL }},
1636 { &hf_rua_iECriticality,
1637 { "iECriticality", "rua.iECriticality",
1638 FT_UINT32, BASE_DEC, VALS(rua_Criticality_vals), 0,
1639 "Criticality", HFILL }},
1640 { &hf_rua_iE_ID,
1641 { "iE-ID", "rua.iE_ID",
1642 FT_UINT32, BASE_DEC, VALS(rua_ProtocolIE_ID_vals), 0,
1643 "ProtocolIE_ID", HFILL }},
1644 { &hf_rua_typeOfError,
1645 { "typeOfError", "rua.typeOfError",
1646 FT_UINT32, BASE_DEC, VALS(rua_TypeOfError_vals), 0,
1647 NULL, HFILL }},
1648 { &hf_rua_protocolIEs,
1649 { "protocolIEs", "rua.protocolIEs",
1650 FT_UINT32, BASE_DEC, NULL, 0,
1651 "ProtocolIE_Container", HFILL }},
1652 { &hf_rua_protocolExtensions,
1653 { "protocolExtensions", "rua.protocolExtensions",
1654 FT_UINT32, BASE_DEC, NULL, 0,
1655 "ProtocolExtensionContainer", HFILL }},
1656 { &hf_rua_privateIEs,
1657 { "privateIEs", "rua.privateIEs",
1658 FT_UINT32, BASE_DEC, NULL, 0,
1659 "PrivateIE_Container", HFILL }},
1660 { &hf_rua_initiatingMessage,
1661 { "initiatingMessage", "rua.initiatingMessage_element",
1662 FT_NONE, BASE_NONE, NULL, 0,
1663 NULL, HFILL }},
1664 { &hf_rua_successfulOutcome,
1665 { "successfulOutcome", "rua.successfulOutcome_element",
1666 FT_NONE, BASE_NONE, NULL, 0,
1667 NULL, HFILL }},
1668 { &hf_rua_unsuccessfulOutcome,
1669 { "unsuccessfulOutcome", "rua.unsuccessfulOutcome_element",
1670 FT_NONE, BASE_NONE, NULL, 0,
1671 NULL, HFILL }},
1672 { &hf_rua_initiatingMessagevalue,
1673 { "value", "rua.value_element",
1674 FT_NONE, BASE_NONE, NULL, 0,
1675 "InitiatingMessage_value", HFILL }},
1676 { &hf_rua_successfulOutcome_value,
1677 { "value", "rua.value_element",
1678 FT_NONE, BASE_NONE, NULL, 0,
1679 "SuccessfulOutcome_value", HFILL }},
1680 { &hf_rua_unsuccessfulOutcome_value,
1681 { "value", "rua.value_element",
1682 FT_NONE, BASE_NONE, NULL, 0,
1683 "UnsuccessfulOutcome_value", HFILL }},
1685 /*--- End of included file: packet-rua-hfarr.c ---*/
1686 #line 140 "../../asn1/rua/packet-rua-template.c"
1689 /* List of subtrees */
1690 static gint *ett[] = {
1691 &ett_rua,
1693 /*--- Included file: packet-rua-ettarr.c ---*/
1694 #line 1 "../../asn1/rua/packet-rua-ettarr.c"
1695 &ett_rua_PrivateIE_ID,
1696 &ett_rua_ProtocolIE_Container,
1697 &ett_rua_ProtocolIE_Field,
1698 &ett_rua_ProtocolExtensionContainer,
1699 &ett_rua_ProtocolExtensionField,
1700 &ett_rua_PrivateIE_Container,
1701 &ett_rua_PrivateIE_Field,
1702 &ett_rua_IntraDomainNasNodeSelector,
1703 &ett_rua_T_version,
1704 &ett_rua_T_release99,
1705 &ett_rua_T_cn_Type,
1706 &ett_rua_T_later,
1707 &ett_rua_Gsm_map_IDNNS,
1708 &ett_rua_T_routingbasis,
1709 &ett_rua_T_localPTMSI,
1710 &ett_rua_T_tMSIofsamePLMN,
1711 &ett_rua_T_tMSIofdifferentPLMN,
1712 &ett_rua_T_iMSIresponsetopaging,
1713 &ett_rua_T_iMSIcauseUEinitiatedEvent,
1714 &ett_rua_T_iMEI,
1715 &ett_rua_T_spare2,
1716 &ett_rua_T_spare1,
1717 &ett_rua_Cause,
1718 &ett_rua_CriticalityDiagnostics,
1719 &ett_rua_CriticalityDiagnostics_IE_List,
1720 &ett_rua_CriticalityDiagnostics_IE_List_item,
1721 &ett_rua_Connect,
1722 &ett_rua_DirectTransfer,
1723 &ett_rua_Disconnect,
1724 &ett_rua_ConnectionlessTransfer,
1725 &ett_rua_ErrorIndication,
1726 &ett_rua_PrivateMessage,
1727 &ett_rua_RUA_PDU,
1728 &ett_rua_InitiatingMessage,
1729 &ett_rua_SuccessfulOutcome,
1730 &ett_rua_UnsuccessfulOutcome,
1732 /*--- End of included file: packet-rua-ettarr.c ---*/
1733 #line 146 "../../asn1/rua/packet-rua-template.c"
1737 /* Register protocol */
1738 proto_rua = proto_register_protocol(PNAME, PSNAME, PFNAME);
1739 /* Register fields and subtrees */
1740 proto_register_field_array(proto_rua, hf, array_length(hf));
1741 proto_register_subtree_array(ett, array_length(ett));
1743 /* Register dissector */
1744 register_dissector("rua", dissect_rua, proto_rua);
1746 /* Register dissector tables */
1747 rua_ies_dissector_table = register_dissector_table("rua.ies", "RUA-PROTOCOL-IES", FT_UINT32, BASE_DEC);
1748 rua_extension_dissector_table = register_dissector_table("rua.extension", "RUA-PROTOCOL-EXTENSION", FT_UINT32, BASE_DEC);
1749 rua_proc_imsg_dissector_table = register_dissector_table("rua.proc.imsg", "RUA-ELEMENTARY-PROCEDURE InitiatingMessage", FT_UINT32, BASE_DEC);
1750 rua_proc_sout_dissector_table = register_dissector_table("rua.proc.sout", "RUA-ELEMENTARY-PROCEDURE SuccessfulOutcome", FT_UINT32, BASE_DEC);
1751 rua_proc_uout_dissector_table = register_dissector_table("rua.proc.uout", "RUA-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", FT_UINT32, BASE_DEC);
1753 rua_module = prefs_register_protocol(proto_rua, proto_reg_handoff_rua);
1754 prefs_register_uint_preference(rua_module, "port", "RUA SCTP Port", "Set the port for RUA messages (Default of 29169)", 10, &global_sctp_port);
1759 /*--- proto_reg_handoff_rua ---------------------------------------*/
1760 void
1761 proto_reg_handoff_rua(void)
1763 static gboolean initialized = FALSE;
1764 static dissector_handle_t rua_handle;
1765 static guint sctp_port;
1767 if (!initialized) {
1768 rua_handle = find_dissector("rua");
1769 ranap_handle = find_dissector("ranap");
1770 dissector_add_uint("sctp.ppi", RUA_PAYLOAD_PROTOCOL_ID, rua_handle);
1771 initialized = TRUE;
1773 /*--- Included file: packet-rua-dis-tab.c ---*/
1774 #line 1 "../../asn1/rua/packet-rua-dis-tab.c"
1775 dissector_add_uint("rua.ies", id_Cause, new_create_dissector_handle(dissect_Cause_PDU, proto_rua));
1776 dissector_add_uint("rua.ies", id_CriticalityDiagnostics, new_create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_rua));
1777 dissector_add_uint("rua.ies", id_Context_ID, new_create_dissector_handle(dissect_Context_ID_PDU, proto_rua));
1778 dissector_add_uint("rua.ies", id_RANAP_Message, new_create_dissector_handle(dissect_RANAP_Message_PDU, proto_rua));
1779 dissector_add_uint("rua.ies", id_IntraDomainNasNodeSelector, new_create_dissector_handle(dissect_IntraDomainNasNodeSelector_PDU, proto_rua));
1780 dissector_add_uint("rua.ies", id_Establishment_Cause, new_create_dissector_handle(dissect_Establishment_Cause_PDU, proto_rua));
1781 dissector_add_uint("rua.ies", id_CN_DomainIndicator, new_create_dissector_handle(dissect_CN_DomainIndicator_PDU, proto_rua));
1782 dissector_add_uint("rua.extension", id_CSGMembershipStatus, new_create_dissector_handle(dissect_CSGMembershipStatus_PDU, proto_rua));
1783 dissector_add_uint("rua.proc.imsg", id_Connect, new_create_dissector_handle(dissect_Connect_PDU, proto_rua));
1784 dissector_add_uint("rua.proc.imsg", id_DirectTransfer, new_create_dissector_handle(dissect_DirectTransfer_PDU, proto_rua));
1785 dissector_add_uint("rua.proc.imsg", id_Disconnect, new_create_dissector_handle(dissect_Disconnect_PDU, proto_rua));
1786 dissector_add_uint("rua.proc.imsg", id_ConnectionlessTransfer, new_create_dissector_handle(dissect_ConnectionlessTransfer_PDU, proto_rua));
1787 dissector_add_uint("rua.proc.imsg", id_ErrorIndication, new_create_dissector_handle(dissect_ErrorIndication_PDU, proto_rua));
1788 dissector_add_uint("rua.proc.imsg", id_privateMessage, new_create_dissector_handle(dissect_PrivateMessage_PDU, proto_rua));
1791 /*--- End of included file: packet-rua-dis-tab.c ---*/
1792 #line 185 "../../asn1/rua/packet-rua-template.c"
1794 } else {
1795 dissector_delete_uint("sctp.port", sctp_port, rua_handle);
1797 /* Set our port number for future use */
1798 sctp_port = global_sctp_port;
1799 dissector_add_uint("sctp.port", sctp_port, rua_handle);