Coverage Report

Created: 2026-01-02 06:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/wireshark/epan/dissectors/packet-rua.c
Line
Count
Source
1
/* Do not modify this file. Changes will be overwritten.                      */
2
/* Generated automatically by the ASN.1 to Wireshark dissector compiler       */
3
/* packet-rua.c                                                               */
4
/* asn2wrs.py -q -L -p rua -c ./rua.cnf -s ./packet-rua-template -D . -O ../.. RUA-CommonDataTypes.asn RUA-Constants.asn RUA-Containers.asn RUA-IEs.asn RUA-PDU-Contents.asn RUA-PDU-Descriptions.asn */
5
6
/* packet-rua-template.c
7
 * Routines for UMTS Home Node B RANAP User Adaptation (RUA) packet dissection
8
 * Copyright 2010 Neil Piercy, ip.access Limited <Neil.Piercy@ipaccess.com>
9
 *
10
 * Wireshark - Network traffic analyzer
11
 * By Gerald Combs <gerald@wireshark.org>
12
 * Copyright 1998 Gerald Combs
13
 *
14
 * SPDX-License-Identifier: GPL-2.0-or-later
15
 *
16
 * Ref: 3GPP TS 25.468 version 8.1.0 Release 8
17
 */
18
19
#include "config.h"
20
21
#include <epan/packet.h>
22
#include <epan/asn1.h>
23
#include <epan/prefs.h>
24
#include <wsutil/array.h>
25
26
#include "packet-per.h"
27
#include "packet-sctp.h"
28
29
30
14
#define PNAME  "UTRAN Iuh interface RUA signalling"
31
14
#define PSNAME "RUA"
32
14
#define PFNAME "rua"
33
/* Dissector to use SCTP PPID 19 or a configured SCTP port. IANA assigned port = 29169*/
34
14
#define SCTP_PORT_RUA              29169
35
36
void proto_register_rua(void);
37
38
7
#define maxPrivateIEs                  65535
39
10
#define maxProtocolExtensions          65535
40
250
#define maxProtocolIEs                 65535
41
0
#define maxNrOfErrors                  256
42
43
typedef enum _ProcedureCode_enum {
44
  id_Connect   =   1,
45
  id_DirectTransfer =   2,
46
  id_Disconnect =   3,
47
  id_ConnectionlessTransfer =   4,
48
  id_ErrorIndication =   5,
49
  id_privateMessage =   6
50
} ProcedureCode_enum;
51
52
typedef enum _ProtocolIE_ID_enum {
53
  id_Cause     =   1,
54
  id_CriticalityDiagnostics =   2,
55
  id_Context_ID =   3,
56
  id_RANAP_Message =   4,
57
  id_IntraDomainNasNodeSelector =   5,
58
  id_Establishment_Cause =   6,
59
  id_CN_DomainIndicator =   7,
60
  id_CSGMembershipStatus =   9
61
} ProtocolIE_ID_enum;
62
63
/* Initialize the protocol and registered fields */
64
static int proto_rua;
65
66
static int hf_rua_CN_DomainIndicator_PDU;         /* CN_DomainIndicator */
67
static int hf_rua_CSGMembershipStatus_PDU;        /* CSGMembershipStatus */
68
static int hf_rua_Establishment_Cause_PDU;        /* Establishment_Cause */
69
static int hf_rua_Context_ID_PDU;                 /* Context_ID */
70
static int hf_rua_IntraDomainNasNodeSelector_PDU;  /* IntraDomainNasNodeSelector */
71
static int hf_rua_RANAP_Message_PDU;              /* RANAP_Message */
72
static int hf_rua_Cause_PDU;                      /* Cause */
73
static int hf_rua_CriticalityDiagnostics_PDU;     /* CriticalityDiagnostics */
74
static int hf_rua_Connect_PDU;                    /* Connect */
75
static int hf_rua_DirectTransfer_PDU;             /* DirectTransfer */
76
static int hf_rua_Disconnect_PDU;                 /* Disconnect */
77
static int hf_rua_ConnectionlessTransfer_PDU;     /* ConnectionlessTransfer */
78
static int hf_rua_ErrorIndication_PDU;            /* ErrorIndication */
79
static int hf_rua_PrivateMessage_PDU;             /* PrivateMessage */
80
static int hf_rua_RUA_PDU_PDU;                    /* RUA_PDU */
81
static int hf_rua_local;                          /* INTEGER_0_65535 */
82
static int hf_rua_global;                         /* OBJECT_IDENTIFIER */
83
static int hf_rua_ProtocolIE_Container_item;      /* ProtocolIE_Field */
84
static int hf_rua_protocol_ie_field_id;           /* ProtocolIE_ID */
85
static int hf_rua_criticality;                    /* Criticality */
86
static int hf_rua_ie_field_value;                 /* ProtocolIE_Field_value */
87
static int hf_rua_ProtocolExtensionContainer_item;  /* ProtocolExtensionField */
88
static int hf_rua_id;                             /* ProtocolIE_ID */
89
static int hf_rua_extensionValue;                 /* T_extensionValue */
90
static int hf_rua_PrivateIE_Container_item;       /* PrivateIE_Field */
91
static int hf_rua_private_ie_field_id;            /* PrivateIE_ID */
92
static int hf_rua_private_value;                  /* PrivateIE_Field_value */
93
static int hf_rua_version;                        /* T_version */
94
static int hf_rua_release99;                      /* T_release99 */
95
static int hf_rua_cn_Type;                        /* T_cn_Type */
96
static int hf_rua_gsm_Map_IDNNS;                  /* Gsm_map_IDNNS */
97
static int hf_rua_ansi_41_IDNNS;                  /* Ansi_41_IDNNS */
98
static int hf_rua_later;                          /* T_later */
99
static int hf_rua_futurecoding;                   /* BIT_STRING_SIZE_15 */
100
static int hf_rua_routingbasis;                   /* T_routingbasis */
101
static int hf_rua_localPTMSI;                     /* T_localPTMSI */
102
static int hf_rua_routingparameter;               /* RoutingParameter */
103
static int hf_rua_tMSIofsamePLMN;                 /* T_tMSIofsamePLMN */
104
static int hf_rua_tMSIofdifferentPLMN;            /* T_tMSIofdifferentPLMN */
105
static int hf_rua_iMSIresponsetopaging;           /* T_iMSIresponsetopaging */
106
static int hf_rua_iMSIcauseUEinitiatedEvent;      /* T_iMSIcauseUEinitiatedEvent */
107
static int hf_rua_iMEI;                           /* T_iMEI */
108
static int hf_rua_spare2;                         /* T_spare2 */
109
static int hf_rua_spare1;                         /* T_spare1 */
110
static int hf_rua_dummy;                          /* BOOLEAN */
111
static int hf_rua_radioNetwork;                   /* CauseRadioNetwork */
112
static int hf_rua_transport;                      /* CauseTransport */
113
static int hf_rua_protocol;                       /* CauseProtocol */
114
static int hf_rua_misc;                           /* CauseMisc */
115
static int hf_rua_procedureCode;                  /* ProcedureCode */
116
static int hf_rua_triggeringMessage;              /* TriggeringMessage */
117
static int hf_rua_procedureCriticality;           /* Criticality */
118
static int hf_rua_iEsCriticalityDiagnostics;      /* CriticalityDiagnostics_IE_List */
119
static int hf_rua_iE_Extensions;                  /* ProtocolExtensionContainer */
120
static int hf_rua_CriticalityDiagnostics_IE_List_item;  /* CriticalityDiagnostics_IE_List_item */
121
static int hf_rua_iECriticality;                  /* Criticality */
122
static int hf_rua_iE_ID;                          /* ProtocolIE_ID */
123
static int hf_rua_typeOfError;                    /* TypeOfError */
124
static int hf_rua_protocolIEs;                    /* ProtocolIE_Container */
125
static int hf_rua_protocolExtensions;             /* ProtocolExtensionContainer */
126
static int hf_rua_privateIEs;                     /* PrivateIE_Container */
127
static int hf_rua_initiatingMessage;              /* InitiatingMessage */
128
static int hf_rua_successfulOutcome;              /* SuccessfulOutcome */
129
static int hf_rua_unsuccessfulOutcome;            /* UnsuccessfulOutcome */
130
static int hf_rua_initiatingMessagevalue;         /* InitiatingMessage_value */
131
static int hf_rua_successfulOutcome_value;        /* SuccessfulOutcome_value */
132
static int hf_rua_unsuccessfulOutcome_value;      /* UnsuccessfulOutcome_value */
133
134
/* Initialize the subtree pointers */
135
static int ett_rua;
136
137
 /* initialise sub-dissector handles */
138
 static dissector_handle_t ranap_handle = NULL;
