Trivial warning fixes
[obnox/wireshark/wip.git] / epan / dissectors / packet-acse.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* packet-acse.c                                                              */
4 /* ../../tools/asn2wrs.py -b -e -p acse -c acse.cnf -s packet-acse-template acse.asn */
5
6 /* Input file: packet-acse-template.c */
7
8 #line 1 "packet-acse-template.c"
9 /*XXX
10   There is a bug in asn2wrs that it can not yet handle tagged assignments such
11   as EXTERNAL  ::=  [UNIVERSAL 8] IMPLICIT SEQUENCE {
12
13   This bug is workedaround by some .cnf magic but this should be cleaned up
14   once asn2wrs learns how to deal with tagged assignments
15 */
16
17 /* packet-acse.c
18  * Routines for ACSE packet dissection
19  *   Ronnie Sahlberg 2005
20  * dissect_acse() based original handwritten dissector by Sid
21  *   Yuriy Sidelnikov <YSidelnikov@hotmail.com>
22  *
23  *
24  * $Id$
25  *
26  * Wireshark - Network traffic analyzer
27  * By Gerald Combs <gerald@wireshark.org>
28  * Copyright 1998 Gerald Combs
29  *
30  * This program is free software; you can redistribute it and/or
31  * modify it under the terms of the GNU General Public License
32  * as published by the Free Software Foundation; either version 2
33  * of the License, or (at your option) any later version.
34  *
35  * This program is distributed in the hope that it will be useful,
36  * but WITHOUT ANY WARRANTY; without even the implied warranty of
37  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
38  * GNU General Public License for more details.
39  *
40  * You should have received a copy of the GNU General Public License
41  * along with this program; if not, write to the Free Software
42  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
43  */
44
45 #ifdef HAVE_CONFIG_H
46 # include "config.h"
47 #endif
48
49 #include <glib.h>
50 #include <epan/packet.h>
51 #include <epan/emem.h>
52 #include <epan/conversation.h>
53 #include <epan/oids.h>
54 #include <epan/asn1.h>
55
56 #include <stdio.h>
57 #include <string.h>
58
59 #include "packet-ber.h"
60 #include "packet-acse.h"
61 #include "packet-ses.h"
62 #include "packet-pres.h"
63 #include "packet-x509if.h"
64
65 #define PNAME  "ISO 8650-1 OSI Association Control Service"
66 #define PSNAME "ACSE"
67 #define PFNAME "acse"
68
69 #define ACSE_APDU_OID "2.2.1.0.1"
70
71 /* Initialize the protocol and registered fields */
72 int proto_acse = -1;
73
74 /*--- Included file: packet-acse-hf.c ---*/
75 #line 1 "packet-acse-hf.c"
76 static int hf_acse_direct_reference = -1;         /* T_direct_reference */
77 static int hf_acse_indirect_reference = -1;       /* T_indirect_reference */
78 static int hf_acse_data_value_descriptor = -1;    /* ObjectDescriptor */
79 static int hf_acse_encoding = -1;                 /* T_encoding */
80 static int hf_acse_single_ASN1_type = -1;         /* T_single_ASN1_type */
81 static int hf_acse_octet_aligned = -1;            /* T_octet_aligned */
82 static int hf_acse_arbitrary = -1;                /* BIT_STRING */
83 static int hf_acse_aarq = -1;                     /* AARQ_apdu */
84 static int hf_acse_aare = -1;                     /* AARE_apdu */
85 static int hf_acse_rlrq = -1;                     /* RLRQ_apdu */
86 static int hf_acse_rlre = -1;                     /* RLRE_apdu */
87 static int hf_acse_abrt = -1;                     /* ABRT_apdu */
88 static int hf_acse_adt = -1;                      /* A_DT_apdu */
89 static int hf_acse_acrq = -1;                     /* ACRQ_apdu */
90 static int hf_acse_acrp = -1;                     /* ACRP_apdu */
91 static int hf_acse_aARQ_protocol_version = -1;    /* T_AARQ_protocol_version */
92 static int hf_acse_aARQ_aSO_context_name = -1;    /* T_AARQ_aSO_context_name */
93 static int hf_acse_called_AP_title = -1;          /* AP_title */
94 static int hf_acse_called_AE_qualifier = -1;      /* AE_qualifier */
95 static int hf_acse_called_AP_invocation_identifier = -1;  /* AP_invocation_identifier */
96 static int hf_acse_called_AE_invocation_identifier = -1;  /* AE_invocation_identifier */
97 static int hf_acse_calling_AP_title = -1;         /* AP_title */
98 static int hf_acse_calling_AE_qualifier = -1;     /* AE_qualifier */
99 static int hf_acse_calling_AP_invocation_identifier = -1;  /* AP_invocation_identifier */
100 static int hf_acse_calling_AE_invocation_identifier = -1;  /* AE_invocation_identifier */
101 static int hf_acse_sender_acse_requirements = -1;  /* ACSE_requirements */
102 static int hf_acse_mechanism_name = -1;           /* Mechanism_name */
103 static int hf_acse_calling_authentication_value = -1;  /* Authentication_value */
104 static int hf_acse_aSO_context_name_list = -1;    /* ASO_context_name_list */
105 static int hf_acse_implementation_information = -1;  /* Implementation_data */
106 static int hf_acse_p_context_definition_list = -1;  /* Syntactic_context_list */
107 static int hf_acse_called_asoi_tag = -1;          /* ASOI_tag */
108 static int hf_acse_calling_asoi_tag = -1;         /* ASOI_tag */
109 static int hf_acse_aARQ_user_information = -1;    /* Association_data */
110 static int hf_acse_aARE_protocol_version = -1;    /* T_AARE_protocol_version */
111 static int hf_acse_aARE_aSO_context_name = -1;    /* T_AARE_aSO_context_name */
112 static int hf_acse_result = -1;                   /* Associate_result */
113 static int hf_acse_result_source_diagnostic = -1;  /* Associate_source_diagnostic */
114 static int hf_acse_responding_AP_title = -1;      /* AP_title */
115 static int hf_acse_responding_AE_qualifier = -1;  /* AE_qualifier */
116 static int hf_acse_responding_AP_invocation_identifier = -1;  /* AP_invocation_identifier */
117 static int hf_acse_responding_AE_invocation_identifier = -1;  /* AE_invocation_identifier */
118 static int hf_acse_responder_acse_requirements = -1;  /* ACSE_requirements */
119 static int hf_acse_responding_authentication_value = -1;  /* Authentication_value */
120 static int hf_acse_p_context_result_list = -1;    /* P_context_result_list */
121 static int hf_acse_aARE_user_information = -1;    /* Association_data */
122 static int hf_acse_rLRQ_reason = -1;              /* Release_request_reason */
123 static int hf_acse_aso_qualifier = -1;            /* ASO_qualifier */
124 static int hf_acse_asoi_identifier = -1;          /* ASOI_identifier */
125 static int hf_acse_rLRQ_user_information = -1;    /* Association_data */
126 static int hf_acse_rLRE_reason = -1;              /* Release_response_reason */
127 static int hf_acse_rLRE_user_information = -1;    /* Association_data */
128 static int hf_acse_abort_source = -1;             /* ABRT_source */
129 static int hf_acse_abort_diagnostic = -1;         /* ABRT_diagnostic */
130 static int hf_acse_aBRT_user_information = -1;    /* Association_data */
131 static int hf_acse_a_user_data = -1;              /* User_Data */
132 static int hf_acse_aCRQ_aSO_context_name = -1;    /* T_ACRQ_aSO_context_name */
133 static int hf_acse_user_information = -1;         /* User_information */
134 static int hf_acse_aSO_context_name = -1;         /* T_ACRP_aSO_context_name */
135 static int hf_acse_ap_title_form1 = -1;           /* AP_title_form1 */
136 static int hf_acse_ap_title_form2 = -1;           /* AP_title_form2 */
137 static int hf_acse_ap_title_form3 = -1;           /* AP_title_form3 */
138 static int hf_acse_aso_qualifier_form1 = -1;      /* ASO_qualifier_form1 */
139 static int hf_acse_aso_qualifier_form2 = -1;      /* ASO_qualifier_form2 */
140 static int hf_acse_aso_qualifier_form3 = -1;      /* ASO_qualifier_form3 */
141 static int hf_acse_aso_qualifier_form_any_octets = -1;  /* ASO_qualifier_form_octets */
142 static int hf_acse_ae_title_form1 = -1;           /* AE_title_form1 */
143 static int hf_acse_ae_title_form2 = -1;           /* AE_title_form2 */
144 static int hf_acse_ASOI_tag_item = -1;            /* ASOI_tag_item */
145 static int hf_acse_qualifier = -1;                /* ASO_qualifier */
146 static int hf_acse_identifier = -1;               /* ASOI_identifier */
147 static int hf_acse_ASO_context_name_list_item = -1;  /* ASO_context_name */
148 static int hf_acse_context_list = -1;             /* Context_list */
149 static int hf_acse_default_contact_list = -1;     /* Default_Context_List */
150 static int hf_acse_Context_list_item = -1;        /* Context_list_item */
151 static int hf_acse_pci = -1;                      /* Presentation_context_identifier */
152 static int hf_acse_abstract_syntax = -1;          /* Abstract_syntax_name */
153 static int hf_acse_transfer_syntaxes = -1;        /* SEQUENCE_OF_TransferSyntaxName */
154 static int hf_acse_transfer_syntaxes_item = -1;   /* TransferSyntaxName */
155 static int hf_acse_Default_Context_List_item = -1;  /* Default_Context_List_item */
156 static int hf_acse_abstract_syntax_name = -1;     /* Abstract_syntax_name */
157 static int hf_acse_transfer_syntax_name = -1;     /* TransferSyntaxName */
158 static int hf_acse_P_context_result_list_item = -1;  /* P_context_result_list_item */
159 static int hf_acse_pcontext_result = -1;          /* Result */
160 static int hf_acse_concrete_syntax_name = -1;     /* Concrete_syntax_name */
161 static int hf_acse_provider_reason = -1;          /* T_provider_reason */
162 static int hf_acse_acse_service_user = -1;        /* T_acse_service_user */
163 static int hf_acse_acse_service_provider = -1;    /* T_acse_service_provider */
164 static int hf_acse_Association_data_item = -1;    /* EXTERNALt */
165 static int hf_acse_simply_encoded_data = -1;      /* Simply_encoded_data */
166 static int hf_acse_fully_encoded_data = -1;       /* PDV_list */
167 static int hf_acse_presentation_context_identifier = -1;  /* Presentation_context_identifier */
168 static int hf_acse_presentation_data_values = -1;  /* T_presentation_data_values */
169 static int hf_acse_simple_ASN1_type = -1;         /* T_simple_ASN1_type */
170 static int hf_acse_octet_aligned_01 = -1;         /* OCTET_STRING */
171 static int hf_acse_other_mechanism_name = -1;     /* T_other_mechanism_name */
172 static int hf_acse_other_mechanism_value = -1;    /* T_other_mechanism_value */
173 static int hf_acse_charstring = -1;               /* GraphicString */
174 static int hf_acse_bitstring = -1;                /* BIT_STRING */
175 static int hf_acse_external = -1;                 /* EXTERNALt */
176 static int hf_acse_other = -1;                    /* Authentication_value_other */
177 /* named bits */
178 static int hf_acse_T_AARQ_protocol_version_version1 = -1;
179 static int hf_acse_T_AARE_protocol_version_version1 = -1;
180 static int hf_acse_ACSE_requirements_authentication = -1;
181 static int hf_acse_ACSE_requirements_aSO_context_negotiation = -1;
182 static int hf_acse_ACSE_requirements_higher_level_association = -1;
183 static int hf_acse_ACSE_requirements_nested_association = -1;
184
185 /*--- End of included file: packet-acse-hf.c ---*/
186 #line 66 "packet-acse-template.c"
187
188 /* Initialize the subtree pointers */
189 static gint ett_acse = -1;
190
191 /*--- Included file: packet-acse-ett.c ---*/
192 #line 1 "packet-acse-ett.c"
193 static gint ett_acse_EXTERNALt_U = -1;
194 static gint ett_acse_T_encoding = -1;
195 static gint ett_acse_ACSE_apdu = -1;
196 static gint ett_acse_AARQ_apdu_U = -1;
197 static gint ett_acse_T_AARQ_protocol_version = -1;
198 static gint ett_acse_AARE_apdu_U = -1;
199 static gint ett_acse_T_AARE_protocol_version = -1;
200 static gint ett_acse_RLRQ_apdu_U = -1;
201 static gint ett_acse_RLRE_apdu_U = -1;
202 static gint ett_acse_ABRT_apdu_U = -1;
203 static gint ett_acse_A_DT_apdu_U = -1;
204 static gint ett_acse_ACRQ_apdu_U = -1;
205 static gint ett_acse_ACRP_apdu_U = -1;
206 static gint ett_acse_ACSE_requirements = -1;
207 static gint ett_acse_AP_title = -1;
208 static gint ett_acse_ASO_qualifier = -1;
209 static gint ett_acse_AE_title = -1;
210 static gint ett_acse_ASOI_tag = -1;
211 static gint ett_acse_ASOI_tag_item = -1;
212 static gint ett_acse_ASO_context_name_list = -1;
213 static gint ett_acse_Syntactic_context_list = -1;
214 static gint ett_acse_Context_list = -1;
215 static gint ett_acse_Context_list_item = -1;
216 static gint ett_acse_SEQUENCE_OF_TransferSyntaxName = -1;
217 static gint ett_acse_Default_Context_List = -1;
218 static gint ett_acse_Default_Context_List_item = -1;
219 static gint ett_acse_P_context_result_list = -1;
220 static gint ett_acse_P_context_result_list_item = -1;
221 static gint ett_acse_Associate_source_diagnostic = -1;
222 static gint ett_acse_Association_data = -1;
223 static gint ett_acse_User_Data = -1;
224 static gint ett_acse_PDV_list = -1;
225 static gint ett_acse_T_presentation_data_values = -1;
226 static gint ett_acse_Authentication_value_other = -1;
227 static gint ett_acse_Authentication_value = -1;
228
229 /*--- End of included file: packet-acse-ett.c ---*/
230 #line 70 "packet-acse-template.c"
231
232 static struct SESSION_DATA_STRUCTURE* session = NULL;
233
234 static const char *object_identifier_id;
235 /* indirect_reference, used to pick up the signalling so we know what
236    kind of data is transferred in SES_DATA_TRANSFER_PDUs */
237 static guint32 indir_ref=0;
238
239 static proto_tree *top_tree=NULL;
240
241 #if NOT_NEEDED
242 /* to keep track of presentation context identifiers and protocol-oids */
243 typedef struct _acse_ctx_oid_t {
244         /* XXX here we should keep track of ADDRESS/PORT as well */
245         guint32 ctx_id;
246         char *oid;
247 } acse_ctx_oid_t;
248 static GHashTable *acse_ctx_oid_table = NULL;
249
250 static guint
251 acse_ctx_oid_hash(gconstpointer k)
252 {
253         acse_ctx_oid_t *aco=(acse_ctx_oid_t *)k;
254         return aco->ctx_id;
255 }
256 /* XXX this one should be made ADDRESS/PORT aware */
257 static gint
258 acse_ctx_oid_equal(gconstpointer k1, gconstpointer k2)
259 {
260         acse_ctx_oid_t *aco1=(acse_ctx_oid_t *)k1;
261         acse_ctx_oid_t *aco2=(acse_ctx_oid_t *)k2;
262         return aco1->ctx_id==aco2->ctx_id;
263 }
264
265 static void
266 acse_init(void)
267 {
268         if( acse_ctx_oid_table ){
269                 g_hash_table_destroy(acse_ctx_oid_table);
270                 acse_ctx_oid_table = NULL;
271         }
272         acse_ctx_oid_table = g_hash_table_new(acse_ctx_oid_hash,
273                         acse_ctx_oid_equal);
274
275 }
276
277 static void
278 register_ctx_id_and_oid(packet_info *pinfo _U_, guint32 idx, char *oid)
279 {
280         acse_ctx_oid_t *aco, *tmpaco;
281         aco=se_alloc(sizeof(acse_ctx_oid_t));
282         aco->ctx_id=idx;
283         aco->oid=se_strdup(oid);
284
285         /* if this ctx already exists, remove the old one first */
286         tmpaco=(acse_ctx_oid_t *)g_hash_table_lookup(acse_ctx_oid_table, aco);
287         if(tmpaco){
288                 g_hash_table_remove(acse_ctx_oid_table, tmpaco);
289         }
290         g_hash_table_insert(acse_ctx_oid_table, aco, aco);
291 }
292 static char *
293 find_oid_by_ctx_id(packet_info *pinfo _U_, guint32 idx)
294 {
295         acse_ctx_oid_t aco, *tmpaco;
296         aco.ctx_id=idx;
297         tmpaco=(acse_ctx_oid_t *)g_hash_table_lookup(acse_ctx_oid_table, &aco);
298         if(tmpaco){
299                 return tmpaco->oid;
300         }
301         return NULL;
302 }
303
304 # endif /* NOT_NEEDED */
305
306
307 /*--- Included file: packet-acse-fn.c ---*/
308 #line 1 "packet-acse-fn.c"
309
310
311 static int
312 dissect_acse_T_direct_reference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
313   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id);
314
315   return offset;
316 }
317
318
319
320 static int
321 dissect_acse_T_indirect_reference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
322 #line 71 "acse.cnf"
323   char *oid;
324   offset = dissect_ber_integer(FALSE, actx, tree, tvb, offset,
325                 hf_acse_indirect_reference,
326                 &indir_ref);
327
328   /* look up the indirect reference */
329   if((oid = find_oid_by_pres_ctx_id(actx->pinfo, indir_ref)) != NULL) {
330     object_identifier_id = ep_strdup(oid);
331   }
332
333   if(session)
334         session->pres_ctx_id = indir_ref;
335
336
337
338   return offset;
339 }
340
341
342
343 static int
344 dissect_acse_ObjectDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
345   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_ObjectDescriptor,
346                                             actx, tree, tvb, offset, hf_index,
347                                             NULL);
348
349   return offset;
350 }
351
352
353
354 static int
355 dissect_acse_T_single_ASN1_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
356 #line 88 "acse.cnf"
357   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree ? top_tree : tree);
358
359
360
361   return offset;
362 }
363
364
365
366 static int
367 dissect_acse_T_octet_aligned(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
368 #line 91 "acse.cnf"
369   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree ? top_tree : tree);
370
371
372
373   return offset;
374 }
375
376
377
378 static int
379 dissect_acse_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
380   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
381                                     NULL, hf_index, -1,
382                                     NULL);
383
384   return offset;
385 }
386
387
388 static const value_string acse_T_encoding_vals[] = {
389   {   0, "single-ASN1-type" },
390   {   1, "octet-aligned" },
391   {   2, "arbitrary" },
392   { 0, NULL }
393 };
394
395 static const ber_choice_t T_encoding_choice[] = {
396   {   0, &hf_acse_single_ASN1_type, BER_CLASS_CON, 0, 0, dissect_acse_T_single_ASN1_type },
397   {   1, &hf_acse_octet_aligned  , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_T_octet_aligned },
398   {   2, &hf_acse_arbitrary      , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_acse_BIT_STRING },
399   { 0, NULL, 0, 0, 0, NULL }
400 };
401
402 static int
403 dissect_acse_T_encoding(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
404   offset = dissect_ber_choice(actx, tree, tvb, offset,
405                                  T_encoding_choice, hf_index, ett_acse_T_encoding,
406                                  NULL);
407
408   return offset;
409 }
410
411
412 static const ber_sequence_t EXTERNALt_U_sequence[] = {
413   { &hf_acse_direct_reference, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_T_direct_reference },
414   { &hf_acse_indirect_reference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_T_indirect_reference },
415   { &hf_acse_data_value_descriptor, BER_CLASS_UNI, BER_UNI_TAG_ObjectDescriptor, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_ObjectDescriptor },
416   { &hf_acse_encoding       , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_acse_T_encoding },
417   { NULL, 0, 0, 0, NULL }
418 };
419
420 static int
421 dissect_acse_EXTERNALt_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
422   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
423                                    EXTERNALt_U_sequence, hf_index, ett_acse_EXTERNALt_U);
424
425   return offset;
426 }
427
428
429
430 int
431 dissect_acse_EXTERNALt(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
432   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
433                                       hf_index, BER_CLASS_UNI, 8, TRUE, dissect_acse_EXTERNALt_U);
434
435   return offset;
436 }
437
438
439 static const asn_namedbit T_AARQ_protocol_version_bits[] = {
440   {  0, &hf_acse_T_AARQ_protocol_version_version1, -1, -1, "version1", NULL },
441   { 0, NULL, 0, 0, NULL, NULL }
442 };
443
444 static int
445 dissect_acse_T_AARQ_protocol_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
446   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
447                                     T_AARQ_protocol_version_bits, hf_index, ett_acse_T_AARQ_protocol_version,
448                                     NULL);
449
450   return offset;
451 }
452
453
454
455 static int
456 dissect_acse_ASO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
457   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
458
459   return offset;
460 }
461
462
463
464 static int
465 dissect_acse_T_AARQ_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
466 #line 55 "acse.cnf"
467   offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
468                                          hf_index, &object_identifier_id);
469
470
471
472   return offset;
473 }
474
475
476
477 static int
478 dissect_acse_AP_title_form1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
479   offset = dissect_x509if_Name(implicit_tag, tvb, offset, actx, tree, hf_index);
480
481   return offset;
482 }
483
484
485
486 static int
487 dissect_acse_AP_title_form2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
488   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
489
490   return offset;
491 }
492
493
494
495 static int
496 dissect_acse_AP_title_form3(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
497   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
498                                             actx, tree, tvb, offset, hf_index,
499                                             NULL);
500
501   return offset;
502 }
503
504
505 const value_string acse_AP_title_vals[] = {
506   {   0, "ap-title-form1" },
507   {   1, "ap-title-form2" },
508   {   2, "ap-title-form3" },
509   { 0, NULL }
510 };
511
512 static const ber_choice_t AP_title_choice[] = {
513   {   0, &hf_acse_ap_title_form1 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title_form1 },
514   {   1, &hf_acse_ap_title_form2 , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title_form2 },
515   {   2, &hf_acse_ap_title_form3 , BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title_form3 },
516   { 0, NULL, 0, 0, 0, NULL }
517 };
518
519 int
520 dissect_acse_AP_title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
521   offset = dissect_ber_choice(actx, tree, tvb, offset,
522                                  AP_title_choice, hf_index, ett_acse_AP_title,
523                                  NULL);
524
525   return offset;
526 }
527
528
529
530 static int
531 dissect_acse_ASO_qualifier_form1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
532   offset = dissect_x509if_RelativeDistinguishedName(implicit_tag, tvb, offset, actx, tree, hf_index);
533
534   return offset;
535 }
536
537
538
539 static int
540 dissect_acse_ASO_qualifier_form2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
541   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
542                                                 NULL);
543
544   return offset;
545 }
546
547
548
549 static int
550 dissect_acse_ASO_qualifier_form3(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
551   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
552                                             actx, tree, tvb, offset, hf_index,
553                                             NULL);
554
555   return offset;
556 }
557
558
559
560 static int
561 dissect_acse_ASO_qualifier_form_octets(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
562   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
563                                        NULL);
564
565   return offset;
566 }
567
568
569 const value_string acse_ASO_qualifier_vals[] = {
570   {   0, "aso-qualifier-form1" },
571   {   1, "aso-qualifier-form2" },
572   {   2, "aso-qualifier-form3" },
573   {   3, "aso-qualifier-form-any-octets" },
574   { 0, NULL }
575 };
576
577 static const ber_choice_t ASO_qualifier_choice[] = {
578   {   0, &hf_acse_aso_qualifier_form1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form1 },
579   {   1, &hf_acse_aso_qualifier_form2, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form2 },
580   {   2, &hf_acse_aso_qualifier_form3, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form3 },
581   {   3, &hf_acse_aso_qualifier_form_any_octets, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form_octets },
582   { 0, NULL, 0, 0, 0, NULL }
583 };
584
585 int
586 dissect_acse_ASO_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
587   offset = dissect_ber_choice(actx, tree, tvb, offset,
588                                  ASO_qualifier_choice, hf_index, ett_acse_ASO_qualifier,
589                                  NULL);
590
591   return offset;
592 }
593
594
595
596 int
597 dissect_acse_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
598   offset = dissect_acse_ASO_qualifier(implicit_tag, tvb, offset, actx, tree, hf_index);
599
600   return offset;
601 }
602
603
604
605 int
606 dissect_acse_AP_invocation_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
607   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
608                                                 NULL);
609
610   return offset;
611 }
612
613
614
615 int
616 dissect_acse_AE_invocation_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
617   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
618                                                 NULL);
619
620   return offset;
621 }
622
623
624 static const asn_namedbit ACSE_requirements_bits[] = {
625   {  0, &hf_acse_ACSE_requirements_authentication, -1, -1, "authentication", NULL },
626   {  1, &hf_acse_ACSE_requirements_aSO_context_negotiation, -1, -1, "aSO-context-negotiation", NULL },
627   {  2, &hf_acse_ACSE_requirements_higher_level_association, -1, -1, "higher-level-association", NULL },
628   {  3, &hf_acse_ACSE_requirements_nested_association, -1, -1, "nested-association", NULL },
629   { 0, NULL, 0, 0, NULL, NULL }
630 };
631
632 static int
633 dissect_acse_ACSE_requirements(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
634   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
635                                     ACSE_requirements_bits, hf_index, ett_acse_ACSE_requirements,
636                                     NULL);
637
638   return offset;
639 }
640
641
642
643 static int
644 dissect_acse_Mechanism_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
645   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
646
647   return offset;
648 }
649
650
651
652 static int
653 dissect_acse_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
654   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
655                                             actx, tree, tvb, offset, hf_index,
656                                             NULL);
657
658   return offset;
659 }
660
661
662
663 static int
664 dissect_acse_T_other_mechanism_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
665   offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id);
666
667   return offset;
668 }
669
670
671
672 static int
673 dissect_acse_T_other_mechanism_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
674 #line 49 "acse.cnf"
675   offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree);
676
677
678
679   return offset;
680 }
681
682
683 static const ber_sequence_t Authentication_value_other_sequence[] = {
684   { &hf_acse_other_mechanism_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_T_other_mechanism_name },
685   { &hf_acse_other_mechanism_value, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_acse_T_other_mechanism_value },
686   { NULL, 0, 0, 0, NULL }
687 };
688
689 static int
690 dissect_acse_Authentication_value_other(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
691   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
692                                    Authentication_value_other_sequence, hf_index, ett_acse_Authentication_value_other);
693
694   return offset;
695 }
696
697
698 static const value_string acse_Authentication_value_vals[] = {
699   {   0, "charstring" },
700   {   1, "bitstring" },
701   {   2, "external" },
702   {   3, "other" },
703   { 0, NULL }
704 };
705
706 static const ber_choice_t Authentication_value_choice[] = {
707   {   0, &hf_acse_charstring     , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_acse_GraphicString },
708   {   1, &hf_acse_bitstring      , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_BIT_STRING },
709   {   2, &hf_acse_external       , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_acse_EXTERNALt },
710   {   3, &hf_acse_other          , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_acse_Authentication_value_other },
711   { 0, NULL, 0, 0, 0, NULL }
712 };
713
714 static int
715 dissect_acse_Authentication_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
716   offset = dissect_ber_choice(actx, tree, tvb, offset,
717                                  Authentication_value_choice, hf_index, ett_acse_Authentication_value,
718                                  NULL);
719
720   return offset;
721 }
722
723
724 static const ber_sequence_t ASO_context_name_list_sequence_of[1] = {
725   { &hf_acse_ASO_context_name_list_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_context_name },
726 };
727
728 static int
729 dissect_acse_ASO_context_name_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
730   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
731                                       ASO_context_name_list_sequence_of, hf_index, ett_acse_ASO_context_name_list);
732
733   return offset;
734 }
735
736
737
738 static int
739 dissect_acse_Implementation_data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
740   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
741                                             actx, tree, tvb, offset, hf_index,
742                                             NULL);
743
744   return offset;
745 }
746
747
748
749 static int
750 dissect_acse_Presentation_context_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
751   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
752                                                 NULL);
753
754   return offset;
755 }
756
757
758
759 static int
760 dissect_acse_Abstract_syntax_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
761   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
762
763   return offset;
764 }
765
766
767
768 static int
769 dissect_acse_TransferSyntaxName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
770   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
771
772   return offset;
773 }
774
775
776 static const ber_sequence_t SEQUENCE_OF_TransferSyntaxName_sequence_of[1] = {
777   { &hf_acse_transfer_syntaxes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_TransferSyntaxName },
778 };
779
780 static int
781 dissect_acse_SEQUENCE_OF_TransferSyntaxName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
782   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
783                                       SEQUENCE_OF_TransferSyntaxName_sequence_of, hf_index, ett_acse_SEQUENCE_OF_TransferSyntaxName);
784
785   return offset;
786 }
787
788
789 static const ber_sequence_t Context_list_item_sequence[] = {
790   { &hf_acse_pci            , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_acse_Presentation_context_identifier },
791   { &hf_acse_abstract_syntax, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_Abstract_syntax_name },
792   { &hf_acse_transfer_syntaxes, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_SEQUENCE_OF_TransferSyntaxName },
793   { NULL, 0, 0, 0, NULL }
794 };
795
796 static int
797 dissect_acse_Context_list_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
798   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
799                                    Context_list_item_sequence, hf_index, ett_acse_Context_list_item);
800
801   return offset;
802 }
803
804
805 static const ber_sequence_t Context_list_sequence_of[1] = {
806   { &hf_acse_Context_list_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_Context_list_item },
807 };
808
809 static int
810 dissect_acse_Context_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
811   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
812                                       Context_list_sequence_of, hf_index, ett_acse_Context_list);
813
814   return offset;
815 }
816
817
818 static const ber_sequence_t Default_Context_List_item_sequence[] = {
819   { &hf_acse_abstract_syntax_name, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Abstract_syntax_name },
820   { &hf_acse_transfer_syntax_name, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_TransferSyntaxName },
821   { NULL, 0, 0, 0, NULL }
822 };
823
824 static int
825 dissect_acse_Default_Context_List_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
826   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
827                                    Default_Context_List_item_sequence, hf_index, ett_acse_Default_Context_List_item);
828
829   return offset;
830 }
831
832
833 static const ber_sequence_t Default_Context_List_sequence_of[1] = {
834   { &hf_acse_Default_Context_List_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_Default_Context_List_item },
835 };
836
837 static int
838 dissect_acse_Default_Context_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
839   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
840                                       Default_Context_List_sequence_of, hf_index, ett_acse_Default_Context_List);
841
842   return offset;
843 }
844
845
846 static const value_string acse_Syntactic_context_list_vals[] = {
847   {   0, "context-list" },
848   {   1, "default-contact-list" },
849   { 0, NULL }
850 };
851
852 static const ber_choice_t Syntactic_context_list_choice[] = {
853   {   0, &hf_acse_context_list   , BER_CLASS_CON, 0, 0, dissect_acse_Context_list },
854   {   1, &hf_acse_default_contact_list, BER_CLASS_CON, 1, 0, dissect_acse_Default_Context_List },
855   { 0, NULL, 0, 0, 0, NULL }
856 };
857
858 static int
859 dissect_acse_Syntactic_context_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
860   offset = dissect_ber_choice(actx, tree, tvb, offset,
861                                  Syntactic_context_list_choice, hf_index, ett_acse_Syntactic_context_list,
862                                  NULL);
863
864   return offset;
865 }
866
867
868
869 static int
870 dissect_acse_ASOI_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
871   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
872                                                 NULL);
873
874   return offset;
875 }
876
877
878 static const ber_sequence_t ASOI_tag_item_sequence[] = {
879   { &hf_acse_qualifier      , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
880   { &hf_acse_identifier     , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_acse_ASOI_identifier },
881   { NULL, 0, 0, 0, NULL }
882 };
883
884 static int
885 dissect_acse_ASOI_tag_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
886   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
887                                    ASOI_tag_item_sequence, hf_index, ett_acse_ASOI_tag_item);
888
889   return offset;
890 }
891
892
893 static const ber_sequence_t ASOI_tag_sequence_of[1] = {
894   { &hf_acse_ASOI_tag_item  , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_ASOI_tag_item },
895 };
896
897 static int
898 dissect_acse_ASOI_tag(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
899   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
900                                       ASOI_tag_sequence_of, hf_index, ett_acse_ASOI_tag);
901
902   return offset;
903 }
904
905
906 static const ber_sequence_t Association_data_sequence_of[1] = {
907   { &hf_acse_Association_data_item, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_acse_EXTERNALt },
908 };
909
910 static int
911 dissect_acse_Association_data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
912   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
913                                       Association_data_sequence_of, hf_index, ett_acse_Association_data);
914
915   return offset;
916 }
917
918
919 static const ber_sequence_t AARQ_apdu_U_sequence[] = {
920   { &hf_acse_aARQ_protocol_version, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_AARQ_protocol_version },
921   { &hf_acse_aARQ_aSO_context_name, BER_CLASS_CON, 1, 0, dissect_acse_T_AARQ_aSO_context_name },
922   { &hf_acse_called_AP_title, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AP_title },
923   { &hf_acse_called_AE_qualifier, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AE_qualifier },
924   { &hf_acse_called_AP_invocation_identifier, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_acse_AP_invocation_identifier },
925   { &hf_acse_called_AE_invocation_identifier, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_acse_AE_invocation_identifier },
926   { &hf_acse_calling_AP_title, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AP_title },
927   { &hf_acse_calling_AE_qualifier, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AE_qualifier },
928   { &hf_acse_calling_AP_invocation_identifier, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_acse_AP_invocation_identifier },
929   { &hf_acse_calling_AE_invocation_identifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_acse_AE_invocation_identifier },
930   { &hf_acse_sender_acse_requirements, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ACSE_requirements },
931   { &hf_acse_mechanism_name , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Mechanism_name },
932   { &hf_acse_calling_authentication_value, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Authentication_value },
933   { &hf_acse_aSO_context_name_list, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASO_context_name_list },
934   { &hf_acse_implementation_information, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Implementation_data },
935   { &hf_acse_p_context_definition_list, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Syntactic_context_list },
936   { &hf_acse_called_asoi_tag, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
937   { &hf_acse_calling_asoi_tag, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
938   { &hf_acse_aARQ_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
939   { NULL, 0, 0, 0, NULL }
940 };
941
942 static int
943 dissect_acse_AARQ_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
944   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
945                                    AARQ_apdu_U_sequence, hf_index, ett_acse_AARQ_apdu_U);
946
947   return offset;
948 }
949
950
951
952 static int
953 dissect_acse_AARQ_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
954   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
955                                       hf_index, BER_CLASS_APP, 0, TRUE, dissect_acse_AARQ_apdu_U);
956
957   return offset;
958 }
959
960
961 static const asn_namedbit T_AARE_protocol_version_bits[] = {
962   {  0, &hf_acse_T_AARE_protocol_version_version1, -1, -1, "version1", NULL },
963   { 0, NULL, 0, 0, NULL, NULL }
964 };
965
966 static int
967 dissect_acse_T_AARE_protocol_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
968   offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
969                                     T_AARE_protocol_version_bits, hf_index, ett_acse_T_AARE_protocol_version,
970                                     NULL);
971
972   return offset;
973 }
974
975
976
977 static int
978 dissect_acse_T_AARE_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
979 #line 59 "acse.cnf"
980   offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
981                                          hf_index, &object_identifier_id);
982
983
984
985   return offset;
986 }
987
988
989 static const value_string acse_Associate_result_vals[] = {
990   {   0, "accepted" },
991   {   1, "rejected-permanent" },
992   {   2, "rejected-transient" },
993   { 0, NULL }
994 };
995
996
997 static int
998 dissect_acse_Associate_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
999   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1000                                                 NULL);
1001
1002   return offset;
1003 }
1004
1005
1006 static const value_string acse_T_acse_service_user_vals[] = {
1007   {   0, "null" },
1008   {   1, "no-reason-given" },
1009   {   2, "application-context-name-not-supported" },
1010   {   3, "calling-AP-title-not-recognized" },
1011   {   4, "calling-AP-invocation-identifier-not-recognized" },
1012   {   5, "calling-AE-qualifier-not-recognized" },
1013   {   6, "calling-AE-invocation-identifier-not-recognized" },
1014   {   7, "called-AP-title-not-recognized" },
1015   {   8, "called-AP-invocation-identifier-not-recognized" },
1016   {   9, "called-AE-qualifier-not-recognized" },
1017   {  10, "called-AE-invocation-identifier-not-recognized" },
1018   {  11, "authentication-mechanism-name-not-recognized" },
1019   {  12, "authentication-mechanism-name-required" },
1020   {  13, "authentication-failure" },
1021   {  14, "authentication-required" },
1022   { 0, NULL }
1023 };
1024
1025
1026 static int
1027 dissect_acse_T_acse_service_user(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1028   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1029                                                 NULL);
1030
1031   return offset;
1032 }
1033
1034
1035 static const value_string acse_T_acse_service_provider_vals[] = {
1036   {   0, "null" },
1037   {   1, "no-reason-given" },
1038   {   2, "no-common-acse-version" },
1039   { 0, NULL }
1040 };
1041
1042
1043 static int
1044 dissect_acse_T_acse_service_provider(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1045   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1046                                                 NULL);
1047
1048   return offset;
1049 }
1050
1051
1052 static const value_string acse_Associate_source_diagnostic_vals[] = {
1053   {   1, "acse-service-user" },
1054   {   2, "acse-service-provider" },
1055   { 0, NULL }
1056 };
1057
1058 static const ber_choice_t Associate_source_diagnostic_choice[] = {
1059   {   1, &hf_acse_acse_service_user, BER_CLASS_CON, 1, 0, dissect_acse_T_acse_service_user },
1060   {   2, &hf_acse_acse_service_provider, BER_CLASS_CON, 2, 0, dissect_acse_T_acse_service_provider },
1061   { 0, NULL, 0, 0, 0, NULL }
1062 };
1063
1064 static int
1065 dissect_acse_Associate_source_diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1066   offset = dissect_ber_choice(actx, tree, tvb, offset,
1067                                  Associate_source_diagnostic_choice, hf_index, ett_acse_Associate_source_diagnostic,
1068                                  NULL);
1069
1070   return offset;
1071 }
1072
1073
1074 static const value_string acse_Result_vals[] = {
1075   {   0, "acceptance" },
1076   {   1, "user-rejection" },
1077   {   2, "provider-rejection" },
1078   { 0, NULL }
1079 };
1080
1081
1082 static int
1083 dissect_acse_Result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1084   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1085                                                 NULL);
1086
1087   return offset;
1088 }
1089
1090
1091
1092 static int
1093 dissect_acse_Concrete_syntax_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1094   offset = dissect_acse_TransferSyntaxName(implicit_tag, tvb, offset, actx, tree, hf_index);
1095
1096   return offset;
1097 }
1098
1099
1100 static const value_string acse_T_provider_reason_vals[] = {
1101   {   0, "reason-not-specified" },
1102   {   1, "abstract-syntax-not-supported" },
1103   {   2, "proposed-transfer-syntaxes-not-supported" },
1104   {   3, "local-limit-on-DCS-exceeded" },
1105   { 0, NULL }
1106 };
1107
1108
1109 static int
1110 dissect_acse_T_provider_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1111   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1112                                                 NULL);
1113
1114   return offset;
1115 }
1116
1117
1118 static const ber_sequence_t P_context_result_list_item_sequence[] = {
1119   { &hf_acse_pcontext_result, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_acse_Result },
1120   { &hf_acse_concrete_syntax_name, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Concrete_syntax_name },
1121   { &hf_acse_provider_reason, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_provider_reason },
1122   { NULL, 0, 0, 0, NULL }
1123 };
1124
1125 static int
1126 dissect_acse_P_context_result_list_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1127   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1128                                    P_context_result_list_item_sequence, hf_index, ett_acse_P_context_result_list_item);
1129
1130   return offset;
1131 }
1132
1133
1134 static const ber_sequence_t P_context_result_list_sequence_of[1] = {
1135   { &hf_acse_P_context_result_list_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_P_context_result_list_item },
1136 };
1137
1138 static int
1139 dissect_acse_P_context_result_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1140   offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1141                                       P_context_result_list_sequence_of, hf_index, ett_acse_P_context_result_list);
1142
1143   return offset;
1144 }
1145
1146
1147 static const ber_sequence_t AARE_apdu_U_sequence[] = {
1148   { &hf_acse_aARE_protocol_version, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_AARE_protocol_version },
1149   { &hf_acse_aARE_aSO_context_name, BER_CLASS_CON, 1, 0, dissect_acse_T_AARE_aSO_context_name },
1150   { &hf_acse_result         , BER_CLASS_CON, 2, 0, dissect_acse_Associate_result },
1151   { &hf_acse_result_source_diagnostic, BER_CLASS_CON, 3, BER_FLAGS_NOTCHKTAG, dissect_acse_Associate_source_diagnostic },
1152   { &hf_acse_responding_AP_title, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AP_title },
1153   { &hf_acse_responding_AE_qualifier, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AE_qualifier },
1154   { &hf_acse_responding_AP_invocation_identifier, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_acse_AP_invocation_identifier },
1155   { &hf_acse_responding_AE_invocation_identifier, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_acse_AE_invocation_identifier },
1156   { &hf_acse_responder_acse_requirements, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ACSE_requirements },
1157   { &hf_acse_mechanism_name , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Mechanism_name },
1158   { &hf_acse_responding_authentication_value, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Authentication_value },
1159   { &hf_acse_aSO_context_name_list, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASO_context_name_list },
1160   { &hf_acse_implementation_information, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Implementation_data },
1161   { &hf_acse_p_context_result_list, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_P_context_result_list },
1162   { &hf_acse_called_asoi_tag, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
1163   { &hf_acse_calling_asoi_tag, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
1164   { &hf_acse_aARE_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1165   { NULL, 0, 0, 0, NULL }
1166 };
1167
1168 static int
1169 dissect_acse_AARE_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1170   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1171                                    AARE_apdu_U_sequence, hf_index, ett_acse_AARE_apdu_U);
1172
1173   return offset;
1174 }
1175
1176
1177
1178 static int
1179 dissect_acse_AARE_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1180   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1181                                       hf_index, BER_CLASS_APP, 1, TRUE, dissect_acse_AARE_apdu_U);
1182
1183   return offset;
1184 }
1185
1186
1187 static const value_string acse_Release_request_reason_vals[] = {
1188   {   0, "normal" },
1189   {   1, "urgent" },
1190   {  30, "user-defined" },
1191   { 0, NULL }
1192 };
1193
1194
1195 static int
1196 dissect_acse_Release_request_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1197 #line 97 "acse.cnf"
1198   int reason = -1;
1199  
1200     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1201                                                 &reason);
1202
1203
1204   if((reason != -1) && check_col(actx->pinfo->cinfo, COL_INFO))
1205    col_append_fstr(actx->pinfo->cinfo, COL_INFO, "Release-Request (%s)", val_to_str(reason, acse_Release_request_reason_vals, "reason(%d)"));
1206
1207
1208
1209
1210   return offset;
1211 }
1212
1213
1214 static const ber_sequence_t RLRQ_apdu_U_sequence[] = {
1215   { &hf_acse_rLRQ_reason    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Release_request_reason },
1216   { &hf_acse_aso_qualifier  , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1217   { &hf_acse_asoi_identifier, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1218   { &hf_acse_rLRQ_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1219   { NULL, 0, 0, 0, NULL }
1220 };
1221
1222 static int
1223 dissect_acse_RLRQ_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1224   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1225                                    RLRQ_apdu_U_sequence, hf_index, ett_acse_RLRQ_apdu_U);
1226
1227   return offset;
1228 }
1229
1230
1231
1232 static int
1233 dissect_acse_RLRQ_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1234   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1235                                       hf_index, BER_CLASS_APP, 2, TRUE, dissect_acse_RLRQ_apdu_U);
1236
1237   return offset;
1238 }
1239
1240
1241 static const value_string acse_Release_response_reason_vals[] = {
1242   {   0, "normal" },
1243   {   1, "not-finished" },
1244   {  30, "user-defined" },
1245   { 0, NULL }
1246 };
1247
1248
1249 static int
1250 dissect_acse_Release_response_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1251 #line 109 "acse.cnf"
1252   int reason = -1;
1253  
1254     offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1255                                                 &reason);
1256
1257
1258   if((reason != -1) && check_col(actx->pinfo->cinfo, COL_INFO))
1259    col_append_fstr(actx->pinfo->cinfo, COL_INFO, "Release-Response (%s)", val_to_str(reason, acse_Release_request_reason_vals, "reason(%d)"));
1260
1261
1262
1263
1264   return offset;
1265 }
1266
1267
1268 static const ber_sequence_t RLRE_apdu_U_sequence[] = {
1269   { &hf_acse_rLRE_reason    , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Release_response_reason },
1270   { &hf_acse_aso_qualifier  , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1271   { &hf_acse_asoi_identifier, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1272   { &hf_acse_rLRE_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1273   { NULL, 0, 0, 0, NULL }
1274 };
1275
1276 static int
1277 dissect_acse_RLRE_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1278   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1279                                    RLRE_apdu_U_sequence, hf_index, ett_acse_RLRE_apdu_U);
1280
1281   return offset;
1282 }
1283
1284
1285
1286 static int
1287 dissect_acse_RLRE_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1288   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1289                                       hf_index, BER_CLASS_APP, 3, TRUE, dissect_acse_RLRE_apdu_U);
1290
1291   return offset;
1292 }
1293
1294
1295 static const value_string acse_ABRT_source_vals[] = {
1296   {   0, "acse-service-user" },
1297   {   1, "acse-service-provider" },
1298   { 0, NULL }
1299 };
1300
1301
1302 static int
1303 dissect_acse_ABRT_source(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1304   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1305                                                 NULL);
1306
1307   return offset;
1308 }
1309
1310
1311 static const value_string acse_ABRT_diagnostic_vals[] = {
1312   {   1, "no-reason-given" },
1313   {   2, "protocol-error" },
1314   {   3, "authentication-mechanism-name-not-recognized" },
1315   {   4, "authentication-mechanism-name-required" },
1316   {   5, "authentication-failure" },
1317   {   6, "authentication-required" },
1318   { 0, NULL }
1319 };
1320
1321
1322 static int
1323 dissect_acse_ABRT_diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1324   offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1325                                   NULL);
1326
1327   return offset;
1328 }
1329
1330
1331 static const ber_sequence_t ABRT_apdu_U_sequence[] = {
1332   { &hf_acse_abort_source   , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_acse_ABRT_source },
1333   { &hf_acse_abort_diagnostic, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ABRT_diagnostic },
1334   { &hf_acse_aso_qualifier  , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1335   { &hf_acse_asoi_identifier, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1336   { &hf_acse_aBRT_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1337   { NULL, 0, 0, 0, NULL }
1338 };
1339
1340 static int
1341 dissect_acse_ABRT_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1342   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1343                                    ABRT_apdu_U_sequence, hf_index, ett_acse_ABRT_apdu_U);
1344
1345   return offset;
1346 }
1347
1348
1349
1350 static int
1351 dissect_acse_ABRT_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1352   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1353                                       hf_index, BER_CLASS_APP, 4, TRUE, dissect_acse_ABRT_apdu_U);
1354
1355   return offset;
1356 }
1357
1358
1359
1360 static int
1361 dissect_acse_User_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1362   offset = dissect_acse_Association_data(implicit_tag, tvb, offset, actx, tree, hf_index);
1363
1364   return offset;
1365 }
1366
1367
1368
1369 static int
1370 dissect_acse_Simply_encoded_data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1371   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1372                                        NULL);
1373
1374   return offset;
1375 }
1376
1377
1378
1379 static int
1380 dissect_acse_T_simple_ASN1_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1381 #line 52 "acse.cnf"
1382 /*XXX not implemented yet */
1383
1384
1385
1386   return offset;
1387 }
1388
1389
1390
1391 static int
1392 dissect_acse_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1393   offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1394                                        NULL);
1395
1396   return offset;
1397 }
1398
1399
1400 static const value_string acse_T_presentation_data_values_vals[] = {
1401   {   0, "simple-ASN1-type" },
1402   {   1, "octet-aligned" },
1403   {   2, "arbitrary" },
1404   { 0, NULL }
1405 };
1406
1407 static const ber_choice_t T_presentation_data_values_choice[] = {
1408   {   0, &hf_acse_simple_ASN1_type, BER_CLASS_CON, 0, 0, dissect_acse_T_simple_ASN1_type },
1409   {   1, &hf_acse_octet_aligned_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_OCTET_STRING },
1410   {   2, &hf_acse_arbitrary      , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_acse_BIT_STRING },
1411   { 0, NULL, 0, 0, 0, NULL }
1412 };
1413
1414 static int
1415 dissect_acse_T_presentation_data_values(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1416   offset = dissect_ber_choice(actx, tree, tvb, offset,
1417                                  T_presentation_data_values_choice, hf_index, ett_acse_T_presentation_data_values,
1418                                  NULL);
1419
1420   return offset;
1421 }
1422
1423
1424 static const ber_sequence_t PDV_list_sequence[] = {
1425   { &hf_acse_transfer_syntax_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_TransferSyntaxName },
1426   { &hf_acse_presentation_context_identifier, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_acse_Presentation_context_identifier },
1427   { &hf_acse_presentation_data_values, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_acse_T_presentation_data_values },
1428   { NULL, 0, 0, 0, NULL }
1429 };
1430
1431 static int
1432 dissect_acse_PDV_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1433   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1434                                    PDV_list_sequence, hf_index, ett_acse_PDV_list);
1435
1436   return offset;
1437 }
1438
1439
1440 static const value_string acse_User_Data_vals[] = {
1441   {   0, "user-information" },
1442   {   1, "simply-encoded-data" },
1443   {   2, "fully-encoded-data" },
1444   { 0, NULL }
1445 };
1446
1447 static const ber_choice_t User_Data_choice[] = {
1448   {   0, &hf_acse_user_information, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_User_information },
1449   {   1, &hf_acse_simply_encoded_data, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_acse_Simply_encoded_data },
1450   {   2, &hf_acse_fully_encoded_data, BER_CLASS_CON, 0, 0, dissect_acse_PDV_list },
1451   { 0, NULL, 0, 0, 0, NULL }
1452 };
1453
1454 static int
1455 dissect_acse_User_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1456   offset = dissect_ber_choice(actx, tree, tvb, offset,
1457                                  User_Data_choice, hf_index, ett_acse_User_Data,
1458                                  NULL);
1459
1460   return offset;
1461 }
1462
1463
1464 static const ber_sequence_t A_DT_apdu_U_sequence[] = {
1465   { &hf_acse_aso_qualifier  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1466   { &hf_acse_asoi_identifier, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1467   { &hf_acse_a_user_data    , BER_CLASS_CON, 30, BER_FLAGS_NOTCHKTAG, dissect_acse_User_Data },
1468   { NULL, 0, 0, 0, NULL }
1469 };
1470
1471 static int
1472 dissect_acse_A_DT_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1473   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1474                                    A_DT_apdu_U_sequence, hf_index, ett_acse_A_DT_apdu_U);
1475
1476   return offset;
1477 }
1478
1479
1480
1481 static int
1482 dissect_acse_A_DT_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1483   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1484                                       hf_index, BER_CLASS_APP, 5, TRUE, dissect_acse_A_DT_apdu_U);
1485
1486   return offset;
1487 }
1488
1489
1490
1491 static int
1492 dissect_acse_T_ACRQ_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1493 #line 63 "acse.cnf"
1494   offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
1495                                          hf_index, &object_identifier_id);
1496
1497
1498
1499   return offset;
1500 }
1501
1502
1503 static const ber_sequence_t ACRQ_apdu_U_sequence[] = {
1504   { &hf_acse_aso_qualifier  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1505   { &hf_acse_asoi_identifier, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1506   { &hf_acse_aCRQ_aSO_context_name, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_ACRQ_aSO_context_name },
1507   { &hf_acse_aSO_context_name_list, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASO_context_name_list },
1508   { &hf_acse_p_context_definition_list, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Syntactic_context_list },
1509   { &hf_acse_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_User_information },
1510   { NULL, 0, 0, 0, NULL }
1511 };
1512
1513 static int
1514 dissect_acse_ACRQ_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1515   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1516                                    ACRQ_apdu_U_sequence, hf_index, ett_acse_ACRQ_apdu_U);
1517
1518   return offset;
1519 }
1520
1521
1522
1523 static int
1524 dissect_acse_ACRQ_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1525   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1526                                       hf_index, BER_CLASS_APP, 6, TRUE, dissect_acse_ACRQ_apdu_U);
1527
1528   return offset;
1529 }
1530
1531
1532
1533 static int
1534 dissect_acse_T_ACRP_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1535 #line 67 "acse.cnf"
1536   offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
1537                                          hf_index, &object_identifier_id);
1538
1539
1540
1541   return offset;
1542 }
1543
1544
1545 static const ber_sequence_t ACRP_apdu_U_sequence[] = {
1546   { &hf_acse_aso_qualifier  , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1547   { &hf_acse_asoi_identifier, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1548   { &hf_acse_aSO_context_name, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_ACRP_aSO_context_name },
1549   { &hf_acse_p_context_result_list, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_P_context_result_list },
1550   { &hf_acse_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_User_information },
1551   { NULL, 0, 0, 0, NULL }
1552 };
1553
1554 static int
1555 dissect_acse_ACRP_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1556   offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1557                                    ACRP_apdu_U_sequence, hf_index, ett_acse_ACRP_apdu_U);
1558
1559   return offset;
1560 }
1561
1562
1563
1564 static int
1565 dissect_acse_ACRP_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1566   offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1567                                       hf_index, BER_CLASS_APP, 7, TRUE, dissect_acse_ACRP_apdu_U);
1568
1569   return offset;
1570 }
1571
1572
1573 static const value_string acse_ACSE_apdu_vals[] = {
1574   {   0, "aarq" },
1575   {   1, "aare" },
1576   {   2, "rlrq" },
1577   {   3, "rlre" },
1578   {   4, "abrt" },
1579   {   5, "adt" },
1580   {   6, "acrq" },
1581   {   7, "acrp" },
1582   { 0, NULL }
1583 };
1584
1585 static const ber_choice_t ACSE_apdu_choice[] = {
1586   {   0, &hf_acse_aarq           , BER_CLASS_APP, 0, BER_FLAGS_IMPLTAG, dissect_acse_AARQ_apdu },
1587   {   1, &hf_acse_aare           , BER_CLASS_APP, 1, BER_FLAGS_IMPLTAG, dissect_acse_AARE_apdu },
1588   {   2, &hf_acse_rlrq           , BER_CLASS_APP, 2, BER_FLAGS_IMPLTAG, dissect_acse_RLRQ_apdu },
1589   {   3, &hf_acse_rlre           , BER_CLASS_APP, 3, BER_FLAGS_IMPLTAG, dissect_acse_RLRE_apdu },
1590   {   4, &hf_acse_abrt           , BER_CLASS_APP, 4, BER_FLAGS_IMPLTAG, dissect_acse_ABRT_apdu },
1591   {   5, &hf_acse_adt            , BER_CLASS_APP, 5, BER_FLAGS_IMPLTAG, dissect_acse_A_DT_apdu },
1592   {   6, &hf_acse_acrq           , BER_CLASS_APP, 6, BER_FLAGS_IMPLTAG, dissect_acse_ACRQ_apdu },
1593   {   7, &hf_acse_acrp           , BER_CLASS_APP, 7, BER_FLAGS_IMPLTAG, dissect_acse_ACRP_apdu },
1594   { 0, NULL, 0, 0, 0, NULL }
1595 };
1596
1597 static int
1598 dissect_acse_ACSE_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1599   offset = dissect_ber_choice(actx, tree, tvb, offset,
1600                                  ACSE_apdu_choice, hf_index, ett_acse_ACSE_apdu,
1601                                  NULL);
1602
1603   return offset;
1604 }
1605
1606
1607
1608 static int
1609 dissect_acse_AE_title_form1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1610   offset = dissect_x509if_Name(implicit_tag, tvb, offset, actx, tree, hf_index);
1611
1612   return offset;
1613 }
1614
1615
1616
1617 static int
1618 dissect_acse_AE_title_form2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1619   offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1620
1621   return offset;
1622 }
1623
1624
1625 const value_string acse_AE_title_vals[] = {
1626   {   0, "ae-title-form1" },
1627   {   1, "ae-title-form2" },
1628   { 0, NULL }
1629 };
1630
1631 static const ber_choice_t AE_title_choice[] = {
1632   {   0, &hf_acse_ae_title_form1 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AE_title_form1 },
1633   {   1, &hf_acse_ae_title_form2 , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_AE_title_form2 },
1634   { 0, NULL, 0, 0, 0, NULL }
1635 };
1636
1637 int
1638 dissect_acse_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1639   offset = dissect_ber_choice(actx, tree, tvb, offset,
1640                                  AE_title_choice, hf_index, ett_acse_AE_title,
1641                                  NULL);
1642
1643   return offset;
1644 }
1645
1646
1647 /*--- End of included file: packet-acse-fn.c ---*/
1648 #line 146 "packet-acse-template.c"
1649
1650
1651 /*
1652 * Dissect ACSE PDUs inside a PPDU.
1653 */
1654 static void
1655 dissect_acse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1656 {
1657         int offset = 0;
1658         proto_item    *item=NULL;
1659         proto_tree    *tree=NULL;
1660         char *oid;
1661         asn1_ctx_t asn1_ctx;
1662         asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1663
1664
1665         /* first, try to check length   */
1666         /* do we have at least 2 bytes  */
1667         if (!tvb_bytes_exist(tvb, 0, 2)){
1668                 proto_tree_add_text(parent_tree, tvb, offset,
1669                         tvb_reported_length_remaining(tvb,offset),
1670                         "User data");
1671                 return;  /* no, it isn't a ACSE PDU */
1672         }
1673         /* do we have spdu type from the session dissector?  */
1674         if( !pinfo->private_data ){
1675                 if(parent_tree){
1676                         REPORT_DISSECTOR_BUG("Can't get SPDU type from session dissector.");
1677                 }
1678                 return  ;
1679         } else {
1680                 session  = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
1681                 if(session->spdu_type == 0 ) {
1682                         if(parent_tree){
1683                                 REPORT_DISSECTOR_BUG(
1684                                         ep_strdup_printf("Wrong spdu type %x from session dissector.",session->spdu_type));
1685                                 return  ;
1686                         }
1687                 }
1688         }
1689         /* save parent_tree so subdissectors can create new top nodes */
1690         top_tree=parent_tree;
1691
1692         /*  ACSE has only AARQ,AARE,RLRQ,RLRE,ABRT type of pdu */
1693         /*  reject everything else                              */
1694         /*  data pdu is not ACSE pdu and has to go directly to app dissector */
1695         switch(session->spdu_type){
1696         case SES_CONNECTION_REQUEST:            /*   AARQ   */
1697         case SES_CONNECTION_ACCEPT:             /*   AARE   */
1698         case SES_REFUSE:                        /*   RLRE   */
1699         case SES_DISCONNECT:                    /*   RLRQ   */
1700         case SES_FINISH:                        /*   RLRE   */
1701         case SES_ABORT:                         /*   ABRT   */
1702                 break;
1703         case SES_DATA_TRANSFER:
1704                 oid=find_oid_by_pres_ctx_id(pinfo, indir_ref);
1705                 if(oid){
1706                         if(strcmp(oid, ACSE_APDU_OID) == 0){
1707                                 proto_tree_add_text(parent_tree, tvb, offset, -1,
1708                                     "Invalid OID: %s", ACSE_APDU_OID);
1709                                 THROW(ReportedBoundsError);
1710                         }
1711                         call_ber_oid_callback(oid, tvb, offset, pinfo, parent_tree);
1712                 } else {
1713                         proto_tree_add_text(parent_tree, tvb, offset, -1,
1714                             "dissector is not available");
1715                 }
1716                 top_tree = NULL;
1717                 return;
1718         default:
1719                 top_tree = NULL;
1720                 return;
1721         }
1722
1723         /* create display subtree for the protocol */
1724         if(parent_tree){
1725                 item = proto_tree_add_item(parent_tree, proto_acse, tvb, 0, -1, FALSE);
1726                 tree = proto_item_add_subtree(item, ett_acse);
1727         }
1728         if (check_col(pinfo->cinfo, COL_PROTOCOL))
1729                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "ACSE");
1730         if (check_col(pinfo->cinfo, COL_INFO))
1731                 col_clear(pinfo->cinfo, COL_INFO);
1732
1733
1734         /*  we can't make any additional checking here   */
1735         /*  postpone it before dissector will have more information */
1736         while (tvb_reported_length_remaining(tvb, offset) > 0){
1737                 int old_offset=offset;
1738                 offset = dissect_acse_ACSE_apdu(FALSE, tvb, offset, &asn1_ctx, tree, -1);
1739                 if(offset == old_offset ){
1740                         proto_tree_add_text(tree, tvb, offset, -1,"Malformed packet");
1741                         offset = tvb_length(tvb);
1742                         break;
1743                 }
1744         }
1745         
1746 top_tree = NULL;
1747 }
1748
1749 /*--- proto_register_acse ----------------------------------------------*/
1750 void proto_register_acse(void) {
1751
1752   /* List of fields */
1753   static hf_register_info hf[] = {
1754
1755 /*--- Included file: packet-acse-hfarr.c ---*/
1756 #line 1 "packet-acse-hfarr.c"
1757     { &hf_acse_direct_reference,
1758       { "direct-reference", "acse.direct_reference",
1759         FT_OID, BASE_NONE, NULL, 0,
1760         "acse.T_direct_reference", HFILL }},
1761     { &hf_acse_indirect_reference,
1762       { "indirect-reference", "acse.indirect_reference",
1763         FT_INT32, BASE_DEC, NULL, 0,
1764         "acse.T_indirect_reference", HFILL }},
1765     { &hf_acse_data_value_descriptor,
1766       { "data-value-descriptor", "acse.data_value_descriptor",
1767         FT_STRING, BASE_NONE, NULL, 0,
1768         "acse.ObjectDescriptor", HFILL }},
1769     { &hf_acse_encoding,
1770       { "encoding", "acse.encoding",
1771         FT_UINT32, BASE_DEC, VALS(acse_T_encoding_vals), 0,
1772         "acse.T_encoding", HFILL }},
1773     { &hf_acse_single_ASN1_type,
1774       { "single-ASN1-type", "acse.single_ASN1_type",
1775         FT_NONE, BASE_NONE, NULL, 0,
1776         "acse.T_single_ASN1_type", HFILL }},
1777     { &hf_acse_octet_aligned,
1778       { "octet-aligned", "acse.octet_aligned",
1779         FT_BYTES, BASE_HEX, NULL, 0,
1780         "acse.T_octet_aligned", HFILL }},
1781     { &hf_acse_arbitrary,
1782       { "arbitrary", "acse.arbitrary",
1783         FT_BYTES, BASE_HEX, NULL, 0,
1784         "acse.BIT_STRING", HFILL }},
1785     { &hf_acse_aarq,
1786       { "aarq", "acse.aarq",
1787         FT_NONE, BASE_NONE, NULL, 0,
1788         "acse.AARQ_apdu", HFILL }},
1789     { &hf_acse_aare,
1790       { "aare", "acse.aare",
1791         FT_NONE, BASE_NONE, NULL, 0,
1792         "acse.AARE_apdu", HFILL }},
1793     { &hf_acse_rlrq,
1794       { "rlrq", "acse.rlrq",
1795         FT_NONE, BASE_NONE, NULL, 0,
1796         "acse.RLRQ_apdu", HFILL }},
1797     { &hf_acse_rlre,
1798       { "rlre", "acse.rlre",
1799         FT_NONE, BASE_NONE, NULL, 0,
1800         "acse.RLRE_apdu", HFILL }},
1801     { &hf_acse_abrt,
1802       { "abrt", "acse.abrt",
1803         FT_NONE, BASE_NONE, NULL, 0,
1804         "acse.ABRT_apdu", HFILL }},
1805     { &hf_acse_adt,
1806       { "adt", "acse.adt",
1807         FT_NONE, BASE_NONE, NULL, 0,
1808         "acse.A_DT_apdu", HFILL }},
1809     { &hf_acse_acrq,
1810       { "acrq", "acse.acrq",
1811         FT_NONE, BASE_NONE, NULL, 0,
1812         "acse.ACRQ_apdu", HFILL }},
1813     { &hf_acse_acrp,
1814       { "acrp", "acse.acrp",
1815         FT_NONE, BASE_NONE, NULL, 0,
1816         "acse.ACRP_apdu", HFILL }},
1817     { &hf_acse_aARQ_protocol_version,
1818       { "protocol-version", "acse.protocol_version",
1819         FT_BYTES, BASE_HEX, NULL, 0,
1820         "acse.T_AARQ_protocol_version", HFILL }},
1821     { &hf_acse_aARQ_aSO_context_name,
1822       { "aSO-context-name", "acse.aSO_context_name",
1823         FT_OID, BASE_NONE, NULL, 0,
1824         "acse.T_AARQ_aSO_context_name", HFILL }},
1825     { &hf_acse_called_AP_title,
1826       { "called-AP-title", "acse.called_AP_title",
1827         FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
1828         "acse.AP_title", HFILL }},
1829     { &hf_acse_called_AE_qualifier,
1830       { "called-AE-qualifier", "acse.called_AE_qualifier",
1831         FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1832         "acse.AE_qualifier", HFILL }},
1833     { &hf_acse_called_AP_invocation_identifier,
1834       { "called-AP-invocation-identifier", "acse.called_AP_invocation_identifier",
1835         FT_INT32, BASE_DEC, NULL, 0,
1836         "acse.AP_invocation_identifier", HFILL }},
1837     { &hf_acse_called_AE_invocation_identifier,
1838       { "called-AE-invocation-identifier", "acse.called_AE_invocation_identifier",
1839         FT_INT32, BASE_DEC, NULL, 0,
1840         "acse.AE_invocation_identifier", HFILL }},
1841     { &hf_acse_calling_AP_title,
1842       { "calling-AP-title", "acse.calling_AP_title",
1843         FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
1844         "acse.AP_title", HFILL }},
1845     { &hf_acse_calling_AE_qualifier,
1846       { "calling-AE-qualifier", "acse.calling_AE_qualifier",
1847         FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1848         "acse.AE_qualifier", HFILL }},
1849     { &hf_acse_calling_AP_invocation_identifier,
1850       { "calling-AP-invocation-identifier", "acse.calling_AP_invocation_identifier",
1851         FT_INT32, BASE_DEC, NULL, 0,
1852         "acse.AP_invocation_identifier", HFILL }},
1853     { &hf_acse_calling_AE_invocation_identifier,
1854       { "calling-AE-invocation-identifier", "acse.calling_AE_invocation_identifier",
1855         FT_INT32, BASE_DEC, NULL, 0,
1856         "acse.AE_invocation_identifier", HFILL }},
1857     { &hf_acse_sender_acse_requirements,
1858       { "sender-acse-requirements", "acse.sender_acse_requirements",
1859         FT_BYTES, BASE_HEX, NULL, 0,
1860         "acse.ACSE_requirements", HFILL }},
1861     { &hf_acse_mechanism_name,
1862       { "mechanism-name", "acse.mechanism_name",
1863         FT_OID, BASE_NONE, NULL, 0,
1864         "acse.Mechanism_name", HFILL }},
1865     { &hf_acse_calling_authentication_value,
1866       { "calling-authentication-value", "acse.calling_authentication_value",
1867         FT_UINT32, BASE_DEC, VALS(acse_Authentication_value_vals), 0,
1868         "acse.Authentication_value", HFILL }},
1869     { &hf_acse_aSO_context_name_list,
1870       { "aSO-context-name-list", "acse.aSO_context_name_list",
1871         FT_UINT32, BASE_DEC, NULL, 0,
1872         "acse.ASO_context_name_list", HFILL }},
1873     { &hf_acse_implementation_information,
1874       { "implementation-information", "acse.implementation_information",
1875         FT_STRING, BASE_NONE, NULL, 0,
1876         "acse.Implementation_data", HFILL }},
1877     { &hf_acse_p_context_definition_list,
1878       { "p-context-definition-list", "acse.p_context_definition_list",
1879         FT_UINT32, BASE_DEC, VALS(acse_Syntactic_context_list_vals), 0,
1880         "acse.Syntactic_context_list", HFILL }},
1881     { &hf_acse_called_asoi_tag,
1882       { "called-asoi-tag", "acse.called_asoi_tag",
1883         FT_UINT32, BASE_DEC, NULL, 0,
1884         "acse.ASOI_tag", HFILL }},
1885     { &hf_acse_calling_asoi_tag,
1886       { "calling-asoi-tag", "acse.calling_asoi_tag",
1887         FT_UINT32, BASE_DEC, NULL, 0,
1888         "acse.ASOI_tag", HFILL }},
1889     { &hf_acse_aARQ_user_information,
1890       { "user-information", "acse.user_information",
1891         FT_UINT32, BASE_DEC, NULL, 0,
1892         "acse.Association_data", HFILL }},
1893     { &hf_acse_aARE_protocol_version,
1894       { "protocol-version", "acse.protocol_version",
1895         FT_BYTES, BASE_HEX, NULL, 0,
1896         "acse.T_AARE_protocol_version", HFILL }},
1897     { &hf_acse_aARE_aSO_context_name,
1898       { "aSO-context-name", "acse.aSO_context_name",
1899         FT_OID, BASE_NONE, NULL, 0,
1900         "acse.T_AARE_aSO_context_name", HFILL }},
1901     { &hf_acse_result,
1902       { "result", "acse.result",
1903         FT_UINT32, BASE_DEC, VALS(acse_Associate_result_vals), 0,
1904         "acse.Associate_result", HFILL }},
1905     { &hf_acse_result_source_diagnostic,
1906       { "result-source-diagnostic", "acse.result_source_diagnostic",
1907         FT_UINT32, BASE_DEC, VALS(acse_Associate_source_diagnostic_vals), 0,
1908         "acse.Associate_source_diagnostic", HFILL }},
1909     { &hf_acse_responding_AP_title,
1910       { "responding-AP-title", "acse.responding_AP_title",
1911         FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
1912         "acse.AP_title", HFILL }},
1913     { &hf_acse_responding_AE_qualifier,
1914       { "responding-AE-qualifier", "acse.responding_AE_qualifier",
1915         FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1916         "acse.AE_qualifier", HFILL }},
1917     { &hf_acse_responding_AP_invocation_identifier,
1918       { "responding-AP-invocation-identifier", "acse.responding_AP_invocation_identifier",
1919         FT_INT32, BASE_DEC, NULL, 0,
1920         "acse.AP_invocation_identifier", HFILL }},
1921     { &hf_acse_responding_AE_invocation_identifier,
1922       { "responding-AE-invocation-identifier", "acse.responding_AE_invocation_identifier",
1923         FT_INT32, BASE_DEC, NULL, 0,
1924         "acse.AE_invocation_identifier", HFILL }},
1925     { &hf_acse_responder_acse_requirements,
1926       { "responder-acse-requirements", "acse.responder_acse_requirements",
1927         FT_BYTES, BASE_HEX, NULL, 0,
1928         "acse.ACSE_requirements", HFILL }},
1929     { &hf_acse_responding_authentication_value,
1930       { "responding-authentication-value", "acse.responding_authentication_value",
1931         FT_UINT32, BASE_DEC, VALS(acse_Authentication_value_vals), 0,
1932         "acse.Authentication_value", HFILL }},
1933     { &hf_acse_p_context_result_list,
1934       { "p-context-result-list", "acse.p_context_result_list",
1935         FT_UINT32, BASE_DEC, NULL, 0,
1936         "acse.P_context_result_list", HFILL }},
1937     { &hf_acse_aARE_user_information,
1938       { "user-information", "acse.user_information",
1939         FT_UINT32, BASE_DEC, NULL, 0,
1940         "acse.Association_data", HFILL }},
1941     { &hf_acse_rLRQ_reason,
1942       { "reason", "acse.reason",
1943         FT_INT32, BASE_DEC, VALS(acse_Release_request_reason_vals), 0,
1944         "acse.Release_request_reason", HFILL }},
1945     { &hf_acse_aso_qualifier,
1946       { "aso-qualifier", "acse.aso_qualifier",
1947         FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1948         "acse.ASO_qualifier", HFILL }},
1949     { &hf_acse_asoi_identifier,
1950       { "asoi-identifier", "acse.asoi_identifier",
1951         FT_UINT32, BASE_DEC, NULL, 0,
1952         "acse.ASOI_identifier", HFILL }},
1953     { &hf_acse_rLRQ_user_information,
1954       { "user-information", "acse.user_information",
1955         FT_UINT32, BASE_DEC, NULL, 0,
1956         "acse.Association_data", HFILL }},
1957     { &hf_acse_rLRE_reason,
1958       { "reason", "acse.reason",
1959         FT_INT32, BASE_DEC, VALS(acse_Release_response_reason_vals), 0,
1960         "acse.Release_response_reason", HFILL }},
1961     { &hf_acse_rLRE_user_information,
1962       { "user-information", "acse.user_information",
1963         FT_UINT32, BASE_DEC, NULL, 0,
1964         "acse.Association_data", HFILL }},
1965     { &hf_acse_abort_source,
1966       { "abort-source", "acse.abort_source",
1967         FT_UINT32, BASE_DEC, VALS(acse_ABRT_source_vals), 0,
1968         "acse.ABRT_source", HFILL }},
1969     { &hf_acse_abort_diagnostic,
1970       { "abort-diagnostic", "acse.abort_diagnostic",
1971         FT_UINT32, BASE_DEC, VALS(acse_ABRT_diagnostic_vals), 0,
1972         "acse.ABRT_diagnostic", HFILL }},
1973     { &hf_acse_aBRT_user_information,
1974       { "user-information", "acse.user_information",
1975         FT_UINT32, BASE_DEC, NULL, 0,
1976         "acse.Association_data", HFILL }},
1977     { &hf_acse_a_user_data,
1978       { "a-user-data", "acse.a_user_data",
1979         FT_UINT32, BASE_DEC, VALS(acse_User_Data_vals), 0,
1980         "acse.User_Data", HFILL }},
1981     { &hf_acse_aCRQ_aSO_context_name,
1982       { "aSO-context-name", "acse.aSO_context_name",
1983         FT_OID, BASE_NONE, NULL, 0,
1984         "acse.T_ACRQ_aSO_context_name", HFILL }},
1985     { &hf_acse_user_information,
1986       { "user-information", "acse.user_information",
1987         FT_UINT32, BASE_DEC, NULL, 0,
1988         "acse.User_information", HFILL }},
1989     { &hf_acse_aSO_context_name,
1990       { "aSO-context-name", "acse.aSO_context_name",
1991         FT_UINT32, BASE_DEC, NULL, 0,
1992         "acse.T_ACRP_aSO_context_name", HFILL }},
1993     { &hf_acse_ap_title_form1,
1994       { "ap-title-form1", "acse.ap_title_form1",
1995         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
1996         "acse.AP_title_form1", HFILL }},
1997     { &hf_acse_ap_title_form2,
1998       { "ap-title-form2", "acse.ap_title_form2",
1999         FT_OID, BASE_NONE, NULL, 0,
2000         "acse.AP_title_form2", HFILL }},
2001     { &hf_acse_ap_title_form3,
2002       { "ap-title-form3", "acse.ap_title_form3",
2003         FT_STRING, BASE_NONE, NULL, 0,
2004         "acse.AP_title_form3", HFILL }},
2005     { &hf_acse_aso_qualifier_form1,
2006       { "aso-qualifier-form1", "acse.aso_qualifier_form1",
2007         FT_UINT32, BASE_DEC, NULL, 0,
2008         "acse.ASO_qualifier_form1", HFILL }},
2009     { &hf_acse_aso_qualifier_form2,
2010       { "aso-qualifier-form2", "acse.aso_qualifier_form2",
2011         FT_INT32, BASE_DEC, NULL, 0,
2012         "acse.ASO_qualifier_form2", HFILL }},
2013     { &hf_acse_aso_qualifier_form3,
2014       { "aso-qualifier-form3", "acse.aso_qualifier_form3",
2015         FT_STRING, BASE_NONE, NULL, 0,
2016         "acse.ASO_qualifier_form3", HFILL }},
2017     { &hf_acse_aso_qualifier_form_any_octets,
2018       { "aso-qualifier-form-any-octets", "acse.aso_qualifier_form_any_octets",
2019         FT_BYTES, BASE_HEX, NULL, 0,
2020         "acse.ASO_qualifier_form_octets", HFILL }},
2021     { &hf_acse_ae_title_form1,
2022       { "ae-title-form1", "acse.ae_title_form1",
2023         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2024         "acse.AE_title_form1", HFILL }},
2025     { &hf_acse_ae_title_form2,
2026       { "ae-title-form2", "acse.ae_title_form2",
2027         FT_OID, BASE_NONE, NULL, 0,
2028         "acse.AE_title_form2", HFILL }},
2029     { &hf_acse_ASOI_tag_item,
2030       { "ASOI-tag", "acse.ASOI_tag_item",
2031         FT_NONE, BASE_NONE, NULL, 0,
2032         "acse.ASOI_tag_item", HFILL }},
2033     { &hf_acse_qualifier,
2034       { "qualifier", "acse.qualifier",
2035         FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
2036         "acse.ASO_qualifier", HFILL }},
2037     { &hf_acse_identifier,
2038       { "identifier", "acse.identifier",
2039         FT_UINT32, BASE_DEC, NULL, 0,
2040         "acse.ASOI_identifier", HFILL }},
2041     { &hf_acse_ASO_context_name_list_item,
2042       { "ASO-context-name-list", "acse.ASO_context_name_list_item",
2043         FT_OID, BASE_NONE, NULL, 0,
2044         "acse.ASO_context_name", HFILL }},
2045     { &hf_acse_context_list,
2046       { "context-list", "acse.context_list",
2047         FT_UINT32, BASE_DEC, NULL, 0,
2048         "acse.Context_list", HFILL }},
2049     { &hf_acse_default_contact_list,
2050       { "default-contact-list", "acse.default_contact_list",
2051         FT_UINT32, BASE_DEC, NULL, 0,
2052         "acse.Default_Context_List", HFILL }},
2053     { &hf_acse_Context_list_item,
2054       { "Context-list", "acse.Context_list_item",
2055         FT_NONE, BASE_NONE, NULL, 0,
2056         "acse.Context_list_item", HFILL }},
2057     { &hf_acse_pci,
2058       { "pci", "acse.pci",
2059         FT_INT32, BASE_DEC, NULL, 0,
2060         "acse.Presentation_context_identifier", HFILL }},
2061     { &hf_acse_abstract_syntax,
2062       { "abstract-syntax", "acse.abstract_syntax",
2063         FT_OID, BASE_NONE, NULL, 0,
2064         "acse.Abstract_syntax_name", HFILL }},
2065     { &hf_acse_transfer_syntaxes,
2066       { "transfer-syntaxes", "acse.transfer_syntaxes",
2067         FT_UINT32, BASE_DEC, NULL, 0,
2068         "acse.SEQUENCE_OF_TransferSyntaxName", HFILL }},
2069     { &hf_acse_transfer_syntaxes_item,
2070       { "transfer-syntaxes", "acse.transfer_syntaxes_item",
2071         FT_OID, BASE_NONE, NULL, 0,
2072         "acse.TransferSyntaxName", HFILL }},
2073     { &hf_acse_Default_Context_List_item,
2074       { "Default-Context-List", "acse.Default_Context_List_item",
2075         FT_NONE, BASE_NONE, NULL, 0,
2076         "acse.Default_Context_List_item", HFILL }},
2077     { &hf_acse_abstract_syntax_name,
2078       { "abstract-syntax-name", "acse.abstract_syntax_name",
2079         FT_OID, BASE_NONE, NULL, 0,
2080         "acse.Abstract_syntax_name", HFILL }},
2081     { &hf_acse_transfer_syntax_name,
2082       { "transfer-syntax-name", "acse.transfer_syntax_name",
2083         FT_OID, BASE_NONE, NULL, 0,
2084         "acse.TransferSyntaxName", HFILL }},
2085     { &hf_acse_P_context_result_list_item,
2086       { "P-context-result-list", "acse.P_context_result_list_item",
2087         FT_NONE, BASE_NONE, NULL, 0,
2088         "acse.P_context_result_list_item", HFILL }},
2089     { &hf_acse_pcontext_result,
2090       { "result", "acse.result",
2091         FT_INT32, BASE_DEC, VALS(acse_Result_vals), 0,
2092         "acse.Result", HFILL }},
2093     { &hf_acse_concrete_syntax_name,
2094       { "concrete-syntax-name", "acse.concrete_syntax_name",
2095         FT_OID, BASE_NONE, NULL, 0,
2096         "acse.Concrete_syntax_name", HFILL }},
2097     { &hf_acse_provider_reason,
2098       { "provider-reason", "acse.provider_reason",
2099         FT_INT32, BASE_DEC, VALS(acse_T_provider_reason_vals), 0,
2100         "acse.T_provider_reason", HFILL }},
2101     { &hf_acse_acse_service_user,
2102       { "acse-service-user", "acse.acse_service_user",
2103         FT_UINT32, BASE_DEC, VALS(acse_T_acse_service_user_vals), 0,
2104         "acse.T_acse_service_user", HFILL }},
2105     { &hf_acse_acse_service_provider,
2106       { "acse-service-provider", "acse.acse_service_provider",
2107         FT_UINT32, BASE_DEC, VALS(acse_T_acse_service_provider_vals), 0,
2108         "acse.T_acse_service_provider", HFILL }},
2109     { &hf_acse_Association_data_item,
2110       { "Association-data", "acse.Association_data_item",
2111         FT_NONE, BASE_NONE, NULL, 0,
2112         "acse.EXTERNALt", HFILL }},
2113     { &hf_acse_simply_encoded_data,
2114       { "simply-encoded-data", "acse.simply_encoded_data",
2115         FT_BYTES, BASE_HEX, NULL, 0,
2116         "acse.Simply_encoded_data", HFILL }},
2117     { &hf_acse_fully_encoded_data,
2118       { "fully-encoded-data", "acse.fully_encoded_data",
2119         FT_NONE, BASE_NONE, NULL, 0,
2120         "acse.PDV_list", HFILL }},
2121     { &hf_acse_presentation_context_identifier,
2122       { "presentation-context-identifier", "acse.presentation_context_identifier",
2123         FT_INT32, BASE_DEC, NULL, 0,
2124         "acse.Presentation_context_identifier", HFILL }},
2125     { &hf_acse_presentation_data_values,
2126       { "presentation-data-values", "acse.presentation_data_values",
2127         FT_UINT32, BASE_DEC, VALS(acse_T_presentation_data_values_vals), 0,
2128         "acse.T_presentation_data_values", HFILL }},
2129     { &hf_acse_simple_ASN1_type,
2130       { "simple-ASN1-type", "acse.simple_ASN1_type",
2131         FT_NONE, BASE_NONE, NULL, 0,
2132         "acse.T_simple_ASN1_type", HFILL }},
2133     { &hf_acse_octet_aligned_01,
2134       { "octet-aligned", "acse.octet_aligned",
2135         FT_BYTES, BASE_HEX, NULL, 0,
2136         "acse.OCTET_STRING", HFILL }},
2137     { &hf_acse_other_mechanism_name,
2138       { "other-mechanism-name", "acse.other_mechanism_name",
2139         FT_OID, BASE_NONE, NULL, 0,
2140         "acse.T_other_mechanism_name", HFILL }},
2141     { &hf_acse_other_mechanism_value,
2142       { "other-mechanism-value", "acse.other_mechanism_value",
2143         FT_NONE, BASE_NONE, NULL, 0,
2144         "acse.T_other_mechanism_value", HFILL }},
2145     { &hf_acse_charstring,
2146       { "charstring", "acse.charstring",
2147         FT_STRING, BASE_NONE, NULL, 0,
2148         "acse.GraphicString", HFILL }},
2149     { &hf_acse_bitstring,
2150       { "bitstring", "acse.bitstring",
2151         FT_BYTES, BASE_HEX, NULL, 0,
2152         "acse.BIT_STRING", HFILL }},
2153     { &hf_acse_external,
2154       { "external", "acse.external",
2155         FT_NONE, BASE_NONE, NULL, 0,
2156         "acse.EXTERNALt", HFILL }},
2157     { &hf_acse_other,
2158       { "other", "acse.other",
2159         FT_NONE, BASE_NONE, NULL, 0,
2160         "acse.Authentication_value_other", HFILL }},
2161     { &hf_acse_T_AARQ_protocol_version_version1,
2162       { "version1", "acse.version1",
2163         FT_BOOLEAN, 8, NULL, 0x80,
2164         "", HFILL }},
2165     { &hf_acse_T_AARE_protocol_version_version1,
2166       { "version1", "acse.version1",
2167         FT_BOOLEAN, 8, NULL, 0x80,
2168         "", HFILL }},
2169     { &hf_acse_ACSE_requirements_authentication,
2170       { "authentication", "acse.authentication",
2171         FT_BOOLEAN, 8, NULL, 0x80,
2172         "", HFILL }},
2173     { &hf_acse_ACSE_requirements_aSO_context_negotiation,
2174       { "aSO-context-negotiation", "acse.aSO-context-negotiation",
2175         FT_BOOLEAN, 8, NULL, 0x40,
2176         "", HFILL }},
2177     { &hf_acse_ACSE_requirements_higher_level_association,
2178       { "higher-level-association", "acse.higher-level-association",
2179         FT_BOOLEAN, 8, NULL, 0x20,
2180         "", HFILL }},
2181     { &hf_acse_ACSE_requirements_nested_association,
2182       { "nested-association", "acse.nested-association",
2183         FT_BOOLEAN, 8, NULL, 0x10,
2184         "", HFILL }},
2185
2186 /*--- End of included file: packet-acse-hfarr.c ---*/
2187 #line 252 "packet-acse-template.c"
2188   };
2189
2190   /* List of subtrees */
2191   static gint *ett[] = {
2192     &ett_acse,
2193
2194 /*--- Included file: packet-acse-ettarr.c ---*/
2195 #line 1 "packet-acse-ettarr.c"
2196     &ett_acse_EXTERNALt_U,
2197     &ett_acse_T_encoding,
2198     &ett_acse_ACSE_apdu,
2199     &ett_acse_AARQ_apdu_U,
2200     &ett_acse_T_AARQ_protocol_version,
2201     &ett_acse_AARE_apdu_U,
2202     &ett_acse_T_AARE_protocol_version,
2203     &ett_acse_RLRQ_apdu_U,
2204     &ett_acse_RLRE_apdu_U,
2205     &ett_acse_ABRT_apdu_U,
2206     &ett_acse_A_DT_apdu_U,
2207     &ett_acse_ACRQ_apdu_U,
2208     &ett_acse_ACRP_apdu_U,
2209     &ett_acse_ACSE_requirements,
2210     &ett_acse_AP_title,
2211     &ett_acse_ASO_qualifier,
2212     &ett_acse_AE_title,
2213     &ett_acse_ASOI_tag,
2214     &ett_acse_ASOI_tag_item,
2215     &ett_acse_ASO_context_name_list,
2216     &ett_acse_Syntactic_context_list,
2217     &ett_acse_Context_list,
2218     &ett_acse_Context_list_item,
2219     &ett_acse_SEQUENCE_OF_TransferSyntaxName,
2220     &ett_acse_Default_Context_List,
2221     &ett_acse_Default_Context_List_item,
2222     &ett_acse_P_context_result_list,
2223     &ett_acse_P_context_result_list_item,
2224     &ett_acse_Associate_source_diagnostic,
2225     &ett_acse_Association_data,
2226     &ett_acse_User_Data,
2227     &ett_acse_PDV_list,
2228     &ett_acse_T_presentation_data_values,
2229     &ett_acse_Authentication_value_other,
2230     &ett_acse_Authentication_value,
2231
2232 /*--- End of included file: packet-acse-ettarr.c ---*/
2233 #line 258 "packet-acse-template.c"
2234   };
2235
2236   /* Register protocol */
2237   proto_acse = proto_register_protocol(PNAME, PSNAME, PFNAME);
2238   register_dissector("acse", dissect_acse, proto_acse);
2239
2240   /* Register fields and subtrees */
2241   proto_register_field_array(proto_acse, hf, array_length(hf));
2242   proto_register_subtree_array(ett, array_length(ett));
2243
2244 }
2245
2246
2247 /*--- proto_reg_handoff_acse -------------------------------------------*/
2248 void proto_reg_handoff_acse(void) {
2249 /*#include "packet-acse-dis-tab.c"*/
2250
2251         oid_add_from_string("aCSE-id","2.2.3.1.1");
2252         register_ber_oid_dissector(ACSE_APDU_OID, dissect_acse, proto_acse, "acse-as-id");
2253
2254
2255 }
2256