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