139
140
static int ett_rua_PrivateIE_ID;
141
static int ett_rua_ProtocolIE_Container;
142
static int ett_rua_ProtocolIE_Field;
143
static int ett_rua_ProtocolExtensionContainer;
144
static int ett_rua_ProtocolExtensionField;
145
static int ett_rua_PrivateIE_Container;
146
static int ett_rua_PrivateIE_Field;
147
static int ett_rua_IntraDomainNasNodeSelector;
148
static int ett_rua_T_version;
149
static int ett_rua_T_release99;
150
static int ett_rua_T_cn_Type;
151
static int ett_rua_T_later;
152
static int ett_rua_Gsm_map_IDNNS;
153
static int ett_rua_T_routingbasis;
154
static int ett_rua_T_localPTMSI;
155
static int ett_rua_T_tMSIofsamePLMN;
156
static int ett_rua_T_tMSIofdifferentPLMN;
157
static int ett_rua_T_iMSIresponsetopaging;
158
static int ett_rua_T_iMSIcauseUEinitiatedEvent;
159
static int ett_rua_T_iMEI;
160
static int ett_rua_T_spare2;
161
static int ett_rua_T_spare1;
162
static int ett_rua_Cause;
163
static int ett_rua_CriticalityDiagnostics;
164
static int ett_rua_CriticalityDiagnostics_IE_List;
165
static int ett_rua_CriticalityDiagnostics_IE_List_item;
166
static int ett_rua_Connect;
167
static int ett_rua_DirectTransfer;
168
static int ett_rua_Disconnect;
169
static int ett_rua_ConnectionlessTransfer;
170
static int ett_rua_ErrorIndication;
171
static int ett_rua_PrivateMessage;
172
static int ett_rua_RUA_PDU;
173
static int ett_rua_InitiatingMessage;
174
static int ett_rua_SuccessfulOutcome;
175
static int ett_rua_UnsuccessfulOutcome;
176
177
/* Global variables */
178
static uint32_t ProcedureCode;
179
static uint32_t ProtocolIE_ID;
180
181
/* Dissector tables */
182
static dissector_table_t rua_ies_dissector_table;
183
static dissector_table_t rua_extension_dissector_table;
184
static dissector_table_t rua_proc_imsg_dissector_table;
185
static dissector_table_t rua_proc_sout_dissector_table;
186
static dissector_table_t rua_proc_uout_dissector_table;
187
188
static dissector_handle_t rua_handle;
189
190
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
191
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
192
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
193
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
194
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *);
195
196
void proto_reg_handoff_rua(void);
197
198
199
static const value_string rua_Criticality_vals[] = {
200
  {   0, "reject" },
201
  {   1, "ignore" },
202
  {   2, "notify" },
203
  { 0, NULL }
204
};
205
206
207
static unsigned
208
288
dissect_rua_Criticality(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
209
288
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
210
288
                                     3, NULL, false, 0, NULL);
211
212
288
  return offset;
213
288
}
214
215
216
static const value_string rua_ProcedureCode_vals[] = {
217
  { id_Connect, "id-Connect" },
218
  { id_DirectTransfer, "id-DirectTransfer" },
219
  { id_Disconnect, "id-Disconnect" },
220
  { id_ConnectionlessTransfer, "id-ConnectionlessTransfer" },
221
  { id_ErrorIndication, "id-ErrorIndication" },
222
  { id_privateMessage, "id-privateMessage" },
223
  { 0, NULL }
224
};
225
226
227
static unsigned
228
36
dissect_rua_ProcedureCode(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
229
36
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
230
36
                                                            0U, 255U, &ProcedureCode, false);
231
232
36
  if (strcmp(val_to_str_const(ProcedureCode, rua_ProcedureCode_vals, "Unknown"), "Unknown") == 0) {
233
5
    col_set_str(actx->pinfo->cinfo, COL_INFO,
234
5
                      "Unknown Message ");
235
5
  } /* Known Procedures should be included below and broken out as ELEMENTARY names to avoid confusion */
236
237
36
  return offset;
238
36
}
239
240
241
242
static unsigned
243
25
dissect_rua_INTEGER_0_65535(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
244
25
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
245
25
                                                            0U, 65535U, NULL, false);
246
247
25
  return offset;
248
25
}
249
250
251
252
static unsigned
253
6
dissect_rua_OBJECT_IDENTIFIER(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
254
6
  offset = dissect_per_object_identifier(tvb, offset, actx, tree, hf_index, NULL);
255
256
6
  return offset;
257
6
}
258
259
260
static const value_string rua_PrivateIE_ID_vals[] = {
261
  {   0, "local" },
262
  {   1, "global" },
263
  { 0, NULL }
264
};
265
266
static const per_choice_t PrivateIE_ID_choice[] = {
267
  {   0, &hf_rua_local           , ASN1_NO_EXTENSIONS     , dissect_rua_INTEGER_0_65535 },
268
  {   1, &hf_rua_global          , ASN1_NO_EXTENSIONS     , dissect_rua_OBJECT_IDENTIFIER },
269
  { 0, NULL, 0, NULL }
270
};
271
272
static unsigned
273
31
dissect_rua_PrivateIE_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
274
31
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
275
31
                                 ett_rua_PrivateIE_ID, PrivateIE_ID_choice,
276
31
                                 NULL);
277
278
31
  return offset;
279
31
}
280
281
282
static const value_string rua_ProtocolIE_ID_vals[] = {
283
  { id_Cause, "id-Cause" },
284
  { id_CriticalityDiagnostics, "id-CriticalityDiagnostics" },
285
  { id_Context_ID, "id-Context-ID" },
286
  { id_RANAP_Message, "id-RANAP-Message" },
287
  { id_IntraDomainNasNodeSelector, "id-IntraDomainNasNodeSelector" },
288
  { id_Establishment_Cause, "id-Establishment-Cause" },
289
  { id_CN_DomainIndicator, "id-CN-DomainIndicator" },
290
  { id_CSGMembershipStatus, "id-CSGMembershipStatus" },
291
  { 0, NULL }
292
};
293
294
295
static unsigned
296
227
dissect_rua_ProtocolIE_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
297
227
  offset = dissect_per_constrained_integer(tvb, offset, actx, tree, hf_index,
298
227
                                                            0U, maxProtocolIEs, &ProtocolIE_ID, false);
299
300
227
  if (tree) {
301
225
    proto_item_append_text(proto_item_get_parent_nth(actx->created_item, 2), ": %s",
302
225
                           val_to_str(actx->pinfo->pool, ProtocolIE_ID, VALS(rua_ProtocolIE_ID_vals), "unknown (%d)"));
303
225
  }
304
227
  return offset;
305
227
}
306
307
308
static const value_string rua_TriggeringMessage_vals[] = {
309
  {   0, "initiating-message" },
310
  {   1, "successful-outcome" },
311
  {   2, "unsuccessful-outcome" },
312
  { 0, NULL }
313
};
314
315
316
static unsigned
317
0
dissect_rua_TriggeringMessage(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
318
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
319
0
                                     3, NULL, false, 0, NULL);
320
321
0
  return offset;
322
0
}
323
324
325
326
static unsigned
327
128
dissect_rua_ProtocolIE_Field_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
328
128
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue);
329
330
128
  return offset;
331
128
}
332
333
334
static const per_sequence_t ProtocolIE_Field_sequence[] = {
335
  { &hf_rua_protocol_ie_field_id, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_ID },
336
  { &hf_rua_criticality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
337
  { &hf_rua_ie_field_value  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Field_value },
338
  { NULL, 0, 0, NULL }
339
};
340
341
static unsigned
342
139
dissect_rua_ProtocolIE_Field(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
343
139
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
344
139
                                   ett_rua_ProtocolIE_Field, ProtocolIE_Field_sequence);
345
346
139
  return offset;
347
139
}
348
349
350
static const per_sequence_t ProtocolIE_Container_sequence_of[1] = {
351
  { &hf_rua_ProtocolIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Field },
352
};
353
354
static unsigned
355
23
dissect_rua_ProtocolIE_Container(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
356
23
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
357
23
                                                  ett_rua_ProtocolIE_Container, ProtocolIE_Container_sequence_of,
358
23
                                                  0, maxProtocolIEs, false);
359
360
23
  return offset;
361
23
}
362
363
364
365
static unsigned
366
97
dissect_rua_T_extensionValue(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
367
97
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue);
368
369
97
  return offset;
370
97
}
371
372
373
static const per_sequence_t ProtocolExtensionField_sequence[] = {
374
  { &hf_rua_id              , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_ID },
375
  { &hf_rua_criticality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
376
  { &hf_rua_extensionValue  , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_T_extensionValue },
377
  { NULL, 0, 0, NULL }
378
};
379
380
static unsigned
381
104
dissect_rua_ProtocolExtensionField(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
382
104
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
383
104
                                   ett_rua_ProtocolExtensionField, ProtocolExtensionField_sequence);
384
385
104
  return offset;
386
104
}
387
388
389
static const per_sequence_t ProtocolExtensionContainer_sequence_of[1] = {
390
  { &hf_rua_ProtocolExtensionContainer_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolExtensionField },
391
};
392
393
static unsigned
394
10
dissect_rua_ProtocolExtensionContainer(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
395
10
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
396
10
                                                  ett_rua_ProtocolExtensionContainer, ProtocolExtensionContainer_sequence_of,
397
10
                                                  1, maxProtocolExtensions, false);
398
399
10
  return offset;
400
10
}
401
402
403
404
static unsigned
405
27
dissect_rua_PrivateIE_Field_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
406
27
  offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL);
407
408
27
  return offset;
409
27
}
410
411
412
static const per_sequence_t PrivateIE_Field_sequence[] = {
413
  { &hf_rua_private_ie_field_id, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_ID },
414
  { &hf_rua_criticality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
415
  { &hf_rua_private_value   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_Field_value },
416
  { NULL, 0, 0, NULL }
417
};
418
419
static unsigned
420
31
dissect_rua_PrivateIE_Field(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
421
31
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
422
31
                                   ett_rua_PrivateIE_Field, PrivateIE_Field_sequence);
423
424
31
  return offset;
425
31
}
426
427
428
static const per_sequence_t PrivateIE_Container_sequence_of[1] = {
429
  { &hf_rua_PrivateIE_Container_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_Field },
430
};
431
432
static unsigned
433
7
dissect_rua_PrivateIE_Container(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
434
7
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
435
7
                                                  ett_rua_PrivateIE_Container, PrivateIE_Container_sequence_of,
436
7
                                                  1, maxPrivateIEs, false);
437
438
7
  return offset;
439
7
}
440
441
442
static const value_string rua_CN_DomainIndicator_vals[] = {
443
  {   0, "cs-domain" },
444
  {   1, "ps-domain" },
445
  { 0, NULL }
446
};
447
448
449
static unsigned
450
0
dissect_rua_CN_DomainIndicator(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
451
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
452
0
                                     2, NULL, false, 0, NULL);
