1 /* Do not modify this file. */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler */
4 /* ../../tools/asn2wrs.py -b -e -p acse -c ./acse.cnf -s ./packet-acse-template -D . acse.asn */
6 /* Input file: packet-acse-template.c */
8 #line 1 "packet-acse-template.c"
10 There is a bug in asn2wrs that it can not yet handle tagged assignments such
11 as EXTERNAL ::= [UNIVERSAL 8] IMPLICIT SEQUENCE {
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
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>
26 * Wireshark - Network traffic analyzer
27 * By Gerald Combs <gerald@wireshark.org>
28 * Copyright 1998 Gerald Combs
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.
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.
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.
50 #include <epan/packet.h>
51 #include <epan/emem.h>
52 #include <epan/expert.h>
53 #include <epan/oids.h>
54 #include <epan/asn1.h>
59 #include "packet-ber.h"
60 #include "packet-acse.h"
61 #include "packet-ses.h"
62 #include "packet-pres.h"
63 #include "packet-x509if.h"
65 #define PNAME "ISO 8650-1 OSI Association Control Service"
69 #define ACSE_APDU_OID "2.2.1.0.1"
71 /* Initialize the protocol and registered fields */
74 /*--- Included file: packet-acse-hf.c ---*/
75 #line 1 "packet-acse-hf.c"
76 static int hf_acse_direct_reference = -1; /* T_direct_reference */
77 static int hf_acse_indirect_reference = -1; /* T_indirect_reference */
78 static int hf_acse_data_value_descriptor = -1; /* ObjectDescriptor */
79 static int hf_acse_encoding = -1; /* T_encoding */
80 static int hf_acse_single_ASN1_type = -1; /* T_single_ASN1_type */
81 static int hf_acse_octet_aligned = -1; /* T_octet_aligned */
82 static int hf_acse_arbitrary = -1; /* BIT_STRING */
83 static int hf_acse_aarq = -1; /* AARQ_apdu */
84 static int hf_acse_aare = -1; /* AARE_apdu */
85 static int hf_acse_rlrq = -1; /* RLRQ_apdu */
86 static int hf_acse_rlre = -1; /* RLRE_apdu */
87 static int hf_acse_abrt = -1; /* ABRT_apdu */
88 static int hf_acse_adt = -1; /* A_DT_apdu */
89 static int hf_acse_acrq = -1; /* ACRQ_apdu */
90 static int hf_acse_acrp = -1; /* ACRP_apdu */
91 static int hf_acse_aARQ_protocol_version = -1; /* T_AARQ_protocol_version */
92 static int hf_acse_aARQ_aSO_context_name = -1; /* T_AARQ_aSO_context_name */
93 static int hf_acse_called_AP_title = -1; /* AP_title */
94 static int hf_acse_called_AE_qualifier = -1; /* AE_qualifier */
95 static int hf_acse_called_AP_invocation_identifier = -1; /* AP_invocation_identifier */
96 static int hf_acse_called_AE_invocation_identifier = -1; /* AE_invocation_identifier */
97 static int hf_acse_calling_AP_title = -1; /* AP_title */
98 static int hf_acse_calling_AE_qualifier = -1; /* AE_qualifier */
99 static int hf_acse_calling_AP_invocation_identifier = -1; /* AP_invocation_identifier */
100 static int hf_acse_calling_AE_invocation_identifier = -1; /* AE_invocation_identifier */
101 static int hf_acse_sender_acse_requirements = -1; /* ACSE_requirements */
102 static int hf_acse_mechanism_name = -1; /* Mechanism_name */
103 static int hf_acse_calling_authentication_value = -1; /* Authentication_value */
104 static int hf_acse_aSO_context_name_list = -1; /* ASO_context_name_list */
105 static int hf_acse_implementation_information = -1; /* Implementation_data */
106 static int hf_acse_p_context_definition_list = -1; /* Syntactic_context_list */
107 static int hf_acse_called_asoi_tag = -1; /* ASOI_tag */
108 static int hf_acse_calling_asoi_tag = -1; /* ASOI_tag */
109 static int hf_acse_aARQ_user_information = -1; /* Association_data */
110 static int hf_acse_aARE_protocol_version = -1; /* T_AARE_protocol_version */
111 static int hf_acse_aARE_aSO_context_name = -1; /* T_AARE_aSO_context_name */
112 static int hf_acse_result = -1; /* Associate_result */
113 static int hf_acse_result_source_diagnostic = -1; /* Associate_source_diagnostic */
114 static int hf_acse_responding_AP_title = -1; /* AP_title */
115 static int hf_acse_responding_AE_qualifier = -1; /* AE_qualifier */
116 static int hf_acse_responding_AP_invocation_identifier = -1; /* AP_invocation_identifier */
117 static int hf_acse_responding_AE_invocation_identifier = -1; /* AE_invocation_identifier */
118 static int hf_acse_responder_acse_requirements = -1; /* ACSE_requirements */
119 static int hf_acse_responding_authentication_value = -1; /* Authentication_value */
120 static int hf_acse_p_context_result_list = -1; /* P_context_result_list */
121 static int hf_acse_aARE_user_information = -1; /* Association_data */
122 static int hf_acse_rLRQ_reason = -1; /* Release_request_reason */
123 static int hf_acse_aso_qualifier = -1; /* ASO_qualifier */
124 static int hf_acse_asoi_identifier = -1; /* ASOI_identifier */
125 static int hf_acse_rLRQ_user_information = -1; /* Association_data */
126 static int hf_acse_rLRE_reason = -1; /* Release_response_reason */
127 static int hf_acse_rLRE_user_information = -1; /* Association_data */
128 static int hf_acse_abort_source = -1; /* ABRT_source */
129 static int hf_acse_abort_diagnostic = -1; /* ABRT_diagnostic */
130 static int hf_acse_aBRT_user_information = -1; /* Association_data */
131 static int hf_acse_a_user_data = -1; /* User_Data */
132 static int hf_acse_aCRQ_aSO_context_name = -1; /* T_ACRQ_aSO_context_name */
133 static int hf_acse_user_information = -1; /* User_information */
134 static int hf_acse_aSO_context_name = -1; /* T_ACRP_aSO_context_name */
135 static int hf_acse_ap_title_form1 = -1; /* AP_title_form1 */
136 static int hf_acse_ap_title_form2 = -1; /* AP_title_form2 */
137 static int hf_acse_ap_title_form3 = -1; /* AP_title_form3 */
138 static int hf_acse_aso_qualifier_form1 = -1; /* ASO_qualifier_form1 */
139 static int hf_acse_aso_qualifier_form2 = -1; /* ASO_qualifier_form2 */
140 static int hf_acse_aso_qualifier_form3 = -1; /* ASO_qualifier_form3 */
141 static int hf_acse_aso_qualifier_form_any_octets = -1; /* ASO_qualifier_form_octets */
142 static int hf_acse_ae_title_form1 = -1; /* AE_title_form1 */
143 static int hf_acse_ae_title_form2 = -1; /* AE_title_form2 */
144 static int hf_acse_ASOI_tag_item = -1; /* ASOI_tag_item */
145 static int hf_acse_qualifier = -1; /* ASO_qualifier */
146 static int hf_acse_identifier = -1; /* ASOI_identifier */
147 static int hf_acse_ASO_context_name_list_item = -1; /* ASO_context_name */
148 static int hf_acse_context_list = -1; /* Context_list */
149 static int hf_acse_default_contact_list = -1; /* Default_Context_List */
150 static int hf_acse_Context_list_item = -1; /* Context_list_item */
151 static int hf_acse_pci = -1; /* Presentation_context_identifier */
152 static int hf_acse_abstract_syntax = -1; /* Abstract_syntax_name */
153 static int hf_acse_transfer_syntaxes = -1; /* SEQUENCE_OF_TransferSyntaxName */
154 static int hf_acse_transfer_syntaxes_item = -1; /* TransferSyntaxName */
155 static int hf_acse_Default_Context_List_item = -1; /* Default_Context_List_item */
156 static int hf_acse_abstract_syntax_name = -1; /* Abstract_syntax_name */
157 static int hf_acse_transfer_syntax_name = -1; /* TransferSyntaxName */
158 static int hf_acse_P_context_result_list_item = -1; /* P_context_result_list_item */
159 static int hf_acse_pcontext_result = -1; /* Result */
160 static int hf_acse_concrete_syntax_name = -1; /* Concrete_syntax_name */
161 static int hf_acse_provider_reason = -1; /* T_provider_reason */
162 static int hf_acse_acse_service_user = -1; /* T_acse_service_user */
163 static int hf_acse_acse_service_provider = -1; /* T_acse_service_provider */
164 static int hf_acse_Association_data_item = -1; /* EXTERNALt */
165 static int hf_acse_simply_encoded_data = -1; /* Simply_encoded_data */
166 static int hf_acse_fully_encoded_data = -1; /* PDV_list */
167 static int hf_acse_presentation_context_identifier = -1; /* Presentation_context_identifier */
168 static int hf_acse_presentation_data_values = -1; /* T_presentation_data_values */
169 static int hf_acse_simple_ASN1_type = -1; /* T_simple_ASN1_type */
170 static int hf_acse_octet_aligned_01 = -1; /* OCTET_STRING */
171 static int hf_acse_other_mechanism_name = -1; /* T_other_mechanism_name */
172 static int hf_acse_other_mechanism_value = -1; /* T_other_mechanism_value */
173 static int hf_acse_charstring = -1; /* GraphicString */
174 static int hf_acse_bitstring = -1; /* BIT_STRING */
175 static int hf_acse_external = -1; /* EXTERNALt */
176 static int hf_acse_other = -1; /* Authentication_value_other */
178 static int hf_acse_T_AARQ_protocol_version_version1 = -1;
179 static int hf_acse_T_AARE_protocol_version_version1 = -1;
180 static int hf_acse_ACSE_requirements_authentication = -1;
181 static int hf_acse_ACSE_requirements_aSO_context_negotiation = -1;
182 static int hf_acse_ACSE_requirements_higher_level_association = -1;
183 static int hf_acse_ACSE_requirements_nested_association = -1;
185 /*--- End of included file: packet-acse-hf.c ---*/
186 #line 66 "packet-acse-template.c"
188 /* Initialize the subtree pointers */
189 static gint ett_acse = -1;
191 /*--- Included file: packet-acse-ett.c ---*/
192 #line 1 "packet-acse-ett.c"
193 static gint ett_acse_EXTERNALt_U = -1;
194 static gint ett_acse_T_encoding = -1;
195 static gint ett_acse_ACSE_apdu = -1;
196 static gint ett_acse_AARQ_apdu_U = -1;
197 static gint ett_acse_T_AARQ_protocol_version = -1;
198 static gint ett_acse_AARE_apdu_U = -1;
199 static gint ett_acse_T_AARE_protocol_version = -1;
200 static gint ett_acse_RLRQ_apdu_U = -1;
201 static gint ett_acse_RLRE_apdu_U = -1;
202 static gint ett_acse_ABRT_apdu_U = -1;
203 static gint ett_acse_A_DT_apdu_U = -1;
204 static gint ett_acse_ACRQ_apdu_U = -1;
205 static gint ett_acse_ACRP_apdu_U = -1;
206 static gint ett_acse_ACSE_requirements = -1;
207 static gint ett_acse_AP_title = -1;
208 static gint ett_acse_ASO_qualifier = -1;
209 static gint ett_acse_AE_title = -1;
210 static gint ett_acse_ASOI_tag = -1;
211 static gint ett_acse_ASOI_tag_item = -1;
212 static gint ett_acse_ASO_context_name_list = -1;
213 static gint ett_acse_Syntactic_context_list = -1;
214 static gint ett_acse_Context_list = -1;
215 static gint ett_acse_Context_list_item = -1;
216 static gint ett_acse_SEQUENCE_OF_TransferSyntaxName = -1;
217 static gint ett_acse_Default_Context_List = -1;
218 static gint ett_acse_Default_Context_List_item = -1;
219 static gint ett_acse_P_context_result_list = -1;
220 static gint ett_acse_P_context_result_list_item = -1;
221 static gint ett_acse_Associate_source_diagnostic = -1;
222 static gint ett_acse_Association_data = -1;
223 static gint ett_acse_User_Data = -1;
224 static gint ett_acse_PDV_list = -1;
225 static gint ett_acse_T_presentation_data_values = -1;
226 static gint ett_acse_Authentication_value_other = -1;
227 static gint ett_acse_Authentication_value = -1;
229 /*--- End of included file: packet-acse-ett.c ---*/
230 #line 70 "packet-acse-template.c"
232 static struct SESSION_DATA_STRUCTURE* session = NULL;
234 static const char *object_identifier_id;
235 /* indirect_reference, used to pick up the signalling so we know what
236 kind of data is transferred in SES_DATA_TRANSFER_PDUs */
237 static guint32 indir_ref=0;
239 static proto_tree *top_tree=NULL;
242 /* to keep track of presentation context identifiers and protocol-oids */
243 typedef struct _acse_ctx_oid_t {
244 /* XXX here we should keep track of ADDRESS/PORT as well */
248 static GHashTable *acse_ctx_oid_table = NULL;
251 acse_ctx_oid_hash(gconstpointer k)
253 acse_ctx_oid_t *aco=(acse_ctx_oid_t *)k;
256 /* XXX this one should be made ADDRESS/PORT aware */
258 acse_ctx_oid_equal(gconstpointer k1, gconstpointer k2)
260 acse_ctx_oid_t *aco1=(acse_ctx_oid_t *)k1;
261 acse_ctx_oid_t *aco2=(acse_ctx_oid_t *)k2;
262 return aco1->ctx_id==aco2->ctx_id;
268 if( acse_ctx_oid_table ){
269 g_hash_table_destroy(acse_ctx_oid_table);
270 acse_ctx_oid_table = NULL;
272 acse_ctx_oid_table = g_hash_table_new(acse_ctx_oid_hash,
278 register_ctx_id_and_oid(packet_info *pinfo _U_, guint32 idx, char *oid)
280 acse_ctx_oid_t *aco, *tmpaco;
281 aco=se_alloc(sizeof(acse_ctx_oid_t));
283 aco->oid=se_strdup(oid);
285 /* if this ctx already exists, remove the old one first */
286 tmpaco=(acse_ctx_oid_t *)g_hash_table_lookup(acse_ctx_oid_table, aco);
288 g_hash_table_remove(acse_ctx_oid_table, tmpaco);
290 g_hash_table_insert(acse_ctx_oid_table, aco, aco);
293 find_oid_by_ctx_id(packet_info *pinfo _U_, guint32 idx)
295 acse_ctx_oid_t aco, *tmpaco;
297 tmpaco=(acse_ctx_oid_t *)g_hash_table_lookup(acse_ctx_oid_table, &aco);
304 # endif /* NOT_NEEDED */
307 /*--- Included file: packet-acse-fn.c ---*/
308 #line 1 "packet-acse-fn.c"
312 dissect_acse_T_direct_reference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
313 offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id);
321 dissect_acse_T_indirect_reference(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
324 offset = dissect_ber_integer(FALSE, actx, tree, tvb, offset,
325 hf_acse_indirect_reference,
328 /* look up the indirect reference */
329 if((oid = find_oid_by_pres_ctx_id(actx->pinfo, indir_ref)) != NULL) {
330 object_identifier_id = ep_strdup(oid);
334 session->pres_ctx_id = indir_ref;
344 dissect_acse_ObjectDescriptor(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
345 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_ObjectDescriptor,
346 actx, tree, tvb, offset, hf_index,
355 dissect_acse_T_single_ASN1_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
357 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree ? top_tree : tree);
367 dissect_acse_T_octet_aligned(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
369 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree ? top_tree : tree);
379 dissect_acse_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
380 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
388 static const value_string acse_T_encoding_vals[] = {
389 { 0, "single-ASN1-type" },
390 { 1, "octet-aligned" },
395 static const ber_choice_t T_encoding_choice[] = {
396 { 0, &hf_acse_single_ASN1_type, BER_CLASS_CON, 0, 0, dissect_acse_T_single_ASN1_type },
397 { 1, &hf_acse_octet_aligned , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_T_octet_aligned },
398 { 2, &hf_acse_arbitrary , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_acse_BIT_STRING },
399 { 0, NULL, 0, 0, 0, NULL }
403 dissect_acse_T_encoding(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
404 offset = dissect_ber_choice(actx, tree, tvb, offset,
405 T_encoding_choice, hf_index, ett_acse_T_encoding,
412 static const ber_sequence_t EXTERNALt_U_sequence[] = {
413 { &hf_acse_direct_reference, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_T_direct_reference },
414 { &hf_acse_indirect_reference, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_T_indirect_reference },
415 { &hf_acse_data_value_descriptor, BER_CLASS_UNI, BER_UNI_TAG_ObjectDescriptor, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_ObjectDescriptor },
416 { &hf_acse_encoding , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_acse_T_encoding },
417 { NULL, 0, 0, 0, NULL }
421 dissect_acse_EXTERNALt_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
422 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
423 EXTERNALt_U_sequence, hf_index, ett_acse_EXTERNALt_U);
431 dissect_acse_EXTERNALt(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
432 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
433 hf_index, BER_CLASS_UNI, 8, TRUE, dissect_acse_EXTERNALt_U);
439 static const asn_namedbit T_AARQ_protocol_version_bits[] = {
440 { 0, &hf_acse_T_AARQ_protocol_version_version1, -1, -1, "version1", NULL },
441 { 0, NULL, 0, 0, NULL, NULL }
445 dissect_acse_T_AARQ_protocol_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
446 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
447 T_AARQ_protocol_version_bits, hf_index, ett_acse_T_AARQ_protocol_version,
456 dissect_acse_ASO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
457 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
465 dissect_acse_T_AARQ_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
467 offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
468 hf_index, &object_identifier_id);
478 dissect_acse_AP_title_form1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
479 offset = dissect_x509if_Name(implicit_tag, tvb, offset, actx, tree, hf_index);
487 dissect_acse_AP_title_form2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
488 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
496 dissect_acse_AP_title_form3(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
497 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
498 actx, tree, tvb, offset, hf_index,
505 const value_string acse_AP_title_vals[] = {
506 { 0, "ap-title-form1" },
507 { 1, "ap-title-form2" },
508 { 2, "ap-title-form3" },
512 static const ber_choice_t AP_title_choice[] = {
513 { 0, &hf_acse_ap_title_form1 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title_form1 },
514 { 1, &hf_acse_ap_title_form2 , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title_form2 },
515 { 2, &hf_acse_ap_title_form3 , BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title_form3 },
516 { 0, NULL, 0, 0, 0, NULL }
520 dissect_acse_AP_title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
521 offset = dissect_ber_choice(actx, tree, tvb, offset,
522 AP_title_choice, hf_index, ett_acse_AP_title,
531 dissect_acse_ASO_qualifier_form1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
532 offset = dissect_x509if_RelativeDistinguishedName(implicit_tag, tvb, offset, actx, tree, hf_index);
540 dissect_acse_ASO_qualifier_form2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
541 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
550 dissect_acse_ASO_qualifier_form3(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
551 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
552 actx, tree, tvb, offset, hf_index,
561 dissect_acse_ASO_qualifier_form_octets(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
562 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
569 const value_string acse_ASO_qualifier_vals[] = {
570 { 0, "aso-qualifier-form1" },
571 { 1, "aso-qualifier-form2" },
572 { 2, "aso-qualifier-form3" },
573 { 3, "aso-qualifier-form-any-octets" },
577 static const ber_choice_t ASO_qualifier_choice[] = {
578 { 0, &hf_acse_aso_qualifier_form1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form1 },
579 { 1, &hf_acse_aso_qualifier_form2, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form2 },
580 { 2, &hf_acse_aso_qualifier_form3, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form3 },
581 { 3, &hf_acse_aso_qualifier_form_any_octets, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_qualifier_form_octets },
582 { 0, NULL, 0, 0, 0, NULL }
586 dissect_acse_ASO_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
587 offset = dissect_ber_choice(actx, tree, tvb, offset,
588 ASO_qualifier_choice, hf_index, ett_acse_ASO_qualifier,
597 dissect_acse_AE_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
598 offset = dissect_acse_ASO_qualifier(implicit_tag, tvb, offset, actx, tree, hf_index);
606 dissect_acse_AP_invocation_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
607 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
616 dissect_acse_AE_invocation_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
617 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
624 static const asn_namedbit ACSE_requirements_bits[] = {
625 { 0, &hf_acse_ACSE_requirements_authentication, -1, -1, "authentication", NULL },
626 { 1, &hf_acse_ACSE_requirements_aSO_context_negotiation, -1, -1, "aSO-context-negotiation", NULL },
627 { 2, &hf_acse_ACSE_requirements_higher_level_association, -1, -1, "higher-level-association", NULL },
628 { 3, &hf_acse_ACSE_requirements_nested_association, -1, -1, "nested-association", NULL },
629 { 0, NULL, 0, 0, NULL, NULL }
633 dissect_acse_ACSE_requirements(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
634 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
635 ACSE_requirements_bits, hf_index, ett_acse_ACSE_requirements,
644 dissect_acse_Mechanism_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
645 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
653 dissect_acse_GraphicString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
654 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
655 actx, tree, tvb, offset, hf_index,
664 dissect_acse_T_other_mechanism_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
665 offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id);
673 dissect_acse_T_other_mechanism_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
675 offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, top_tree);
683 static const ber_sequence_t Authentication_value_other_sequence[] = {
684 { &hf_acse_other_mechanism_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_T_other_mechanism_name },
685 { &hf_acse_other_mechanism_value, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_acse_T_other_mechanism_value },
686 { NULL, 0, 0, 0, NULL }
690 dissect_acse_Authentication_value_other(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
691 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
692 Authentication_value_other_sequence, hf_index, ett_acse_Authentication_value_other);
698 static const value_string acse_Authentication_value_vals[] = {
706 static const ber_choice_t Authentication_value_choice[] = {
707 { 0, &hf_acse_charstring , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_acse_GraphicString },
708 { 1, &hf_acse_bitstring , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_BIT_STRING },
709 { 2, &hf_acse_external , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_acse_EXTERNALt },
710 { 3, &hf_acse_other , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_acse_Authentication_value_other },
711 { 0, NULL, 0, 0, 0, NULL }
715 dissect_acse_Authentication_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
716 offset = dissect_ber_choice(actx, tree, tvb, offset,
717 Authentication_value_choice, hf_index, ett_acse_Authentication_value,
724 static const ber_sequence_t ASO_context_name_list_sequence_of[1] = {
725 { &hf_acse_ASO_context_name_list_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_ASO_context_name },
729 dissect_acse_ASO_context_name_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
730 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
731 ASO_context_name_list_sequence_of, hf_index, ett_acse_ASO_context_name_list);
739 dissect_acse_Implementation_data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
740 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
741 actx, tree, tvb, offset, hf_index,
750 dissect_acse_Presentation_context_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
751 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
760 dissect_acse_Abstract_syntax_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
761 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
769 dissect_acse_TransferSyntaxName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
770 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
776 static const ber_sequence_t SEQUENCE_OF_TransferSyntaxName_sequence_of[1] = {
777 { &hf_acse_transfer_syntaxes_item, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_TransferSyntaxName },
781 dissect_acse_SEQUENCE_OF_TransferSyntaxName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
782 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
783 SEQUENCE_OF_TransferSyntaxName_sequence_of, hf_index, ett_acse_SEQUENCE_OF_TransferSyntaxName);
789 static const ber_sequence_t Context_list_item_sequence[] = {
790 { &hf_acse_pci , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_acse_Presentation_context_identifier },
791 { &hf_acse_abstract_syntax, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_Abstract_syntax_name },
792 { &hf_acse_transfer_syntaxes, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_SEQUENCE_OF_TransferSyntaxName },
793 { NULL, 0, 0, 0, NULL }
797 dissect_acse_Context_list_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
798 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
799 Context_list_item_sequence, hf_index, ett_acse_Context_list_item);
805 static const ber_sequence_t Context_list_sequence_of[1] = {
806 { &hf_acse_Context_list_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_Context_list_item },
810 dissect_acse_Context_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
811 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
812 Context_list_sequence_of, hf_index, ett_acse_Context_list);
818 static const ber_sequence_t Default_Context_List_item_sequence[] = {
819 { &hf_acse_abstract_syntax_name, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Abstract_syntax_name },
820 { &hf_acse_transfer_syntax_name, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_TransferSyntaxName },
821 { NULL, 0, 0, 0, NULL }
825 dissect_acse_Default_Context_List_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
826 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
827 Default_Context_List_item_sequence, hf_index, ett_acse_Default_Context_List_item);
833 static const ber_sequence_t Default_Context_List_sequence_of[1] = {
834 { &hf_acse_Default_Context_List_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_Default_Context_List_item },
838 dissect_acse_Default_Context_List(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
839 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
840 Default_Context_List_sequence_of, hf_index, ett_acse_Default_Context_List);
846 static const value_string acse_Syntactic_context_list_vals[] = {
847 { 0, "context-list" },
848 { 1, "default-contact-list" },
852 static const ber_choice_t Syntactic_context_list_choice[] = {
853 { 0, &hf_acse_context_list , BER_CLASS_CON, 0, 0, dissect_acse_Context_list },
854 { 1, &hf_acse_default_contact_list, BER_CLASS_CON, 1, 0, dissect_acse_Default_Context_List },
855 { 0, NULL, 0, 0, 0, NULL }
859 dissect_acse_Syntactic_context_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
860 offset = dissect_ber_choice(actx, tree, tvb, offset,
861 Syntactic_context_list_choice, hf_index, ett_acse_Syntactic_context_list,
870 dissect_acse_ASOI_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
871 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
878 static const ber_sequence_t ASOI_tag_item_sequence[] = {
879 { &hf_acse_qualifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
880 { &hf_acse_identifier , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_acse_ASOI_identifier },
881 { NULL, 0, 0, 0, NULL }
885 dissect_acse_ASOI_tag_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
886 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
887 ASOI_tag_item_sequence, hf_index, ett_acse_ASOI_tag_item);
893 static const ber_sequence_t ASOI_tag_sequence_of[1] = {
894 { &hf_acse_ASOI_tag_item , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_ASOI_tag_item },
898 dissect_acse_ASOI_tag(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
899 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
900 ASOI_tag_sequence_of, hf_index, ett_acse_ASOI_tag);
906 static const ber_sequence_t Association_data_sequence_of[1] = {
907 { &hf_acse_Association_data_item, BER_CLASS_UNI, 8, BER_FLAGS_NOOWNTAG, dissect_acse_EXTERNALt },
911 dissect_acse_Association_data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
912 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
913 Association_data_sequence_of, hf_index, ett_acse_Association_data);
919 static const ber_sequence_t AARQ_apdu_U_sequence[] = {
920 { &hf_acse_aARQ_protocol_version, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_AARQ_protocol_version },
921 { &hf_acse_aARQ_aSO_context_name, BER_CLASS_CON, 1, 0, dissect_acse_T_AARQ_aSO_context_name },
922 { &hf_acse_called_AP_title, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AP_title },
923 { &hf_acse_called_AE_qualifier, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AE_qualifier },
924 { &hf_acse_called_AP_invocation_identifier, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL, dissect_acse_AP_invocation_identifier },
925 { &hf_acse_called_AE_invocation_identifier, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL, dissect_acse_AE_invocation_identifier },
926 { &hf_acse_calling_AP_title, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AP_title },
927 { &hf_acse_calling_AE_qualifier, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AE_qualifier },
928 { &hf_acse_calling_AP_invocation_identifier, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_acse_AP_invocation_identifier },
929 { &hf_acse_calling_AE_invocation_identifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL, dissect_acse_AE_invocation_identifier },
930 { &hf_acse_sender_acse_requirements, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ACSE_requirements },
931 { &hf_acse_mechanism_name , BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Mechanism_name },
932 { &hf_acse_calling_authentication_value, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Authentication_value },
933 { &hf_acse_aSO_context_name_list, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASO_context_name_list },
934 { &hf_acse_implementation_information, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Implementation_data },
935 { &hf_acse_p_context_definition_list, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Syntactic_context_list },
936 { &hf_acse_called_asoi_tag, BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
937 { &hf_acse_calling_asoi_tag, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
938 { &hf_acse_aARQ_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
939 { NULL, 0, 0, 0, NULL }
943 dissect_acse_AARQ_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
944 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
945 AARQ_apdu_U_sequence, hf_index, ett_acse_AARQ_apdu_U);
953 dissect_acse_AARQ_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
954 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
955 hf_index, BER_CLASS_APP, 0, TRUE, dissect_acse_AARQ_apdu_U);
961 static const asn_namedbit T_AARE_protocol_version_bits[] = {
962 { 0, &hf_acse_T_AARE_protocol_version_version1, -1, -1, "version1", NULL },
963 { 0, NULL, 0, 0, NULL, NULL }
967 dissect_acse_T_AARE_protocol_version(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
968 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
969 T_AARE_protocol_version_bits, hf_index, ett_acse_T_AARE_protocol_version,
978 dissect_acse_T_AARE_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
980 offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
981 hf_index, &object_identifier_id);
989 static const value_string acse_Associate_result_vals[] = {
991 { 1, "rejected-permanent" },
992 { 2, "rejected-transient" },
998 dissect_acse_Associate_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
999 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1006 static const value_string acse_T_acse_service_user_vals[] = {
1008 { 1, "no-reason-given" },
1009 { 2, "application-context-name-not-supported" },
1010 { 3, "calling-AP-title-not-recognized" },
1011 { 4, "calling-AP-invocation-identifier-not-recognized" },
1012 { 5, "calling-AE-qualifier-not-recognized" },
1013 { 6, "calling-AE-invocation-identifier-not-recognized" },
1014 { 7, "called-AP-title-not-recognized" },
1015 { 8, "called-AP-invocation-identifier-not-recognized" },
1016 { 9, "called-AE-qualifier-not-recognized" },
1017 { 10, "called-AE-invocation-identifier-not-recognized" },
1018 { 11, "authentication-mechanism-name-not-recognized" },
1019 { 12, "authentication-mechanism-name-required" },
1020 { 13, "authentication-failure" },
1021 { 14, "authentication-required" },
1027 dissect_acse_T_acse_service_user(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1028 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1035 static const value_string acse_T_acse_service_provider_vals[] = {
1037 { 1, "no-reason-given" },
1038 { 2, "no-common-acse-version" },
1044 dissect_acse_T_acse_service_provider(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1045 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1052 static const value_string acse_Associate_source_diagnostic_vals[] = {
1053 { 1, "acse-service-user" },
1054 { 2, "acse-service-provider" },
1058 static const ber_choice_t Associate_source_diagnostic_choice[] = {
1059 { 1, &hf_acse_acse_service_user, BER_CLASS_CON, 1, 0, dissect_acse_T_acse_service_user },
1060 { 2, &hf_acse_acse_service_provider, BER_CLASS_CON, 2, 0, dissect_acse_T_acse_service_provider },
1061 { 0, NULL, 0, 0, 0, NULL }
1065 dissect_acse_Associate_source_diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1066 offset = dissect_ber_choice(actx, tree, tvb, offset,
1067 Associate_source_diagnostic_choice, hf_index, ett_acse_Associate_source_diagnostic,
1074 static const value_string acse_Result_vals[] = {
1075 { 0, "acceptance" },
1076 { 1, "user-rejection" },
1077 { 2, "provider-rejection" },
1083 dissect_acse_Result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1084 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1093 dissect_acse_Concrete_syntax_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1094 offset = dissect_acse_TransferSyntaxName(implicit_tag, tvb, offset, actx, tree, hf_index);
1100 static const value_string acse_T_provider_reason_vals[] = {
1101 { 0, "reason-not-specified" },
1102 { 1, "abstract-syntax-not-supported" },
1103 { 2, "proposed-transfer-syntaxes-not-supported" },
1104 { 3, "local-limit-on-DCS-exceeded" },
1110 dissect_acse_T_provider_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1111 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1118 static const ber_sequence_t P_context_result_list_item_sequence[] = {
1119 { &hf_acse_pcontext_result, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_acse_Result },
1120 { &hf_acse_concrete_syntax_name, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Concrete_syntax_name },
1121 { &hf_acse_provider_reason, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_provider_reason },
1122 { NULL, 0, 0, 0, NULL }
1126 dissect_acse_P_context_result_list_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1127 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1128 P_context_result_list_item_sequence, hf_index, ett_acse_P_context_result_list_item);
1134 static const ber_sequence_t P_context_result_list_sequence_of[1] = {
1135 { &hf_acse_P_context_result_list_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_P_context_result_list_item },
1139 dissect_acse_P_context_result_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1140 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1141 P_context_result_list_sequence_of, hf_index, ett_acse_P_context_result_list);
1147 static const ber_sequence_t AARE_apdu_U_sequence[] = {
1148 { &hf_acse_aARE_protocol_version, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_AARE_protocol_version },
1149 { &hf_acse_aARE_aSO_context_name, BER_CLASS_CON, 1, 0, dissect_acse_T_AARE_aSO_context_name },
1150 { &hf_acse_result , BER_CLASS_CON, 2, 0, dissect_acse_Associate_result },
1151 { &hf_acse_result_source_diagnostic, BER_CLASS_CON, 3, BER_FLAGS_NOTCHKTAG, dissect_acse_Associate_source_diagnostic },
1152 { &hf_acse_responding_AP_title, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AP_title },
1153 { &hf_acse_responding_AE_qualifier, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_AE_qualifier },
1154 { &hf_acse_responding_AP_invocation_identifier, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL, dissect_acse_AP_invocation_identifier },
1155 { &hf_acse_responding_AE_invocation_identifier, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL, dissect_acse_AE_invocation_identifier },
1156 { &hf_acse_responder_acse_requirements, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ACSE_requirements },
1157 { &hf_acse_mechanism_name , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Mechanism_name },
1158 { &hf_acse_responding_authentication_value, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Authentication_value },
1159 { &hf_acse_aSO_context_name_list, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASO_context_name_list },
1160 { &hf_acse_implementation_information, BER_CLASS_CON, 29, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Implementation_data },
1161 { &hf_acse_p_context_result_list, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_P_context_result_list },
1162 { &hf_acse_called_asoi_tag, BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
1163 { &hf_acse_calling_asoi_tag, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_tag },
1164 { &hf_acse_aARE_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1165 { NULL, 0, 0, 0, NULL }
1169 dissect_acse_AARE_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1170 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1171 AARE_apdu_U_sequence, hf_index, ett_acse_AARE_apdu_U);
1179 dissect_acse_AARE_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1180 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1181 hf_index, BER_CLASS_APP, 1, TRUE, dissect_acse_AARE_apdu_U);
1187 static const value_string acse_Release_request_reason_vals[] = {
1190 { 30, "user-defined" },
1196 dissect_acse_Release_request_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1200 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1204 if((reason != -1) && check_col(actx->pinfo->cinfo, COL_INFO))
1205 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "Release-Request (%s)", val_to_str(reason, acse_Release_request_reason_vals, "reason(%d)"));
1214 static const ber_sequence_t RLRQ_apdu_U_sequence[] = {
1215 { &hf_acse_rLRQ_reason , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Release_request_reason },
1216 { &hf_acse_aso_qualifier , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1217 { &hf_acse_asoi_identifier, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1218 { &hf_acse_rLRQ_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1219 { NULL, 0, 0, 0, NULL }
1223 dissect_acse_RLRQ_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1224 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1225 RLRQ_apdu_U_sequence, hf_index, ett_acse_RLRQ_apdu_U);
1233 dissect_acse_RLRQ_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1234 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1235 hf_index, BER_CLASS_APP, 2, TRUE, dissect_acse_RLRQ_apdu_U);
1241 static const value_string acse_Release_response_reason_vals[] = {
1243 { 1, "not-finished" },
1244 { 30, "user-defined" },
1250 dissect_acse_Release_response_reason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1251 #line 109 "acse.cnf"
1254 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1258 if((reason != -1) && check_col(actx->pinfo->cinfo, COL_INFO))
1259 col_append_fstr(actx->pinfo->cinfo, COL_INFO, "Release-Response (%s)", val_to_str(reason, acse_Release_request_reason_vals, "reason(%d)"));
1268 static const ber_sequence_t RLRE_apdu_U_sequence[] = {
1269 { &hf_acse_rLRE_reason , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Release_response_reason },
1270 { &hf_acse_aso_qualifier , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1271 { &hf_acse_asoi_identifier, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1272 { &hf_acse_rLRE_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1273 { NULL, 0, 0, 0, NULL }
1277 dissect_acse_RLRE_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1278 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1279 RLRE_apdu_U_sequence, hf_index, ett_acse_RLRE_apdu_U);
1287 dissect_acse_RLRE_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1288 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1289 hf_index, BER_CLASS_APP, 3, TRUE, dissect_acse_RLRE_apdu_U);
1295 static const value_string acse_ABRT_source_vals[] = {
1296 { 0, "acse-service-user" },
1297 { 1, "acse-service-provider" },
1303 dissect_acse_ABRT_source(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1304 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1311 static const value_string acse_ABRT_diagnostic_vals[] = {
1312 { 1, "no-reason-given" },
1313 { 2, "protocol-error" },
1314 { 3, "authentication-mechanism-name-not-recognized" },
1315 { 4, "authentication-mechanism-name-required" },
1316 { 5, "authentication-failure" },
1317 { 6, "authentication-required" },
1323 dissect_acse_ABRT_diagnostic(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1324 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1331 static const ber_sequence_t ABRT_apdu_U_sequence[] = {
1332 { &hf_acse_abort_source , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_acse_ABRT_source },
1333 { &hf_acse_abort_diagnostic, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ABRT_diagnostic },
1334 { &hf_acse_aso_qualifier , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1335 { &hf_acse_asoi_identifier, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1336 { &hf_acse_aBRT_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_Association_data },
1337 { NULL, 0, 0, 0, NULL }
1341 dissect_acse_ABRT_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1342 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1343 ABRT_apdu_U_sequence, hf_index, ett_acse_ABRT_apdu_U);
1351 dissect_acse_ABRT_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1352 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1353 hf_index, BER_CLASS_APP, 4, TRUE, dissect_acse_ABRT_apdu_U);
1361 dissect_acse_User_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1362 offset = dissect_acse_Association_data(implicit_tag, tvb, offset, actx, tree, hf_index);
1370 dissect_acse_Simply_encoded_data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1371 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1380 dissect_acse_T_simple_ASN1_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1382 /*XXX not implemented yet */
1392 dissect_acse_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1393 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1400 static const value_string acse_T_presentation_data_values_vals[] = {
1401 { 0, "simple-ASN1-type" },
1402 { 1, "octet-aligned" },
1407 static const ber_choice_t T_presentation_data_values_choice[] = {
1408 { 0, &hf_acse_simple_ASN1_type, BER_CLASS_CON, 0, 0, dissect_acse_T_simple_ASN1_type },
1409 { 1, &hf_acse_octet_aligned_01, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_acse_OCTET_STRING },
1410 { 2, &hf_acse_arbitrary , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_acse_BIT_STRING },
1411 { 0, NULL, 0, 0, 0, NULL }
1415 dissect_acse_T_presentation_data_values(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1416 offset = dissect_ber_choice(actx, tree, tvb, offset,
1417 T_presentation_data_values_choice, hf_index, ett_acse_T_presentation_data_values,
1424 static const ber_sequence_t PDV_list_sequence[] = {
1425 { &hf_acse_transfer_syntax_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_acse_TransferSyntaxName },
1426 { &hf_acse_presentation_context_identifier, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_acse_Presentation_context_identifier },
1427 { &hf_acse_presentation_data_values, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_acse_T_presentation_data_values },
1428 { NULL, 0, 0, 0, NULL }
1432 dissect_acse_PDV_list(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1433 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1434 PDV_list_sequence, hf_index, ett_acse_PDV_list);
1440 static const value_string acse_User_Data_vals[] = {
1441 { 0, "user-information" },
1442 { 1, "simply-encoded-data" },
1443 { 2, "fully-encoded-data" },
1447 static const ber_choice_t User_Data_choice[] = {
1448 { 0, &hf_acse_user_information, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_acse_User_information },
1449 { 1, &hf_acse_simply_encoded_data, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_acse_Simply_encoded_data },
1450 { 2, &hf_acse_fully_encoded_data, BER_CLASS_CON, 0, 0, dissect_acse_PDV_list },
1451 { 0, NULL, 0, 0, 0, NULL }
1455 dissect_acse_User_Data(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1456 offset = dissect_ber_choice(actx, tree, tvb, offset,
1457 User_Data_choice, hf_index, ett_acse_User_Data,
1464 static const ber_sequence_t A_DT_apdu_U_sequence[] = {
1465 { &hf_acse_aso_qualifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1466 { &hf_acse_asoi_identifier, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1467 { &hf_acse_a_user_data , BER_CLASS_CON, 30, BER_FLAGS_NOTCHKTAG, dissect_acse_User_Data },
1468 { NULL, 0, 0, 0, NULL }
1472 dissect_acse_A_DT_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1473 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1474 A_DT_apdu_U_sequence, hf_index, ett_acse_A_DT_apdu_U);
1482 dissect_acse_A_DT_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1483 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1484 hf_index, BER_CLASS_APP, 5, TRUE, dissect_acse_A_DT_apdu_U);
1492 dissect_acse_T_ACRQ_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1494 offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
1495 hf_index, &object_identifier_id);
1503 static const ber_sequence_t ACRQ_apdu_U_sequence[] = {
1504 { &hf_acse_aso_qualifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1505 { &hf_acse_asoi_identifier, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1506 { &hf_acse_aCRQ_aSO_context_name, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_ACRQ_aSO_context_name },
1507 { &hf_acse_aSO_context_name_list, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASO_context_name_list },
1508 { &hf_acse_p_context_definition_list, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_Syntactic_context_list },
1509 { &hf_acse_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_User_information },
1510 { NULL, 0, 0, 0, NULL }
1514 dissect_acse_ACRQ_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1515 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1516 ACRQ_apdu_U_sequence, hf_index, ett_acse_ACRQ_apdu_U);
1524 dissect_acse_ACRQ_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1525 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1526 hf_index, BER_CLASS_APP, 6, TRUE, dissect_acse_ACRQ_apdu_U);
1534 dissect_acse_T_ACRP_aSO_context_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1536 offset = dissect_ber_object_identifier_str(FALSE, actx, tree, tvb, offset,
1537 hf_index, &object_identifier_id);
1545 static const ber_sequence_t ACRP_apdu_U_sequence[] = {
1546 { &hf_acse_aso_qualifier , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOTCHKTAG, dissect_acse_ASO_qualifier },
1547 { &hf_acse_asoi_identifier, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_ASOI_identifier },
1548 { &hf_acse_aSO_context_name, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_T_ACRP_aSO_context_name },
1549 { &hf_acse_p_context_result_list, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_P_context_result_list },
1550 { &hf_acse_user_information, BER_CLASS_CON, 30, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acse_User_information },
1551 { NULL, 0, 0, 0, NULL }
1555 dissect_acse_ACRP_apdu_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1556 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1557 ACRP_apdu_U_sequence, hf_index, ett_acse_ACRP_apdu_U);
1565 dissect_acse_ACRP_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1566 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
1567 hf_index, BER_CLASS_APP, 7, TRUE, dissect_acse_ACRP_apdu_U);
1573 static const value_string acse_ACSE_apdu_vals[] = {
1585 static const ber_choice_t ACSE_apdu_choice[] = {
1586 { 0, &hf_acse_aarq , BER_CLASS_APP, 0, BER_FLAGS_IMPLTAG, dissect_acse_AARQ_apdu },
1587 { 1, &hf_acse_aare , BER_CLASS_APP, 1, BER_FLAGS_IMPLTAG, dissect_acse_AARE_apdu },
1588 { 2, &hf_acse_rlrq , BER_CLASS_APP, 2, BER_FLAGS_IMPLTAG, dissect_acse_RLRQ_apdu },
1589 { 3, &hf_acse_rlre , BER_CLASS_APP, 3, BER_FLAGS_IMPLTAG, dissect_acse_RLRE_apdu },
1590 { 4, &hf_acse_abrt , BER_CLASS_APP, 4, BER_FLAGS_IMPLTAG, dissect_acse_ABRT_apdu },
1591 { 5, &hf_acse_adt , BER_CLASS_APP, 5, BER_FLAGS_IMPLTAG, dissect_acse_A_DT_apdu },
1592 { 6, &hf_acse_acrq , BER_CLASS_APP, 6, BER_FLAGS_IMPLTAG, dissect_acse_ACRQ_apdu },
1593 { 7, &hf_acse_acrp , BER_CLASS_APP, 7, BER_FLAGS_IMPLTAG, dissect_acse_ACRP_apdu },
1594 { 0, NULL, 0, 0, 0, NULL }
1598 dissect_acse_ACSE_apdu(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1599 offset = dissect_ber_choice(actx, tree, tvb, offset,
1600 ACSE_apdu_choice, hf_index, ett_acse_ACSE_apdu,
1609 dissect_acse_AE_title_form1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1610 offset = dissect_x509if_Name(implicit_tag, tvb, offset, actx, tree, hf_index);
1618 dissect_acse_AE_title_form2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1619 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1625 const value_string acse_AE_title_vals[] = {
1626 { 0, "ae-title-form1" },
1627 { 1, "ae-title-form2" },
1631 static const ber_choice_t AE_title_choice[] = {
1632 { 0, &hf_acse_ae_title_form1 , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AE_title_form1 },
1633 { 1, &hf_acse_ae_title_form2 , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_acse_AE_title_form2 },
1634 { 0, NULL, 0, 0, 0, NULL }
1638 dissect_acse_AE_title(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1639 offset = dissect_ber_choice(actx, tree, tvb, offset,
1640 AE_title_choice, hf_index, ett_acse_AE_title,
1647 /*--- End of included file: packet-acse-fn.c ---*/
1648 #line 146 "packet-acse-template.c"
1652 * Dissect ACSE PDUs inside a PPDU.
1655 dissect_acse(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
1658 proto_item *item=NULL;
1659 proto_tree *tree=NULL;
1661 asn1_ctx_t asn1_ctx;
1662 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
1665 /* first, try to check length */
1666 /* do we have at least 2 bytes */
1667 if (!tvb_bytes_exist(tvb, 0, 2)){
1668 proto_tree_add_text(parent_tree, tvb, offset,
1669 tvb_reported_length_remaining(tvb,offset),
1671 return; /* no, it isn't a ACSE PDU */
1673 /* do we have spdu type from the session dissector? */
1674 if( !pinfo->private_data ){
1676 REPORT_DISSECTOR_BUG("Can't get SPDU type from session dissector.");
1680 session = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
1681 if(session->spdu_type == 0 ) {
1683 REPORT_DISSECTOR_BUG(
1684 ep_strdup_printf("Wrong spdu type %x from session dissector.",session->spdu_type));
1689 /* save parent_tree so subdissectors can create new top nodes */
1690 top_tree=parent_tree;
1692 /* ACSE has only AARQ,AARE,RLRQ,RLRE,ABRT type of pdu */
1693 /* reject everything else */
1694 /* data pdu is not ACSE pdu and has to go directly to app dissector */
1695 switch(session->spdu_type){
1696 case SES_CONNECTION_REQUEST: /* AARQ */
1697 case SES_CONNECTION_ACCEPT: /* AARE */
1698 case SES_REFUSE: /* RLRE */
1699 case SES_DISCONNECT: /* RLRQ */
1700 case SES_FINISH: /* RLRE */
1701 case SES_ABORT: /* ABRT */
1703 case SES_DATA_TRANSFER:
1704 oid=find_oid_by_pres_ctx_id(pinfo, indir_ref);
1706 if(strcmp(oid, ACSE_APDU_OID) == 0){
1707 proto_tree_add_text(parent_tree, tvb, offset, -1,
1708 "Invalid OID: %s", ACSE_APDU_OID);
1709 THROW(ReportedBoundsError);
1711 call_ber_oid_callback(oid, tvb, offset, pinfo, parent_tree);
1713 proto_item *ti = proto_tree_add_text(parent_tree, tvb, offset, -1, "dissector is not available");
1714 expert_add_info_format(pinfo, ti, PI_UNDECODED, PI_WARN, "Dissector is not available");
1723 /* create display subtree for the protocol */
1725 item = proto_tree_add_item(parent_tree, proto_acse, tvb, 0, -1, FALSE);
1726 tree = proto_item_add_subtree(item, ett_acse);
1728 col_set_str(pinfo->cinfo, COL_PROTOCOL, "ACSE");
1729 if (check_col(pinfo->cinfo, COL_INFO))
1730 col_clear(pinfo->cinfo, COL_INFO);
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");
1747 /*--- proto_register_acse ----------------------------------------------*/
1748 void proto_register_acse(void) {
1750 /* List of fields */
1751 static hf_register_info hf[] = {
1753 /*--- Included file: packet-acse-hfarr.c ---*/
1754 #line 1 "packet-acse-hfarr.c"
1755 { &hf_acse_direct_reference,
1756 { "direct-reference", "acse.direct_reference",
1757 FT_OID, BASE_NONE, NULL, 0,
1758 "acse.T_direct_reference", HFILL }},
1759 { &hf_acse_indirect_reference,
1760 { "indirect-reference", "acse.indirect_reference",
1761 FT_INT32, BASE_DEC, NULL, 0,
1762 "acse.T_indirect_reference", HFILL }},
1763 { &hf_acse_data_value_descriptor,
1764 { "data-value-descriptor", "acse.data_value_descriptor",
1765 FT_STRING, BASE_NONE, NULL, 0,
1766 "acse.ObjectDescriptor", HFILL }},
1767 { &hf_acse_encoding,
1768 { "encoding", "acse.encoding",
1769 FT_UINT32, BASE_DEC, VALS(acse_T_encoding_vals), 0,
1770 "acse.T_encoding", HFILL }},
1771 { &hf_acse_single_ASN1_type,
1772 { "single-ASN1-type", "acse.single_ASN1_type",
1773 FT_NONE, BASE_NONE, NULL, 0,
1774 "acse.T_single_ASN1_type", HFILL }},
1775 { &hf_acse_octet_aligned,
1776 { "octet-aligned", "acse.octet_aligned",
1777 FT_BYTES, BASE_NONE, NULL, 0,
1778 "acse.T_octet_aligned", HFILL }},
1779 { &hf_acse_arbitrary,
1780 { "arbitrary", "acse.arbitrary",
1781 FT_BYTES, BASE_NONE, NULL, 0,
1782 "acse.BIT_STRING", HFILL }},
1784 { "aarq", "acse.aarq",
1785 FT_NONE, BASE_NONE, NULL, 0,
1786 "acse.AARQ_apdu", HFILL }},
1788 { "aare", "acse.aare",
1789 FT_NONE, BASE_NONE, NULL, 0,
1790 "acse.AARE_apdu", HFILL }},
1792 { "rlrq", "acse.rlrq",
1793 FT_NONE, BASE_NONE, NULL, 0,
1794 "acse.RLRQ_apdu", HFILL }},
1796 { "rlre", "acse.rlre",
1797 FT_NONE, BASE_NONE, NULL, 0,
1798 "acse.RLRE_apdu", HFILL }},
1800 { "abrt", "acse.abrt",
1801 FT_NONE, BASE_NONE, NULL, 0,
1802 "acse.ABRT_apdu", HFILL }},
1804 { "adt", "acse.adt",
1805 FT_NONE, BASE_NONE, NULL, 0,
1806 "acse.A_DT_apdu", HFILL }},
1808 { "acrq", "acse.acrq",
1809 FT_NONE, BASE_NONE, NULL, 0,
1810 "acse.ACRQ_apdu", HFILL }},
1812 { "acrp", "acse.acrp",
1813 FT_NONE, BASE_NONE, NULL, 0,
1814 "acse.ACRP_apdu", HFILL }},
1815 { &hf_acse_aARQ_protocol_version,
1816 { "protocol-version", "acse.protocol_version",
1817 FT_BYTES, BASE_NONE, NULL, 0,
1818 "acse.T_AARQ_protocol_version", HFILL }},
1819 { &hf_acse_aARQ_aSO_context_name,
1820 { "aSO-context-name", "acse.aSO_context_name",
1821 FT_OID, BASE_NONE, NULL, 0,
1822 "acse.T_AARQ_aSO_context_name", HFILL }},
1823 { &hf_acse_called_AP_title,
1824 { "called-AP-title", "acse.called_AP_title",
1825 FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
1826 "acse.AP_title", HFILL }},
1827 { &hf_acse_called_AE_qualifier,
1828 { "called-AE-qualifier", "acse.called_AE_qualifier",
1829 FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1830 "acse.AE_qualifier", HFILL }},
1831 { &hf_acse_called_AP_invocation_identifier,
1832 { "called-AP-invocation-identifier", "acse.called_AP_invocation_identifier",
1833 FT_INT32, BASE_DEC, NULL, 0,
1834 "acse.AP_invocation_identifier", HFILL }},
1835 { &hf_acse_called_AE_invocation_identifier,
1836 { "called-AE-invocation-identifier", "acse.called_AE_invocation_identifier",
1837 FT_INT32, BASE_DEC, NULL, 0,
1838 "acse.AE_invocation_identifier", HFILL }},
1839 { &hf_acse_calling_AP_title,
1840 { "calling-AP-title", "acse.calling_AP_title",
1841 FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
1842 "acse.AP_title", HFILL }},
1843 { &hf_acse_calling_AE_qualifier,
1844 { "calling-AE-qualifier", "acse.calling_AE_qualifier",
1845 FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1846 "acse.AE_qualifier", HFILL }},
1847 { &hf_acse_calling_AP_invocation_identifier,
1848 { "calling-AP-invocation-identifier", "acse.calling_AP_invocation_identifier",
1849 FT_INT32, BASE_DEC, NULL, 0,
1850 "acse.AP_invocation_identifier", HFILL }},
1851 { &hf_acse_calling_AE_invocation_identifier,
1852 { "calling-AE-invocation-identifier", "acse.calling_AE_invocation_identifier",
1853 FT_INT32, BASE_DEC, NULL, 0,
1854 "acse.AE_invocation_identifier", HFILL }},
1855 { &hf_acse_sender_acse_requirements,
1856 { "sender-acse-requirements", "acse.sender_acse_requirements",
1857 FT_BYTES, BASE_NONE, NULL, 0,
1858 "acse.ACSE_requirements", HFILL }},
1859 { &hf_acse_mechanism_name,
1860 { "mechanism-name", "acse.mechanism_name",
1861 FT_OID, BASE_NONE, NULL, 0,
1862 "acse.Mechanism_name", HFILL }},
1863 { &hf_acse_calling_authentication_value,
1864 { "calling-authentication-value", "acse.calling_authentication_value",
1865 FT_UINT32, BASE_DEC, VALS(acse_Authentication_value_vals), 0,
1866 "acse.Authentication_value", HFILL }},
1867 { &hf_acse_aSO_context_name_list,
1868 { "aSO-context-name-list", "acse.aSO_context_name_list",
1869 FT_UINT32, BASE_DEC, NULL, 0,
1870 "acse.ASO_context_name_list", HFILL }},
1871 { &hf_acse_implementation_information,
1872 { "implementation-information", "acse.implementation_information",
1873 FT_STRING, BASE_NONE, NULL, 0,
1874 "acse.Implementation_data", HFILL }},
1875 { &hf_acse_p_context_definition_list,
1876 { "p-context-definition-list", "acse.p_context_definition_list",
1877 FT_UINT32, BASE_DEC, VALS(acse_Syntactic_context_list_vals), 0,
1878 "acse.Syntactic_context_list", HFILL }},
1879 { &hf_acse_called_asoi_tag,
1880 { "called-asoi-tag", "acse.called_asoi_tag",
1881 FT_UINT32, BASE_DEC, NULL, 0,
1882 "acse.ASOI_tag", HFILL }},
1883 { &hf_acse_calling_asoi_tag,
1884 { "calling-asoi-tag", "acse.calling_asoi_tag",
1885 FT_UINT32, BASE_DEC, NULL, 0,
1886 "acse.ASOI_tag", HFILL }},
1887 { &hf_acse_aARQ_user_information,
1888 { "user-information", "acse.user_information",
1889 FT_UINT32, BASE_DEC, NULL, 0,
1890 "acse.Association_data", HFILL }},
1891 { &hf_acse_aARE_protocol_version,
1892 { "protocol-version", "acse.protocol_version",
1893 FT_BYTES, BASE_NONE, NULL, 0,
1894 "acse.T_AARE_protocol_version", HFILL }},
1895 { &hf_acse_aARE_aSO_context_name,
1896 { "aSO-context-name", "acse.aSO_context_name",
1897 FT_OID, BASE_NONE, NULL, 0,
1898 "acse.T_AARE_aSO_context_name", HFILL }},
1900 { "result", "acse.result",
1901 FT_UINT32, BASE_DEC, VALS(acse_Associate_result_vals), 0,
1902 "acse.Associate_result", HFILL }},
1903 { &hf_acse_result_source_diagnostic,
1904 { "result-source-diagnostic", "acse.result_source_diagnostic",
1905 FT_UINT32, BASE_DEC, VALS(acse_Associate_source_diagnostic_vals), 0,
1906 "acse.Associate_source_diagnostic", HFILL }},
1907 { &hf_acse_responding_AP_title,
1908 { "responding-AP-title", "acse.responding_AP_title",
1909 FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
1910 "acse.AP_title", HFILL }},
1911 { &hf_acse_responding_AE_qualifier,
1912 { "responding-AE-qualifier", "acse.responding_AE_qualifier",
1913 FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1914 "acse.AE_qualifier", HFILL }},
1915 { &hf_acse_responding_AP_invocation_identifier,
1916 { "responding-AP-invocation-identifier", "acse.responding_AP_invocation_identifier",
1917 FT_INT32, BASE_DEC, NULL, 0,
1918 "acse.AP_invocation_identifier", HFILL }},
1919 { &hf_acse_responding_AE_invocation_identifier,
1920 { "responding-AE-invocation-identifier", "acse.responding_AE_invocation_identifier",
1921 FT_INT32, BASE_DEC, NULL, 0,
1922 "acse.AE_invocation_identifier", HFILL }},
1923 { &hf_acse_responder_acse_requirements,
1924 { "responder-acse-requirements", "acse.responder_acse_requirements",
1925 FT_BYTES, BASE_NONE, NULL, 0,
1926 "acse.ACSE_requirements", HFILL }},
1927 { &hf_acse_responding_authentication_value,
1928 { "responding-authentication-value", "acse.responding_authentication_value",
1929 FT_UINT32, BASE_DEC, VALS(acse_Authentication_value_vals), 0,
1930 "acse.Authentication_value", HFILL }},
1931 { &hf_acse_p_context_result_list,
1932 { "p-context-result-list", "acse.p_context_result_list",
1933 FT_UINT32, BASE_DEC, NULL, 0,
1934 "acse.P_context_result_list", HFILL }},
1935 { &hf_acse_aARE_user_information,
1936 { "user-information", "acse.user_information",
1937 FT_UINT32, BASE_DEC, NULL, 0,
1938 "acse.Association_data", HFILL }},
1939 { &hf_acse_rLRQ_reason,
1940 { "reason", "acse.reason",
1941 FT_INT32, BASE_DEC, VALS(acse_Release_request_reason_vals), 0,
1942 "acse.Release_request_reason", HFILL }},
1943 { &hf_acse_aso_qualifier,
1944 { "aso-qualifier", "acse.aso_qualifier",
1945 FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
1946 "acse.ASO_qualifier", HFILL }},
1947 { &hf_acse_asoi_identifier,
1948 { "asoi-identifier", "acse.asoi_identifier",
1949 FT_UINT32, BASE_DEC, NULL, 0,
1950 "acse.ASOI_identifier", HFILL }},
1951 { &hf_acse_rLRQ_user_information,
1952 { "user-information", "acse.user_information",
1953 FT_UINT32, BASE_DEC, NULL, 0,
1954 "acse.Association_data", HFILL }},
1955 { &hf_acse_rLRE_reason,
1956 { "reason", "acse.reason",
1957 FT_INT32, BASE_DEC, VALS(acse_Release_response_reason_vals), 0,
1958 "acse.Release_response_reason", HFILL }},
1959 { &hf_acse_rLRE_user_information,
1960 { "user-information", "acse.user_information",
1961 FT_UINT32, BASE_DEC, NULL, 0,
1962 "acse.Association_data", HFILL }},
1963 { &hf_acse_abort_source,
1964 { "abort-source", "acse.abort_source",
1965 FT_UINT32, BASE_DEC, VALS(acse_ABRT_source_vals), 0,
1966 "acse.ABRT_source", HFILL }},
1967 { &hf_acse_abort_diagnostic,
1968 { "abort-diagnostic", "acse.abort_diagnostic",
1969 FT_UINT32, BASE_DEC, VALS(acse_ABRT_diagnostic_vals), 0,
1970 "acse.ABRT_diagnostic", HFILL }},
1971 { &hf_acse_aBRT_user_information,
1972 { "user-information", "acse.user_information",
1973 FT_UINT32, BASE_DEC, NULL, 0,
1974 "acse.Association_data", HFILL }},
1975 { &hf_acse_a_user_data,
1976 { "a-user-data", "acse.a_user_data",
1977 FT_UINT32, BASE_DEC, VALS(acse_User_Data_vals), 0,
1978 "acse.User_Data", HFILL }},
1979 { &hf_acse_aCRQ_aSO_context_name,
1980 { "aSO-context-name", "acse.aSO_context_name",
1981 FT_OID, BASE_NONE, NULL, 0,
1982 "acse.T_ACRQ_aSO_context_name", HFILL }},
1983 { &hf_acse_user_information,
1984 { "user-information", "acse.user_information",
1985 FT_UINT32, BASE_DEC, NULL, 0,
1986 "acse.User_information", HFILL }},
1987 { &hf_acse_aSO_context_name,
1988 { "aSO-context-name", "acse.aSO_context_name",
1989 FT_UINT32, BASE_DEC, NULL, 0,
1990 "acse.T_ACRP_aSO_context_name", HFILL }},
1991 { &hf_acse_ap_title_form1,
1992 { "ap-title-form1", "acse.ap_title_form1",
1993 FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
1994 "acse.AP_title_form1", HFILL }},
1995 { &hf_acse_ap_title_form2,
1996 { "ap-title-form2", "acse.ap_title_form2",
1997 FT_OID, BASE_NONE, NULL, 0,
1998 "acse.AP_title_form2", HFILL }},
1999 { &hf_acse_ap_title_form3,
2000 { "ap-title-form3", "acse.ap_title_form3",
2001 FT_STRING, BASE_NONE, NULL, 0,
2002 "acse.AP_title_form3", HFILL }},
2003 { &hf_acse_aso_qualifier_form1,
2004 { "aso-qualifier-form1", "acse.aso_qualifier_form1",
2005 FT_UINT32, BASE_DEC, NULL, 0,
2006 "acse.ASO_qualifier_form1", HFILL }},
2007 { &hf_acse_aso_qualifier_form2,
2008 { "aso-qualifier-form2", "acse.aso_qualifier_form2",
2009 FT_INT32, BASE_DEC, NULL, 0,
2010 "acse.ASO_qualifier_form2", HFILL }},
2011 { &hf_acse_aso_qualifier_form3,
2012 { "aso-qualifier-form3", "acse.aso_qualifier_form3",
2013 FT_STRING, BASE_NONE, NULL, 0,
2014 "acse.ASO_qualifier_form3", HFILL }},
2015 { &hf_acse_aso_qualifier_form_any_octets,
2016 { "aso-qualifier-form-any-octets", "acse.aso_qualifier_form_any_octets",
2017 FT_BYTES, BASE_NONE, NULL, 0,
2018 "acse.ASO_qualifier_form_octets", HFILL }},
2019 { &hf_acse_ae_title_form1,
2020 { "ae-title-form1", "acse.ae_title_form1",
2021 FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
2022 "acse.AE_title_form1", HFILL }},
2023 { &hf_acse_ae_title_form2,
2024 { "ae-title-form2", "acse.ae_title_form2",
2025 FT_OID, BASE_NONE, NULL, 0,
2026 "acse.AE_title_form2", HFILL }},
2027 { &hf_acse_ASOI_tag_item,
2028 { "ASOI-tag item", "acse.ASOI_tag_item",
2029 FT_NONE, BASE_NONE, NULL, 0,
2030 "acse.ASOI_tag_item", HFILL }},
2031 { &hf_acse_qualifier,
2032 { "qualifier", "acse.qualifier",
2033 FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
2034 "acse.ASO_qualifier", HFILL }},
2035 { &hf_acse_identifier,
2036 { "identifier", "acse.identifier",
2037 FT_UINT32, BASE_DEC, NULL, 0,
2038 "acse.ASOI_identifier", HFILL }},
2039 { &hf_acse_ASO_context_name_list_item,
2040 { "ASO-context-name", "acse.ASO_context_name",
2041 FT_OID, BASE_NONE, NULL, 0,
2042 "acse.ASO_context_name", HFILL }},
2043 { &hf_acse_context_list,
2044 { "context-list", "acse.context_list",
2045 FT_UINT32, BASE_DEC, NULL, 0,
2046 "acse.Context_list", HFILL }},
2047 { &hf_acse_default_contact_list,
2048 { "default-contact-list", "acse.default_contact_list",
2049 FT_UINT32, BASE_DEC, NULL, 0,
2050 "acse.Default_Context_List", HFILL }},
2051 { &hf_acse_Context_list_item,
2052 { "Context-list item", "acse.Context_list_item",
2053 FT_NONE, BASE_NONE, NULL, 0,
2054 "acse.Context_list_item", HFILL }},
2056 { "pci", "acse.pci",
2057 FT_INT32, BASE_DEC, NULL, 0,
2058 "acse.Presentation_context_identifier", HFILL }},
2059 { &hf_acse_abstract_syntax,
2060 { "abstract-syntax", "acse.abstract_syntax",
2061 FT_OID, BASE_NONE, NULL, 0,
2062 "acse.Abstract_syntax_name", HFILL }},
2063 { &hf_acse_transfer_syntaxes,
2064 { "transfer-syntaxes", "acse.transfer_syntaxes",
2065 FT_UINT32, BASE_DEC, NULL, 0,
2066 "acse.SEQUENCE_OF_TransferSyntaxName", HFILL }},
2067 { &hf_acse_transfer_syntaxes_item,
2068 { "TransferSyntaxName", "acse.TransferSyntaxName",
2069 FT_OID, BASE_NONE, NULL, 0,
2070 "acse.TransferSyntaxName", HFILL }},
2071 { &hf_acse_Default_Context_List_item,
2072 { "Default-Context-List item", "acse.Default_Context_List_item",
2073 FT_NONE, BASE_NONE, NULL, 0,
2074 "acse.Default_Context_List_item", HFILL }},
2075 { &hf_acse_abstract_syntax_name,
2076 { "abstract-syntax-name", "acse.abstract_syntax_name",
2077 FT_OID, BASE_NONE, NULL, 0,
2078 "acse.Abstract_syntax_name", HFILL }},
2079 { &hf_acse_transfer_syntax_name,
2080 { "transfer-syntax-name", "acse.transfer_syntax_name",
2081 FT_OID, BASE_NONE, NULL, 0,
2082 "acse.TransferSyntaxName", HFILL }},
2083 { &hf_acse_P_context_result_list_item,
2084 { "P-context-result-list item", "acse.P_context_result_list_item",
2085 FT_NONE, BASE_NONE, NULL, 0,
2086 "acse.P_context_result_list_item", HFILL }},
2087 { &hf_acse_pcontext_result,
2088 { "result", "acse.result",
2089 FT_INT32, BASE_DEC, VALS(acse_Result_vals), 0,
2090 "acse.Result", HFILL }},
2091 { &hf_acse_concrete_syntax_name,
2092 { "concrete-syntax-name", "acse.concrete_syntax_name",
2093 FT_OID, BASE_NONE, NULL, 0,
2094 "acse.Concrete_syntax_name", HFILL }},
2095 { &hf_acse_provider_reason,
2096 { "provider-reason", "acse.provider_reason",
2097 FT_INT32, BASE_DEC, VALS(acse_T_provider_reason_vals), 0,
2098 "acse.T_provider_reason", HFILL }},
2099 { &hf_acse_acse_service_user,
2100 { "acse-service-user", "acse.acse_service_user",
2101 FT_UINT32, BASE_DEC, VALS(acse_T_acse_service_user_vals), 0,
2102 "acse.T_acse_service_user", HFILL }},
2103 { &hf_acse_acse_service_provider,
2104 { "acse-service-provider", "acse.acse_service_provider",
2105 FT_UINT32, BASE_DEC, VALS(acse_T_acse_service_provider_vals), 0,
2106 "acse.T_acse_service_provider", HFILL }},
2107 { &hf_acse_Association_data_item,
2108 { "Association-data", "acse.EXTERNALt",
2109 FT_NONE, BASE_NONE, NULL, 0,
2110 "acse.EXTERNALt", HFILL }},
2111 { &hf_acse_simply_encoded_data,
2112 { "simply-encoded-data", "acse.simply_encoded_data",
2113 FT_BYTES, BASE_NONE, NULL, 0,
2114 "acse.Simply_encoded_data", HFILL }},
2115 { &hf_acse_fully_encoded_data,
2116 { "fully-encoded-data", "acse.fully_encoded_data",
2117 FT_NONE, BASE_NONE, NULL, 0,
2118 "acse.PDV_list", HFILL }},
2119 { &hf_acse_presentation_context_identifier,
2120 { "presentation-context-identifier", "acse.presentation_context_identifier",
2121 FT_INT32, BASE_DEC, NULL, 0,
2122 "acse.Presentation_context_identifier", HFILL }},
2123 { &hf_acse_presentation_data_values,
2124 { "presentation-data-values", "acse.presentation_data_values",
2125 FT_UINT32, BASE_DEC, VALS(acse_T_presentation_data_values_vals), 0,
2126 "acse.T_presentation_data_values", HFILL }},
2127 { &hf_acse_simple_ASN1_type,
2128 { "simple-ASN1-type", "acse.simple_ASN1_type",
2129 FT_NONE, BASE_NONE, NULL, 0,
2130 "acse.T_simple_ASN1_type", HFILL }},
2131 { &hf_acse_octet_aligned_01,
2132 { "octet-aligned", "acse.octet_aligned",
2133 FT_BYTES, BASE_NONE, NULL, 0,
2134 "acse.OCTET_STRING", HFILL }},
2135 { &hf_acse_other_mechanism_name,
2136 { "other-mechanism-name", "acse.other_mechanism_name",
2137 FT_OID, BASE_NONE, NULL, 0,
2138 "acse.T_other_mechanism_name", HFILL }},
2139 { &hf_acse_other_mechanism_value,
2140 { "other-mechanism-value", "acse.other_mechanism_value",
2141 FT_NONE, BASE_NONE, NULL, 0,
2142 "acse.T_other_mechanism_value", HFILL }},
2143 { &hf_acse_charstring,
2144 { "charstring", "acse.charstring",
2145 FT_STRING, BASE_NONE, NULL, 0,
2146 "acse.GraphicString", HFILL }},
2147 { &hf_acse_bitstring,
2148 { "bitstring", "acse.bitstring",
2149 FT_BYTES, BASE_NONE, NULL, 0,
2150 "acse.BIT_STRING", HFILL }},
2151 { &hf_acse_external,
2152 { "external", "acse.external",
2153 FT_NONE, BASE_NONE, NULL, 0,
2154 "acse.EXTERNALt", HFILL }},
2156 { "other", "acse.other",
2157 FT_NONE, BASE_NONE, NULL, 0,
2158 "acse.Authentication_value_other", HFILL }},
2159 { &hf_acse_T_AARQ_protocol_version_version1,
2160 { "version1", "acse.version1",
2161 FT_BOOLEAN, 8, NULL, 0x80,
2163 { &hf_acse_T_AARE_protocol_version_version1,
2164 { "version1", "acse.version1",
2165 FT_BOOLEAN, 8, NULL, 0x80,
2167 { &hf_acse_ACSE_requirements_authentication,
2168 { "authentication", "acse.authentication",
2169 FT_BOOLEAN, 8, NULL, 0x80,
2171 { &hf_acse_ACSE_requirements_aSO_context_negotiation,
2172 { "aSO-context-negotiation", "acse.aSO-context-negotiation",
2173 FT_BOOLEAN, 8, NULL, 0x40,
2175 { &hf_acse_ACSE_requirements_higher_level_association,
2176 { "higher-level-association", "acse.higher-level-association",
2177 FT_BOOLEAN, 8, NULL, 0x20,
2179 { &hf_acse_ACSE_requirements_nested_association,
2180 { "nested-association", "acse.nested-association",
2181 FT_BOOLEAN, 8, NULL, 0x10,
2184 /*--- End of included file: packet-acse-hfarr.c ---*/
2185 #line 251 "packet-acse-template.c"
2188 /* List of subtrees */
2189 static gint *ett[] = {
2192 /*--- Included file: packet-acse-ettarr.c ---*/
2193 #line 1 "packet-acse-ettarr.c"
2194 &ett_acse_EXTERNALt_U,
2195 &ett_acse_T_encoding,
2196 &ett_acse_ACSE_apdu,
2197 &ett_acse_AARQ_apdu_U,
2198 &ett_acse_T_AARQ_protocol_version,
2199 &ett_acse_AARE_apdu_U,
2200 &ett_acse_T_AARE_protocol_version,
2201 &ett_acse_RLRQ_apdu_U,
2202 &ett_acse_RLRE_apdu_U,
2203 &ett_acse_ABRT_apdu_U,
2204 &ett_acse_A_DT_apdu_U,
2205 &ett_acse_ACRQ_apdu_U,
2206 &ett_acse_ACRP_apdu_U,
2207 &ett_acse_ACSE_requirements,
2209 &ett_acse_ASO_qualifier,
2212 &ett_acse_ASOI_tag_item,
2213 &ett_acse_ASO_context_name_list,
2214 &ett_acse_Syntactic_context_list,
2215 &ett_acse_Context_list,
2216 &ett_acse_Context_list_item,
2217 &ett_acse_SEQUENCE_OF_TransferSyntaxName,
2218 &ett_acse_Default_Context_List,
2219 &ett_acse_Default_Context_List_item,
2220 &ett_acse_P_context_result_list,
2221 &ett_acse_P_context_result_list_item,
2222 &ett_acse_Associate_source_diagnostic,
2223 &ett_acse_Association_data,
2224 &ett_acse_User_Data,
2226 &ett_acse_T_presentation_data_values,
2227 &ett_acse_Authentication_value_other,
2228 &ett_acse_Authentication_value,
2230 /*--- End of included file: packet-acse-ettarr.c ---*/
2231 #line 257 "packet-acse-template.c"
2234 /* Register protocol */
2235 proto_acse = proto_register_protocol(PNAME, PSNAME, PFNAME);
2236 register_dissector("acse", dissect_acse, proto_acse);
2238 /* Register fields and subtrees */
2239 proto_register_field_array(proto_acse, hf, array_length(hf));
2240 proto_register_subtree_array(ett, array_length(ett));
2245 /*--- proto_reg_handoff_acse -------------------------------------------*/
2246 void proto_reg_handoff_acse(void) {
2247 /*#include "packet-acse-dis-tab.c"*/
2249 oid_add_from_string("id-aCSE","2.2.3.1.1");
2250 register_ber_oid_dissector(ACSE_APDU_OID, dissect_acse, proto_acse, "id-as-acse");