453
454
0
  return offset;
455
0
}
456
457
458
static const value_string rua_CSGMembershipStatus_vals[] = {
459
  {   0, "member" },
460
  {   1, "non-member" },
461
  { 0, NULL }
462
};
463
464
465
static unsigned
466
2
dissect_rua_CSGMembershipStatus(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
467
2
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
468
2
                                     2, NULL, true, 0, NULL);
469
470
2
  return offset;
471
2
}
472
473
474
static const value_string rua_Establishment_Cause_vals[] = {
475
  {   0, "emergency-call" },
476
  {   1, "normal-call" },
477
  { 0, NULL }
478
};
479
480
481
static unsigned
482
2
dissect_rua_Establishment_Cause(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
483
2
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
484
2
                                     2, NULL, true, 0, NULL);
485
486
2
  return offset;
487
2
}
488
489
490
491
static unsigned
492
0
dissect_rua_Context_ID(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
493
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
494
0
                                     24, 24, false, NULL, 0, NULL, NULL);
495
496
0
  return offset;
497
0
}
498
499
500
501
static unsigned
502
0
dissect_rua_RoutingParameter(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
503
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
504
0
                                     10, 10, false, NULL, 0, NULL, NULL);
505
506
0
  return offset;
507
0
}
508
509
510
static const per_sequence_t T_localPTMSI_sequence[] = {
511
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
512
  { NULL, 0, 0, NULL }
513
};
514
515
static unsigned
516
0
dissect_rua_T_localPTMSI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
517
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
518
0
                                   ett_rua_T_localPTMSI, T_localPTMSI_sequence);
519
520
0
  return offset;
521
0
}
522
523
524
static const per_sequence_t T_tMSIofsamePLMN_sequence[] = {
525
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
526
  { NULL, 0, 0, NULL }
527
};
528
529
static unsigned
530
0
dissect_rua_T_tMSIofsamePLMN(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
531
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
532
0
                                   ett_rua_T_tMSIofsamePLMN, T_tMSIofsamePLMN_sequence);
533
534
0
  return offset;
535
0
}
536
537
538
static const per_sequence_t T_tMSIofdifferentPLMN_sequence[] = {
539
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
540
  { NULL, 0, 0, NULL }
541
};
542
543
static unsigned
544
0
dissect_rua_T_tMSIofdifferentPLMN(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
545
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
546
0
                                   ett_rua_T_tMSIofdifferentPLMN, T_tMSIofdifferentPLMN_sequence);
547
548
0
  return offset;
549
0
}
550
551
552
static const per_sequence_t T_iMSIresponsetopaging_sequence[] = {
553
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
554
  { NULL, 0, 0, NULL }
555
};
556
557
static unsigned
558
0
dissect_rua_T_iMSIresponsetopaging(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
559
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
560
0
                                   ett_rua_T_iMSIresponsetopaging, T_iMSIresponsetopaging_sequence);
561
562
0
  return offset;
563
0
}
564
565
566
static const per_sequence_t T_iMSIcauseUEinitiatedEvent_sequence[] = {
567
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
568
  { NULL, 0, 0, NULL }
569
};
570
571
static unsigned
572
0
dissect_rua_T_iMSIcauseUEinitiatedEvent(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
573
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
574
0
                                   ett_rua_T_iMSIcauseUEinitiatedEvent, T_iMSIcauseUEinitiatedEvent_sequence);
575
576
0
  return offset;
577
0
}
578
579
580
static const per_sequence_t T_iMEI_sequence[] = {
581
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
582
  { NULL, 0, 0, NULL }
583
};
584
585
static unsigned
586
0
dissect_rua_T_iMEI(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
587
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
588
0
                                   ett_rua_T_iMEI, T_iMEI_sequence);
589
590
0
  return offset;
591
0
}
592
593
594
static const per_sequence_t T_spare2_sequence[] = {
595
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
596
  { NULL, 0, 0, NULL }
597
};
598
599
static unsigned
600
0
dissect_rua_T_spare2(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
601
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
602
0
                                   ett_rua_T_spare2, T_spare2_sequence);
603
604
0
  return offset;
605
0
}
606
607
608
static const per_sequence_t T_spare1_sequence[] = {
609
  { &hf_rua_routingparameter, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_RoutingParameter },
610
  { NULL, 0, 0, NULL }
611
};
612
613
static unsigned
614
0
dissect_rua_T_spare1(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
615
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
616
0
                                   ett_rua_T_spare1, T_spare1_sequence);
617
618
0
  return offset;
619
0
}
620
621
622
static const value_string rua_T_routingbasis_vals[] = {
623
  {   0, "localPTMSI" },
624
  {   1, "tMSIofsamePLMN" },
625
  {   2, "tMSIofdifferentPLMN" },
626
  {   3, "iMSIresponsetopaging" },
627
  {   4, "iMSIcauseUEinitiatedEvent" },
628
  {   5, "iMEI" },
629
  {   6, "spare2" },
630
  {   7, "spare1" },
631
  { 0, NULL }
632
};
633
634
static const per_choice_t T_routingbasis_choice[] = {
635
  {   0, &hf_rua_localPTMSI      , ASN1_NO_EXTENSIONS     , dissect_rua_T_localPTMSI },
636
  {   1, &hf_rua_tMSIofsamePLMN  , ASN1_NO_EXTENSIONS     , dissect_rua_T_tMSIofsamePLMN },
637
  {   2, &hf_rua_tMSIofdifferentPLMN, ASN1_NO_EXTENSIONS     , dissect_rua_T_tMSIofdifferentPLMN },
638
  {   3, &hf_rua_iMSIresponsetopaging, ASN1_NO_EXTENSIONS     , dissect_rua_T_iMSIresponsetopaging },
639
  {   4, &hf_rua_iMSIcauseUEinitiatedEvent, ASN1_NO_EXTENSIONS     , dissect_rua_T_iMSIcauseUEinitiatedEvent },
640
  {   5, &hf_rua_iMEI            , ASN1_NO_EXTENSIONS     , dissect_rua_T_iMEI },
641
  {   6, &hf_rua_spare2          , ASN1_NO_EXTENSIONS     , dissect_rua_T_spare2 },
642
  {   7, &hf_rua_spare1          , ASN1_NO_EXTENSIONS     , dissect_rua_T_spare1 },
643
  { 0, NULL, 0, NULL }
644
};
645
646
static unsigned
647
0
dissect_rua_T_routingbasis(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
648
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
649
0
                                 ett_rua_T_routingbasis, T_routingbasis_choice,
650
0
                                 NULL);
651
652
0
  return offset;
653
0
}
654
655
656
657
static unsigned
658
0
dissect_rua_BOOLEAN(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
659
0
  offset = dissect_per_boolean(tvb, offset, actx, tree, hf_index, NULL);
660
661
0
  return offset;
662
0
}
663
664
665
static const per_sequence_t Gsm_map_IDNNS_sequence[] = {
666
  { &hf_rua_routingbasis    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_T_routingbasis },
667
  { &hf_rua_dummy           , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_BOOLEAN },
668
  { NULL, 0, 0, NULL }
669
};
670
671
static unsigned
672
0
dissect_rua_Gsm_map_IDNNS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
673
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
674
0
                                   ett_rua_Gsm_map_IDNNS, Gsm_map_IDNNS_sequence);
675
676
0
  return offset;
677
0
}
678
679
680
681
static unsigned
682
0
dissect_rua_Ansi_41_IDNNS(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
683
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
684
0
                                     14, 14, false, NULL, 0, NULL, NULL);
685
686
0
  return offset;
687
0
}
688
689
690
static const value_string rua_T_cn_Type_vals[] = {
691
  {   0, "gsm-Map-IDNNS" },
692
  {   1, "ansi-41-IDNNS" },
693
  { 0, NULL }
694
};
695
696
static const per_choice_t T_cn_Type_choice[] = {
697
  {   0, &hf_rua_gsm_Map_IDNNS   , ASN1_NO_EXTENSIONS     , dissect_rua_Gsm_map_IDNNS },
698
  {   1, &hf_rua_ansi_41_IDNNS   , ASN1_NO_EXTENSIONS     , dissect_rua_Ansi_41_IDNNS },
699
  { 0, NULL, 0, NULL }
700
};
701
702
static unsigned
703
0
dissect_rua_T_cn_Type(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
704
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
705
0
                                 ett_rua_T_cn_Type, T_cn_Type_choice,
706
0
                                 NULL);
707
708
0
  return offset;
709
0
}
710
711
712
static const per_sequence_t T_release99_sequence[] = {
713
  { &hf_rua_cn_Type         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_T_cn_Type },
714
  { NULL, 0, 0, NULL }
715
};
716
717
static unsigned
718
0
dissect_rua_T_release99(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
719
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
720
0
                                   ett_rua_T_release99, T_release99_sequence);
721
722
0
  return offset;
723
0
}
724
725
726
727
static unsigned
728
0
dissect_rua_BIT_STRING_SIZE_15(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
729
0
  offset = dissect_per_bit_string(tvb, offset, actx, tree, hf_index,
730
0
                                     15, 15, false, NULL, 0, NULL, NULL);
731
732
0
  return offset;
733
0
}
734
735
736
static const per_sequence_t T_later_sequence[] = {
737
  { &hf_rua_futurecoding    , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_BIT_STRING_SIZE_15 },
738
  { NULL, 0, 0, NULL }
739
};
740
741
static unsigned
742
0
dissect_rua_T_later(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
743
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
744
0
                                   ett_rua_T_later, T_later_sequence);
745
746
0
  return offset;
747
0
}
748
749
750
static const value_string rua_T_version_vals[] = {
751
  {   0, "release99" },
752
  {   1, "later" },
753
  { 0, NULL }
754
};
755
756
static const per_choice_t T_version_choice[] = {
757
  {   0, &hf_rua_release99       , ASN1_NO_EXTENSIONS     , dissect_rua_T_release99 },
758
  {   1, &hf_rua_later           , ASN1_NO_EXTENSIONS     , dissect_rua_T_later },
759
  { 0, NULL, 0, NULL }
760
};
761
762
static unsigned
763
0
dissect_rua_T_version(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
764
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
765
0
                                 ett_rua_T_version, T_version_choice,
766
0
                                 NULL);
767
768
0
  return offset;
769
0
}
770
771
772
static const per_sequence_t IntraDomainNasNodeSelector_sequence[] = {
773
  { &hf_rua_version         , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_T_version },
774
  { NULL, 0, 0, NULL }
775
};
776
777
static unsigned
778
0
dissect_rua_IntraDomainNasNodeSelector(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
779
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
780
0
                                   ett_rua_IntraDomainNasNodeSelector, IntraDomainNasNodeSelector_sequence);
781
782
0
  return offset;
783
0
}
784
785
786
787
static unsigned
788
0
dissect_rua_RANAP_Message(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
789
0
  tvbuff_t *ranap_message_tvb=NULL;
790
0
  offset = dissect_per_octet_string(tvb, offset, actx, tree, hf_index,
791
0
                                       NO_BOUND, NO_BOUND, false, &ranap_message_tvb);
792
793
0
 if ((tvb_reported_length(ranap_message_tvb)>0)&&(ranap_handle)) {  /* RUA has a RANAP-PDU */
794
0
     col_set_str(actx->pinfo->cinfo, COL_INFO,
795
0
             "(RUA) ");                                    /* Set info to (RUA) to make room for RANAP */
796
0
     col_set_fence(actx->pinfo->cinfo, COL_INFO);
797
0
     call_dissector(ranap_handle,ranap_message_tvb,actx->pinfo, proto_tree_get_root(tree));
798
0
  }
799
800
0
  return offset;
801
0
}
802
803
804
static const value_string rua_CauseRadioNetwork_vals[] = {
805
  {   0, "normal" },
806
  {   1, "connect-failed" },
807
  {   2, "network-release" },
808
  {   3, "unspecified" },
809
  { 0, NULL }
810
};
811
812
813
static unsigned
814
0
dissect_rua_CauseRadioNetwork(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
815
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
816
0
                                     4, NULL, true, 0, NULL);
817
818
0
  return offset;
819
0
}
820
821
822
static const value_string rua_CauseTransport_vals[] = {
823
  {   0, "transport-resource-unavailable" },
824
  {   1, "unspecified" },
825
  { 0, NULL }
826
};
827
828
829
static unsigned
830
0
dissect_rua_CauseTransport(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
831
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
832
0
                                     2, NULL, true, 0, NULL);
833
834
0
  return offset;
835
0
}
836
837
838
static const value_string rua_CauseProtocol_vals[] = {
839
  {   0, "transfer-syntax-error" },
840
  {   1, "abstract-syntax-error-reject" },
841
  {   2, "abstract-syntax-error-ignore-and-notify" },
842
  {   3, "message-not-compatible-with-receiver-state" },
843
  {   4, "semantic-error" },
844
  {   5, "unspecified" },
845
  {   6, "abstract-syntax-error-falsely-constructed-message" },
846
  { 0, NULL }
847
};
848
849
850
static unsigned
851
0
dissect_rua_CauseProtocol(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
852
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
853
0
                                     7, NULL, true, 0, NULL);
854
855
0
  return offset;
856
0
}
857
858
859
static const value_string rua_CauseMisc_vals[] = {
860
  {   0, "processing-overload" },
861
  {   1, "hardware-failure" },
862
  {   2, "o-and-m-intervention" },
863
  {   3, "unspecified" },
864
  { 0, NULL }
865
};
866
867
868
static unsigned
869
0
dissect_rua_CauseMisc(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
870
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
871
0
                                     4, NULL, true, 0, NULL);
872
873
0
  return offset;
874
0
}
875
876
877
static const value_string rua_Cause_vals[] = {
878
  {   0, "radioNetwork" },
879
  {   1, "transport" },
880
  {   2, "protocol" },
881
  {   3, "misc" },
882
  { 0, NULL }
883
};
884
885
static const per_choice_t Cause_choice[] = {
886
  {   0, &hf_rua_radioNetwork    , ASN1_EXTENSION_ROOT    , dissect_rua_CauseRadioNetwork },
887
  {   1, &hf_rua_transport       , ASN1_EXTENSION_ROOT    , dissect_rua_CauseTransport },
888
  {   2, &hf_rua_protocol        , ASN1_EXTENSION_ROOT    , dissect_rua_CauseProtocol },
889
  {   3, &hf_rua_misc            , ASN1_EXTENSION_ROOT    , dissect_rua_CauseMisc },
890
  { 0, NULL, 0, NULL }
891
};
892
893
static unsigned
894
0
dissect_rua_Cause(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
895
0
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
896
0
                                 ett_rua_Cause, Cause_choice,
897
0
                                 NULL);
898
899
0
  return offset;
900
0
}
901
902
903
static const value_string rua_TypeOfError_vals[] = {
904
  {   0, "not-understood" },
905
  {   1, "missing" },
906
  { 0, NULL }
907
};
908
909
910
static unsigned
911
0
dissect_rua_TypeOfError(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
912
0
  offset = dissect_per_enumerated(tvb, offset, actx, tree, hf_index,
913
0
                                     2, NULL, true, 0, NULL);
914
915
0
  return offset;
916
0
}
917
918
919
static const per_sequence_t CriticalityDiagnostics_IE_List_item_sequence[] = {
920
  { &hf_rua_iECriticality   , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
921
  { &hf_rua_iE_ID           , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_ID },
922
  { &hf_rua_typeOfError     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_TypeOfError },
923
  { &hf_rua_iE_Extensions   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProtocolExtensionContainer },
924
  { NULL, 0, 0, NULL }
925
};
926
927
static unsigned
928
0
dissect_rua_CriticalityDiagnostics_IE_List_item(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
929
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
930
0
                                   ett_rua_CriticalityDiagnostics_IE_List_item, CriticalityDiagnostics_IE_List_item_sequence);
931
932
0
  return offset;
933
0
}
934
935
936
static const per_sequence_t CriticalityDiagnostics_IE_List_sequence_of[1] = {
937
  { &hf_rua_CriticalityDiagnostics_IE_List_item, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_CriticalityDiagnostics_IE_List_item },
938
};
939
940
static unsigned
941
0
dissect_rua_CriticalityDiagnostics_IE_List(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
942
0
  offset = dissect_per_constrained_sequence_of(tvb, offset, actx, tree, hf_index,
943
0
                                                  ett_rua_CriticalityDiagnostics_IE_List, CriticalityDiagnostics_IE_List_sequence_of,
944
0
                                                  1, maxNrOfErrors, false);
945
946
0
  return offset;
947
0
}
948
949
950
static const per_sequence_t CriticalityDiagnostics_sequence[] = {
951
  { &hf_rua_procedureCode   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProcedureCode },
952
  { &hf_rua_triggeringMessage, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_TriggeringMessage },
953
  { &hf_rua_procedureCriticality, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_Criticality },
954
  { &hf_rua_iEsCriticalityDiagnostics, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_CriticalityDiagnostics_IE_List },
955
  { &hf_rua_iE_Extensions   , ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProtocolExtensionContainer },
956
  { NULL, 0, 0, NULL }
957
};
958
959
static unsigned
960
1
dissect_rua_CriticalityDiagnostics(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
961
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
962
1
                                   ett_rua_CriticalityDiagnostics, CriticalityDiagnostics_sequence);
963
964
1
  return offset;
965
1
}
966
967
968
static const per_sequence_t Connect_sequence[] = {
969
  { &hf_rua_protocolIEs     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
970
  { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProtocolExtensionContainer },
971
  { NULL, 0, 0, NULL }
972
};
973
974
static unsigned
975
21
dissect_rua_Connect(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
976
21
    col_set_str(actx->pinfo->cinfo, COL_INFO,
977
21
             "CONNECT ");
978
21
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
979
21
                                   ett_rua_Connect, Connect_sequence);
980
981
982
983
21
  return offset;
984
21
}
985
986
987
static const per_sequence_t DirectTransfer_sequence[] = {
988
  { &hf_rua_protocolIEs     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
989
  { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProtocolExtensionContainer },
990
  { NULL, 0, 0, NULL }
991
};
992
993
static unsigned
994
1
dissect_rua_DirectTransfer(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
995
1
    col_set_str(actx->pinfo->cinfo, COL_INFO,
996
1
             "DIRECT_TRANSFER ");
997
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
998
1
                                   ett_rua_DirectTransfer, DirectTransfer_sequence);
999
1000
1001
1002
1
  return offset;
1003
1
}
1004
1005
1006
static const per_sequence_t Disconnect_sequence[] = {
1007
  { &hf_rua_protocolIEs     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1008
  { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProtocolExtensionContainer },
1009
  { NULL, 0, 0, NULL }
1010
};
1011
1012
static unsigned
1013
0
dissect_rua_Disconnect(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1014
0
    col_set_str(actx->pinfo->cinfo, COL_INFO,
1015
0
             "DISCONNECT ");
1016
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1017
0
                                   ett_rua_Disconnect, Disconnect_sequence);
1018
1019
1020
1021
0
  return offset;
1022
0
}
1023
1024
1025
static const per_sequence_t ConnectionlessTransfer_sequence[] = {
1026
  { &hf_rua_protocolIEs     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1027
  { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProtocolExtensionContainer },
1028
  { NULL, 0, 0, NULL }
1029
};
1030
1031
static unsigned
1032
1
dissect_rua_ConnectionlessTransfer(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1033
1
    col_set_str(actx->pinfo->cinfo, COL_INFO,
1034
1
             "CONNECTIONLESS_TRANSFER ");
1035
1
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1036
1
                                   ett_rua_ConnectionlessTransfer, ConnectionlessTransfer_sequence);
1037
1038
1039
1040
1
  return offset;
1041
1
}
1042
1043
1044
static const per_sequence_t ErrorIndication_sequence[] = {
1045
  { &hf_rua_protocolIEs     , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_ProtocolIE_Container },
1046
  { &hf_rua_protocolExtensions, ASN1_EXTENSION_ROOT    , ASN1_OPTIONAL    , dissect_rua_ProtocolExtensionContainer },
1047
  { NULL, 0, 0, NULL }
1048
};
1049
1050
static unsigned
1051
0
dissect_rua_ErrorIndication(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1052
0
    col_set_str(actx->pinfo->cinfo, COL_INFO,
1053
0
             "ERROR_INDICATION ");
1054
0
    col_set_fence(actx->pinfo->cinfo, COL_INFO); /* Protect info from CriticalityDiagnostics decodes */
1055
0
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1056
0
                                   ett_rua_ErrorIndication, ErrorIndication_sequence);
1057
1058
1059
1060
0
  return offset;
1061
0
}
1062
1063
1064
static const per_sequence_t PrivateMessage_sequence[] = {
1065
  { &hf_rua_privateIEs      , ASN1_EXTENSION_ROOT    , ASN1_NOT_OPTIONAL, dissect_rua_PrivateIE_Container },
1066
  { NULL, 0, 0, NULL }
1067
};
1068
1069
static unsigned
1070
7
dissect_rua_PrivateMessage(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1071
7
    col_set_str(actx->pinfo->cinfo, COL_INFO,
1072
7
             "PRIVATE_MESSAGE ");
1073
7
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1074
7
                                   ett_rua_PrivateMessage, PrivateMessage_sequence);
1075
1076
1077
1078
7
  return offset;
1079
7
}
1080
1081
1082
1083
static unsigned
1084
32
dissect_rua_InitiatingMessage_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1085
32
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue);
1086
1087
32
  return offset;
1088
32
}
1089
1090
1091
static const per_sequence_t InitiatingMessage_sequence[] = {
1092
  { &hf_rua_procedureCode   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProcedureCode },
1093
  { &hf_rua_criticality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
1094
  { &hf_rua_initiatingMessagevalue, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_InitiatingMessage_value },
1095
  { NULL, 0, 0, NULL }
1096
};
1097
1098
static unsigned
1099
32
dissect_rua_InitiatingMessage(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1100
32
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1101
32
                                   ett_rua_InitiatingMessage, InitiatingMessage_sequence);
1102
1103
32
  return offset;
1104
32
}
1105
1106
1107
1108
static unsigned
1109
2
dissect_rua_SuccessfulOutcome_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1110
2
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue);
1111
1112
2
  return offset;
1113
2
}
1114
1115
1116
static const per_sequence_t SuccessfulOutcome_sequence[] = {
1117
  { &hf_rua_procedureCode   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProcedureCode },
1118
  { &hf_rua_criticality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
1119
  { &hf_rua_successfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_SuccessfulOutcome_value },
1120
  { NULL, 0, 0, NULL }
1121
};
1122
1123
static unsigned
1124
2
dissect_rua_SuccessfulOutcome(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1125
2
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1126
2
                                   ett_rua_SuccessfulOutcome, SuccessfulOutcome_sequence);
1127
1128
2
  return offset;
1129
2
}
1130
1131
1132
1133
static unsigned
1134
2
dissect_rua_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1135
2
  offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue);
1136
1137
2
  return offset;
1138
2
}
1139
1140
1141
static const per_sequence_t UnsuccessfulOutcome_sequence[] = {
1142
  { &hf_rua_procedureCode   , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_ProcedureCode },
1143
  { &hf_rua_criticality     , ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_Criticality },
1144
  { &hf_rua_unsuccessfulOutcome_value, ASN1_NO_EXTENSIONS     , ASN1_NOT_OPTIONAL, dissect_rua_UnsuccessfulOutcome_value },
1145
  { NULL, 0, 0, NULL }
1146
};
1147
1148
static unsigned
1149
2
dissect_rua_UnsuccessfulOutcome(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1150
2
  offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index,
1151
2
                                   ett_rua_UnsuccessfulOutcome, UnsuccessfulOutcome_sequence);
1152
1153
2
  return offset;
1154
2
}
1155
1156
1157
static const value_string rua_RUA_PDU_vals[] = {
1158
  {   0, "initiatingMessage" },
1159
  {   1, "successfulOutcome" },
1160
  {   2, "unsuccessfulOutcome" },
1161
  { 0, NULL }
1162
};
1163
1164
static const per_choice_t RUA_PDU_choice[] = {
1165
  {   0, &hf_rua_initiatingMessage, ASN1_EXTENSION_ROOT    , dissect_rua_InitiatingMessage },
1166
  {   1, &hf_rua_successfulOutcome, ASN1_EXTENSION_ROOT    , dissect_rua_SuccessfulOutcome },
1167
  {   2, &hf_rua_unsuccessfulOutcome, ASN1_EXTENSION_ROOT    , dissect_rua_UnsuccessfulOutcome },
1168
  { 0, NULL, 0, NULL }
1169
};
1170
1171
static unsigned
1172
36
dissect_rua_RUA_PDU(tvbuff_t *tvb _U_, uint32_t offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1173
36
  offset = dissect_per_choice(tvb, offset, actx, tree, hf_index,
1174
36
                                 ett_rua_RUA_PDU, RUA_PDU_choice,
1175
36
                                 NULL);
1176
1177
36
  return offset;
1178
36
}
1179
1180
/*--- PDUs ---*/
1181
1182
0
static int dissect_CN_DomainIndicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1183
0
  unsigned offset = 0;
1184
0
  asn1_ctx_t asn1_ctx;
1185
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1186
0
  offset = dissect_rua_CN_DomainIndicator(tvb, offset, &asn1_ctx, tree, hf_rua_CN_DomainIndicator_PDU);
1187
0
  offset += 7; offset >>= 3;
1188
0
  return offset;
1189
0
}
1190
2
static int dissect_CSGMembershipStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1191
2
  unsigned offset = 0;
1192
2
  asn1_ctx_t asn1_ctx;
1193
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1194
2
  offset = dissect_rua_CSGMembershipStatus(tvb, offset, &asn1_ctx, tree, hf_rua_CSGMembershipStatus_PDU);
1195
2
  offset += 7; offset >>= 3;
1196
2
  return offset;
1197
2
}
1198
2
static int dissect_Establishment_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1199
2
  unsigned offset = 0;
1200
2
  asn1_ctx_t asn1_ctx;
1201
2
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1202
2
  offset = dissect_rua_Establishment_Cause(tvb, offset, &asn1_ctx, tree, hf_rua_Establishment_Cause_PDU);
1203
2
  offset += 7; offset >>= 3;
1204
2
  return offset;
1205
2
}
1206
0
static int dissect_Context_ID_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1207
0
  unsigned offset = 0;
1208
0
  asn1_ctx_t asn1_ctx;
1209
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1210
0
  offset = dissect_rua_Context_ID(tvb, offset, &asn1_ctx, tree, hf_rua_Context_ID_PDU);
1211
0
  offset += 7; offset >>= 3;
1212
0
  return offset;
1213
0
}
1214
0
static int dissect_IntraDomainNasNodeSelector_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1215
0
  unsigned offset = 0;
1216
0
  asn1_ctx_t asn1_ctx;
1217
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1218
0
  offset = dissect_rua_IntraDomainNasNodeSelector(tvb, offset, &asn1_ctx, tree, hf_rua_IntraDomainNasNodeSelector_PDU);
1219
0
  offset += 7; offset >>= 3;
1220
0
  return offset;
1221
0
}
1222
0
static int dissect_RANAP_Message_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1223
0
  unsigned offset = 0;
1224
0
  asn1_ctx_t asn1_ctx;
1225
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1226
0
  offset = dissect_rua_RANAP_Message(tvb, offset, &asn1_ctx, tree, hf_rua_RANAP_Message_PDU);
1227
0
  offset += 7; offset >>= 3;
1228
0
  return offset;
1229
0
}
1230
0
static int dissect_Cause_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1231
0
  unsigned offset = 0;
1232
0
  asn1_ctx_t asn1_ctx;
1233
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1234
0
  offset = dissect_rua_Cause(tvb, offset, &asn1_ctx, tree, hf_rua_Cause_PDU);
1235
0
  offset += 7; offset >>= 3;
1236
0
  return offset;
1237
0
}
1238
1
static int dissect_CriticalityDiagnostics_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1239
1
  unsigned offset = 0;
1240
1
  asn1_ctx_t asn1_ctx;
1241
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1242
1
  offset = dissect_rua_CriticalityDiagnostics(tvb, offset, &asn1_ctx, tree, hf_rua_CriticalityDiagnostics_PDU);
1243
1
  offset += 7; offset >>= 3;
1244
1
  return offset;
1245
1
}
1246
21
static int dissect_Connect_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1247
21
  unsigned offset = 0;
1248
21
  asn1_ctx_t asn1_ctx;
1249
21
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1250
21
  offset = dissect_rua_Connect(tvb, offset, &asn1_ctx, tree, hf_rua_Connect_PDU);
1251
21
  offset += 7; offset >>= 3;
1252
21
  return offset;
1253
21
}
1254
1
static int dissect_DirectTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1255
1
  unsigned offset = 0;
1256
1
  asn1_ctx_t asn1_ctx;
1257
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1258
1
  offset = dissect_rua_DirectTransfer(tvb, offset, &asn1_ctx, tree, hf_rua_DirectTransfer_PDU);
1259
1
  offset += 7; offset >>= 3;
1260
1
  return offset;
1261
1
}
1262
0
static int dissect_Disconnect_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1263
0
  unsigned offset = 0;
1264
0
  asn1_ctx_t asn1_ctx;
1265
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1266
0
  offset = dissect_rua_Disconnect(tvb, offset, &asn1_ctx, tree, hf_rua_Disconnect_PDU);
1267
0
  offset += 7; offset >>= 3;
1268
0
  return offset;
1269
0
}
1270
1
static int dissect_ConnectionlessTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1271
1
  unsigned offset = 0;
1272
1
  asn1_ctx_t asn1_ctx;
1273
1
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1274
1
  offset = dissect_rua_ConnectionlessTransfer(tvb, offset, &asn1_ctx, tree, hf_rua_ConnectionlessTransfer_PDU);
1275
1
  offset += 7; offset >>= 3;
1276
1
  return offset;
1277
1
}
1278
0
static int dissect_ErrorIndication_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1279
0
  unsigned offset = 0;
1280
0
  asn1_ctx_t asn1_ctx;
1281
0
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1282
0
  offset = dissect_rua_ErrorIndication(tvb, offset, &asn1_ctx, tree, hf_rua_ErrorIndication_PDU);
1283
0
  offset += 7; offset >>= 3;
1284
0
  return offset;
1285
0
}
1286
7
static int dissect_PrivateMessage_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1287
7
  unsigned offset = 0;
1288
7
  asn1_ctx_t asn1_ctx;
1289
7
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1290
7
  offset = dissect_rua_PrivateMessage(tvb, offset, &asn1_ctx, tree, hf_rua_PrivateMessage_PDU);
1291
7
  offset += 7; offset >>= 3;
1292
7
  return offset;
1293
7
}
1294
36
static int dissect_RUA_PDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
1295
36
  unsigned offset = 0;
1296
36
  asn1_ctx_t asn1_ctx;
1297
36
  asn1_ctx_init(&asn1_ctx, ASN1_ENC_PER, true, pinfo);
1298
36
  offset = dissect_rua_RUA_PDU(tvb, offset, &asn1_ctx, tree, hf_rua_RUA_PDU_PDU);
1299
36
  offset += 7; offset >>= 3;
1300
36
  return offset;
1301
36
}
1302
1303
1304
static int dissect_ProtocolIEFieldValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1305
29
{
1306
29
  return (dissector_try_uint_with_data(rua_ies_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, false, NULL)) ? tvb_captured_length(tvb) : 0;
1307
29
}
1308
1309
static int dissect_ProtocolExtensionFieldExtensionValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1310
34
{
1311
34
  return (dissector_try_uint_with_data(rua_extension_dissector_table, ProtocolIE_ID, tvb, pinfo, tree, false, NULL)) ? tvb_captured_length(tvb) : 0;
1312
34
}
1313
1314
static int dissect_InitiatingMessageValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1315
32
{
1316
32
  return (dissector_try_uint_with_data(rua_proc_imsg_dissector_table, ProcedureCode, tvb, pinfo, tree, false, NULL)) ? tvb_captured_length(tvb) : 0;
1317
32
}
1318
1319
static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1320
2
{
1321
2
  return (dissector_try_uint_with_data(rua_proc_sout_dissector_table, ProcedureCode, tvb, pinfo, tree, false, NULL)) ? tvb_captured_length(tvb) : 0;
1322
2
}
1323
1324
static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
1325
1
{
1326
1
  return (dissector_try_uint_with_data(rua_proc_uout_dissector_table, ProcedureCode, tvb, pinfo, tree, false, NULL)) ? tvb_captured_length(tvb) : 0;
1327
1
}
1328
1329
static int
1330
dissect_rua(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
1331
36
{
1332
36
    proto_item  *rua_item = NULL;
1333
36
    proto_tree  *rua_tree = NULL;
1334
1335
    /* make entry in the Protocol column on summary display */
1336
36
    col_set_str(pinfo->cinfo, COL_PROTOCOL, "RUA");
1337
1338
    /* create the rua protocol tree */
1339
36
    rua_item = proto_tree_add_item(tree, proto_rua, tvb, 0, -1, ENC_NA);
1340
36
    rua_tree = proto_item_add_subtree(rua_item, ett_rua);
1341
1342
36
    return dissect_RUA_PDU_PDU(tvb, pinfo, rua_tree, data);
1343
36
}
1344
1345
/*--- proto_register_rua -------------------------------------------*/
1346
14
void proto_register_rua(void) {
1347
1348
  /* List of fields */
1349
1350
14
  static hf_register_info hf[] = {
1351
1352
14
    { &hf_rua_CN_DomainIndicator_PDU,
1353
14
      { "CN-DomainIndicator", "rua.CN_DomainIndicator",
1354
14
        FT_UINT32, BASE_DEC, VALS(rua_CN_DomainIndicator_vals), 0,
1355
14
        NULL, HFILL }},
1356
14
    { &hf_rua_CSGMembershipStatus_PDU,
1357
14
      { "CSGMembershipStatus", "rua.CSGMembershipStatus",
1358
14
        FT_UINT32, BASE_DEC, VALS(rua_CSGMembershipStatus_vals), 0,
1359
14
        NULL, HFILL }},
1360
14
    { &hf_rua_Establishment_Cause_PDU,
1361
14
      { "Establishment-Cause", "rua.Establishment_Cause",
1362
14
        FT_UINT32, BASE_DEC, VALS(rua_Establishment_Cause_vals), 0,
1363
14
        NULL, HFILL }},
1364
14
    { &hf_rua_Context_ID_PDU,
1365
14
      { "Context-ID", "rua.Context_ID",
1366
14
        FT_BYTES, BASE_NONE, NULL, 0,
1367
14
        NULL, HFILL }},
1368
14
    { &hf_rua_IntraDomainNasNodeSelector_PDU,
1369
14
      { "IntraDomainNasNodeSelector", "rua.IntraDomainNasNodeSelector_element",
1370
14
        FT_NONE, BASE_NONE, NULL, 0,
1371
14
        NULL, HFILL }},
1372
14
    { &hf_rua_RANAP_Message_PDU,
1373
14
      { "RANAP-Message", "rua.RANAP_Message",
1374
14
        FT_BYTES, BASE_NONE, NULL, 0,
1375
14
        NULL, HFILL }},
1376
14
    { &hf_rua_Cause_PDU,
1377
14
      { "Cause", "rua.Cause",
1378
14
        FT_UINT32, BASE_DEC, VALS(rua_Cause_vals), 0,
1379
14
        NULL, HFILL }},
1380
14
    { &hf_rua_CriticalityDiagnostics_PDU,
1381
14
      { "CriticalityDiagnostics", "rua.CriticalityDiagnostics_element",
1382
14
        FT_NONE, BASE_NONE, NULL, 0,
1383
14
        NULL, HFILL }},
1384
14
    { &hf_rua_Connect_PDU,
1385
14
      { "Connect", "rua.Connect_element",
1386
14
        FT_NONE, BASE_NONE, NULL, 0,
1387
14
        NULL, HFILL }},
1388
14
    { &hf_rua_DirectTransfer_PDU,
1389
14
      { "DirectTransfer", "rua.DirectTransfer_element",
1390
14
        FT_NONE, BASE_NONE, NULL, 0,
1391
14
        NULL, HFILL }},
1392
14
    { &hf_rua_Disconnect_PDU,
1393
14
      { "Disconnect", "rua.Disconnect_element",
1394
14
        FT_NONE, BASE_NONE, NULL, 0,
1395
14
        NULL, HFILL }},
1396
14
    { &hf_rua_ConnectionlessTransfer_PDU,
1397
14
      { "ConnectionlessTransfer", "rua.ConnectionlessTransfer_element",
1398
14
        FT_NONE, BASE_NONE, NULL, 0,
1399
14
        NULL, HFILL }},
1400
14
    { &hf_rua_ErrorIndication_PDU,
1401
14
      { "ErrorIndication", "rua.ErrorIndication_element",
1402
14
        FT_NONE, BASE_NONE, NULL, 0,
1403
14
        NULL, HFILL }},
1404
14
    { &hf_rua_PrivateMessage_PDU,
1405
14
      { "PrivateMessage", "rua.PrivateMessage_element",
1406
14
        FT_NONE, BASE_NONE, NULL, 0,
1407
14
        NULL, HFILL }},
1408
14
    { &hf_rua_RUA_PDU_PDU,
1409
14
      { "RUA-PDU", "rua.RUA_PDU",
1410
14
        FT_UINT32, BASE_DEC, VALS(rua_RUA_PDU_vals), 0,
1411
14
        NULL, HFILL }},
1412
14
    { &hf_rua_local,
1413
14
      { "local", "rua.local",
1414
14
        FT_UINT32, BASE_DEC, NULL, 0,
1415
14
        "INTEGER_0_65535", HFILL }},
1416
14
    { &hf_rua_global,
1417
14
      { "global", "rua.global",
1418
14
        FT_OID, BASE_NONE, NULL, 0,
1419
14
        "OBJECT_IDENTIFIER", HFILL }},
1420
14
    { &hf_rua_ProtocolIE_Container_item,
1421
14
      { "ProtocolIE-Field", "rua.ProtocolIE_Field_element",
1422
14
        FT_NONE, BASE_NONE, NULL, 0,
1423
14
        NULL, HFILL }},
1424
14
    { &hf_rua_protocol_ie_field_id,
1425
14
      { "id", "rua.protocol_ie_field_id",
1426
14
        FT_UINT32, BASE_DEC, VALS(rua_ProtocolIE_ID_vals), 0,
1427
14
        "ProtocolIE_ID", HFILL }},
1428
14
    { &hf_rua_criticality,
1429
14
      { "criticality", "rua.criticality",
1430
14
        FT_UINT32, BASE_DEC, VALS(rua_Criticality_vals), 0,
1431
14
        NULL, HFILL }},
1432
14
    { &hf_rua_ie_field_value,
1433
14
      { "value", "rua.ie_field_value_element",
1434
14
        FT_NONE, BASE_NONE, NULL, 0,
1435
14
        "ProtocolIE_Field_value", HFILL }},
1436
14
    { &hf_rua_ProtocolExtensionContainer_item,
1437
14
      { "ProtocolExtensionField", "rua.ProtocolExtensionField_element",
1438
14
        FT_NONE, BASE_NONE, NULL, 0,
1439
14
        NULL, HFILL }},
1440
14
    { &hf_rua_id,
1441
14
      { "id", "rua.id",
1442
14
        FT_UINT32, BASE_DEC, VALS(rua_ProtocolIE_ID_vals), 0,
1443
14
        "ProtocolIE_ID", HFILL }},
1444
14
    { &hf_rua_extensionValue,
1445
14
      { "extensionValue", "rua.extensionValue_element",
1446
14
        FT_NONE, BASE_NONE, NULL, 0,
1447
14
        NULL, HFILL }},
1448
14
    { &hf_rua_PrivateIE_Container_item,
1449
14
      { "PrivateIE-Field", "rua.PrivateIE_Field_element",
1450
14
        FT_NONE, BASE_NONE, NULL, 0,
1451
14
        NULL, HFILL }},
1452
14
    { &hf_rua_private_ie_field_id,
1453
14
      { "id", "rua.private_ie_field_id",
1454
14
        FT_UINT32, BASE_DEC, VALS(rua_PrivateIE_ID_vals), 0,
1455
14
        "PrivateIE_ID", HFILL }},
1456
14
    { &hf_rua_private_value,
1457
14
      { "value", "rua.private_value_element",
1458
14
        FT_NONE, BASE_NONE, NULL, 0,
1459
14
        "PrivateIE_Field_value", HFILL }},
1460
14
    { &hf_rua_version,
1461
14
      { "version", "rua.version",
1462
14
        FT_UINT32, BASE_DEC, VALS(rua_T_version_vals), 0,
1463
14
        NULL, HFILL }},
1464
14
    { &hf_rua_release99,
1465
14
      { "release99", "rua.release99_element",
1466
14
        FT_NONE, BASE_NONE, NULL, 0,
1467
14
        NULL, HFILL }},
1468
14
    { &hf_rua_cn_Type,
1469
14
      { "cn-Type", "rua.cn_Type",
1470
14
        FT_UINT32, BASE_DEC, VALS(rua_T_cn_Type_vals), 0,
1471
14
        NULL, HFILL }},
1472
14
    { &hf_rua_gsm_Map_IDNNS,
1473
14
      { "gsm-Map-IDNNS", "rua.gsm_Map_IDNNS_element",
1474
14
        FT_NONE, BASE_NONE, NULL, 0,
1475
14
        NULL, HFILL }},
1476
14
    { &hf_rua_ansi_41_IDNNS,
1477
14
      { "ansi-41-IDNNS", "rua.ansi_41_IDNNS",
1478
14
        FT_BYTES, BASE_NONE, NULL, 0,
1479
14
        NULL, HFILL }},
1480
14
    { &hf_rua_later,
1481
14
      { "later", "rua.later_element",
1482
14
        FT_NONE, BASE_NONE, NULL, 0,
1483
14
        NULL, HFILL }},
1484
14
    { &hf_rua_futurecoding,
1485
14
      { "futurecoding", "rua.futurecoding",
1486
14
        FT_BYTES, BASE_NONE, NULL, 0,
1487
14
        "BIT_STRING_SIZE_15", HFILL }},
1488
14
    { &hf_rua_routingbasis,
1489
14
      { "routingbasis", "rua.routingbasis",
1490
14
        FT_UINT32, BASE_DEC, VALS(rua_T_routingbasis_vals), 0,
1491
14
        NULL, HFILL }},
1492
14
    { &hf_rua_localPTMSI,
1493
14
      { "localPTMSI", "rua.localPTMSI_element",
1494
14
        FT_NONE, BASE_NONE, NULL, 0,
1495
14
        NULL, HFILL }},
1496
14
    { &hf_rua_routingparameter,
1497
14
      { "routingparameter", "rua.routingparameter",
1498
14
        FT_BYTES, BASE_NONE, NULL, 0,
1499
14
        NULL, HFILL }},
1500
14
    { &hf_rua_tMSIofsamePLMN,
1501
14
      { "tMSIofsamePLMN", "rua.tMSIofsamePLMN_element",
1502
14
        FT_NONE, BASE_NONE, NULL, 0,
1503
14
        NULL, HFILL }},
1504
14
    { &hf_rua_tMSIofdifferentPLMN,
1505
14
      { "tMSIofdifferentPLMN", "rua.tMSIofdifferentPLMN_element",
1506
14
        FT_NONE, BASE_NONE, NULL, 0,
1507
14
        NULL, HFILL }},
1508
14
    { &hf_rua_iMSIresponsetopaging,
1509
14
      { "iMSIresponsetopaging", "rua.iMSIresponsetopaging_element",
1510
14
        FT_NONE, BASE_NONE, NULL, 0,
1511
14
        NULL, HFILL }},
1512
14
    { &hf_rua_iMSIcauseUEinitiatedEvent,
1513
14
      { "iMSIcauseUEinitiatedEvent", "rua.iMSIcauseUEinitiatedEvent_element",
1514
14
        FT_NONE, BASE_NONE, NULL, 0,
1515
14
        NULL, HFILL }},
1516
14
    { &hf_rua_iMEI,
1517
14
      { "iMEI", "rua.iMEI_element",
1518
14
        FT_NONE, BASE_NONE, NULL, 0,
1519
14
        NULL, HFILL }},
1520
14
    { &hf_rua_spare2,
1521
14
      { "spare2", "rua.spare2_element",
1522
14
        FT_NONE, BASE_NONE, NULL, 0,
1523
14
        NULL, HFILL }},
1524
14
    { &hf_rua_spare1,
1525
14
      { "spare1", "rua.spare1_element",
1526
14
        FT_NONE, BASE_NONE, NULL, 0,
1527
14
        NULL, HFILL }},
1528
14
    { &hf_rua_dummy,
1529
14
      { "dummy", "rua.dummy",
1530
14
        FT_BOOLEAN, BASE_NONE, NULL, 0,
1531
14
        "BOOLEAN", HFILL }},
1532
14
    { &hf_rua_radioNetwork,
1533
14
      { "radioNetwork", "rua.radioNetwork",
1534
14
        FT_UINT32, BASE_DEC, VALS(rua_CauseRadioNetwork_vals), 0,
1535
14
        "CauseRadioNetwork", HFILL }},
1536
14
    { &hf_rua_transport,
1537
14
      { "transport", "rua.transport",
1538
14
        FT_UINT32, BASE_DEC, VALS(rua_CauseTransport_vals), 0,
1539
14
        "CauseTransport", HFILL }},
1540
14
    { &hf_rua_protocol,
1541
14
      { "protocol", "rua.protocol",
1542
14
        FT_UINT32, BASE_DEC, VALS(rua_CauseProtocol_vals), 0,
1543
14
        "CauseProtocol", HFILL }},
1544
14
    { &hf_rua_misc,
1545
14
      { "misc", "rua.misc",
1546
14
        FT_UINT32, BASE_DEC, VALS(rua_CauseMisc_vals), 0,
1547
14
        "CauseMisc", HFILL }},
1548
14
    { &hf_rua_procedureCode,
1549
14
      { "procedureCode", "rua.procedureCode",
1550
14
        FT_UINT32, BASE_DEC, VALS(rua_ProcedureCode_vals), 0,
1551
14
        NULL, HFILL }},
1552
14
    { &hf_rua_triggeringMessage,
1553
14
      { "triggeringMessage", "rua.triggeringMessage",
1554
14
        FT_UINT32, BASE_DEC, VALS(rua_TriggeringMessage_vals), 0,
1555
14
        NULL, HFILL }},
1556
14
    { &hf_rua_procedureCriticality,
1557
14
      { "procedureCriticality", "rua.procedureCriticality",
1558
14
        FT_UINT32, BASE_DEC, VALS(rua_Criticality_vals), 0,
1559
14
        "Criticality", HFILL }},
1560
14
    { &hf_rua_iEsCriticalityDiagnostics,
1561
14
      { "iEsCriticalityDiagnostics", "rua.iEsCriticalityDiagnostics",
1562
14
        FT_UINT32, BASE_DEC, NULL, 0,
1563
14
        "CriticalityDiagnostics_IE_List", HFILL }},
1564
14
    { &hf_rua_iE_Extensions,
1565
14
      { "iE-Extensions", "rua.iE_Extensions",
1566
14
        FT_UINT32, BASE_DEC, NULL, 0,
1567
14
        "ProtocolExtensionContainer", HFILL }},
1568
14
    { &hf_rua_CriticalityDiagnostics_IE_List_item,
1569
14
      { "CriticalityDiagnostics-IE-List item", "rua.CriticalityDiagnostics_IE_List_item_element",
1570
14
        FT_NONE, BASE_NONE, NULL, 0,
1571
14
        NULL, HFILL }},
1572
14
    { &hf_rua_iECriticality,
1573
14
      { "iECriticality", "rua.iECriticality",
1574
14
        FT_UINT32, BASE_DEC, VALS(rua_Criticality_vals), 0,
1575
14
        "Criticality", HFILL }},
1576
14
    { &hf_rua_iE_ID,
1577
14
      { "iE-ID", "rua.iE_ID",
1578
14
        FT_UINT32, BASE_DEC, VALS(rua_ProtocolIE_ID_vals), 0,
1579
14
        "ProtocolIE_ID", HFILL }},
1580
14
    { &hf_rua_typeOfError,
1581
14
      { "typeOfError", "rua.typeOfError",
1582
14
        FT_UINT32, BASE_DEC, VALS(rua_TypeOfError_vals), 0,
1583
14
        NULL, HFILL }},
1584
14
    { &hf_rua_protocolIEs,
1585
14
      { "protocolIEs", "rua.protocolIEs",
1586
14
        FT_UINT32, BASE_DEC, NULL, 0,
1587
14
        "ProtocolIE_Container", HFILL }},
1588
14
    { &hf_rua_protocolExtensions,
1589
14
      { "protocolExtensions", "rua.protocolExtensions",
1590
14
        FT_UINT32, BASE_DEC, NULL, 0,
1591
14
        "ProtocolExtensionContainer", HFILL }},
1592
14
    { &hf_rua_privateIEs,
1593
14
      { "privateIEs", "rua.privateIEs",
1594
14
        FT_UINT32, BASE_DEC, NULL, 0,
1595
14
        "PrivateIE_Container", HFILL }},
1596
14
    { &hf_rua_initiatingMessage,
1597
14
      { "initiatingMessage", "rua.initiatingMessage_element",
1598
14
        FT_NONE, BASE_NONE, NULL, 0,
1599
14
        NULL, HFILL }},
1600
14
    { &hf_rua_successfulOutcome,
1601
14
      { "successfulOutcome", "rua.successfulOutcome_element",
1602
14
        FT_NONE, BASE_NONE, NULL, 0,
1603
14
        NULL, HFILL }},
1604
14
    { &hf_rua_unsuccessfulOutcome,
1605
14
      { "unsuccessfulOutcome", "rua.unsuccessfulOutcome_element",
1606
14
        FT_NONE, BASE_NONE, NULL, 0,
1607
14
        NULL, HFILL }},
1608
14
    { &hf_rua_initiatingMessagevalue,
1609
14
      { "value", "rua.initiatingMessagevalue_element",
1610
14
        FT_NONE, BASE_NONE, NULL, 0,
1611
14
        "InitiatingMessage_value", HFILL }},
1612
14
    { &hf_rua_successfulOutcome_value,
1613
14
      { "value", "rua.successfulOutcome_value_element",
1614
14
        FT_NONE, BASE_NONE, NULL, 0,
1615
14
        "SuccessfulOutcome_value", HFILL }},
1616
14
    { &hf_rua_unsuccessfulOutcome_value,
1617
14
      { "value", "rua.unsuccessfulOutcome_value_element",
1618
14
        FT_NONE, BASE_NONE, NULL, 0,
1619
14
        "UnsuccessfulOutcome_value", HFILL }},
1620
14
  };
1621
1622
  /* List of subtrees */
1623
14
  static int *ett[] = {
1624
14
          &ett_rua,
1625
14
    &ett_rua_PrivateIE_ID,
1626
14
    &ett_rua_ProtocolIE_Container,
1627
14
    &ett_rua_ProtocolIE_Field,
1628
14
    &ett_rua_ProtocolExtensionContainer,
1629
14
    &ett_rua_ProtocolExtensionField,
1630
14
    &ett_rua_PrivateIE_Container,
1631
14
    &ett_rua_PrivateIE_Field,
1632
14
    &ett_rua_IntraDomainNasNodeSelector,
1633
14
    &ett_rua_T_version,
1634
14
    &ett_rua_T_release99,
1635
14
    &ett_rua_T_cn_Type,
1636
14
    &ett_rua_T_later,
1637
14
    &ett_rua_Gsm_map_IDNNS,
1638
14
    &ett_rua_T_routingbasis,
1639
14
    &ett_rua_T_localPTMSI,
1640
14
    &ett_rua_T_tMSIofsamePLMN,
1641
14
    &ett_rua_T_tMSIofdifferentPLMN,
1642
14
    &ett_rua_T_iMSIresponsetopaging,
1643
14
    &ett_rua_T_iMSIcauseUEinitiatedEvent,
1644
14
    &ett_rua_T_iMEI,
1645
14
    &ett_rua_T_spare2,
1646
14
    &ett_rua_T_spare1,
1647
14
    &ett_rua_Cause,
1648
14
    &ett_rua_CriticalityDiagnostics,
1649
14
    &ett_rua_CriticalityDiagnostics_IE_List,
1650
14
    &ett_rua_CriticalityDiagnostics_IE_List_item,
1651
14
    &ett_rua_Connect,
1652
14
    &ett_rua_DirectTransfer,
1653
14
    &ett_rua_Disconnect,
1654
14
    &ett_rua_ConnectionlessTransfer,
1655
14
    &ett_rua_ErrorIndication,
1656
14
    &ett_rua_PrivateMessage,
1657
14
    &ett_rua_RUA_PDU,
1658
14
    &ett_rua_InitiatingMessage,
1659
14
    &ett_rua_SuccessfulOutcome,
1660
14
    &ett_rua_UnsuccessfulOutcome,
1661
14
  };
1662
1663
1664
  /* Register protocol */
1665
14
  proto_rua = proto_register_protocol(PNAME, PSNAME, PFNAME);
1666
  /* Register fields and subtrees */
1667
14
  proto_register_field_array(proto_rua, hf, array_length(hf));
1668
14
  proto_register_subtree_array(ett, array_length(ett));
1669
1670
  /* Register dissector */
1671
14
  rua_handle = register_dissector("rua", dissect_rua, proto_rua);
1672
1673
  /* Register dissector tables */
1674
14
  rua_ies_dissector_table = register_dissector_table("rua.ies", "RUA-PROTOCOL-IES", proto_rua, FT_UINT32, BASE_DEC);
1675
14
  rua_extension_dissector_table = register_dissector_table("rua.extension", "RUA-PROTOCOL-EXTENSION", proto_rua, FT_UINT32, BASE_DEC);
1676
14
  rua_proc_imsg_dissector_table = register_dissector_table("rua.proc.imsg", "RUA-ELEMENTARY-PROCEDURE InitiatingMessage", proto_rua, FT_UINT32, BASE_DEC);
1677
14
  rua_proc_sout_dissector_table = register_dissector_table("rua.proc.sout", "RUA-ELEMENTARY-PROCEDURE SuccessfulOutcome", proto_rua, FT_UINT32, BASE_DEC);
1678
14
  rua_proc_uout_dissector_table = register_dissector_table("rua.proc.uout", "RUA-ELEMENTARY-PROCEDURE UnsuccessfulOutcome", proto_rua, FT_UINT32, BASE_DEC);
1679
1680
  /* rua_module = prefs_register_protocol(proto_rua, NULL); */
1681
1682
14
}
1683
1684
1685
/*--- proto_reg_handoff_rua ---------------------------------------*/
1686
void
1687
proto_reg_handoff_rua(void)
1688
14
{
1689
14
        ranap_handle = find_dissector_add_dependency("ranap", proto_rua);
1690
14
        dissector_add_uint("sctp.ppi", RUA_PAYLOAD_PROTOCOL_ID, rua_handle);
1691
14
        dissector_add_uint_with_preference("sctp.port", SCTP_PORT_RUA, rua_handle);
1692
14
  dissector_add_uint("rua.ies", id_Cause, create_dissector_handle(dissect_Cause_PDU, proto_rua));
1693
14
  dissector_add_uint("rua.ies", id_CriticalityDiagnostics, create_dissector_handle(dissect_CriticalityDiagnostics_PDU, proto_rua));
1694
14
  dissector_add_uint("rua.ies", id_Context_ID, create_dissector_handle(dissect_Context_ID_PDU, proto_rua));
1695
14
  dissector_add_uint("rua.ies", id_RANAP_Message, create_dissector_handle(dissect_RANAP_Message_PDU, proto_rua));
1696
14
  dissector_add_uint("rua.ies", id_IntraDomainNasNodeSelector, create_dissector_handle(dissect_IntraDomainNasNodeSelector_PDU, proto_rua));
1697
14
  dissector_add_uint("rua.ies", id_Establishment_Cause, create_dissector_handle(dissect_Establishment_Cause_PDU, proto_rua));
1698
14
  dissector_add_uint("rua.ies", id_CN_DomainIndicator, create_dissector_handle(dissect_CN_DomainIndicator_PDU, proto_rua));
1699
14
  dissector_add_uint("rua.extension", id_CSGMembershipStatus, create_dissector_handle(dissect_CSGMembershipStatus_PDU, proto_rua));
1700
14
  dissector_add_uint("rua.proc.imsg", id_Connect, create_dissector_handle(dissect_Connect_PDU, proto_rua));
1701
14
  dissector_add_uint("rua.proc.imsg", id_DirectTransfer, create_dissector_handle(dissect_DirectTransfer_PDU, proto_rua));
1702
14
  dissector_add_uint("rua.proc.imsg", id_Disconnect, create_dissector_handle(dissect_Disconnect_PDU, proto_rua));
1703
14
  dissector_add_uint("rua.proc.imsg", id_ConnectionlessTransfer, create_dissector_handle(dissect_ConnectionlessTransfer_PDU, proto_rua));
1704
14
  dissector_add_uint("rua.proc.imsg", id_ErrorIndication, create_dissector_handle(dissect_ErrorIndication_PDU, proto_rua));
1705
14
  dissector_add_uint("rua.proc.imsg", id_privateMessage, create_dissector_handle(dissect_PrivateMessage_PDU, proto_rua));
1706
1707
14
}