d5e3f8edb340f72ec09583e57eec0c6b6a0c32e5
[obnox/wireshark/wip.git] / epan / dissectors / packet-x411.c
1 /* Do not modify this file.                                                   */
2 /* It is created automatically by the ASN.1 to Wireshark dissector compiler   */
3 /* .\packet-x411.c                                                            */
4 /* ../../tools/asn2wrs.py -b -e -p x411 -c x411.cnf -s packet-x411-template x411.asn */
5
6 /* Input file: packet-x411-template.c */
7
8 #line 1 "packet-x411-template.c"
9 /* packet-x411.c
10  * Routines for X.411 (X.400 Message Transfer)  packet dissection
11  * Graeme Lunt 2005
12  *
13  * $Id$
14  *
15  * Wireshark - Network traffic analyzer
16  * By Gerald Combs <gerald@wireshark.org>
17  * Copyright 1998 Gerald Combs
18  *
19  * This program is free software; you can redistribute it and/or
20  * modify it under the terms of the GNU General Public License
21  * as published by the Free Software Foundation; either version 2
22  * of the License, or (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program; if not, write to the Free Software
31  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
32  */
33
34 #ifdef HAVE_CONFIG_H
35 # include "config.h"
36 #endif
37
38 #include <glib.h>
39 #include <epan/packet.h>
40 #include <epan/conversation.h>
41 #include <epan/oid_resolv.h>
42
43 #include <stdio.h>
44 #include <string.h>
45
46 #include "packet-ber.h"
47 #include "packet-acse.h"
48 #include "packet-ros.h"
49 #include "packet-rtse.h"
50
51 #include "packet-x509af.h"
52 #include "packet-x509ce.h"
53 #include "packet-x509if.h"
54 #include "packet-x509sat.h"
55
56 #include "packet-x411.h"
57 #include <epan/emem.h>
58 #include <epan/strutil.h>
59
60 #define PNAME  "X.411 Message Transfer Service"
61 #define PSNAME "X411"
62 #define PFNAME "x411"
63
64 /* Initialize the protocol and registered fields */
65 int proto_x411 = -1;
66
67 static struct SESSION_DATA_STRUCTURE* session = NULL;
68 static int extension_id = -1; /* integer extension id */
69 static const char *object_identifier_id; /* extensions identifier */
70 static const char *content_type_id; /* content type identifier */
71
72 #define MAX_ORA_STR_LEN     256
73 static char *oraddress = NULL;
74 static gboolean doing_address=FALSE;
75 static proto_item *address_item;
76
77 static proto_tree *top_tree=NULL;
78
79 static int
80 call_x411_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree);
81
82
83 /*--- Included file: packet-x411-hf.c ---*/
84 #line 1 "packet-x411-hf.c"
85 static int hf_x411_MTABindArgument_PDU = -1;      /* MTABindArgument */
86 static int hf_x411_MTABindResult_PDU = -1;        /* MTABindResult */
87 static int hf_x411_MTABindError_PDU = -1;         /* MTABindError */
88 static int hf_x411_MTS_APDU_PDU = -1;             /* MTS_APDU */
89 static int hf_x411_InternalTraceInformation_PDU = -1;  /* InternalTraceInformation */
90 static int hf_x411_TraceInformation_PDU = -1;     /* TraceInformation */
91 static int hf_x411_ReportDeliveryArgument_PDU = -1;  /* ReportDeliveryArgument */
92 static int hf_x411_RecipientCertificate_PDU = -1;  /* RecipientCertificate */
93 static int hf_x411_ProofOfDelivery_PDU = -1;      /* ProofOfDelivery */
94 static int hf_x411_ExtendedContentType_PDU = -1;  /* ExtendedContentType */
95 static int hf_x411_ContentLength_PDU = -1;        /* ContentLength */
96 static int hf_x411_RecipientReassignmentProhibited_PDU = -1;  /* RecipientReassignmentProhibited */
97 static int hf_x411_MTSOriginatorRequestedAlternateRecipient_PDU = -1;  /* MTSOriginatorRequestedAlternateRecipient */
98 static int hf_x411_DLExpansionProhibited_PDU = -1;  /* DLExpansionProhibited */
99 static int hf_x411_ConversionWithLossProhibited_PDU = -1;  /* ConversionWithLossProhibited */
100 static int hf_x411_LatestDeliveryTime_PDU = -1;   /* LatestDeliveryTime */
101 static int hf_x411_RequestedDeliveryMethod_PDU = -1;  /* RequestedDeliveryMethod */
102 static int hf_x411_PhysicalForwardingProhibited_PDU = -1;  /* PhysicalForwardingProhibited */
103 static int hf_x411_PhysicalForwardingAddressRequest_PDU = -1;  /* PhysicalForwardingAddressRequest */
104 static int hf_x411_PhysicalDeliveryModes_PDU = -1;  /* PhysicalDeliveryModes */
105 static int hf_x411_RegisteredMailType_PDU = -1;   /* RegisteredMailType */
106 static int hf_x411_RecipientNumberForAdvice_PDU = -1;  /* RecipientNumberForAdvice */
107 static int hf_x411_PhysicalRenditionAttributes_PDU = -1;  /* PhysicalRenditionAttributes */
108 static int hf_x411_OriginatorReturnAddress_PDU = -1;  /* OriginatorReturnAddress */
109 static int hf_x411_PhysicalDeliveryReportRequest_PDU = -1;  /* PhysicalDeliveryReportRequest */
110 static int hf_x411_OriginatorCertificate_PDU = -1;  /* OriginatorCertificate */
111 static int hf_x411_MessageToken_PDU = -1;         /* MessageToken */
112 static int hf_x411_ContentConfidentialityAlgorithmIdentifier_PDU = -1;  /* ContentConfidentialityAlgorithmIdentifier */
113 static int hf_x411_ContentIntegrityCheck_PDU = -1;  /* ContentIntegrityCheck */
114 static int hf_x411_MessageOriginAuthenticationCheck_PDU = -1;  /* MessageOriginAuthenticationCheck */
115 static int hf_x411_MessageSecurityLabel_PDU = -1;  /* MessageSecurityLabel */
116 static int hf_x411_ProofOfSubmissionRequest_PDU = -1;  /* ProofOfSubmissionRequest */
117 static int hf_x411_ProofOfDeliveryRequest_PDU = -1;  /* ProofOfDeliveryRequest */
118 static int hf_x411_ContentCorrelator_PDU = -1;    /* ContentCorrelator */
119 static int hf_x411_ProbeOriginAuthenticationCheck_PDU = -1;  /* ProbeOriginAuthenticationCheck */
120 static int hf_x411_RedirectionHistory_PDU = -1;   /* RedirectionHistory */
121 static int hf_x411_DLExpansionHistory_PDU = -1;   /* DLExpansionHistory */
122 static int hf_x411_PhysicalForwardingAddress_PDU = -1;  /* PhysicalForwardingAddress */
123 static int hf_x411_OriginatorAndDLExpansionHistory_PDU = -1;  /* OriginatorAndDLExpansionHistory */
124 static int hf_x411_ReportingDLName_PDU = -1;      /* ReportingDLName */
125 static int hf_x411_ReportingMTACertificate_PDU = -1;  /* ReportingMTACertificate */
126 static int hf_x411_ReportOriginAuthenticationCheck_PDU = -1;  /* ReportOriginAuthenticationCheck */
127 static int hf_x411_ProofOfSubmission_PDU = -1;    /* ProofOfSubmission */
128 static int hf_x411_ReportingMTAName_PDU = -1;     /* ReportingMTAName */
129 static int hf_x411_ExtendedCertificates_PDU = -1;  /* ExtendedCertificates */
130 static int hf_x411_DLExemptedRecipients_PDU = -1;  /* DLExemptedRecipients */
131 static int hf_x411_CertificateSelectors_PDU = -1;  /* CertificateSelectors */
132 static int hf_x411_ORName_PDU = -1;               /* ORName */
133 static int hf_x411_ORAddress_PDU = -1;            /* ORAddress */
134 static int hf_x411_CommonName_PDU = -1;           /* CommonName */
135 static int hf_x411_TeletexCommonName_PDU = -1;    /* TeletexCommonName */
136 static int hf_x411_UniversalCommonName_PDU = -1;  /* UniversalCommonName */
137 static int hf_x411_TeletexOrganizationName_PDU = -1;  /* TeletexOrganizationName */
138 static int hf_x411_UniversalOrganizationName_PDU = -1;  /* UniversalOrganizationName */
139 static int hf_x411_TeletexPersonalName_PDU = -1;  /* TeletexPersonalName */
140 static int hf_x411_UniversalPersonalName_PDU = -1;  /* UniversalPersonalName */
141 static int hf_x411_TeletexOrganizationalUnitNames_PDU = -1;  /* TeletexOrganizationalUnitNames */
142 static int hf_x411_UniversalOrganizationalUnitNames_PDU = -1;  /* UniversalOrganizationalUnitNames */
143 static int hf_x411_PDSName_PDU = -1;              /* PDSName */
144 static int hf_x411_PhysicalDeliveryCountryName_PDU = -1;  /* PhysicalDeliveryCountryName */
145 static int hf_x411_PostalCode_PDU = -1;           /* PostalCode */
146 static int hf_x411_PhysicalDeliveryOfficeName_PDU = -1;  /* PhysicalDeliveryOfficeName */
147 static int hf_x411_ExtendedEncodedInformationType_PDU = -1;  /* ExtendedEncodedInformationType */
148 static int hf_x411_MTANameAndOptionalGDI_PDU = -1;  /* MTANameAndOptionalGDI */
149 static int hf_x411_AsymmetricToken_PDU = -1;      /* AsymmetricToken */
150 static int hf_x411_BindTokenSignedData_PDU = -1;  /* BindTokenSignedData */
151 static int hf_x411_MessageTokenSignedData_PDU = -1;  /* MessageTokenSignedData */
152 static int hf_x411_MessageTokenEncryptedData_PDU = -1;  /* MessageTokenEncryptedData */
153 static int hf_x411_BindTokenEncryptedData_PDU = -1;  /* BindTokenEncryptedData */
154 static int hf_x411_unauthenticated = -1;          /* NULL */
155 static int hf_x411_authenticated_argument = -1;   /* AuthenticatedArgument */
156 static int hf_x411_authenticated_initiator_name = -1;  /* MTAName */
157 static int hf_x411_initiator_credentials = -1;    /* InitiatorCredentials */
158 static int hf_x411_security_context = -1;         /* SecurityContext */
159 static int hf_x411_authenticated_result = -1;     /* AuthenticatedResult */
160 static int hf_x411_authenticated_responder_name = -1;  /* MTAName */
161 static int hf_x411_responder_credentials = -1;    /* ResponderCredentials */
162 static int hf_x411_message = -1;                  /* Message */
163 static int hf_x411_probe = -1;                    /* Probe */
164 static int hf_x411_report = -1;                   /* Report */
165 static int hf_x411_message_envelope = -1;         /* MessageTransferEnvelope */
166 static int hf_x411_content = -1;                  /* Content */
167 static int hf_x411_report_envelope = -1;          /* ReportTransferEnvelope */
168 static int hf_x411_report_content = -1;           /* ReportTransferContent */
169 static int hf_x411_message_identifier = -1;       /* MessageIdentifier */
170 static int hf_x411_mta_originator_name = -1;      /* MTAOriginatorName */
171 static int hf_x411_original_encoded_information_types = -1;  /* OriginalEncodedInformationTypes */
172 static int hf_x411_content_type = -1;             /* ContentType */
173 static int hf_x411_content_identifier = -1;       /* ContentIdentifier */
174 static int hf_x411_priority = -1;                 /* Priority */
175 static int hf_x411_per_message_indicators = -1;   /* PerMessageIndicators */
176 static int hf_x411_deferred_delivery_time = -1;   /* DeferredDeliveryTime */
177 static int hf_x411_per_domain_bilateral_information = -1;  /* SEQUENCE_OF_PerDomainBilateralInformation */
178 static int hf_x411_per_domain_bilateral_information_item = -1;  /* PerDomainBilateralInformation */
179 static int hf_x411_trace_information = -1;        /* TraceInformation */
180 static int hf_x411_extensions = -1;               /* SET_OF_ExtensionField */
181 static int hf_x411_extensions_item = -1;          /* ExtensionField */
182 static int hf_x411_per_recipient_message_fields = -1;  /* SEQUENCE_OF_PerRecipientMessageTransferFields */
183 static int hf_x411_per_recipient_message_fields_item = -1;  /* PerRecipientMessageTransferFields */
184 static int hf_x411_recipient_name = -1;           /* MTARecipientName */
185 static int hf_x411_originally_specified_recipient_number = -1;  /* OriginallySpecifiedRecipientNumber */
186 static int hf_x411_per_recipient_indicators = -1;  /* PerRecipientIndicators */
187 static int hf_x411_explicit_conversion = -1;      /* ExplicitConversion */
188 static int hf_x411_probe_identifier = -1;         /* ProbeIdentifier */
189 static int hf_x411_content_length = -1;           /* ContentLength */
190 static int hf_x411_per_recipient_probe_transfer_fields = -1;  /* SEQUENCE_OF_PerRecipientProbeTransferFields */
191 static int hf_x411_per_recipient_probe_transfer_fields_item = -1;  /* PerRecipientProbeTransferFields */
192 static int hf_x411_report_identifier = -1;        /* ReportIdentifier */
193 static int hf_x411_report_destination_name = -1;  /* ReportDestinationName */
194 static int hf_x411_subject_identifier = -1;       /* SubjectIdentifier */
195 static int hf_x411_subject_intermediate_trace_information = -1;  /* SubjectIntermediateTraceInformation */
196 static int hf_x411_returned_content = -1;         /* Content */
197 static int hf_x411_additional_information = -1;   /* AdditionalInformation */
198 static int hf_x411_per_recipient_report_fields = -1;  /* SEQUENCE_OF_PerRecipientReportTransferFields */
199 static int hf_x411_per_recipient_report_fields_item = -1;  /* PerRecipientReportTransferFields */
200 static int hf_x411_mta_actual_recipient_name = -1;  /* MTAActualRecipientName */
201 static int hf_x411_last_trace_information = -1;   /* LastTraceInformation */
202 static int hf_x411_report_originally_intended_recipient_name = -1;  /* MTAOriginallyIntendedRecipientName */
203 static int hf_x411_supplementary_information = -1;  /* SupplementaryInformation */
204 static int hf_x411_country_name = -1;             /* CountryName */
205 static int hf_x411_bilateral_domain = -1;         /* T_bilateral_domain */
206 static int hf_x411_administration_domain_name = -1;  /* AdministrationDomainName */
207 static int hf_x411_private_domain = -1;           /* T_private_domain */
208 static int hf_x411_private_domain_identifier = -1;  /* PrivateDomainIdentifier */
209 static int hf_x411_bilateral_information = -1;    /* T_bilateral_information */
210 static int hf_x411_arrival_time = -1;             /* ArrivalTime */
211 static int hf_x411_converted_encoded_information_types = -1;  /* ConvertedEncodedInformationTypes */
212 static int hf_x411_trace_report_type = -1;        /* ReportType */
213 static int hf_x411_InternalTraceInformation_item = -1;  /* InternalTraceInformationElement */
214 static int hf_x411_global_domain_identifier = -1;  /* GlobalDomainIdentifier */
215 static int hf_x411_mta_name = -1;                 /* MTAName */
216 static int hf_x411_mta_supplied_information = -1;  /* MTASuppliedInformation */
217 static int hf_x411_routing_action = -1;           /* RoutingAction */
218 static int hf_x411_attempted = -1;                /* T_attempted */
219 static int hf_x411_mta = -1;                      /* MTAName */
220 static int hf_x411_domain = -1;                   /* GlobalDomainIdentifier */
221 static int hf_x411_deferred_time = -1;            /* DeferredTime */
222 static int hf_x411_other_actions = -1;            /* OtherActions */
223 static int hf_x411_TraceInformation_item = -1;    /* TraceInformationElement */
224 static int hf_x411_domain_supplied_information = -1;  /* DomainSuppliedInformation */
225 static int hf_x411_attempted_domain = -1;         /* GlobalDomainIdentifier */
226 static int hf_x411_initiator_name = -1;           /* ObjectName */
227 static int hf_x411_messages_waiting = -1;         /* MessagesWaiting */
228 static int hf_x411_responder_name = -1;           /* ObjectName */
229 static int hf_x411_user_agent = -1;               /* ORAddressAndOptionalDirectoryName */
230 static int hf_x411_mTA = -1;                      /* MTAName */
231 static int hf_x411_message_store = -1;            /* ORAddressAndOptionalDirectoryName */
232 static int hf_x411_urgent = -1;                   /* DeliveryQueue */
233 static int hf_x411_normal = -1;                   /* DeliveryQueue */
234 static int hf_x411_non_urgent = -1;               /* DeliveryQueue */
235 static int hf_x411_messages = -1;                 /* INTEGER */
236 static int hf_x411_delivery_queue_octets = -1;    /* INTEGER */
237 static int hf_x411_simple = -1;                   /* Password */
238 static int hf_x411_strong = -1;                   /* StrongCredentials */
239 static int hf_x411_protected = -1;                /* ProtectedPassword */
240 static int hf_x411_ia5_string = -1;               /* IA5String */
241 static int hf_x411_octet_string = -1;             /* OCTET_STRING */
242 static int hf_x411_bind_token = -1;               /* Token */
243 static int hf_x411_certificate = -1;              /* Certificates */
244 static int hf_x411_certificate_selector = -1;     /* CertificateAssertion */
245 static int hf_x411_signature = -1;                /* Signature */
246 static int hf_x411_time1 = -1;                    /* UTCTime */
247 static int hf_x411_time2 = -1;                    /* UTCTime */
248 static int hf_x411_random1 = -1;                  /* BIT_STRING */
249 static int hf_x411_random2 = -1;                  /* BIT_STRING */
250 static int hf_x411_algorithmIdentifier = -1;      /* AlgorithmIdentifier */
251 static int hf_x411_encrypted = -1;                /* BIT_STRING */
252 static int hf_x411_SecurityContext_item = -1;     /* SecurityLabel */
253 static int hf_x411_message_submission_envelope = -1;  /* MessageSubmissionEnvelope */
254 static int hf_x411_message_submission_identifier = -1;  /* MessageSubmissionIdentifier */
255 static int hf_x411_message_submission_time = -1;  /* MessageSubmissionTime */
256 static int hf_x411_probe_submission_identifier = -1;  /* ProbeSubmissionIdentifier */
257 static int hf_x411_probe_submission_time = -1;    /* ProbeSubmissionTime */
258 static int hf_x411_ImproperlySpecifiedRecipients_item = -1;  /* MTSRecipientName */
259 static int hf_x411_waiting_operations = -1;       /* Operations */
260 static int hf_x411_waiting_messages = -1;         /* WaitingMessages */
261 static int hf_x411_waiting_content_types = -1;    /* SET_OF_ContentType */
262 static int hf_x411_waiting_content_types_item = -1;  /* ContentType */
263 static int hf_x411_waiting_encoded_information_types = -1;  /* EncodedInformationTypes */
264 static int hf_x411_message_delivery_identifier = -1;  /* MessageDeliveryIdentifier */
265 static int hf_x411_message_delivery_time = -1;    /* MessageDeliveryTime */
266 static int hf_x411_other_fields = -1;             /* OtherMessageDeliveryFields */
267 static int hf_x411_recipient_certificate = -1;    /* RecipientCertificate */
268 static int hf_x411_proof_of_delivery = -1;        /* ProofOfDelivery */
269 static int hf_x411_subject_submission_identifier = -1;  /* SubjectSubmissionIdentifier */
270 static int hf_x411_per_recipient_report_delivery_fields = -1;  /* SEQUENCE_OF_PerRecipientReportDeliveryFields */
271 static int hf_x411_per_recipient_report_delivery_fields_item = -1;  /* PerRecipientReportDeliveryFields */
272 static int hf_x411_empty_result = -1;             /* NULL */
273 static int hf_x411_restrict = -1;                 /* BOOLEAN */
274 static int hf_x411_permissible_operations = -1;   /* Operations */
275 static int hf_x411_permissible_maximum_content_length = -1;  /* ContentLength */
276 static int hf_x411_permissible_lowest_priority = -1;  /* Priority */
277 static int hf_x411_permissible_content_types = -1;  /* ContentTypes */
278 static int hf_x411_permissible_encoded_information_types = -1;  /* PermissibleEncodedInformationTypes */
279 static int hf_x411_permissible_security_context = -1;  /* SecurityContext */
280 static int hf_x411_refused_argument = -1;         /* T_refused_argument */
281 static int hf_x411_built_in_argument = -1;        /* RefusedArgument */
282 static int hf_x411_refused_extension = -1;        /* T_refused_extension */
283 static int hf_x411_refusal_reason = -1;           /* RefusalReason */
284 static int hf_x411_user_name = -1;                /* UserName */
285 static int hf_x411_user_address = -1;             /* UserAddress */
286 static int hf_x411_deliverable_class = -1;        /* SET_OF_DeliverableClass */
287 static int hf_x411_deliverable_class_item = -1;   /* DeliverableClass */
288 static int hf_x411_default_delivery_controls = -1;  /* DefaultDeliveryControls */
289 static int hf_x411_redirections = -1;             /* Redirections */
290 static int hf_x411_restricted_delivery = -1;      /* RestrictedDelivery */
291 static int hf_x411_retrieve_registrations = -1;   /* RegistrationTypes */
292 static int hf_x411_non_empty_result = -1;         /* T_non_empty_result */
293 static int hf_x411_registered_information = -1;   /* RegisterArgument */
294 static int hf_x411_old_credentials = -1;          /* Credentials */
295 static int hf_x411_new_credentials = -1;          /* Credentials */
296 static int hf_x411_x121 = -1;                     /* T_x121 */
297 static int hf_x411_x121_address = -1;             /* NumericString */
298 static int hf_x411_tsap_id = -1;                  /* PrintableString */
299 static int hf_x411_presentation = -1;             /* PSAPAddress */
300 static int hf_x411_Redirections_item = -1;        /* RecipientRedirection */
301 static int hf_x411_redirection_classes = -1;      /* SET_OF_RedirectionClass */
302 static int hf_x411_redirection_classes_item = -1;  /* RedirectionClass */
303 static int hf_x411_recipient_assigned_alternate_recipient = -1;  /* RecipientAssignedAlternateRecipient */
304 static int hf_x411_content_types = -1;            /* ContentTypes */
305 static int hf_x411_maximum_content_length = -1;   /* ContentLength */
306 static int hf_x411_encoded_information_types_constraints = -1;  /* EncodedInformationTypesConstraints */
307 static int hf_x411_security_labels = -1;          /* SecurityContext */
308 static int hf_x411_class_priority = -1;           /* SET_OF_Priority */
309 static int hf_x411_class_priority_item = -1;      /* Priority */
310 static int hf_x411_objects = -1;                  /* T_objects */
311 static int hf_x411_applies_only_to = -1;          /* SEQUENCE_OF_Restriction */
312 static int hf_x411_applies_only_to_item = -1;     /* Restriction */
313 static int hf_x411_unacceptable_eits = -1;        /* ExtendedEncodedInformationTypes */
314 static int hf_x411_acceptable_eits = -1;          /* ExtendedEncodedInformationTypes */
315 static int hf_x411_exclusively_acceptable_eits = -1;  /* ExtendedEncodedInformationTypes */
316 static int hf_x411_RestrictedDelivery_item = -1;  /* Restriction */
317 static int hf_x411_permitted = -1;                /* BOOLEAN */
318 static int hf_x411_source_type = -1;              /* T_source_type */
319 static int hf_x411_source_name = -1;              /* ExactOrPattern */
320 static int hf_x411_exact_match = -1;              /* ORName */
321 static int hf_x411_pattern_match = -1;            /* ORName */
322 static int hf_x411_standard_parameters = -1;      /* T_standard_parameters */
323 static int hf_x411_type_extensions = -1;          /* T_type_extensions */
324 static int hf_x411_type_extensions_item = -1;     /* T_type_extensions_item */
325 static int hf_x411_mts_originator_name = -1;      /* MTSOriginatorName */
326 static int hf_x411_per_recipient_message_submission_fields = -1;  /* SEQUENCE_OF_PerRecipientMessageSubmissionFields */
327 static int hf_x411_per_recipient_message_submission_fields_item = -1;  /* PerRecipientMessageSubmissionFields */
328 static int hf_x411_submission_recipient_name = -1;  /* MTSRecipientName */
329 static int hf_x411_originator_report_request = -1;  /* OriginatorReportRequest */
330 static int hf_x411_per_recipient_probe_submission_fields = -1;  /* SEQUENCE_OF_PerRecipientProbeSubmissionFields */
331 static int hf_x411_per_recipient_probe_submission_fields_item = -1;  /* PerRecipientProbeSubmissionFields */
332 static int hf_x411_probe_recipient_name = -1;     /* MTSRecipientName */
333 static int hf_x411_delivered_content_type = -1;   /* DeliveredContentType */
334 static int hf_x411_originator_name = -1;          /* DeliveredOriginatorName */
335 static int hf_x411_delivery_flags = -1;           /* DeliveryFlags */
336 static int hf_x411_other_recipient_names = -1;    /* OtherRecipientNames */
337 static int hf_x411_this_recipient_name = -1;      /* ThisRecipientName */
338 static int hf_x411_originally_intended_recipient_name = -1;  /* MTSOriginallyIntendedRecipientName */
339 static int hf_x411_actual_recipient_name = -1;    /* MTSActualRecipientName */
340 static int hf_x411_delivery_report_type = -1;     /* ReportType */
341 static int hf_x411_delivery = -1;                 /* DeliveryReport */
342 static int hf_x411_non_delivery = -1;             /* NonDeliveryReport */
343 static int hf_x411_type_of_MTS_user = -1;         /* TypeOfMTSUser */
344 static int hf_x411_non_delivery_reason_code = -1;  /* NonDeliveryReasonCode */
345 static int hf_x411_non_delivery_diagnostic_code = -1;  /* NonDeliveryDiagnosticCode */
346 static int hf_x411_ContentTypes_item = -1;        /* ContentType */
347 static int hf_x411_built_in = -1;                 /* BuiltInContentType */
348 static int hf_x411_extended = -1;                 /* ExtendedContentType */
349 static int hf_x411_OtherRecipientNames_item = -1;  /* OtherRecipientName */
350 static int hf_x411_standard_extension = -1;       /* INTEGER */
351 static int hf_x411_private_extension = -1;        /* OBJECT_IDENTIFIER */
352 static int hf_x411_extension_type = -1;           /* ExtensionType */
353 static int hf_x411_criticality = -1;              /* Criticality */
354 static int hf_x411_extension_value = -1;          /* ExtensionValue */
355 static int hf_x411_RequestedDeliveryMethod_item = -1;  /* RequestedDeliveryMethod_item */
356 static int hf_x411_ia5text = -1;                  /* IA5String */
357 static int hf_x411_octets = -1;                   /* OCTET_STRING */
358 static int hf_x411_RedirectionHistory_item = -1;  /* Redirection */
359 static int hf_x411_intended_recipient_name = -1;  /* IntendedRecipientName */
360 static int hf_x411_redirection_reason = -1;       /* RedirectionReason */
361 static int hf_x411_intended_recipient = -1;       /* ORAddressAndOptionalDirectoryName */
362 static int hf_x411_redirection_time = -1;         /* Time */
363 static int hf_x411_DLExpansionHistory_item = -1;  /* DLExpansion */
364 static int hf_x411_dl = -1;                       /* ORAddressAndOptionalDirectoryName */
365 static int hf_x411_dl_expansion_time = -1;        /* Time */
366 static int hf_x411_OriginatorAndDLExpansionHistory_item = -1;  /* OriginatorAndDLExpansion */
367 static int hf_x411_originator_or_dl_name = -1;    /* ORAddressAndOptionalDirectoryName */
368 static int hf_x411_origination_or_expansion_time = -1;  /* Time */
369 static int hf_x411_report_type = -1;              /* T_report_type */
370 static int hf_x411_report_type_delivery = -1;     /* PerRecipientDeliveryReportFields */
371 static int hf_x411_non_delivery_report = -1;      /* PerRecipientNonDeliveryReportFields */
372 static int hf_x411_mta_directory_name = -1;       /* Name */
373 static int hf_x411_ExtendedCertificates_item = -1;  /* ExtendedCertificate */
374 static int hf_x411_directory_entry = -1;          /* Name */
375 static int hf_x411_DLExemptedRecipients_item = -1;  /* ORAddressAndOrDirectoryName */
376 static int hf_x411_encryption_recipient = -1;     /* CertificateAssertion */
377 static int hf_x411_encryption_originator = -1;    /* CertificateAssertion */
378 static int hf_x411_selectors_content_integrity_check = -1;  /* CertificateAssertion */
379 static int hf_x411_token_signature = -1;          /* CertificateAssertion */
380 static int hf_x411_message_origin_authentication = -1;  /* CertificateAssertion */
381 static int hf_x411_local_identifier = -1;         /* LocalIdentifier */
382 static int hf_x411_numeric = -1;                  /* NumericString */
383 static int hf_x411_printable = -1;                /* PrintableString */
384 static int hf_x411_built_in_standard_attributes = -1;  /* BuiltInStandardAttributes */
385 static int hf_x411_built_in_domain_defined_attributes = -1;  /* BuiltInDomainDefinedAttributes */
386 static int hf_x411_extension_attributes = -1;     /* ExtensionAttributes */
387 static int hf_x411_directory_name = -1;           /* Name */
388 static int hf_x411_network_address = -1;          /* NetworkAddress */
389 static int hf_x411_terminal_identifier = -1;      /* TerminalIdentifier */
390 static int hf_x411_private_domain_name = -1;      /* PrivateDomainName */
391 static int hf_x411_organization_name = -1;        /* OrganizationName */
392 static int hf_x411_numeric_user_identifier = -1;  /* NumericUserIdentifier */
393 static int hf_x411_personal_name = -1;            /* PersonalName */
394 static int hf_x411_organizational_unit_names = -1;  /* OrganizationalUnitNames */
395 static int hf_x411_x121_dcc_code = -1;            /* NumericString */
396 static int hf_x411_iso_3166_alpha2_code = -1;     /* PrintableString */
397 static int hf_x411_printable_surname = -1;        /* PrintableString */
398 static int hf_x411_printable_given_name = -1;     /* PrintableString */
399 static int hf_x411_printable_initials = -1;       /* PrintableString */
400 static int hf_x411_printable_generation_qualifier = -1;  /* PrintableString */
401 static int hf_x411_OrganizationalUnitNames_item = -1;  /* OrganizationalUnitName */
402 static int hf_x411_BuiltInDomainDefinedAttributes_item = -1;  /* BuiltInDomainDefinedAttribute */
403 static int hf_x411_printable_type = -1;           /* PrintableString */
404 static int hf_x411_printable_value = -1;          /* PrintableString */
405 static int hf_x411_ExtensionAttributes_item = -1;  /* ExtensionAttribute */
406 static int hf_x411_extension_attribute_type = -1;  /* INTEGER */
407 static int hf_x411_extension_attribute_value = -1;  /* T_extension_attribute_value */
408 static int hf_x411_teletex_surname = -1;          /* TeletexString */
409 static int hf_x411_teletex_given_name = -1;       /* TeletexString */
410 static int hf_x411_teletex_initials = -1;         /* TeletexString */
411 static int hf_x411_teletex_generation_qualifier = -1;  /* TeletexString */
412 static int hf_x411_universal_surname = -1;        /* UniversalOrBMPString */
413 static int hf_x411_universal_given_name = -1;     /* UniversalOrBMPString */
414 static int hf_x411_universal_initials = -1;       /* UniversalOrBMPString */
415 static int hf_x411_universal_generation_qualifier = -1;  /* UniversalOrBMPString */
416 static int hf_x411_TeletexOrganizationalUnitNames_item = -1;  /* TeletexOrganizationalUnitName */
417 static int hf_x411_UniversalOrganizationalUnitNames_item = -1;  /* UniversalOrganizationalUnitName */
418 static int hf_x411_character_encoding = -1;       /* T_character_encoding */
419 static int hf_x411_two_octets = -1;               /* BMPString */
420 static int hf_x411_four_octets = -1;              /* UniversalString */
421 static int hf_x411_iso_639_language_code = -1;    /* PrintableString */
422 static int hf_x411_numeric_code = -1;             /* NumericString */
423 static int hf_x411_printable_code = -1;           /* PrintableString */
424 static int hf_x411_printable_address = -1;        /* T_printable_address */
425 static int hf_x411_printable_address_item = -1;   /* PrintableString */
426 static int hf_x411_teletex_string = -1;           /* TeletexString */
427 static int hf_x411_printable_string = -1;         /* PrintableString */
428 static int hf_x411_e163_4_address = -1;           /* T_e163_4_address */
429 static int hf_x411_number = -1;                   /* NumericString */
430 static int hf_x411_sub_address = -1;              /* NumericString */
431 static int hf_x411_psap_address = -1;             /* PresentationAddress */
432 static int hf_x411_TeletexDomainDefinedAttributes_item = -1;  /* TeletexDomainDefinedAttribute */
433 static int hf_x411_type = -1;                     /* TeletexString */
434 static int hf_x411_teletex_value = -1;            /* TeletexString */
435 static int hf_x411_UniversalDomainDefinedAttributes_item = -1;  /* UniversalDomainDefinedAttribute */
436 static int hf_x411_universal_type = -1;           /* UniversalOrBMPString */
437 static int hf_x411_universal_value = -1;          /* UniversalOrBMPString */
438 static int hf_x411_built_in_encoded_information_types = -1;  /* BuiltInEncodedInformationTypes */
439 static int hf_x411_g3_facsimile = -1;             /* G3FacsimileNonBasicParameters */
440 static int hf_x411_teletex = -1;                  /* TeletexNonBasicParameters */
441 static int hf_x411_extended_encoded_information_types = -1;  /* ExtendedEncodedInformationTypes */
442 static int hf_x411_ExtendedEncodedInformationTypes_item = -1;  /* ExtendedEncodedInformationType */
443 static int hf_x411_graphic_character_sets = -1;   /* TeletexString */
444 static int hf_x411_control_character_sets = -1;   /* TeletexString */
445 static int hf_x411_page_formats = -1;             /* OCTET_STRING */
446 static int hf_x411_miscellaneous_terminal_capabilities = -1;  /* TeletexString */
447 static int hf_x411_private_use = -1;              /* OCTET_STRING */
448 static int hf_x411_token_type_identifier = -1;    /* TokenTypeIdentifier */
449 static int hf_x411_token = -1;                    /* TokenTypeData */
450 static int hf_x411_signature_algorithm_identifier = -1;  /* AlgorithmIdentifier */
451 static int hf_x411_name = -1;                     /* T_name */
452 static int hf_x411_token_recipient_name = -1;     /* MTSRecipientName */
453 static int hf_x411_token_mta = -1;                /* MTANameAndOptionalGDI */
454 static int hf_x411_time = -1;                     /* Time */
455 static int hf_x411_signed_data = -1;              /* TokenData */
456 static int hf_x411_encryption_algorithm_identifier = -1;  /* AlgorithmIdentifier */
457 static int hf_x411_encrypted_data = -1;           /* BIT_STRING */
458 static int hf_x411_asymmetric_token_data = -1;    /* AsymmetricTokenData */
459 static int hf_x411_algorithm_identifier = -1;     /* AlgorithmIdentifier */
460 static int hf_x411_token_data_type = -1;          /* INTEGER */
461 static int hf_x411_value = -1;                    /* T_value */
462 static int hf_x411_content_confidentiality_algorithm_identifier = -1;  /* ContentConfidentialityAlgorithmIdentifier */
463 static int hf_x411_content_integrity_check = -1;  /* ContentIntegrityCheck */
464 static int hf_x411_message_security_label = -1;   /* MessageSecurityLabel */
465 static int hf_x411_proof_of_delivery_request = -1;  /* ProofOfDeliveryRequest */
466 static int hf_x411_message_sequence_number = -1;  /* INTEGER */
467 static int hf_x411_content_confidentiality_key = -1;  /* EncryptionKey */
468 static int hf_x411_content_integrity_key = -1;    /* EncryptionKey */
469 static int hf_x411_security_policy_identifier = -1;  /* SecurityPolicyIdentifier */
470 static int hf_x411_security_classification = -1;  /* SecurityClassification */
471 static int hf_x411_privacy_mark = -1;             /* PrivacyMark */
472 static int hf_x411_security_categories = -1;      /* SecurityCategories */
473 static int hf_x411_SecurityCategories_item = -1;  /* SecurityCategory */
474 static int hf_x411_category_type = -1;            /* OBJECT_IDENTIFIER */
475 static int hf_x411_category_value = -1;           /* CategoryValue */
476 /* named bits */
477 static int hf_x411_PerRecipientIndicators_responsibility = -1;
478 static int hf_x411_PerRecipientIndicators_originating_MTA_report = -1;
479 static int hf_x411_PerRecipientIndicators_originating_MTA_non_delivery_report = -1;
480 static int hf_x411_PerRecipientIndicators_originator_report = -1;
481 static int hf_x411_PerRecipientIndicators_originator_non_delivery_report = -1;
482 static int hf_x411_PerRecipientIndicators_reserved_5 = -1;
483 static int hf_x411_PerRecipientIndicators_reserved_6 = -1;
484 static int hf_x411_PerRecipientIndicators_reserved_7 = -1;
485 static int hf_x411_OtherActions_redirected = -1;
486 static int hf_x411_OtherActions_dl_operation = -1;
487 static int hf_x411_Operations_probe_submission_or_report_delivery = -1;
488 static int hf_x411_Operations_message_submission_or_message_delivery = -1;
489 static int hf_x411_WaitingMessages_long_content = -1;
490 static int hf_x411_WaitingMessages_low_priority = -1;
491 static int hf_x411_WaitingMessages_other_security_labels = -1;
492 static int hf_x411_T_source_type_originated_by = -1;
493 static int hf_x411_T_source_type_redirected_by = -1;
494 static int hf_x411_T_source_type_dl_expanded_by = -1;
495 static int hf_x411_T_standard_parameters_user_name = -1;
496 static int hf_x411_T_standard_parameters_user_address = -1;
497 static int hf_x411_T_standard_parameters_deliverable_class = -1;
498 static int hf_x411_T_standard_parameters_default_delivery_controls = -1;
499 static int hf_x411_T_standard_parameters_redirections = -1;
500 static int hf_x411_T_standard_parameters_restricted_delivery = -1;
501 static int hf_x411_PerMessageIndicators_disclosure_of_other_recipients = -1;
502 static int hf_x411_PerMessageIndicators_implicit_conversion_prohibited = -1;
503 static int hf_x411_PerMessageIndicators_alternate_recipient_allowed = -1;
504 static int hf_x411_PerMessageIndicators_content_return_request = -1;
505 static int hf_x411_PerMessageIndicators_reserved = -1;
506 static int hf_x411_PerMessageIndicators_bit_5 = -1;
507 static int hf_x411_PerMessageIndicators_bit_6 = -1;
508 static int hf_x411_PerMessageIndicators_service_message = -1;
509 static int hf_x411_OriginatorReportRequest_report = -1;
510 static int hf_x411_OriginatorReportRequest_non_delivery_report = -1;
511 static int hf_x411_DeliveryFlags_implicit_conversion_prohibited = -1;
512 static int hf_x411_Criticality_for_submission = -1;
513 static int hf_x411_Criticality_for_transfer = -1;
514 static int hf_x411_Criticality_for_delivery = -1;
515 static int hf_x411_PhysicalDeliveryModes_ordinary_mail = -1;
516 static int hf_x411_PhysicalDeliveryModes_special_delivery = -1;
517 static int hf_x411_PhysicalDeliveryModes_express_mail = -1;
518 static int hf_x411_PhysicalDeliveryModes_counter_collection = -1;
519 static int hf_x411_PhysicalDeliveryModes_counter_collection_with_telephone_advice = -1;
520 static int hf_x411_PhysicalDeliveryModes_counter_collection_with_telex_advice = -1;
521 static int hf_x411_PhysicalDeliveryModes_counter_collection_with_teletex_advice = -1;
522 static int hf_x411_PhysicalDeliveryModes_bureau_fax_delivery = -1;
523 static int hf_x411_BuiltInEncodedInformationTypes_unknown = -1;
524 static int hf_x411_BuiltInEncodedInformationTypes_ia5_text = -1;
525 static int hf_x411_BuiltInEncodedInformationTypes_g3_facsimile = -1;
526 static int hf_x411_BuiltInEncodedInformationTypes_g4_class_1 = -1;
527 static int hf_x411_BuiltInEncodedInformationTypes_teletex = -1;
528 static int hf_x411_BuiltInEncodedInformationTypes_videotex = -1;
529 static int hf_x411_BuiltInEncodedInformationTypes_voice = -1;
530 static int hf_x411_BuiltInEncodedInformationTypes_sfd = -1;
531 static int hf_x411_BuiltInEncodedInformationTypes_mixed_mode = -1;
532 static int hf_x411_G3FacsimileNonBasicParameters_two_dimensional = -1;
533 static int hf_x411_G3FacsimileNonBasicParameters_fine_resolution = -1;
534 static int hf_x411_G3FacsimileNonBasicParameters_unlimited_length = -1;
535 static int hf_x411_G3FacsimileNonBasicParameters_b4_length = -1;
536 static int hf_x411_G3FacsimileNonBasicParameters_a3_width = -1;
537 static int hf_x411_G3FacsimileNonBasicParameters_b4_width = -1;
538 static int hf_x411_G3FacsimileNonBasicParameters_t6_coding = -1;
539 static int hf_x411_G3FacsimileNonBasicParameters_uncompressed = -1;
540 static int hf_x411_G3FacsimileNonBasicParameters_width_middle_864_of_1728 = -1;
541 static int hf_x411_G3FacsimileNonBasicParameters_width_middle_1216_of_1728 = -1;
542 static int hf_x411_G3FacsimileNonBasicParameters_resolution_type = -1;
543 static int hf_x411_G3FacsimileNonBasicParameters_resolution_400x400 = -1;
544 static int hf_x411_G3FacsimileNonBasicParameters_resolution_300x300 = -1;
545 static int hf_x411_G3FacsimileNonBasicParameters_resolution_8x15 = -1;
546 static int hf_x411_G3FacsimileNonBasicParameters_edi = -1;
547 static int hf_x411_G3FacsimileNonBasicParameters_dtm = -1;
548 static int hf_x411_G3FacsimileNonBasicParameters_bft = -1;
549 static int hf_x411_G3FacsimileNonBasicParameters_mixed_mode = -1;
550 static int hf_x411_G3FacsimileNonBasicParameters_character_mode = -1;
551 static int hf_x411_G3FacsimileNonBasicParameters_twelve_bits = -1;
552 static int hf_x411_G3FacsimileNonBasicParameters_preferred_huffmann = -1;
553 static int hf_x411_G3FacsimileNonBasicParameters_full_colour = -1;
554 static int hf_x411_G3FacsimileNonBasicParameters_jpeg = -1;
555 static int hf_x411_G3FacsimileNonBasicParameters_processable_mode_26 = -1;
556
557 /*--- End of included file: packet-x411-hf.c ---*/
558 #line 75 "packet-x411-template.c"
559
560 /* Initialize the subtree pointers */
561 static gint ett_x411 = -1;
562 static gint ett_x411_content_unknown = -1;
563 static gint ett_x411_bilateral_information = -1;
564 static gint ett_x411_additional_information = -1;
565
566 /*--- Included file: packet-x411-ett.c ---*/
567 #line 1 "packet-x411-ett.c"
568 static gint ett_x411_MTABindArgument = -1;
569 static gint ett_x411_AuthenticatedArgument = -1;
570 static gint ett_x411_MTABindResult = -1;
571 static gint ett_x411_AuthenticatedResult = -1;
572 static gint ett_x411_MTS_APDU = -1;
573 static gint ett_x411_Message = -1;
574 static gint ett_x411_Report = -1;
575 static gint ett_x411_MessageTransferEnvelope = -1;
576 static gint ett_x411_SEQUENCE_OF_PerDomainBilateralInformation = -1;
577 static gint ett_x411_SET_OF_ExtensionField = -1;
578 static gint ett_x411_SEQUENCE_OF_PerRecipientMessageTransferFields = -1;
579 static gint ett_x411_PerRecipientMessageTransferFields = -1;
580 static gint ett_x411_ProbeTransferEnvelope = -1;
581 static gint ett_x411_SEQUENCE_OF_PerRecipientProbeTransferFields = -1;
582 static gint ett_x411_PerRecipientProbeTransferFields = -1;
583 static gint ett_x411_ReportTransferEnvelope = -1;
584 static gint ett_x411_ReportTransferContent = -1;
585 static gint ett_x411_SEQUENCE_OF_PerRecipientReportTransferFields = -1;
586 static gint ett_x411_PerRecipientReportTransferFields = -1;
587 static gint ett_x411_PerDomainBilateralInformation = -1;
588 static gint ett_x411_T_bilateral_domain = -1;
589 static gint ett_x411_T_private_domain = -1;
590 static gint ett_x411_PerRecipientIndicators = -1;
591 static gint ett_x411_LastTraceInformation = -1;
592 static gint ett_x411_InternalTraceInformation = -1;
593 static gint ett_x411_InternalTraceInformationElement = -1;
594 static gint ett_x411_MTASuppliedInformation = -1;
595 static gint ett_x411_T_attempted = -1;
596 static gint ett_x411_TraceInformation = -1;
597 static gint ett_x411_TraceInformationElement = -1;
598 static gint ett_x411_DomainSuppliedInformation = -1;
599 static gint ett_x411_OtherActions = -1;
600 static gint ett_x411_MTSBindArgument = -1;
601 static gint ett_x411_MTSBindResult = -1;
602 static gint ett_x411_ObjectName = -1;
603 static gint ett_x411_MessagesWaiting = -1;
604 static gint ett_x411_DeliveryQueue = -1;
605 static gint ett_x411_Credentials = -1;
606 static gint ett_x411_Password = -1;
607 static gint ett_x411_StrongCredentials = -1;
608 static gint ett_x411_ProtectedPassword = -1;
609 static gint ett_x411_Signature = -1;
610 static gint ett_x411_SecurityContext = -1;
611 static gint ett_x411_MessageSubmissionArgument = -1;
612 static gint ett_x411_MessageSubmissionResult = -1;
613 static gint ett_x411_ProbeSubmissionResult = -1;
614 static gint ett_x411_ImproperlySpecifiedRecipients = -1;
615 static gint ett_x411_Waiting = -1;
616 static gint ett_x411_SET_OF_ContentType = -1;
617 static gint ett_x411_Operations = -1;
618 static gint ett_x411_WaitingMessages = -1;
619 static gint ett_x411_MessageDeliveryArgument = -1;
620 static gint ett_x411_MessageDeliveryResult = -1;
621 static gint ett_x411_ReportDeliveryArgument = -1;
622 static gint ett_x411_SEQUENCE_OF_PerRecipientReportDeliveryFields = -1;
623 static gint ett_x411_ReportDeliveryResult = -1;
624 static gint ett_x411_DeliveryControlArgument = -1;
625 static gint ett_x411_DeliveryControlResult = -1;
626 static gint ett_x411_RefusedOperation = -1;
627 static gint ett_x411_T_refused_argument = -1;
628 static gint ett_x411_Controls = -1;
629 static gint ett_x411_RegisterArgument = -1;
630 static gint ett_x411_SET_OF_DeliverableClass = -1;
631 static gint ett_x411_RegisterResult = -1;
632 static gint ett_x411_T_non_empty_result = -1;
633 static gint ett_x411_ChangeCredentialsArgument = -1;
634 static gint ett_x411_UserAddress = -1;
635 static gint ett_x411_T_x121 = -1;
636 static gint ett_x411_Redirections = -1;
637 static gint ett_x411_RecipientRedirection = -1;
638 static gint ett_x411_SET_OF_RedirectionClass = -1;
639 static gint ett_x411_MessageClass = -1;
640 static gint ett_x411_SET_OF_Priority = -1;
641 static gint ett_x411_SEQUENCE_OF_Restriction = -1;
642 static gint ett_x411_EncodedInformationTypesConstraints = -1;
643 static gint ett_x411_RestrictedDelivery = -1;
644 static gint ett_x411_Restriction = -1;
645 static gint ett_x411_T_source_type = -1;
646 static gint ett_x411_ExactOrPattern = -1;
647 static gint ett_x411_RegistrationTypes = -1;
648 static gint ett_x411_T_standard_parameters = -1;
649 static gint ett_x411_T_type_extensions = -1;
650 static gint ett_x411_MessageSubmissionEnvelope = -1;
651 static gint ett_x411_SEQUENCE_OF_PerRecipientMessageSubmissionFields = -1;
652 static gint ett_x411_PerRecipientMessageSubmissionFields = -1;
653 static gint ett_x411_ProbeSubmissionEnvelope = -1;
654 static gint ett_x411_SEQUENCE_OF_PerRecipientProbeSubmissionFields = -1;
655 static gint ett_x411_PerRecipientProbeSubmissionFields = -1;
656 static gint ett_x411_MessageDeliveryEnvelope = -1;
657 static gint ett_x411_OtherMessageDeliveryFields = -1;
658 static gint ett_x411_ReportDeliveryEnvelope = -1;
659 static gint ett_x411_PerRecipientReportDeliveryFields = -1;
660 static gint ett_x411_ReportType = -1;
661 static gint ett_x411_DeliveryReport = -1;
662 static gint ett_x411_NonDeliveryReport = -1;
663 static gint ett_x411_ContentTypes = -1;
664 static gint ett_x411_ContentType = -1;
665 static gint ett_x411_DeliveredContentType = -1;
666 static gint ett_x411_PerMessageIndicators = -1;
667 static gint ett_x411_OriginatorReportRequest = -1;
668 static gint ett_x411_DeliveryFlags = -1;
669 static gint ett_x411_OtherRecipientNames = -1;
670 static gint ett_x411_ExtensionType = -1;
671 static gint ett_x411_Criticality = -1;
672 static gint ett_x411_ExtensionField = -1;
673 static gint ett_x411_RequestedDeliveryMethod = -1;
674 static gint ett_x411_PhysicalDeliveryModes = -1;
675 static gint ett_x411_ContentCorrelator = -1;
676 static gint ett_x411_RedirectionHistory = -1;
677 static gint ett_x411_Redirection = -1;
678 static gint ett_x411_IntendedRecipientName = -1;
679 static gint ett_x411_DLExpansionHistory = -1;
680 static gint ett_x411_DLExpansion = -1;
681 static gint ett_x411_OriginatorAndDLExpansionHistory = -1;
682 static gint ett_x411_OriginatorAndDLExpansion = -1;
683 static gint ett_x411_PerRecipientReportFields = -1;
684 static gint ett_x411_T_report_type = -1;
685 static gint ett_x411_PerRecipientDeliveryReportFields = -1;
686 static gint ett_x411_PerRecipientNonDeliveryReportFields = -1;
687 static gint ett_x411_ReportingMTAName = -1;
688 static gint ett_x411_ExtendedCertificates = -1;
689 static gint ett_x411_ExtendedCertificate = -1;
690 static gint ett_x411_DLExemptedRecipients = -1;
691 static gint ett_x411_CertificateSelectors = -1;
692 static gint ett_x411_MTSIdentifier = -1;
693 static gint ett_x411_GlobalDomainIdentifier = -1;
694 static gint ett_x411_PrivateDomainIdentifier = -1;
695 static gint ett_x411_ORName = -1;
696 static gint ett_x411_ORAddress = -1;
697 static gint ett_x411_BuiltInStandardAttributes = -1;
698 static gint ett_x411_CountryName = -1;
699 static gint ett_x411_AdministrationDomainName = -1;
700 static gint ett_x411_PrivateDomainName = -1;
701 static gint ett_x411_PersonalName = -1;
702 static gint ett_x411_OrganizationalUnitNames = -1;
703 static gint ett_x411_BuiltInDomainDefinedAttributes = -1;
704 static gint ett_x411_BuiltInDomainDefinedAttribute = -1;
705 static gint ett_x411_ExtensionAttributes = -1;
706 static gint ett_x411_ExtensionAttribute = -1;
707 static gint ett_x411_TeletexPersonalName = -1;
708 static gint ett_x411_UniversalPersonalName = -1;
709 static gint ett_x411_TeletexOrganizationalUnitNames = -1;
710 static gint ett_x411_UniversalOrganizationalUnitNames = -1;
711 static gint ett_x411_UniversalOrBMPString = -1;
712 static gint ett_x411_T_character_encoding = -1;
713 static gint ett_x411_PhysicalDeliveryCountryName = -1;
714 static gint ett_x411_PostalCode = -1;
715 static gint ett_x411_UnformattedPostalAddress = -1;
716 static gint ett_x411_T_printable_address = -1;
717 static gint ett_x411_PDSParameter = -1;
718 static gint ett_x411_ExtendedNetworkAddress = -1;
719 static gint ett_x411_T_e163_4_address = -1;
720 static gint ett_x411_TeletexDomainDefinedAttributes = -1;
721 static gint ett_x411_TeletexDomainDefinedAttribute = -1;
722 static gint ett_x411_UniversalDomainDefinedAttributes = -1;
723 static gint ett_x411_UniversalDomainDefinedAttribute = -1;
724 static gint ett_x411_EncodedInformationTypes = -1;
725 static gint ett_x411_BuiltInEncodedInformationTypes = -1;
726 static gint ett_x411_ExtendedEncodedInformationTypes = -1;
727 static gint ett_x411_NonBasicParameters = -1;
728 static gint ett_x411_G3FacsimileNonBasicParameters = -1;
729 static gint ett_x411_TeletexNonBasicParameters = -1;
730 static gint ett_x411_Token = -1;
731 static gint ett_x411_AsymmetricTokenData = -1;
732 static gint ett_x411_T_name = -1;
733 static gint ett_x411_MTANameAndOptionalGDI = -1;
734 static gint ett_x411_AsymmetricToken = -1;
735 static gint ett_x411_TokenData = -1;
736 static gint ett_x411_MessageTokenSignedData = -1;
737 static gint ett_x411_MessageTokenEncryptedData = -1;
738 static gint ett_x411_SecurityLabel = -1;
739 static gint ett_x411_SecurityCategories = -1;
740 static gint ett_x411_SecurityCategory = -1;
741
742 /*--- End of included file: packet-x411-ett.c ---*/
743 #line 82 "packet-x411-template.c"
744
745
746 /*--- Included file: packet-x411-fn.c ---*/
747 #line 1 "packet-x411-fn.c"
748 /*--- Fields for imported types ---*/
749
750 static int dissect_certificate_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
751   return dissect_x509af_Certificates(TRUE, tvb, offset, pinfo, tree, hf_x411_certificate);
752 }
753 static int dissect_certificate_selector_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
754   return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_certificate_selector);
755 }
756 static int dissect_algorithmIdentifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
757   return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_algorithmIdentifier);
758 }
759 static int dissect_mta_directory_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
760   return dissect_x509if_Name(TRUE, tvb, offset, pinfo, tree, hf_x411_mta_directory_name);
761 }
762 static int dissect_directory_entry_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
763   return dissect_x509if_Name(TRUE, tvb, offset, pinfo, tree, hf_x411_directory_entry);
764 }
765 static int dissect_encryption_recipient_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
766   return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_encryption_recipient);
767 }
768 static int dissect_encryption_originator_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
769   return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_encryption_originator);
770 }
771 static int dissect_selectors_content_integrity_check_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
772   return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_selectors_content_integrity_check);
773 }
774 static int dissect_token_signature_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
775   return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_token_signature);
776 }
777 static int dissect_message_origin_authentication_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
778   return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_message_origin_authentication);
779 }
780 static int dissect_directory_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
781   return dissect_x509if_Name(TRUE, tvb, offset, pinfo, tree, hf_x411_directory_name);
782 }
783 static int dissect_psap_address_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
784   return dissect_x509sat_PresentationAddress(TRUE, tvb, offset, pinfo, tree, hf_x411_psap_address);
785 }
786 static int dissect_signature_algorithm_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
787   return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_signature_algorithm_identifier);
788 }
789 static int dissect_encryption_algorithm_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
790   return dissect_x509af_AlgorithmIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_encryption_algorithm_identifier);
791 }
792 static int dissect_algorithm_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
793   return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_algorithm_identifier);
794 }
795
796
797
798 static int
799 dissect_x411_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
800   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
801
802   return offset;
803 }
804 static int dissect_unauthenticated(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
805   return dissect_x411_NULL(FALSE, tvb, offset, pinfo, tree, hf_x411_unauthenticated);
806 }
807 static int dissect_empty_result(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
808   return dissect_x411_NULL(FALSE, tvb, offset, pinfo, tree, hf_x411_empty_result);
809 }
810
811
812
813 static int
814 dissect_x411_MTAName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
815 #line 405 "x411.cnf"
816         tvbuff_t        *mtaname = NULL;
817
818           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
819                                             pinfo, tree, tvb, offset, hf_index,
820                                             &mtaname);
821
822
823         if(doing_address) {
824
825                 proto_item_append_text(address_item, " %s", tvb_format_text(mtaname, 0, tvb_length(mtaname)));
826
827         } else {
828
829         if (check_col(pinfo->cinfo, COL_INFO) && mtaname) {
830                 col_append_fstr(pinfo->cinfo, COL_INFO, " %s", tvb_format_text(mtaname, 0, tvb_length(mtaname)));
831         }
832
833         }
834
835
836
837   return offset;
838 }
839 static int dissect_authenticated_initiator_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
840   return dissect_x411_MTAName(TRUE, tvb, offset, pinfo, tree, hf_x411_authenticated_initiator_name);
841 }
842 static int dissect_authenticated_responder_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
843   return dissect_x411_MTAName(TRUE, tvb, offset, pinfo, tree, hf_x411_authenticated_responder_name);
844 }
845 static int dissect_mta_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
846   return dissect_x411_MTAName(FALSE, tvb, offset, pinfo, tree, hf_x411_mta_name);
847 }
848 static int dissect_mta(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
849   return dissect_x411_MTAName(FALSE, tvb, offset, pinfo, tree, hf_x411_mta);
850 }
851 static int dissect_mTA_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
852   return dissect_x411_MTAName(TRUE, tvb, offset, pinfo, tree, hf_x411_mTA);
853 }
854
855
856
857 static int
858 dissect_x411_IA5String(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
859   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
860                                             pinfo, tree, tvb, offset, hf_index,
861                                             NULL);
862
863   return offset;
864 }
865 static int dissect_ia5_string(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
866   return dissect_x411_IA5String(FALSE, tvb, offset, pinfo, tree, hf_x411_ia5_string);
867 }
868 static int dissect_ia5text(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
869   return dissect_x411_IA5String(FALSE, tvb, offset, pinfo, tree, hf_x411_ia5text);
870 }
871
872
873
874 static int
875 dissect_x411_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
876   offset = dissect_ber_octet_string(implicit_tag, pinfo, tree, tvb, offset, hf_index,
877                                        NULL);
878
879   return offset;
880 }
881 static int dissect_octet_string(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
882   return dissect_x411_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_x411_octet_string);
883 }
884 static int dissect_octets(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
885   return dissect_x411_OCTET_STRING(FALSE, tvb, offset, pinfo, tree, hf_x411_octets);
886 }
887 static int dissect_page_formats_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
888   return dissect_x411_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_page_formats);
889 }
890 static int dissect_private_use_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
891   return dissect_x411_OCTET_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_private_use);
892 }
893
894
895 static const value_string x411_Password_vals[] = {
896   {   0, "ia5-string" },
897   {   1, "octet-string" },
898   { 0, NULL }
899 };
900
901 static const ber_choice_t Password_choice[] = {
902   {   0, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_ia5_string },
903   {   1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_octet_string },
904   { 0, 0, 0, 0, NULL }
905 };
906
907 static int
908 dissect_x411_Password(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
909   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
910                                  Password_choice, hf_index, ett_x411_Password,
911                                  NULL);
912
913   return offset;
914 }
915 static int dissect_simple(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
916   return dissect_x411_Password(FALSE, tvb, offset, pinfo, tree, hf_x411_simple);
917 }
918
919
920
921 static int
922 dissect_x411_TokenTypeIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
923   offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id);
924
925   return offset;
926 }
927 static int dissect_token_type_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
928   return dissect_x411_TokenTypeIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_token_type_identifier);
929 }
930
931
932
933 static int
934 dissect_x411_TokenTypeData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
935 #line 675 "x411.cnf"
936         
937         if(object_identifier_id) 
938            call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
939
940
941
942   return offset;
943 }
944 static int dissect_token_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
945   return dissect_x411_TokenTypeData(TRUE, tvb, offset, pinfo, tree, hf_x411_token);
946 }
947
948
949 static const ber_sequence_t Token_sequence[] = {
950   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_token_type_identifier_impl },
951   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_token_impl },
952   { 0, 0, 0, NULL }
953 };
954
955 static int
956 dissect_x411_Token(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
957   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
958                                    Token_sequence, hf_index, ett_x411_Token);
959
960   return offset;
961 }
962 static int dissect_bind_token_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
963   return dissect_x411_Token(TRUE, tvb, offset, pinfo, tree, hf_x411_bind_token);
964 }
965
966
967 static const ber_sequence_t StrongCredentials_set[] = {
968   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bind_token_impl },
969   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_certificate_impl },
970   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_certificate_selector_impl },
971   { 0, 0, 0, NULL }
972 };
973
974 static int
975 dissect_x411_StrongCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
976   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
977                               StrongCredentials_set, hf_index, ett_x411_StrongCredentials);
978
979   return offset;
980 }
981 static int dissect_strong_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
982   return dissect_x411_StrongCredentials(TRUE, tvb, offset, pinfo, tree, hf_x411_strong);
983 }
984
985
986
987 static int
988 dissect_x411_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
989   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
990                                     NULL, hf_index, -1,
991                                     NULL);
992
993   return offset;
994 }
995 static int dissect_random1_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
996   return dissect_x411_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_random1);
997 }
998 static int dissect_random2_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
999   return dissect_x411_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_random2);
1000 }
1001 static int dissect_encrypted(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1002   return dissect_x411_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_x411_encrypted);
1003 }
1004 static int dissect_encrypted_data_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1005   return dissect_x411_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_encrypted_data);
1006 }
1007
1008
1009 static const ber_sequence_t Signature_sequence[] = {
1010   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithmIdentifier },
1011   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
1012   { 0, 0, 0, NULL }
1013 };
1014
1015 static int
1016 dissect_x411_Signature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1017   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1018                                    Signature_sequence, hf_index, ett_x411_Signature);
1019
1020   return offset;
1021 }
1022 static int dissect_signature(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1023   return dissect_x411_Signature(FALSE, tvb, offset, pinfo, tree, hf_x411_signature);
1024 }
1025
1026
1027
1028 static int
1029 dissect_x411_UTCTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1030   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
1031                                             pinfo, tree, tvb, offset, hf_index,
1032                                             NULL);
1033
1034   return offset;
1035 }
1036 static int dissect_time1_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1037   return dissect_x411_UTCTime(TRUE, tvb, offset, pinfo, tree, hf_x411_time1);
1038 }
1039 static int dissect_time2_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1040   return dissect_x411_UTCTime(TRUE, tvb, offset, pinfo, tree, hf_x411_time2);
1041 }
1042
1043
1044 static const ber_sequence_t ProtectedPassword_set[] = {
1045   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signature },
1046   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_time1_impl },
1047   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_time2_impl },
1048   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_random1_impl },
1049   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_random2_impl },
1050   { 0, 0, 0, NULL }
1051 };
1052
1053 static int
1054 dissect_x411_ProtectedPassword(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1055   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
1056                               ProtectedPassword_set, hf_index, ett_x411_ProtectedPassword);
1057
1058   return offset;
1059 }
1060 static int dissect_protected_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1061   return dissect_x411_ProtectedPassword(TRUE, tvb, offset, pinfo, tree, hf_x411_protected);
1062 }
1063
1064
1065 static const value_string x411_Credentials_vals[] = {
1066   {   0, "simple" },
1067   {   1, "strong" },
1068   {   2, "protected" },
1069   { 0, NULL }
1070 };
1071
1072 static const ber_choice_t Credentials_choice[] = {
1073   {   0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_simple },
1074   {   1, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_strong_impl },
1075   {   2, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_protected_impl },
1076   { 0, 0, 0, 0, NULL }
1077 };
1078
1079 static int
1080 dissect_x411_Credentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1081 #line 683 "x411.cnf"
1082   guint32 credentials;
1083
1084     offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1085                                  Credentials_choice, hf_index, ett_x411_Credentials,
1086                                  &credentials);
1087
1088
1089   if (check_col(pinfo->cinfo, COL_INFO)) {
1090         if(credentials == -1) credentials = 0;
1091         col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(credentials, x411_Credentials_vals, "Credentials(%d)"));
1092   }
1093
1094
1095
1096   return offset;
1097 }
1098 static int dissect_old_credentials_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1099   return dissect_x411_Credentials(TRUE, tvb, offset, pinfo, tree, hf_x411_old_credentials);
1100 }
1101 static int dissect_new_credentials_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1102   return dissect_x411_Credentials(TRUE, tvb, offset, pinfo, tree, hf_x411_new_credentials);
1103 }
1104
1105
1106
1107 static int
1108 dissect_x411_InitiatorCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1109   offset = dissect_x411_Credentials(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1110
1111   return offset;
1112 }
1113 static int dissect_initiator_credentials_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1114   return dissect_x411_InitiatorCredentials(TRUE, tvb, offset, pinfo, tree, hf_x411_initiator_credentials);
1115 }
1116
1117
1118
1119 static int
1120 dissect_x411_SecurityPolicyIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1121   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
1122
1123   return offset;
1124 }
1125 static int dissect_security_policy_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1126   return dissect_x411_SecurityPolicyIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_security_policy_identifier);
1127 }
1128
1129
1130 static const value_string x411_SecurityClassification_vals[] = {
1131   {   0, "unmarked" },
1132   {   1, "unclassified" },
1133   {   2, "restricted" },
1134   {   3, "confidential" },
1135   {   4, "secret" },
1136   {   5, "top-secret" },
1137   { 0, NULL }
1138 };
1139
1140
1141 static int
1142 dissect_x411_SecurityClassification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1143   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1144                                   NULL);
1145
1146   return offset;
1147 }
1148 static int dissect_security_classification(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1149   return dissect_x411_SecurityClassification(FALSE, tvb, offset, pinfo, tree, hf_x411_security_classification);
1150 }
1151
1152
1153
1154 static int
1155 dissect_x411_PrivacyMark(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1156   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
1157                                             pinfo, tree, tvb, offset, hf_index,
1158                                             NULL);
1159
1160   return offset;
1161 }
1162 static int dissect_privacy_mark(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1163   return dissect_x411_PrivacyMark(FALSE, tvb, offset, pinfo, tree, hf_x411_privacy_mark);
1164 }
1165
1166
1167
1168 static int
1169 dissect_x411_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1170 #line 339 "x411.cnf"
1171
1172           offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id);
1173
1174         extension_id = -1;
1175
1176
1177
1178   return offset;
1179 }
1180 static int dissect_private_extension_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1181   return dissect_x411_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_x411_private_extension);
1182 }
1183 static int dissect_category_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1184   return dissect_x411_OBJECT_IDENTIFIER(TRUE, tvb, offset, pinfo, tree, hf_x411_category_type);
1185 }
1186
1187
1188
1189 static int
1190 dissect_x411_CategoryValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1191 #line 260 "x411.cnf"
1192
1193         offset = dissect_unknown_ber(pinfo, tvb, offset, tree);
1194
1195
1196
1197   return offset;
1198 }
1199 static int dissect_category_value_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1200   return dissect_x411_CategoryValue(TRUE, tvb, offset, pinfo, tree, hf_x411_category_value);
1201 }
1202
1203
1204 static const ber_sequence_t SecurityCategory_sequence[] = {
1205   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_category_type_impl },
1206   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_category_value_impl },
1207   { 0, 0, 0, NULL }
1208 };
1209
1210 static int
1211 dissect_x411_SecurityCategory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1212   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1213                                    SecurityCategory_sequence, hf_index, ett_x411_SecurityCategory);
1214
1215   return offset;
1216 }
1217 static int dissect_SecurityCategories_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1218   return dissect_x411_SecurityCategory(FALSE, tvb, offset, pinfo, tree, hf_x411_SecurityCategories_item);
1219 }
1220
1221
1222 static const ber_sequence_t SecurityCategories_set_of[1] = {
1223   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_SecurityCategories_item },
1224 };
1225
1226 static int
1227 dissect_x411_SecurityCategories(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1228   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1229                                  SecurityCategories_set_of, hf_index, ett_x411_SecurityCategories);
1230
1231   return offset;
1232 }
1233 static int dissect_security_categories(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1234   return dissect_x411_SecurityCategories(FALSE, tvb, offset, pinfo, tree, hf_x411_security_categories);
1235 }
1236
1237
1238 static const ber_sequence_t SecurityLabel_set[] = {
1239   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_security_policy_identifier },
1240   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_security_classification },
1241   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_privacy_mark },
1242   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_security_categories },
1243   { 0, 0, 0, NULL }
1244 };
1245
1246 int
1247 dissect_x411_SecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1248   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
1249                               SecurityLabel_set, hf_index, ett_x411_SecurityLabel);
1250
1251   return offset;
1252 }
1253 static int dissect_SecurityContext_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1254   return dissect_x411_SecurityLabel(FALSE, tvb, offset, pinfo, tree, hf_x411_SecurityContext_item);
1255 }
1256
1257
1258 static const ber_sequence_t SecurityContext_set_of[1] = {
1259   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_SecurityContext_item },
1260 };
1261
1262 int
1263 dissect_x411_SecurityContext(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1264   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
1265                                  SecurityContext_set_of, hf_index, ett_x411_SecurityContext);
1266
1267   return offset;
1268 }
1269 static int dissect_security_context_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1270   return dissect_x411_SecurityContext(TRUE, tvb, offset, pinfo, tree, hf_x411_security_context);
1271 }
1272 static int dissect_permissible_security_context_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1273   return dissect_x411_SecurityContext(TRUE, tvb, offset, pinfo, tree, hf_x411_permissible_security_context);
1274 }
1275 static int dissect_security_labels_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1276   return dissect_x411_SecurityContext(TRUE, tvb, offset, pinfo, tree, hf_x411_security_labels);
1277 }
1278
1279
1280 static const ber_sequence_t AuthenticatedArgument_set[] = {
1281   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_authenticated_initiator_name_impl },
1282   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_initiator_credentials_impl },
1283   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_security_context_impl },
1284   { 0, 0, 0, NULL }
1285 };
1286
1287 static int
1288 dissect_x411_AuthenticatedArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1289   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
1290                               AuthenticatedArgument_set, hf_index, ett_x411_AuthenticatedArgument);
1291
1292   return offset;
1293 }
1294 static int dissect_authenticated_argument_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1295   return dissect_x411_AuthenticatedArgument(TRUE, tvb, offset, pinfo, tree, hf_x411_authenticated_argument);
1296 }
1297
1298
1299 static const value_string x411_MTABindArgument_vals[] = {
1300   {   0, "unauthenticated" },
1301   {   1, "authenticated" },
1302   { 0, NULL }
1303 };
1304
1305 static const ber_choice_t MTABindArgument_choice[] = {
1306   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_unauthenticated },
1307   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_authenticated_argument_impl },
1308   { 0, 0, 0, 0, NULL }
1309 };
1310
1311 static int
1312 dissect_x411_MTABindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1313   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1314                                  MTABindArgument_choice, hf_index, ett_x411_MTABindArgument,
1315                                  NULL);
1316
1317   return offset;
1318 }
1319
1320
1321
1322 static int
1323 dissect_x411_ResponderCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1324   offset = dissect_x411_Credentials(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1325
1326   return offset;
1327 }
1328 static int dissect_responder_credentials_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1329   return dissect_x411_ResponderCredentials(TRUE, tvb, offset, pinfo, tree, hf_x411_responder_credentials);
1330 }
1331
1332
1333 static const ber_sequence_t AuthenticatedResult_set[] = {
1334   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_authenticated_responder_name_impl },
1335   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_responder_credentials_impl },
1336   { 0, 0, 0, NULL }
1337 };
1338
1339 static int
1340 dissect_x411_AuthenticatedResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1341   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
1342                               AuthenticatedResult_set, hf_index, ett_x411_AuthenticatedResult);
1343
1344   return offset;
1345 }
1346 static int dissect_authenticated_result_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1347   return dissect_x411_AuthenticatedResult(TRUE, tvb, offset, pinfo, tree, hf_x411_authenticated_result);
1348 }
1349
1350
1351 static const value_string x411_MTABindResult_vals[] = {
1352   {   0, "unauthenticated" },
1353   {   1, "authenticated" },
1354   { 0, NULL }
1355 };
1356
1357 static const ber_choice_t MTABindResult_choice[] = {
1358   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_unauthenticated },
1359   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_authenticated_result_impl },
1360   { 0, 0, 0, 0, NULL }
1361 };
1362
1363 static int
1364 dissect_x411_MTABindResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1365   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1366                                  MTABindResult_choice, hf_index, ett_x411_MTABindResult,
1367                                  NULL);
1368
1369   return offset;
1370 }
1371
1372
1373 static const value_string x411_MTABindError_vals[] = {
1374   {   0, "busy" },
1375   {   2, "authentication-error" },
1376   {   3, "unacceptable-dialogue-mode" },
1377   {   4, "unacceptable-security-context" },
1378   {   5, "inadequate-association-confidentiality" },
1379   { 0, NULL }
1380 };
1381
1382
1383 static int
1384 dissect_x411_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1385 #line 666 "x411.cnf"
1386   int error = -1;
1387     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1388                                   &error);
1389
1390   if((error != -1) && check_col(pinfo->cinfo, COL_INFO))
1391     col_append_fstr(pinfo->cinfo, COL_INFO, " (%s)", val_to_str(error, x411_MTABindError_vals, "error(%d)"));
1392
1393
1394
1395   return offset;
1396 }
1397
1398
1399
1400 static int
1401 dissect_x411_NumericString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1402 #line 494 "x411.cnf"
1403         tvbuff_t        *nstring = NULL;
1404
1405           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
1406                                             pinfo, tree, tvb, offset, hf_index,
1407                                             &nstring);
1408
1409
1410         if(doing_address && nstring)
1411                 g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN);
1412
1413
1414
1415   return offset;
1416 }
1417 static int dissect_x121_address(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1418   return dissect_x411_NumericString(FALSE, tvb, offset, pinfo, tree, hf_x411_x121_address);
1419 }
1420 static int dissect_numeric(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1421   return dissect_x411_NumericString(FALSE, tvb, offset, pinfo, tree, hf_x411_numeric);
1422 }
1423 static int dissect_x121_dcc_code(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1424   return dissect_x411_NumericString(FALSE, tvb, offset, pinfo, tree, hf_x411_x121_dcc_code);
1425 }
1426 static int dissect_numeric_code(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1427   return dissect_x411_NumericString(FALSE, tvb, offset, pinfo, tree, hf_x411_numeric_code);
1428 }
1429 static int dissect_number_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1430   return dissect_x411_NumericString(TRUE, tvb, offset, pinfo, tree, hf_x411_number);
1431 }
1432 static int dissect_sub_address_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1433   return dissect_x411_NumericString(TRUE, tvb, offset, pinfo, tree, hf_x411_sub_address);
1434 }
1435
1436
1437
1438 static int
1439 dissect_x411_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1440 #line 516 "x411.cnf"
1441         tvbuff_t        *pstring = NULL;
1442         char            *fmt = NULL;
1443
1444           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
1445                                             pinfo, tree, tvb, offset, hf_index,
1446                                             &pstring);
1447
1448
1449         if(doing_address && pstring) {
1450           if(hf_index == hf_x411_printable_surname)                     fmt = "/S=";
1451           else if(hf_index == hf_x411_printable_given_name)             fmt = "/G=";
1452           else if(hf_index == hf_x411_printable_initials)               fmt = "/I=";
1453           else if(hf_index == hf_x411_printable_generation_qualifier)   fmt = "/GQ=";
1454           else if(hf_index == hf_x411_printable_type)                   fmt = "/DD.";
1455           else if(hf_index == hf_x411_printable_value)                  fmt = "=";
1456                 
1457           if(fmt)
1458             g_strlcat(oraddress, fmt, MAX_ORA_STR_LEN);
1459
1460           g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN);
1461
1462         }
1463
1464
1465
1466   return offset;
1467 }
1468 static int dissect_tsap_id(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1469   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_tsap_id);
1470 }
1471 static int dissect_printable(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1472   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_printable);
1473 }
1474 static int dissect_iso_3166_alpha2_code(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1475   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_iso_3166_alpha2_code);
1476 }
1477 static int dissect_printable_surname_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1478   return dissect_x411_PrintableString(TRUE, tvb, offset, pinfo, tree, hf_x411_printable_surname);
1479 }
1480 static int dissect_printable_given_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1481   return dissect_x411_PrintableString(TRUE, tvb, offset, pinfo, tree, hf_x411_printable_given_name);
1482 }
1483 static int dissect_printable_initials_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1484   return dissect_x411_PrintableString(TRUE, tvb, offset, pinfo, tree, hf_x411_printable_initials);
1485 }
1486 static int dissect_printable_generation_qualifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1487   return dissect_x411_PrintableString(TRUE, tvb, offset, pinfo, tree, hf_x411_printable_generation_qualifier);
1488 }
1489 static int dissect_printable_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1490   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_printable_type);
1491 }
1492 static int dissect_printable_value(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1493   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_printable_value);
1494 }
1495 static int dissect_iso_639_language_code(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1496   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_iso_639_language_code);
1497 }
1498 static int dissect_printable_code(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1499   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_printable_code);
1500 }
1501 static int dissect_printable_address_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1502   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_printable_address_item);
1503 }
1504 static int dissect_printable_string(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1505   return dissect_x411_PrintableString(FALSE, tvb, offset, pinfo, tree, hf_x411_printable_string);
1506 }
1507
1508
1509 static const value_string x411_CountryName_vals[] = {
1510   {   0, "x121-dcc-code" },
1511   {   1, "iso-3166-alpha2-code" },
1512   { 0, NULL }
1513 };
1514
1515 static const ber_choice_t CountryName_choice[] = {
1516   {   0, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_x121_dcc_code },
1517   {   1, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_iso_3166_alpha2_code },
1518   { 0, 0, 0, 0, NULL }
1519 };
1520
1521 static int
1522 dissect_x411_CountryName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1523 #line 271 "x411.cnf"
1524  gint8 class;
1525  gboolean pc, ind_field;
1526  gint32 tag;
1527  guint32 len1;
1528
1529  if(!implicit_tag){
1530    /* XXX  asn2wrs can not yet handle tagged assignment yes so this
1531     * XXX is some conformance file magic to work around that bug
1532     */
1533     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1534     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1535  }
1536
1537  if(doing_address)
1538     g_strlcat(oraddress, "/C=", MAX_ORA_STR_LEN);
1539
1540   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1541                               CountryName_choice, hf_index, ett_x411_CountryName, NULL);
1542
1543
1544
1545
1546
1547   return offset;
1548 }
1549 static int dissect_country_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1550   return dissect_x411_CountryName(FALSE, tvb, offset, pinfo, tree, hf_x411_country_name);
1551 }
1552
1553
1554 static const value_string x411_AdministrationDomainName_vals[] = {
1555   {   0, "numeric" },
1556   {   1, "printable" },
1557   { 0, NULL }
1558 };
1559
1560 static const ber_choice_t AdministrationDomainName_choice[] = {
1561   {   0, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_numeric },
1562   {   1, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printable },
1563   { 0, 0, 0, 0, NULL }
1564 };
1565
1566 static int
1567 dissect_x411_AdministrationDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1568 #line 293 "x411.cnf"
1569  gint8 class;
1570  gboolean pc, ind_field;
1571  gint32 tag;
1572  guint32 len1;
1573
1574  if(!implicit_tag){
1575    /* XXX  asn2wrs can not yet handle tagged assignment yes so this
1576     * XXX is some conformance file magic to work around that bug
1577     */
1578     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
1579     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
1580  }
1581
1582   if(doing_address)
1583     g_strlcat(oraddress, "/A=", MAX_ORA_STR_LEN);
1584
1585   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1586                               AdministrationDomainName_choice, hf_index, ett_x411_AdministrationDomainName, NULL);
1587
1588
1589
1590   return offset;
1591 }
1592 static int dissect_administration_domain_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1593   return dissect_x411_AdministrationDomainName(FALSE, tvb, offset, pinfo, tree, hf_x411_administration_domain_name);
1594 }
1595 static int dissect_administration_domain_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1596   return dissect_x411_AdministrationDomainName(TRUE, tvb, offset, pinfo, tree, hf_x411_administration_domain_name);
1597 }
1598
1599
1600 static const value_string x411_PrivateDomainIdentifier_vals[] = {
1601   {   0, "numeric" },
1602   {   1, "printable" },
1603   { 0, NULL }
1604 };
1605
1606 static const ber_choice_t PrivateDomainIdentifier_choice[] = {
1607   {   0, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_numeric },
1608   {   1, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printable },
1609   { 0, 0, 0, 0, NULL }
1610 };
1611
1612 static int
1613 dissect_x411_PrivateDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1614 #line 456 "x411.cnf"
1615
1616         if(doing_address)
1617                 g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN);
1618
1619           offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1620                                  PrivateDomainIdentifier_choice, hf_index, ett_x411_PrivateDomainIdentifier,
1621                                  NULL);
1622
1623
1624
1625
1626   return offset;
1627 }
1628 static int dissect_private_domain_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1629   return dissect_x411_PrivateDomainIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_private_domain_identifier);
1630 }
1631 static int dissect_private_domain_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1632   return dissect_x411_PrivateDomainIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_private_domain_identifier);
1633 }
1634
1635
1636 static const ber_sequence_t GlobalDomainIdentifier_sequence[] = {
1637   { BER_CLASS_APP, 1, BER_FLAGS_NOOWNTAG, dissect_country_name },
1638   { BER_CLASS_APP, 2, BER_FLAGS_NOOWNTAG, dissect_administration_domain_name },
1639   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_private_domain_identifier },
1640   { 0, 0, 0, NULL }
1641 };
1642
1643 static int
1644 dissect_x411_GlobalDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1645 #line 563 "x411.cnf"
1646         
1647         oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0';     
1648         address_item = tree;
1649
1650           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1651                                    GlobalDomainIdentifier_sequence, hf_index, ett_x411_GlobalDomainIdentifier);
1652
1653
1654         if(*oraddress)
1655                 proto_item_append_text(address_item, " (%s/", oraddress);
1656
1657
1658
1659
1660   return offset;
1661 }
1662 static int dissect_global_domain_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1663   return dissect_x411_GlobalDomainIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_global_domain_identifier);
1664 }
1665 static int dissect_domain(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1666   return dissect_x411_GlobalDomainIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_domain);
1667 }
1668 static int dissect_attempted_domain(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1669   return dissect_x411_GlobalDomainIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_attempted_domain);
1670 }
1671
1672
1673
1674 static int
1675 dissect_x411_LocalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1676 #line 577 "x411.cnf"
1677         tvbuff_t        *id = NULL;
1678         
1679           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1680                                             pinfo, tree, tvb, offset, hf_index,
1681                                             &id);
1682
1683         
1684         if(doing_address && id)
1685           proto_item_append_text(address_item, " $ %s)", tvb_format_text(id, 0, tvb_length(id)));
1686
1687
1688
1689   return offset;
1690 }
1691 static int dissect_local_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1692   return dissect_x411_LocalIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_local_identifier);
1693 }
1694
1695
1696 static const ber_sequence_t MTSIdentifier_sequence[] = {
1697   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_global_domain_identifier },
1698   { BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_local_identifier },
1699   { 0, 0, 0, NULL }
1700 };
1701
1702 static int
1703 dissect_x411_MTSIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1704 #line 585 "x411.cnf"
1705
1706         doing_address = TRUE;
1707
1708           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1709                                    MTSIdentifier_sequence, hf_index, ett_x411_MTSIdentifier);
1710
1711
1712         doing_address = FALSE;
1713
1714
1715
1716   return offset;
1717 }
1718
1719
1720
1721 static int
1722 dissect_x411_MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1723   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1724
1725   return offset;
1726 }
1727 static int dissect_message_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1728   return dissect_x411_MessageIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_message_identifier);
1729 }
1730
1731
1732
1733 static int
1734 dissect_x411_X121Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1735 #line 425 "x411.cnf"
1736         tvbuff_t        *string = NULL;
1737
1738           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
1739                                             pinfo, tree, tvb, offset, hf_index,
1740                                             &string);
1741
1742
1743         if(doing_address && string) {
1744                 g_strlcat(oraddress, "/X121=", MAX_ORA_STR_LEN);
1745                 g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN);
1746         }
1747
1748
1749
1750
1751   return offset;
1752 }
1753
1754
1755
1756 static int
1757 dissect_x411_NetworkAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1758   offset = dissect_x411_X121Address(implicit_tag, tvb, offset, pinfo, tree, hf_index);
1759
1760   return offset;
1761 }
1762 static int dissect_network_address_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1763   return dissect_x411_NetworkAddress(TRUE, tvb, offset, pinfo, tree, hf_x411_network_address);
1764 }
1765
1766
1767
1768 static int
1769 dissect_x411_TerminalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1770 #line 439 "x411.cnf"
1771         tvbuff_t        *string = NULL;
1772
1773           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
1774                                             pinfo, tree, tvb, offset, hf_index,
1775                                             &string);
1776
1777
1778         if(doing_address && string) {
1779                 g_strlcat(oraddress, "/UA-ID=", MAX_ORA_STR_LEN);
1780                 g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN);
1781         }
1782
1783
1784
1785   return offset;
1786 }
1787 static int dissect_terminal_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1788   return dissect_x411_TerminalIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_terminal_identifier);
1789 }
1790
1791
1792 static const value_string x411_PrivateDomainName_vals[] = {
1793   {   0, "numeric" },
1794   {   1, "printable" },
1795   { 0, NULL }
1796 };
1797
1798 static const ber_choice_t PrivateDomainName_choice[] = {
1799   {   0, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_numeric },
1800   {   1, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printable },
1801   { 0, 0, 0, 0, NULL }
1802 };
1803
1804 static int
1805 dissect_x411_PrivateDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1806 #line 449 "x411.cnf"
1807
1808         if(doing_address)
1809                 g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN);
1810
1811           offset = dissect_ber_choice(pinfo, tree, tvb, offset,
1812                                  PrivateDomainName_choice, hf_index, ett_x411_PrivateDomainName,
1813                                  NULL);
1814
1815
1816
1817
1818   return offset;
1819 }
1820 static int dissect_private_domain_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1821   return dissect_x411_PrivateDomainName(TRUE, tvb, offset, pinfo, tree, hf_x411_private_domain_name);
1822 }
1823
1824
1825
1826 static int
1827 dissect_x411_OrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1828 #line 466 "x411.cnf"
1829         tvbuff_t        *string = NULL;
1830
1831           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
1832                                             pinfo, tree, tvb, offset, hf_index,
1833                                             &string);
1834
1835
1836         if(doing_address && string) {
1837                 g_strlcat(oraddress, "/O=", MAX_ORA_STR_LEN);
1838                 g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN);
1839         }
1840
1841
1842
1843   return offset;
1844 }
1845 static int dissect_organization_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1846   return dissect_x411_OrganizationName(TRUE, tvb, offset, pinfo, tree, hf_x411_organization_name);
1847 }
1848
1849
1850
1851 static int
1852 dissect_x411_NumericUserIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1853   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
1854                                             pinfo, tree, tvb, offset, hf_index,
1855                                             NULL);
1856
1857   return offset;
1858 }
1859 static int dissect_numeric_user_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1860   return dissect_x411_NumericUserIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_numeric_user_identifier);
1861 }
1862
1863
1864 static const ber_sequence_t PersonalName_set[] = {
1865   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_printable_surname_impl },
1866   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_printable_given_name_impl },
1867   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_printable_initials_impl },
1868   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_printable_generation_qualifier_impl },
1869   { 0, 0, 0, NULL }
1870 };
1871
1872 static int
1873 dissect_x411_PersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1874   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
1875                               PersonalName_set, hf_index, ett_x411_PersonalName);
1876
1877   return offset;
1878 }
1879 static int dissect_personal_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1880   return dissect_x411_PersonalName(TRUE, tvb, offset, pinfo, tree, hf_x411_personal_name);
1881 }
1882
1883
1884
1885 static int
1886 dissect_x411_OrganizationalUnitName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1887   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
1888                                             pinfo, tree, tvb, offset, hf_index,
1889                                             NULL);
1890
1891   return offset;
1892 }
1893 static int dissect_OrganizationalUnitNames_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1894   return dissect_x411_OrganizationalUnitName(FALSE, tvb, offset, pinfo, tree, hf_x411_OrganizationalUnitNames_item);
1895 }
1896
1897
1898 static const ber_sequence_t OrganizationalUnitNames_sequence_of[1] = {
1899   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_OrganizationalUnitNames_item },
1900 };
1901
1902 static int
1903 dissect_x411_OrganizationalUnitNames(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1904   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1905                                       OrganizationalUnitNames_sequence_of, hf_index, ett_x411_OrganizationalUnitNames);
1906
1907   return offset;
1908 }
1909 static int dissect_organizational_unit_names_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1910   return dissect_x411_OrganizationalUnitNames(TRUE, tvb, offset, pinfo, tree, hf_x411_organizational_unit_names);
1911 }
1912
1913
1914 static const ber_sequence_t BuiltInStandardAttributes_sequence[] = {
1915   { BER_CLASS_APP, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_country_name },
1916   { BER_CLASS_APP, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_administration_domain_name },
1917   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_network_address_impl },
1918   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_terminal_identifier_impl },
1919   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_private_domain_name_impl },
1920   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_organization_name_impl },
1921   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_numeric_user_identifier_impl },
1922   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_personal_name_impl },
1923   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_organizational_unit_names_impl },
1924   { 0, 0, 0, NULL }
1925 };
1926
1927 static int
1928 dissect_x411_BuiltInStandardAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1929 #line 602 "x411.cnf"
1930
1931         address_item = tree;    
1932
1933           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1934                                    BuiltInStandardAttributes_sequence, hf_index, ett_x411_BuiltInStandardAttributes);
1935
1936
1937
1938
1939   return offset;
1940 }
1941 static int dissect_built_in_standard_attributes(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1942   return dissect_x411_BuiltInStandardAttributes(FALSE, tvb, offset, pinfo, tree, hf_x411_built_in_standard_attributes);
1943 }
1944
1945
1946 static const ber_sequence_t BuiltInDomainDefinedAttribute_sequence[] = {
1947   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printable_type },
1948   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printable_value },
1949   { 0, 0, 0, NULL }
1950 };
1951
1952 static int
1953 dissect_x411_BuiltInDomainDefinedAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1954   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
1955                                    BuiltInDomainDefinedAttribute_sequence, hf_index, ett_x411_BuiltInDomainDefinedAttribute);
1956
1957   return offset;
1958 }
1959 static int dissect_BuiltInDomainDefinedAttributes_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1960   return dissect_x411_BuiltInDomainDefinedAttribute(FALSE, tvb, offset, pinfo, tree, hf_x411_BuiltInDomainDefinedAttributes_item);
1961 }
1962
1963
1964 static const ber_sequence_t BuiltInDomainDefinedAttributes_sequence_of[1] = {
1965   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_BuiltInDomainDefinedAttributes_item },
1966 };
1967
1968 static int
1969 dissect_x411_BuiltInDomainDefinedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1970   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
1971                                       BuiltInDomainDefinedAttributes_sequence_of, hf_index, ett_x411_BuiltInDomainDefinedAttributes);
1972
1973   return offset;
1974 }
1975 static int dissect_built_in_domain_defined_attributes(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1976   return dissect_x411_BuiltInDomainDefinedAttributes(FALSE, tvb, offset, pinfo, tree, hf_x411_built_in_domain_defined_attributes);
1977 }
1978
1979
1980
1981 static int
1982 dissect_x411_INTEGER(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
1983   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
1984                                   &extension_id);
1985
1986   return offset;
1987 }
1988 static int dissect_messages_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1989   return dissect_x411_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x411_messages);
1990 }
1991 static int dissect_delivery_queue_octets_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1992   return dissect_x411_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x411_delivery_queue_octets);
1993 }
1994 static int dissect_standard_extension_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1995   return dissect_x411_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x411_standard_extension);
1996 }
1997 static int dissect_extension_attribute_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
1998   return dissect_x411_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x411_extension_attribute_type);
1999 }
2000 static int dissect_token_data_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2001   return dissect_x411_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x411_token_data_type);
2002 }
2003 static int dissect_message_sequence_number_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2004   return dissect_x411_INTEGER(TRUE, tvb, offset, pinfo, tree, hf_x411_message_sequence_number);
2005 }
2006
2007
2008
2009 static int
2010 dissect_x411_T_extension_attribute_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2011 #line 264 "x411.cnf"
2012
2013         offset=call_x411_oid_callback("x411.extension-attribute", tvb, offset, pinfo, tree);
2014
2015
2016
2017   return offset;
2018 }
2019 static int dissect_extension_attribute_value_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2020   return dissect_x411_T_extension_attribute_value(TRUE, tvb, offset, pinfo, tree, hf_x411_extension_attribute_value);
2021 }
2022
2023
2024 static const ber_sequence_t ExtensionAttribute_sequence[] = {
2025   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_extension_attribute_type_impl },
2026   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_extension_attribute_value_impl },
2027   { 0, 0, 0, NULL }
2028 };
2029
2030 static int
2031 dissect_x411_ExtensionAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2032   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2033                                    ExtensionAttribute_sequence, hf_index, ett_x411_ExtensionAttribute);
2034
2035   return offset;
2036 }
2037 static int dissect_ExtensionAttributes_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2038   return dissect_x411_ExtensionAttribute(FALSE, tvb, offset, pinfo, tree, hf_x411_ExtensionAttributes_item);
2039 }
2040
2041
2042 static const ber_sequence_t ExtensionAttributes_set_of[1] = {
2043   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_ExtensionAttributes_item },
2044 };
2045
2046 static int
2047 dissect_x411_ExtensionAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2048   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
2049                                  ExtensionAttributes_set_of, hf_index, ett_x411_ExtensionAttributes);
2050
2051   return offset;
2052 }
2053 static int dissect_extension_attributes(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2054   return dissect_x411_ExtensionAttributes(FALSE, tvb, offset, pinfo, tree, hf_x411_extension_attributes);
2055 }
2056
2057
2058 static const ber_sequence_t ORName_sequence[] = {
2059   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_built_in_standard_attributes },
2060   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_built_in_domain_defined_attributes },
2061   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extension_attributes },
2062   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_directory_name_impl },
2063   { 0, 0, 0, NULL }
2064 };
2065
2066 int
2067 dissect_x411_ORName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2068 #line 550 "x411.cnf"
2069         
2070         oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0';     
2071         address_item = NULL;
2072         doing_address = TRUE;
2073
2074           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2075                                    ORName_sequence, hf_index, ett_x411_ORName);
2076
2077
2078         if(*oraddress && address_item)
2079                 proto_item_append_text(address_item, " (%s/)", oraddress);
2080
2081         doing_address = FALSE;
2082
2083
2084
2085   return offset;
2086 }
2087 static int dissect_exact_match_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2088   return dissect_x411_ORName(TRUE, tvb, offset, pinfo, tree, hf_x411_exact_match);
2089 }
2090 static int dissect_pattern_match_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2091   return dissect_x411_ORName(TRUE, tvb, offset, pinfo, tree, hf_x411_pattern_match);
2092 }
2093
2094
2095
2096 static int
2097 dissect_x411_ORAddressAndOptionalDirectoryName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2098   offset = dissect_x411_ORName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2099
2100   return offset;
2101 }
2102 static int dissect_user_agent(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2103   return dissect_x411_ORAddressAndOptionalDirectoryName(FALSE, tvb, offset, pinfo, tree, hf_x411_user_agent);
2104 }
2105 static int dissect_message_store_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2106   return dissect_x411_ORAddressAndOptionalDirectoryName(TRUE, tvb, offset, pinfo, tree, hf_x411_message_store);
2107 }
2108 static int dissect_intended_recipient(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2109   return dissect_x411_ORAddressAndOptionalDirectoryName(FALSE, tvb, offset, pinfo, tree, hf_x411_intended_recipient);
2110 }
2111 static int dissect_dl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2112   return dissect_x411_ORAddressAndOptionalDirectoryName(FALSE, tvb, offset, pinfo, tree, hf_x411_dl);
2113 }
2114 static int dissect_originator_or_dl_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2115   return dissect_x411_ORAddressAndOptionalDirectoryName(FALSE, tvb, offset, pinfo, tree, hf_x411_originator_or_dl_name);
2116 }
2117
2118
2119
2120 static int
2121 dissect_x411_MTAOriginatorName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2122   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2123
2124   return offset;
2125 }
2126 static int dissect_mta_originator_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2127   return dissect_x411_MTAOriginatorName(FALSE, tvb, offset, pinfo, tree, hf_x411_mta_originator_name);
2128 }
2129
2130
2131 static const asn_namedbit BuiltInEncodedInformationTypes_bits[] = {
2132   {  0, &hf_x411_BuiltInEncodedInformationTypes_unknown, -1, -1, "unknown", NULL },
2133   {  2, &hf_x411_BuiltInEncodedInformationTypes_ia5_text, -1, -1, "ia5-text", NULL },
2134   {  3, &hf_x411_BuiltInEncodedInformationTypes_g3_facsimile, -1, -1, "g3-facsimile", NULL },
2135   {  4, &hf_x411_BuiltInEncodedInformationTypes_g4_class_1, -1, -1, "g4-class-1", NULL },
2136   {  5, &hf_x411_BuiltInEncodedInformationTypes_teletex, -1, -1, "teletex", NULL },
2137   {  6, &hf_x411_BuiltInEncodedInformationTypes_videotex, -1, -1, "videotex", NULL },
2138   {  7, &hf_x411_BuiltInEncodedInformationTypes_voice, -1, -1, "voice", NULL },
2139   {  8, &hf_x411_BuiltInEncodedInformationTypes_sfd, -1, -1, "sfd", NULL },
2140   {  9, &hf_x411_BuiltInEncodedInformationTypes_mixed_mode, -1, -1, "mixed-mode", NULL },
2141   { 0, NULL, 0, 0, NULL, NULL }
2142 };
2143
2144 static int
2145 dissect_x411_BuiltInEncodedInformationTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2146   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2147                                     BuiltInEncodedInformationTypes_bits, hf_index, ett_x411_BuiltInEncodedInformationTypes,
2148                                     NULL);
2149
2150   return offset;
2151 }
2152 static int dissect_built_in_encoded_information_types_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2153   return dissect_x411_BuiltInEncodedInformationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_built_in_encoded_information_types);
2154 }
2155
2156
2157 static const asn_namedbit G3FacsimileNonBasicParameters_bits[] = {
2158   {  8, &hf_x411_G3FacsimileNonBasicParameters_two_dimensional, -1, -1, "two-dimensional", NULL },
2159   {  9, &hf_x411_G3FacsimileNonBasicParameters_fine_resolution, -1, -1, "fine-resolution", NULL },
2160   { 20, &hf_x411_G3FacsimileNonBasicParameters_unlimited_length, -1, -1, "unlimited-length", NULL },
2161   { 21, &hf_x411_G3FacsimileNonBasicParameters_b4_length, -1, -1, "b4-length", NULL },
2162   { 22, &hf_x411_G3FacsimileNonBasicParameters_a3_width, -1, -1, "a3-width", NULL },
2163   { 23, &hf_x411_G3FacsimileNonBasicParameters_b4_width, -1, -1, "b4-width", NULL },
2164   { 25, &hf_x411_G3FacsimileNonBasicParameters_t6_coding, -1, -1, "t6-coding", NULL },
2165   { 30, &hf_x411_G3FacsimileNonBasicParameters_uncompressed, -1, -1, "uncompressed", NULL },
2166   { 37, &hf_x411_G3FacsimileNonBasicParameters_width_middle_864_of_1728, -1, -1, "width-middle-864-of-1728", NULL },
2167   { 38, &hf_x411_G3FacsimileNonBasicParameters_width_middle_1216_of_1728, -1, -1, "width-middle-1216-of-1728", NULL },
2168   { 44, &hf_x411_G3FacsimileNonBasicParameters_resolution_type, -1, -1, "resolution-type", NULL },
2169   { 45, &hf_x411_G3FacsimileNonBasicParameters_resolution_400x400, -1, -1, "resolution-400x400", NULL },
2170   { 46, &hf_x411_G3FacsimileNonBasicParameters_resolution_300x300, -1, -1, "resolution-300x300", NULL },
2171   { 47, &hf_x411_G3FacsimileNonBasicParameters_resolution_8x15, -1, -1, "resolution-8x15", NULL },
2172   { 49, &hf_x411_G3FacsimileNonBasicParameters_edi, -1, -1, "edi", NULL },
2173   { 50, &hf_x411_G3FacsimileNonBasicParameters_dtm, -1, -1, "dtm", NULL },
2174   { 51, &hf_x411_G3FacsimileNonBasicParameters_bft, -1, -1, "bft", NULL },
2175   { 58, &hf_x411_G3FacsimileNonBasicParameters_mixed_mode, -1, -1, "mixed-mode", NULL },
2176   { 60, &hf_x411_G3FacsimileNonBasicParameters_character_mode, -1, -1, "character-mode", NULL },
2177   { 65, &hf_x411_G3FacsimileNonBasicParameters_twelve_bits, -1, -1, "twelve-bits", NULL },
2178   { 66, &hf_x411_G3FacsimileNonBasicParameters_preferred_huffmann, -1, -1, "preferred-huffmann", NULL },
2179   { 67, &hf_x411_G3FacsimileNonBasicParameters_full_colour, -1, -1, "full-colour", NULL },
2180   { 68, &hf_x411_G3FacsimileNonBasicParameters_jpeg, -1, -1, "jpeg", NULL },
2181   { 71, &hf_x411_G3FacsimileNonBasicParameters_processable_mode_26, -1, -1, "processable-mode-26", NULL },
2182   { 0, NULL, 0, 0, NULL, NULL }
2183 };
2184
2185 int
2186 dissect_x411_G3FacsimileNonBasicParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2187   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2188                                     G3FacsimileNonBasicParameters_bits, hf_index, ett_x411_G3FacsimileNonBasicParameters,
2189                                     NULL);
2190
2191   return offset;
2192 }
2193 static int dissect_g3_facsimile_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2194   return dissect_x411_G3FacsimileNonBasicParameters(TRUE, tvb, offset, pinfo, tree, hf_x411_g3_facsimile);
2195 }
2196
2197
2198
2199 static int
2200 dissect_x411_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2201 #line 504 "x411.cnf"
2202         tvbuff_t        *tstring = NULL;
2203
2204           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
2205                                             pinfo, tree, tvb, offset, hf_index,
2206                                             NULL);
2207
2208
2209         if(doing_address && tstring) 
2210                 g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN);
2211
2212
2213
2214
2215   return offset;
2216 }
2217 static int dissect_teletex_surname_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2218   return dissect_x411_TeletexString(TRUE, tvb, offset, pinfo, tree, hf_x411_teletex_surname);
2219 }
2220 static int dissect_teletex_given_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2221   return dissect_x411_TeletexString(TRUE, tvb, offset, pinfo, tree, hf_x411_teletex_given_name);
2222 }
2223 static int dissect_teletex_initials_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2224   return dissect_x411_TeletexString(TRUE, tvb, offset, pinfo, tree, hf_x411_teletex_initials);
2225 }
2226 static int dissect_teletex_generation_qualifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2227   return dissect_x411_TeletexString(TRUE, tvb, offset, pinfo, tree, hf_x411_teletex_generation_qualifier);
2228 }
2229 static int dissect_teletex_string(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2230   return dissect_x411_TeletexString(FALSE, tvb, offset, pinfo, tree, hf_x411_teletex_string);
2231 }
2232 static int dissect_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2233   return dissect_x411_TeletexString(FALSE, tvb, offset, pinfo, tree, hf_x411_type);
2234 }
2235 static int dissect_teletex_value(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2236   return dissect_x411_TeletexString(FALSE, tvb, offset, pinfo, tree, hf_x411_teletex_value);
2237 }
2238 static int dissect_graphic_character_sets_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2239   return dissect_x411_TeletexString(TRUE, tvb, offset, pinfo, tree, hf_x411_graphic_character_sets);
2240 }
2241 static int dissect_control_character_sets_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2242   return dissect_x411_TeletexString(TRUE, tvb, offset, pinfo, tree, hf_x411_control_character_sets);
2243 }
2244 static int dissect_miscellaneous_terminal_capabilities_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2245   return dissect_x411_TeletexString(TRUE, tvb, offset, pinfo, tree, hf_x411_miscellaneous_terminal_capabilities);
2246 }
2247
2248
2249 static const ber_sequence_t TeletexNonBasicParameters_set[] = {
2250   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_graphic_character_sets_impl },
2251   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_control_character_sets_impl },
2252   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_page_formats_impl },
2253   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_miscellaneous_terminal_capabilities_impl },
2254   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_private_use_impl },
2255   { 0, 0, 0, NULL }
2256 };
2257
2258 int
2259 dissect_x411_TeletexNonBasicParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2260   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
2261                               TeletexNonBasicParameters_set, hf_index, ett_x411_TeletexNonBasicParameters);
2262
2263   return offset;
2264 }
2265 static int dissect_teletex_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2266   return dissect_x411_TeletexNonBasicParameters(TRUE, tvb, offset, pinfo, tree, hf_x411_teletex);
2267 }
2268
2269
2270
2271 static int
2272 dissect_x411_ExtendedEncodedInformationType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2273   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
2274
2275   return offset;
2276 }
2277 static int dissect_ExtendedEncodedInformationTypes_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2278   return dissect_x411_ExtendedEncodedInformationType(FALSE, tvb, offset, pinfo, tree, hf_x411_ExtendedEncodedInformationTypes_item);
2279 }
2280
2281
2282 static const ber_sequence_t ExtendedEncodedInformationTypes_set_of[1] = {
2283   { BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_ExtendedEncodedInformationTypes_item },
2284 };
2285
2286 static int
2287 dissect_x411_ExtendedEncodedInformationTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2288   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
2289                                  ExtendedEncodedInformationTypes_set_of, hf_index, ett_x411_ExtendedEncodedInformationTypes);
2290
2291   return offset;
2292 }
2293 static int dissect_unacceptable_eits_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2294   return dissect_x411_ExtendedEncodedInformationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_unacceptable_eits);
2295 }
2296 static int dissect_acceptable_eits_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2297   return dissect_x411_ExtendedEncodedInformationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_acceptable_eits);
2298 }
2299 static int dissect_exclusively_acceptable_eits_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2300   return dissect_x411_ExtendedEncodedInformationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_exclusively_acceptable_eits);
2301 }
2302 static int dissect_extended_encoded_information_types_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2303   return dissect_x411_ExtendedEncodedInformationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_extended_encoded_information_types);
2304 }
2305
2306
2307 static const ber_sequence_t EncodedInformationTypes_set[] = {
2308   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_built_in_encoded_information_types_impl },
2309   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_g3_facsimile_impl },
2310   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teletex_impl },
2311   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extended_encoded_information_types_impl },
2312   { 0, 0, 0, NULL }
2313 };
2314
2315 int
2316 dissect_x411_EncodedInformationTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2317   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
2318                               EncodedInformationTypes_set, hf_index, ett_x411_EncodedInformationTypes);
2319
2320   return offset;
2321 }
2322 static int dissect_waiting_encoded_information_types(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2323   return dissect_x411_EncodedInformationTypes(FALSE, tvb, offset, pinfo, tree, hf_x411_waiting_encoded_information_types);
2324 }
2325
2326
2327
2328 static int
2329 dissect_x411_OriginalEncodedInformationTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2330   offset = dissect_x411_EncodedInformationTypes(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2331
2332   return offset;
2333 }
2334 static int dissect_original_encoded_information_types(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2335   return dissect_x411_OriginalEncodedInformationTypes(FALSE, tvb, offset, pinfo, tree, hf_x411_original_encoded_information_types);
2336 }
2337 static int dissect_original_encoded_information_types_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2338   return dissect_x411_OriginalEncodedInformationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_original_encoded_information_types);
2339 }
2340
2341
2342 static const value_string x411_BuiltInContentType_vals[] = {
2343   {   0, "unidentified" },
2344   {   1, "external" },
2345   {   2, "interpersonal-messaging-1984" },
2346   {  22, "interpersonal-messaging-1988" },
2347   {  35, "edi-messaging" },
2348   {  40, "voice-messaging" },
2349   { 0, NULL }
2350 };
2351
2352
2353 static int
2354 dissect_x411_BuiltInContentType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2355 #line 363 "x411.cnf"
2356   guint32       ict = -1;       
2357
2358     offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2359                                   &ict);
2360
2361
2362   /* convert integer content type to oid for dispatch when the content is found */
2363   switch(ict) {
2364         case 2:
2365         content_type_id = ep_strdup("2.6.1.10.0");
2366         break;
2367         case 22:
2368         content_type_id = ep_strdup("2.6.1.10.1");
2369         break;
2370         default:
2371         content_type_id = NULL;
2372         break;
2373         }
2374
2375
2376
2377   return offset;
2378 }
2379 static int dissect_built_in(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2380   return dissect_x411_BuiltInContentType(FALSE, tvb, offset, pinfo, tree, hf_x411_built_in);
2381 }
2382 static int dissect_built_in_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2383   return dissect_x411_BuiltInContentType(TRUE, tvb, offset, pinfo, tree, hf_x411_built_in);
2384 }
2385
2386
2387
2388 int
2389 dissect_x411_ExtendedContentType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2390 #line 347 "x411.cnf"
2391         const char *name = NULL;
2392
2393           offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &content_type_id);
2394
2395
2396         if(content_type_id) {
2397           name = get_oid_str_name(content_type_id);
2398
2399           if(!name) name = content_type_id;
2400
2401           proto_item_append_text(tree, " (%s)", name);
2402         }
2403
2404
2405
2406   return offset;
2407 }
2408 static int dissect_extended(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2409   return dissect_x411_ExtendedContentType(FALSE, tvb, offset, pinfo, tree, hf_x411_extended);
2410 }
2411
2412
2413 static const value_string x411_ContentType_vals[] = {
2414   {   0, "built-in" },
2415   {   1, "extended" },
2416   { 0, NULL }
2417 };
2418
2419 static const ber_choice_t ContentType_choice[] = {
2420   {   0, BER_CLASS_APP, 6, BER_FLAGS_NOOWNTAG, dissect_built_in },
2421   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extended },
2422   { 0, 0, 0, 0, NULL }
2423 };
2424
2425 static int
2426 dissect_x411_ContentType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2427   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2428                                  ContentType_choice, hf_index, ett_x411_ContentType,
2429                                  NULL);
2430
2431   return offset;
2432 }
2433 static int dissect_content_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2434   return dissect_x411_ContentType(FALSE, tvb, offset, pinfo, tree, hf_x411_content_type);
2435 }
2436 static int dissect_waiting_content_types_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2437   return dissect_x411_ContentType(FALSE, tvb, offset, pinfo, tree, hf_x411_waiting_content_types_item);
2438 }
2439 static int dissect_ContentTypes_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2440   return dissect_x411_ContentType(FALSE, tvb, offset, pinfo, tree, hf_x411_ContentTypes_item);
2441 }
2442
2443
2444
2445 static int
2446 dissect_x411_ContentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2447 #line 313 "x411.cnf"
2448  gint8 class;
2449  gboolean pc, ind_field;
2450  gint32 tag;
2451  guint32 len1;
2452
2453  if(!implicit_tag){
2454    /* XXX  asn2wrs can not yet handle tagged assignment yes so this
2455     * XXX is some conformance file magic to work around that bug
2456     */
2457     offset = get_ber_identifier(tvb, offset, &class, &pc, &tag);
2458     offset = get_ber_length(tree, tvb, offset, &len1, &ind_field);
2459  }
2460
2461   /* this is magic I haven't seen used before - I've stripped the tag - but now I'm going to say it is IMPLICIT! */
2462   offset = dissect_ber_restricted_string(TRUE, BER_UNI_TAG_PrintableString,
2463                                          pinfo, tree, tvb, offset, hf_index,
2464                                          NULL);
2465
2466
2467
2468
2469   return offset;
2470 }
2471 static int dissect_content_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2472   return dissect_x411_ContentIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_content_identifier);
2473 }
2474 static int dissect_content_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2475   return dissect_x411_ContentIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_content_identifier);
2476 }
2477
2478
2479 static const value_string x411_Priority_vals[] = {
2480   {   0, "normal" },
2481   {   1, "non-urgent" },
2482   {   2, "urgent" },
2483   { 0, NULL }
2484 };
2485
2486
2487 static int
2488 dissect_x411_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2489   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2490                                   NULL);
2491
2492   return offset;
2493 }
2494 static int dissect_priority(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2495   return dissect_x411_Priority(FALSE, tvb, offset, pinfo, tree, hf_x411_priority);
2496 }
2497 static int dissect_permissible_lowest_priority(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2498   return dissect_x411_Priority(FALSE, tvb, offset, pinfo, tree, hf_x411_permissible_lowest_priority);
2499 }
2500 static int dissect_class_priority_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2501   return dissect_x411_Priority(FALSE, tvb, offset, pinfo, tree, hf_x411_class_priority_item);
2502 }
2503
2504
2505 static const asn_namedbit PerMessageIndicators_bits[] = {
2506   {  0, &hf_x411_PerMessageIndicators_disclosure_of_other_recipients, -1, -1, "disclosure-of-other-recipients", NULL },
2507   {  1, &hf_x411_PerMessageIndicators_implicit_conversion_prohibited, -1, -1, "implicit-conversion-prohibited", NULL },
2508   {  2, &hf_x411_PerMessageIndicators_alternate_recipient_allowed, -1, -1, "alternate-recipient-allowed", NULL },
2509   {  3, &hf_x411_PerMessageIndicators_content_return_request, -1, -1, "content-return-request", NULL },
2510   {  4, &hf_x411_PerMessageIndicators_reserved, -1, -1, "reserved", NULL },
2511   {  5, &hf_x411_PerMessageIndicators_bit_5, -1, -1, "bit-5", NULL },
2512   {  6, &hf_x411_PerMessageIndicators_bit_6, -1, -1, "bit-6", NULL },
2513   {  7, &hf_x411_PerMessageIndicators_service_message, -1, -1, "service-message", NULL },
2514   { 0, NULL, 0, 0, NULL, NULL }
2515 };
2516
2517 static int
2518 dissect_x411_PerMessageIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2519   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2520                                     PerMessageIndicators_bits, hf_index, ett_x411_PerMessageIndicators,
2521                                     NULL);
2522
2523   return offset;
2524 }
2525 static int dissect_per_message_indicators(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2526   return dissect_x411_PerMessageIndicators(FALSE, tvb, offset, pinfo, tree, hf_x411_per_message_indicators);
2527 }
2528
2529
2530
2531 static int
2532 dissect_x411_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2533 #line 645 "x411.cnf"
2534         tvbuff_t *arrival = NULL;
2535
2536           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime,
2537                                             pinfo, tree, tvb, offset, hf_index,
2538                                             &arrival);
2539
2540
2541         if(arrival && doing_address)
2542                 proto_item_append_text(address_item, " %s", tvb_format_text(arrival, 0, tvb_length(arrival)));
2543
2544
2545
2546   return offset;
2547 }
2548 static int dissect_redirection_time(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2549   return dissect_x411_Time(FALSE, tvb, offset, pinfo, tree, hf_x411_redirection_time);
2550 }
2551 static int dissect_dl_expansion_time(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2552   return dissect_x411_Time(FALSE, tvb, offset, pinfo, tree, hf_x411_dl_expansion_time);
2553 }
2554 static int dissect_origination_or_expansion_time(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2555   return dissect_x411_Time(FALSE, tvb, offset, pinfo, tree, hf_x411_origination_or_expansion_time);
2556 }
2557 static int dissect_time(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2558   return dissect_x411_Time(FALSE, tvb, offset, pinfo, tree, hf_x411_time);
2559 }
2560
2561
2562
2563 static int
2564 dissect_x411_DeferredDeliveryTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2565   offset = dissect_x411_Time(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2566
2567   return offset;
2568 }
2569 static int dissect_deferred_delivery_time_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2570   return dissect_x411_DeferredDeliveryTime(TRUE, tvb, offset, pinfo, tree, hf_x411_deferred_delivery_time);
2571 }
2572
2573
2574 static const ber_sequence_t T_private_domain_sequence[] = {
2575   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_administration_domain_name_impl },
2576   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_private_domain_identifier_impl },
2577   { 0, 0, 0, NULL }
2578 };
2579
2580 static int
2581 dissect_x411_T_private_domain(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2582   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2583                                    T_private_domain_sequence, hf_index, ett_x411_T_private_domain);
2584
2585   return offset;
2586 }
2587 static int dissect_private_domain(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2588   return dissect_x411_T_private_domain(FALSE, tvb, offset, pinfo, tree, hf_x411_private_domain);
2589 }
2590
2591
2592 static const value_string x411_T_bilateral_domain_vals[] = {
2593   {   0, "administration-domain-name" },
2594   {   1, "private-domain" },
2595   { 0, NULL }
2596 };
2597
2598 static const ber_choice_t T_bilateral_domain_choice[] = {
2599   {   0, BER_CLASS_APP, 2, BER_FLAGS_NOOWNTAG, dissect_administration_domain_name },
2600   {   1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_private_domain },
2601   { 0, 0, 0, 0, NULL }
2602 };
2603
2604 static int
2605 dissect_x411_T_bilateral_domain(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2606   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2607                                  T_bilateral_domain_choice, hf_index, ett_x411_T_bilateral_domain,
2608                                  NULL);
2609
2610   return offset;
2611 }
2612 static int dissect_bilateral_domain(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2613   return dissect_x411_T_bilateral_domain(FALSE, tvb, offset, pinfo, tree, hf_x411_bilateral_domain);
2614 }
2615
2616
2617
2618 static int
2619 dissect_x411_T_bilateral_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2620 #line 697 "x411.cnf"
2621         proto_item *item = NULL;
2622         int         loffset = 0;
2623         guint32     len = 0;
2624
2625         /* work out the length */
2626         loffset = dissect_ber_identifier(pinfo, tree, tvb, offset, NULL, NULL, NULL);
2627         (void) dissect_ber_length(pinfo, tree, tvb, loffset, &len, NULL);
2628
2629         /* create some structure so we can tell what this unknown ASN.1 represents */   
2630         item = proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE);
2631         tree = proto_item_add_subtree(item, ett_x411_bilateral_information);
2632
2633         offset = dissect_unknown_ber(pinfo, tvb, offset, tree);
2634         
2635
2636
2637   return offset;
2638 }
2639 static int dissect_bilateral_information(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2640   return dissect_x411_T_bilateral_information(FALSE, tvb, offset, pinfo, tree, hf_x411_bilateral_information);
2641 }
2642
2643
2644 static const ber_sequence_t PerDomainBilateralInformation_sequence[] = {
2645   { BER_CLASS_APP, 1, BER_FLAGS_NOOWNTAG, dissect_country_name },
2646   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_bilateral_domain },
2647   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_bilateral_information },
2648   { 0, 0, 0, NULL }
2649 };
2650
2651 static int
2652 dissect_x411_PerDomainBilateralInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2653   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2654                                    PerDomainBilateralInformation_sequence, hf_index, ett_x411_PerDomainBilateralInformation);
2655
2656   return offset;
2657 }
2658 static int dissect_per_domain_bilateral_information_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2659   return dissect_x411_PerDomainBilateralInformation(FALSE, tvb, offset, pinfo, tree, hf_x411_per_domain_bilateral_information_item);
2660 }
2661
2662
2663 static const ber_sequence_t SEQUENCE_OF_PerDomainBilateralInformation_sequence_of[1] = {
2664   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_per_domain_bilateral_information_item },
2665 };
2666
2667 static int
2668 dissect_x411_SEQUENCE_OF_PerDomainBilateralInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2669   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2670                                       SEQUENCE_OF_PerDomainBilateralInformation_sequence_of, hf_index, ett_x411_SEQUENCE_OF_PerDomainBilateralInformation);
2671
2672   return offset;
2673 }
2674 static int dissect_per_domain_bilateral_information_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2675   return dissect_x411_SEQUENCE_OF_PerDomainBilateralInformation(TRUE, tvb, offset, pinfo, tree, hf_x411_per_domain_bilateral_information);
2676 }
2677
2678
2679
2680 static int
2681 dissect_x411_ArrivalTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2682   offset = dissect_x411_Time(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2683
2684   return offset;
2685 }
2686 static int dissect_arrival_time_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2687   return dissect_x411_ArrivalTime(TRUE, tvb, offset, pinfo, tree, hf_x411_arrival_time);
2688 }
2689
2690
2691 static const value_string x411_RoutingAction_vals[] = {
2692   {   0, "relayed" },
2693   {   1, "rerouted" },
2694   { 0, NULL }
2695 };
2696
2697
2698 static int
2699 dissect_x411_RoutingAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2700 #line 656 "x411.cnf"
2701         int action = 0;
2702
2703           offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2704                                   &action);
2705
2706
2707         proto_item_append_text(address_item, " %s", val_to_str(action, x411_RoutingAction_vals, "action(%d)"));
2708
2709
2710
2711   return offset;
2712 }
2713 static int dissect_routing_action_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2714   return dissect_x411_RoutingAction(TRUE, tvb, offset, pinfo, tree, hf_x411_routing_action);
2715 }
2716
2717
2718
2719 static int
2720 dissect_x411_DeferredTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2721   offset = dissect_x411_Time(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2722
2723   return offset;
2724 }
2725 static int dissect_deferred_time_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2726   return dissect_x411_DeferredTime(TRUE, tvb, offset, pinfo, tree, hf_x411_deferred_time);
2727 }
2728
2729
2730
2731 static int
2732 dissect_x411_ConvertedEncodedInformationTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2733   offset = dissect_x411_EncodedInformationTypes(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2734
2735   return offset;
2736 }
2737 static int dissect_converted_encoded_information_types(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2738   return dissect_x411_ConvertedEncodedInformationTypes(FALSE, tvb, offset, pinfo, tree, hf_x411_converted_encoded_information_types);
2739 }
2740 static int dissect_converted_encoded_information_types_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2741   return dissect_x411_ConvertedEncodedInformationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_converted_encoded_information_types);
2742 }
2743
2744
2745 static const asn_namedbit OtherActions_bits[] = {
2746   {  0, &hf_x411_OtherActions_redirected, -1, -1, "redirected", NULL },
2747   {  1, &hf_x411_OtherActions_dl_operation, -1, -1, "dl-operation", NULL },
2748   { 0, NULL, 0, 0, NULL, NULL }
2749 };
2750
2751 static int
2752 dissect_x411_OtherActions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2753   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2754                                     OtherActions_bits, hf_index, ett_x411_OtherActions,
2755                                     NULL);
2756
2757   return offset;
2758 }
2759 static int dissect_other_actions_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2760   return dissect_x411_OtherActions(TRUE, tvb, offset, pinfo, tree, hf_x411_other_actions);
2761 }
2762
2763
2764 static const ber_sequence_t DomainSuppliedInformation_set[] = {
2765   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_arrival_time_impl },
2766   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_routing_action_impl },
2767   { BER_CLASS_APP, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_attempted_domain },
2768   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferred_time_impl },
2769   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_converted_encoded_information_types },
2770   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_other_actions_impl },
2771   { 0, 0, 0, NULL }
2772 };
2773
2774 static int
2775 dissect_x411_DomainSuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2776 #line 624 "x411.cnf"
2777
2778         doing_address = FALSE;
2779
2780           offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
2781                               DomainSuppliedInformation_set, hf_index, ett_x411_DomainSuppliedInformation);
2782
2783
2784         doing_address = TRUE;
2785         proto_item_append_text(tree, ")");
2786
2787
2788
2789   return offset;
2790 }
2791 static int dissect_domain_supplied_information(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2792   return dissect_x411_DomainSuppliedInformation(FALSE, tvb, offset, pinfo, tree, hf_x411_domain_supplied_information);
2793 }
2794
2795
2796 static const ber_sequence_t TraceInformationElement_sequence[] = {
2797   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_global_domain_identifier },
2798   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_domain_supplied_information },
2799   { 0, 0, 0, NULL }
2800 };
2801
2802 static int
2803 dissect_x411_TraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2804 #line 608 "x411.cnf"
2805
2806         doing_address = TRUE;
2807
2808           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2809                                    TraceInformationElement_sequence, hf_index, ett_x411_TraceInformationElement);
2810
2811
2812         doing_address = FALSE;
2813
2814
2815
2816   return offset;
2817 }
2818 static int dissect_TraceInformation_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2819   return dissect_x411_TraceInformationElement(FALSE, tvb, offset, pinfo, tree, hf_x411_TraceInformation_item);
2820 }
2821
2822
2823 static const ber_sequence_t TraceInformation_sequence_of[1] = {
2824   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TraceInformation_item },
2825 };
2826
2827 static int
2828 dissect_x411_TraceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2829   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
2830                                       TraceInformation_sequence_of, hf_index, ett_x411_TraceInformation);
2831
2832   return offset;
2833 }
2834 static int dissect_trace_information(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2835   return dissect_x411_TraceInformation(FALSE, tvb, offset, pinfo, tree, hf_x411_trace_information);
2836 }
2837
2838
2839 static const value_string x411_ExtensionType_vals[] = {
2840   {   0, "standard-extension" },
2841   {   3, "private-extension" },
2842   { 0, NULL }
2843 };
2844
2845 static const ber_choice_t ExtensionType_choice[] = {
2846   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_standard_extension_impl },
2847   {   3, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_private_extension_impl },
2848   { 0, 0, 0, 0, NULL }
2849 };
2850
2851 static int
2852 dissect_x411_ExtensionType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2853   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
2854                                  ExtensionType_choice, hf_index, ett_x411_ExtensionType,
2855                                  NULL);
2856
2857   return offset;
2858 }
2859 static int dissect_extension_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2860   return dissect_x411_ExtensionType(FALSE, tvb, offset, pinfo, tree, hf_x411_extension_type);
2861 }
2862
2863
2864 static const asn_namedbit Criticality_bits[] = {
2865   {  0, &hf_x411_Criticality_for_submission, -1, -1, "for-submission", NULL },
2866   {  1, &hf_x411_Criticality_for_transfer, -1, -1, "for-transfer", NULL },
2867   {  2, &hf_x411_Criticality_for_delivery, -1, -1, "for-delivery", NULL },
2868   { 0, NULL, 0, 0, NULL, NULL }
2869 };
2870
2871 static int
2872 dissect_x411_Criticality(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2873   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2874                                     Criticality_bits, hf_index, ett_x411_Criticality,
2875                                     NULL);
2876
2877   return offset;
2878 }
2879 static int dissect_criticality_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2880   return dissect_x411_Criticality(TRUE, tvb, offset, pinfo, tree, hf_x411_criticality);
2881 }
2882
2883
2884
2885 static int
2886 dissect_x411_ExtensionValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2887 #line 248 "x411.cnf"
2888         const char *name;
2889
2890         if(extension_id != -1) 
2891                 offset=call_x411_oid_callback("x411.extension", tvb, offset, pinfo, tree);
2892         else if(object_identifier_id) {
2893                 call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree);
2894                 name = get_oid_str_name(object_identifier_id);
2895                 proto_item_append_text(tree, " (%s)", name ? name : object_identifier_id); 
2896         }
2897                 
2898
2899
2900
2901   return offset;
2902 }
2903 static int dissect_extension_value_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2904   return dissect_x411_ExtensionValue(TRUE, tvb, offset, pinfo, tree, hf_x411_extension_value);
2905 }
2906
2907
2908 static const ber_sequence_t ExtensionField_sequence[] = {
2909   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_extension_type },
2910   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_criticality_impl },
2911   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_extension_value_impl },
2912   { 0, 0, 0, NULL }
2913 };
2914
2915 static int
2916 dissect_x411_ExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2917   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
2918                                    ExtensionField_sequence, hf_index, ett_x411_ExtensionField);
2919
2920   return offset;
2921 }
2922 static int dissect_extensions_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2923   return dissect_x411_ExtensionField(FALSE, tvb, offset, pinfo, tree, hf_x411_extensions_item);
2924 }
2925
2926
2927 static const ber_sequence_t SET_OF_ExtensionField_set_of[1] = {
2928   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_extensions_item },
2929 };
2930
2931 static int
2932 dissect_x411_SET_OF_ExtensionField(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2933   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
2934                                  SET_OF_ExtensionField_set_of, hf_index, ett_x411_SET_OF_ExtensionField);
2935
2936   return offset;
2937 }
2938 static int dissect_extensions(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2939   return dissect_x411_SET_OF_ExtensionField(FALSE, tvb, offset, pinfo, tree, hf_x411_extensions);
2940 }
2941 static int dissect_extensions_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2942   return dissect_x411_SET_OF_ExtensionField(TRUE, tvb, offset, pinfo, tree, hf_x411_extensions);
2943 }
2944
2945
2946
2947 static int
2948 dissect_x411_MTARecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2949   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
2950
2951   return offset;
2952 }
2953 static int dissect_recipient_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2954   return dissect_x411_MTARecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_recipient_name);
2955 }
2956
2957
2958
2959 static int
2960 dissect_x411_OriginallySpecifiedRecipientNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2961   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
2962                                   NULL);
2963
2964   return offset;
2965 }
2966 static int dissect_originally_specified_recipient_number_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2967   return dissect_x411_OriginallySpecifiedRecipientNumber(TRUE, tvb, offset, pinfo, tree, hf_x411_originally_specified_recipient_number);
2968 }
2969
2970
2971 static const asn_namedbit PerRecipientIndicators_bits[] = {
2972   {  0, &hf_x411_PerRecipientIndicators_responsibility, -1, -1, "responsibility", NULL },
2973   {  1, &hf_x411_PerRecipientIndicators_originating_MTA_report, -1, -1, "originating-MTA-report", NULL },
2974   {  2, &hf_x411_PerRecipientIndicators_originating_MTA_non_delivery_report, -1, -1, "originating-MTA-non-delivery-report", NULL },
2975   {  3, &hf_x411_PerRecipientIndicators_originator_report, -1, -1, "originator-report", NULL },
2976   {  4, &hf_x411_PerRecipientIndicators_originator_non_delivery_report, -1, -1, "originator-non-delivery-report", NULL },
2977   {  5, &hf_x411_PerRecipientIndicators_reserved_5, -1, -1, "reserved-5", NULL },
2978   {  6, &hf_x411_PerRecipientIndicators_reserved_6, -1, -1, "reserved-6", NULL },
2979   {  7, &hf_x411_PerRecipientIndicators_reserved_7, -1, -1, "reserved-7", NULL },
2980   { 0, NULL, 0, 0, NULL, NULL }
2981 };
2982
2983 static int
2984 dissect_x411_PerRecipientIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
2985   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
2986                                     PerRecipientIndicators_bits, hf_index, ett_x411_PerRecipientIndicators,
2987                                     NULL);
2988
2989   return offset;
2990 }
2991 static int dissect_per_recipient_indicators_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
2992   return dissect_x411_PerRecipientIndicators(TRUE, tvb, offset, pinfo, tree, hf_x411_per_recipient_indicators);
2993 }
2994
2995
2996 static const value_string x411_ExplicitConversion_vals[] = {
2997   {   0, "ia5-text-to-teletex" },
2998   {   8, "ia5-text-to-g3-facsimile" },
2999   {   9, "ia5-text-to-g4-class-1" },
3000   {  10, "ia5-text-to-videotex" },
3001   {  11, "teletex-to-ia5-text" },
3002   {  12, "teletex-to-g3-facsimile" },
3003   {  13, "teletex-to-g4-class-1" },
3004   {  14, "teletex-to-videotex" },
3005   {  16, "videotex-to-ia5-text" },
3006   {  17, "videotex-to-teletex" },
3007   { 0, NULL }
3008 };
3009
3010
3011 static int
3012 dissect_x411_ExplicitConversion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3013   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3014                                   NULL);
3015
3016   return offset;
3017 }
3018 static int dissect_explicit_conversion_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3019   return dissect_x411_ExplicitConversion(TRUE, tvb, offset, pinfo, tree, hf_x411_explicit_conversion);
3020 }
3021
3022
3023 static const ber_sequence_t PerRecipientMessageTransferFields_set[] = {
3024   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_recipient_name },
3025   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_originally_specified_recipient_number_impl },
3026   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_per_recipient_indicators_impl },
3027   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_explicit_conversion_impl },
3028   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3029   { 0, 0, 0, NULL }
3030 };
3031
3032 static int
3033 dissect_x411_PerRecipientMessageTransferFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3034   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3035                               PerRecipientMessageTransferFields_set, hf_index, ett_x411_PerRecipientMessageTransferFields);
3036
3037   return offset;
3038 }
3039 static int dissect_per_recipient_message_fields_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3040   return dissect_x411_PerRecipientMessageTransferFields(FALSE, tvb, offset, pinfo, tree, hf_x411_per_recipient_message_fields_item);
3041 }
3042
3043
3044 static const ber_sequence_t SEQUENCE_OF_PerRecipientMessageTransferFields_sequence_of[1] = {
3045   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_per_recipient_message_fields_item },
3046 };
3047
3048 static int
3049 dissect_x411_SEQUENCE_OF_PerRecipientMessageTransferFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3050   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3051                                       SEQUENCE_OF_PerRecipientMessageTransferFields_sequence_of, hf_index, ett_x411_SEQUENCE_OF_PerRecipientMessageTransferFields);
3052
3053   return offset;
3054 }
3055 static int dissect_per_recipient_message_fields_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3056   return dissect_x411_SEQUENCE_OF_PerRecipientMessageTransferFields(TRUE, tvb, offset, pinfo, tree, hf_x411_per_recipient_message_fields);
3057 }
3058
3059
3060 static const ber_sequence_t MessageTransferEnvelope_set[] = {
3061   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_message_identifier },
3062   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_mta_originator_name },
3063   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_original_encoded_information_types },
3064   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_content_type },
3065   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
3066   { BER_CLASS_APP, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_priority },
3067   { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_per_message_indicators },
3068   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferred_delivery_time_impl },
3069   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_per_domain_bilateral_information_impl },
3070   { BER_CLASS_APP, 9, BER_FLAGS_NOOWNTAG, dissect_trace_information },
3071   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3072   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_per_recipient_message_fields_impl },
3073   { 0, 0, 0, NULL }
3074 };
3075
3076 static int
3077 dissect_x411_MessageTransferEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3078   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3079                               MessageTransferEnvelope_set, hf_index, ett_x411_MessageTransferEnvelope);
3080
3081   return offset;
3082 }
3083 static int dissect_message_envelope(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3084   return dissect_x411_MessageTransferEnvelope(FALSE, tvb, offset, pinfo, tree, hf_x411_message_envelope);
3085 }
3086
3087
3088
3089 static int
3090 dissect_x411_Content(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3091 #line 381 "x411.cnf"
3092   tvbuff_t *next_tvb;
3093
3094   /* we can do this now constructed octet strings are supported */
3095   offset = dissect_ber_octet_string(FALSE, pinfo, NULL, tvb, offset, hf_index, &next_tvb);
3096
3097   if (next_tvb) {
3098     if (content_type_id) {
3099       (void) call_ber_oid_callback(content_type_id, next_tvb, 0, pinfo, top_tree ? top_tree : tree);
3100     } else {
3101       proto_item *item = NULL;
3102       proto_tree *next_tree = NULL;
3103
3104       item = proto_tree_add_text(top_tree ? top_tree : tree, next_tvb, 0, tvb_length_remaining(tvb, offset), "X.411 Unknown Content (unknown built-in content-type)");
3105       if (item) {
3106         next_tree=proto_item_add_subtree(item, ett_x411_content_unknown);
3107       }
3108       dissect_unknown_ber(pinfo, next_tvb, 0, next_tree);
3109     }
3110   }
3111
3112
3113
3114   return offset;
3115 }
3116 static int dissect_content(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3117   return dissect_x411_Content(FALSE, tvb, offset, pinfo, tree, hf_x411_content);
3118 }
3119 static int dissect_returned_content_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3120   return dissect_x411_Content(TRUE, tvb, offset, pinfo, tree, hf_x411_returned_content);
3121 }
3122
3123
3124 static const ber_sequence_t Message_sequence[] = {
3125   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_message_envelope },
3126   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_content },
3127   { 0, 0, 0, NULL }
3128 };
3129
3130 static int
3131 dissect_x411_Message(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3132   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3133                                    Message_sequence, hf_index, ett_x411_Message);
3134
3135   return offset;
3136 }
3137 static int dissect_message_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3138   return dissect_x411_Message(TRUE, tvb, offset, pinfo, tree, hf_x411_message);
3139 }
3140
3141
3142
3143 static int
3144 dissect_x411_ProbeIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3145   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3146
3147   return offset;
3148 }
3149 static int dissect_probe_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3150   return dissect_x411_ProbeIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_probe_identifier);
3151 }
3152
3153
3154
3155 int
3156 dissect_x411_ContentLength(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3157   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3158                                   NULL);
3159
3160   return offset;
3161 }
3162 static int dissect_content_length_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3163   return dissect_x411_ContentLength(TRUE, tvb, offset, pinfo, tree, hf_x411_content_length);
3164 }
3165 static int dissect_permissible_maximum_content_length_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3166   return dissect_x411_ContentLength(TRUE, tvb, offset, pinfo, tree, hf_x411_permissible_maximum_content_length);
3167 }
3168 static int dissect_maximum_content_length_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3169   return dissect_x411_ContentLength(TRUE, tvb, offset, pinfo, tree, hf_x411_maximum_content_length);
3170 }
3171
3172
3173 static const ber_sequence_t PerRecipientProbeTransferFields_set[] = {
3174   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_recipient_name },
3175   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_originally_specified_recipient_number_impl },
3176   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_per_recipient_indicators_impl },
3177   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_explicit_conversion_impl },
3178   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3179   { 0, 0, 0, NULL }
3180 };
3181
3182 static int
3183 dissect_x411_PerRecipientProbeTransferFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3184   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3185                               PerRecipientProbeTransferFields_set, hf_index, ett_x411_PerRecipientProbeTransferFields);
3186
3187   return offset;
3188 }
3189 static int dissect_per_recipient_probe_transfer_fields_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3190   return dissect_x411_PerRecipientProbeTransferFields(FALSE, tvb, offset, pinfo, tree, hf_x411_per_recipient_probe_transfer_fields_item);
3191 }
3192
3193
3194 static const ber_sequence_t SEQUENCE_OF_PerRecipientProbeTransferFields_sequence_of[1] = {
3195   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_per_recipient_probe_transfer_fields_item },
3196 };
3197
3198 static int
3199 dissect_x411_SEQUENCE_OF_PerRecipientProbeTransferFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3200   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3201                                       SEQUENCE_OF_PerRecipientProbeTransferFields_sequence_of, hf_index, ett_x411_SEQUENCE_OF_PerRecipientProbeTransferFields);
3202
3203   return offset;
3204 }
3205 static int dissect_per_recipient_probe_transfer_fields_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3206   return dissect_x411_SEQUENCE_OF_PerRecipientProbeTransferFields(TRUE, tvb, offset, pinfo, tree, hf_x411_per_recipient_probe_transfer_fields);
3207 }
3208
3209
3210 static const ber_sequence_t ProbeTransferEnvelope_set[] = {
3211   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_probe_identifier },
3212   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_mta_originator_name },
3213   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_original_encoded_information_types },
3214   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_content_type },
3215   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
3216   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_length_impl },
3217   { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_per_message_indicators },
3218   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_per_domain_bilateral_information_impl },
3219   { BER_CLASS_APP, 9, BER_FLAGS_NOOWNTAG, dissect_trace_information },
3220   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3221   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_per_recipient_probe_transfer_fields_impl },
3222   { 0, 0, 0, NULL }
3223 };
3224
3225 static int
3226 dissect_x411_ProbeTransferEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3227   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3228                               ProbeTransferEnvelope_set, hf_index, ett_x411_ProbeTransferEnvelope);
3229
3230   return offset;
3231 }
3232
3233
3234
3235 static int
3236 dissect_x411_Probe(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3237   offset = dissect_x411_ProbeTransferEnvelope(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3238
3239   return offset;
3240 }
3241 static int dissect_probe_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3242   return dissect_x411_Probe(TRUE, tvb, offset, pinfo, tree, hf_x411_probe);
3243 }
3244
3245
3246
3247 static int
3248 dissect_x411_ReportIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3249   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3250
3251   return offset;
3252 }
3253 static int dissect_report_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3254   return dissect_x411_ReportIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_report_identifier);
3255 }
3256
3257
3258
3259 static int
3260 dissect_x411_ReportDestinationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3261   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3262
3263   return offset;
3264 }
3265 static int dissect_report_destination_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3266   return dissect_x411_ReportDestinationName(FALSE, tvb, offset, pinfo, tree, hf_x411_report_destination_name);
3267 }
3268
3269
3270 static const ber_sequence_t ReportTransferEnvelope_set[] = {
3271   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_report_identifier },
3272   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_report_destination_name },
3273   { BER_CLASS_APP, 9, BER_FLAGS_NOOWNTAG, dissect_trace_information },
3274   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3275   { 0, 0, 0, NULL }
3276 };
3277
3278 static int
3279 dissect_x411_ReportTransferEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3280   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3281                               ReportTransferEnvelope_set, hf_index, ett_x411_ReportTransferEnvelope);
3282
3283   return offset;
3284 }
3285 static int dissect_report_envelope(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3286   return dissect_x411_ReportTransferEnvelope(FALSE, tvb, offset, pinfo, tree, hf_x411_report_envelope);
3287 }
3288
3289
3290
3291 static int
3292 dissect_x411_MessageOrProbeIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3293   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3294
3295   return offset;
3296 }
3297
3298
3299
3300 static int
3301 dissect_x411_SubjectIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3302   offset = dissect_x411_MessageOrProbeIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3303
3304   return offset;
3305 }
3306 static int dissect_subject_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3307   return dissect_x411_SubjectIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_subject_identifier);
3308 }
3309
3310
3311
3312 static int
3313 dissect_x411_SubjectIntermediateTraceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3314   offset = dissect_x411_TraceInformation(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3315
3316   return offset;
3317 }
3318 static int dissect_subject_intermediate_trace_information(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3319   return dissect_x411_SubjectIntermediateTraceInformation(FALSE, tvb, offset, pinfo, tree, hf_x411_subject_intermediate_trace_information);
3320 }
3321
3322
3323
3324 static int
3325 dissect_x411_AdditionalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3326 #line 230 "x411.cnf"
3327    proto_item *item = NULL;
3328    int         loffset = 0;
3329    guint32     len = 0;
3330
3331    /* work out the length */
3332    loffset = dissect_ber_identifier(pinfo, tree, tvb, offset, NULL, NULL, NULL);
3333    (void) dissect_ber_length(pinfo, tree, tvb, loffset, &len, NULL);
3334
3335    item = proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE);
3336    tree = proto_item_add_subtree(item, ett_x411_additional_information);
3337    proto_item_append_text(tree, " (The use of this field is \"strongly deprecated\".)"); 
3338
3339    offset = dissect_unknown_ber(pinfo, tvb, offset, tree);
3340
3341
3342
3343   return offset;
3344 }
3345 static int dissect_additional_information_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3346   return dissect_x411_AdditionalInformation(TRUE, tvb, offset, pinfo, tree, hf_x411_additional_information);
3347 }
3348
3349
3350
3351 static int
3352 dissect_x411_MTAActualRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3353   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3354
3355   return offset;
3356 }
3357 static int dissect_mta_actual_recipient_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3358   return dissect_x411_MTAActualRecipientName(TRUE, tvb, offset, pinfo, tree, hf_x411_mta_actual_recipient_name);
3359 }
3360
3361
3362
3363 int
3364 dissect_x411_MessageDeliveryTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3365   offset = dissect_x411_Time(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3366
3367   return offset;
3368 }
3369 static int dissect_message_delivery_time(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3370   return dissect_x411_MessageDeliveryTime(FALSE, tvb, offset, pinfo, tree, hf_x411_message_delivery_time);
3371 }
3372 static int dissect_message_delivery_time_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3373   return dissect_x411_MessageDeliveryTime(TRUE, tvb, offset, pinfo, tree, hf_x411_message_delivery_time);
3374 }
3375
3376
3377 static const value_string x411_TypeOfMTSUser_vals[] = {
3378   {   0, "public" },
3379   {   1, "private" },
3380   {   2, "ms" },
3381   {   3, "dl" },
3382   {   4, "pdau" },
3383   {   5, "physical-recipient" },
3384   {   6, "other" },
3385   { 0, NULL }
3386 };
3387
3388
3389 static int
3390 dissect_x411_TypeOfMTSUser(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3391   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3392                                   NULL);
3393
3394   return offset;
3395 }
3396 static int dissect_type_of_MTS_user(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3397   return dissect_x411_TypeOfMTSUser(FALSE, tvb, offset, pinfo, tree, hf_x411_type_of_MTS_user);
3398 }
3399 static int dissect_type_of_MTS_user_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3400   return dissect_x411_TypeOfMTSUser(TRUE, tvb, offset, pinfo, tree, hf_x411_type_of_MTS_user);
3401 }
3402
3403
3404 static const ber_sequence_t DeliveryReport_set[] = {
3405   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_message_delivery_time_impl },
3406   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_type_of_MTS_user_impl },
3407   { 0, 0, 0, NULL }
3408 };
3409
3410 static int
3411 dissect_x411_DeliveryReport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3412   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3413                               DeliveryReport_set, hf_index, ett_x411_DeliveryReport);
3414
3415   return offset;
3416 }
3417 static int dissect_delivery_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3418   return dissect_x411_DeliveryReport(TRUE, tvb, offset, pinfo, tree, hf_x411_delivery);
3419 }
3420
3421
3422 const value_string x411_NonDeliveryReasonCode_vals[] = {
3423   {   0, "transfer-failure" },
3424   {   1, "unable-to-transfer" },
3425   {   2, "conversion-not-performed" },
3426   {   3, "physical-rendition-not-performed" },
3427   {   4, "physical-delivery-not-performed" },
3428   {   5, "restricted-delivery" },
3429   {   6, "directory-operation-unsuccessful" },
3430   {   7, "deferred-delivery-not-performed" },
3431   {   8, "transfer-failure-for-security-reason" },
3432   { 0, NULL }
3433 };
3434
3435
3436 int
3437 dissect_x411_NonDeliveryReasonCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3438   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3439                                   NULL);
3440
3441   return offset;
3442 }
3443 static int dissect_non_delivery_reason_code(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3444   return dissect_x411_NonDeliveryReasonCode(FALSE, tvb, offset, pinfo, tree, hf_x411_non_delivery_reason_code);
3445 }
3446 static int dissect_non_delivery_reason_code_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3447   return dissect_x411_NonDeliveryReasonCode(TRUE, tvb, offset, pinfo, tree, hf_x411_non_delivery_reason_code);
3448 }
3449
3450
3451 const value_string x411_NonDeliveryDiagnosticCode_vals[] = {
3452   {   0, "unrecognised-OR-name" },
3453   {   1, "ambiguous-OR-name" },
3454   {   2, "mts-congestion" },
3455   {   3, "loop-detected" },
3456   {   4, "recipient-unavailable" },
3457   {   5, "maximum-time-expired" },
3458   {   6, "encoded-information-types-unsupported" },
3459   {   7, "content-too-long" },
3460   {   8, "conversion-impractical" },
3461   {   9, "implicit-conversion-prohibited" },
3462   {  10, "implicit-conversion-not-subscribed" },
3463   {  11, "invalid-arguments" },
3464   {  12, "content-syntax-error" },
3465   {  13, "size-constraint-violation" },
3466   {  14, "protocol-violation" },
3467   {  15, "content-type-not-supported" },
3468   {  16, "too-many-recipients" },
3469   {  17, "no-bilateral-agreement" },
3470   {  18, "unsupported-critical-function" },
3471   {  19, "conversion-with-loss-prohibited" },
3472   {  20, "line-too-long" },
3473   {  21, "page-split" },
3474   {  22, "pictorial-symbol-loss" },
3475   {  23, "punctuation-symbol-loss" },
3476   {  24, "alphabetic-character-loss" },
3477   {  25, "multiple-information-loss" },
3478   {  26, "recipient-reassignment-prohibited" },
3479   {  27, "redirection-loop-detected" },
3480   {  28, "dl-expansion-prohibited" },
3481   {  29, "no-dl-submit-permission" },
3482   {  30, "dl-expansion-failure" },
3483   {  31, "physical-rendition-attributes-not-supported" },
3484   {  32, "undeliverable-mail-physical-delivery-address-incorrect" },
3485   {  33, "undeliverable-mail-physical-delivery-office-incorrect-or-invalid" },
3486   {  34, "undeliverable-mail-physical-delivery-address-incomplete" },
3487   {  35, "undeliverable-mail-recipient-unknown" },
3488   {  36, "undeliverable-mail-recipient-deceased" },
3489   {  37, "undeliverable-mail-organization-expired" },
3490   {  38, "undeliverable-mail-recipient-refused-to-accept" },
3491   {  39, "undeliverable-mail-recipient-did-not-claim" },
3492   {  40, "undeliverable-mail-recipient-changed-address-permanently" },
3493   {  41, "undeliverable-mail-recipient-changed-address-temporarily" },
3494   {  42, "undeliverable-mail-recipient-changed-temporary-address" },
3495   {  43, "undeliverable-mail-new-address-unknown" },
3496   {  44, "undeliverable-mail-recipient-did-not-want-forwarding" },
3497   {  45, "undeliverable-mail-originator-prohibited-forwarding" },
3498   {  46, "secure-messaging-error" },
3499   {  47, "unable-to-downgrade" },
3500   {  48, "unable-to-complete-transfer" },
3501   {  49, "transfer-attempts-limit-reached" },
3502   {  50, "incorrect-notification-type" },
3503   {  51, "dl-expansion-prohibited-by-security-policy" },
3504   {  52, "forbidden-alternate-recipient" },
3505   {  53, "security-policy-violation" },
3506   {  54, "security-services-refusal" },
3507   {  55, "unauthorised-dl-member" },
3508   {  56, "unauthorised-dl-name" },
3509   {  57, "unauthorised-originally-intended-recipient-name" },
3510   {  58, "unauthorised-originator-name" },
3511   {  59, "unauthorised-recipient-name" },
3512   {  60, "unreliable-system" },
3513   {  61, "authentication-failure-on-subject-message" },
3514   {  62, "decryption-failed" },
3515   {  63, "decryption-key-unobtainable" },
3516   {  64, "double-envelope-creation-failure" },
3517   {  65, "double-enveloping-message-restoring-failure" },
3518   {  66, "failure-of-proof-of-message" },
3519   {  67, "integrity-failure-on-subject-message" },
3520   {  68, "invalid-security-label" },
3521   {  69, "key-failure" },
3522   {  70, "mandatory-parameter-absence" },
3523   {  71, "operation-security-failure" },
3524   {  72, "repudiation-failure-of-message" },
3525   {  73, "security-context-failure" },
3526   {  74, "token-decryption-failed" },
3527   {  75, "token-error" },
3528   {  76, "unknown-security-label" },
3529   {  77, "unsupported-algorithm-identifier" },
3530   {  78, "unsupported-security-policy" },
3531   { 0, NULL }
3532 };
3533
3534
3535 int
3536 dissect_x411_NonDeliveryDiagnosticCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3537   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3538                                   NULL);
3539
3540   return offset;
3541 }
3542 static int dissect_non_delivery_diagnostic_code(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3543   return dissect_x411_NonDeliveryDiagnosticCode(FALSE, tvb, offset, pinfo, tree, hf_x411_non_delivery_diagnostic_code);
3544 }
3545 static int dissect_non_delivery_diagnostic_code_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3546   return dissect_x411_NonDeliveryDiagnosticCode(TRUE, tvb, offset, pinfo, tree, hf_x411_non_delivery_diagnostic_code);
3547 }
3548
3549
3550 static const ber_sequence_t NonDeliveryReport_set[] = {
3551   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_non_delivery_reason_code_impl },
3552   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_non_delivery_diagnostic_code_impl },
3553   { 0, 0, 0, NULL }
3554 };
3555
3556 static int
3557 dissect_x411_NonDeliveryReport(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3558   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3559                               NonDeliveryReport_set, hf_index, ett_x411_NonDeliveryReport);
3560
3561   return offset;
3562 }
3563 static int dissect_non_delivery_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3564   return dissect_x411_NonDeliveryReport(TRUE, tvb, offset, pinfo, tree, hf_x411_non_delivery);
3565 }
3566
3567
3568 static const value_string x411_ReportType_vals[] = {
3569   {   0, "delivery" },
3570   {   1, "non-delivery" },
3571   { 0, NULL }
3572 };
3573
3574 static const ber_choice_t ReportType_choice[] = {
3575   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_delivery_impl },
3576   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_non_delivery_impl },
3577   { 0, 0, 0, 0, NULL }
3578 };
3579
3580 static int
3581 dissect_x411_ReportType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3582   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3583                                  ReportType_choice, hf_index, ett_x411_ReportType,
3584                                  NULL);
3585
3586   return offset;
3587 }
3588 static int dissect_trace_report_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3589   return dissect_x411_ReportType(TRUE, tvb, offset, pinfo, tree, hf_x411_trace_report_type);
3590 }
3591 static int dissect_delivery_report_type_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3592   return dissect_x411_ReportType(TRUE, tvb, offset, pinfo, tree, hf_x411_delivery_report_type);
3593 }
3594
3595
3596 static const ber_sequence_t LastTraceInformation_set[] = {
3597   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_arrival_time_impl },
3598   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_converted_encoded_information_types },
3599   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_trace_report_type_impl },
3600   { 0, 0, 0, NULL }
3601 };
3602
3603 static int
3604 dissect_x411_LastTraceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3605   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3606                               LastTraceInformation_set, hf_index, ett_x411_LastTraceInformation);
3607
3608   return offset;
3609 }
3610 static int dissect_last_trace_information_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3611   return dissect_x411_LastTraceInformation(TRUE, tvb, offset, pinfo, tree, hf_x411_last_trace_information);
3612 }
3613
3614
3615
3616 static int
3617 dissect_x411_MTAOriginallyIntendedRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3618   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3619
3620   return offset;
3621 }
3622 static int dissect_report_originally_intended_recipient_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3623   return dissect_x411_MTAOriginallyIntendedRecipientName(TRUE, tvb, offset, pinfo, tree, hf_x411_report_originally_intended_recipient_name);
3624 }
3625
3626
3627
3628 int
3629 dissect_x411_SupplementaryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3630   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
3631                                             pinfo, tree, tvb, offset, hf_index,
3632                                             NULL);
3633
3634   return offset;
3635 }
3636 static int dissect_supplementary_information_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3637   return dissect_x411_SupplementaryInformation(TRUE, tvb, offset, pinfo, tree, hf_x411_supplementary_information);
3638 }
3639
3640
3641 static const ber_sequence_t PerRecipientReportTransferFields_set[] = {
3642   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mta_actual_recipient_name_impl },
3643   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_originally_specified_recipient_number_impl },
3644   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_per_recipient_indicators_impl },
3645   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_last_trace_information_impl },
3646   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_report_originally_intended_recipient_name_impl },
3647   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supplementary_information_impl },
3648   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3649   { 0, 0, 0, NULL }
3650 };
3651
3652 static int
3653 dissect_x411_PerRecipientReportTransferFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3654   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3655                               PerRecipientReportTransferFields_set, hf_index, ett_x411_PerRecipientReportTransferFields);
3656
3657   return offset;
3658 }
3659 static int dissect_per_recipient_report_fields_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3660   return dissect_x411_PerRecipientReportTransferFields(FALSE, tvb, offset, pinfo, tree, hf_x411_per_recipient_report_fields_item);
3661 }
3662
3663
3664 static const ber_sequence_t SEQUENCE_OF_PerRecipientReportTransferFields_sequence_of[1] = {
3665   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_per_recipient_report_fields_item },
3666 };
3667
3668 static int
3669 dissect_x411_SEQUENCE_OF_PerRecipientReportTransferFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3670   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3671                                       SEQUENCE_OF_PerRecipientReportTransferFields_sequence_of, hf_index, ett_x411_SEQUENCE_OF_PerRecipientReportTransferFields);
3672
3673   return offset;
3674 }
3675 static int dissect_per_recipient_report_fields_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3676   return dissect_x411_SEQUENCE_OF_PerRecipientReportTransferFields(TRUE, tvb, offset, pinfo, tree, hf_x411_per_recipient_report_fields);
3677 }
3678
3679
3680 static const ber_sequence_t ReportTransferContent_set[] = {
3681   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_subject_identifier },
3682   { BER_CLASS_APP, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_subject_intermediate_trace_information },
3683   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_original_encoded_information_types },
3684   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_content_type },
3685   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
3686   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_returned_content_impl },
3687   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_additional_information_impl },
3688   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3689   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_per_recipient_report_fields_impl },
3690   { 0, 0, 0, NULL }
3691 };
3692
3693 static int
3694 dissect_x411_ReportTransferContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3695   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3696                               ReportTransferContent_set, hf_index, ett_x411_ReportTransferContent);
3697
3698   return offset;
3699 }
3700 static int dissect_report_content(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3701   return dissect_x411_ReportTransferContent(FALSE, tvb, offset, pinfo, tree, hf_x411_report_content);
3702 }
3703
3704
3705 static const ber_sequence_t Report_sequence[] = {
3706   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_report_envelope },
3707   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_report_content },
3708   { 0, 0, 0, NULL }
3709 };
3710
3711 static int
3712 dissect_x411_Report(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3713   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3714                                    Report_sequence, hf_index, ett_x411_Report);
3715
3716   return offset;
3717 }
3718 static int dissect_report_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3719   return dissect_x411_Report(TRUE, tvb, offset, pinfo, tree, hf_x411_report);
3720 }
3721
3722
3723 static const value_string x411_MTS_APDU_vals[] = {
3724   {   0, "message" },
3725   {   2, "probe" },
3726   {   1, "report" },
3727   { 0, NULL }
3728 };
3729
3730 static const ber_choice_t MTS_APDU_choice[] = {
3731   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_message_impl },
3732   {   2, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_probe_impl },
3733   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_report_impl },
3734   { 0, 0, 0, 0, NULL }
3735 };
3736
3737 static int
3738 dissect_x411_MTS_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3739   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3740                                  MTS_APDU_choice, hf_index, ett_x411_MTS_APDU,
3741                                  NULL);
3742
3743   return offset;
3744 }
3745
3746
3747
3748 static int
3749 dissect_x411_MTAOriginatorRequestedAlternateRecipient(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3750   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3751
3752   return offset;
3753 }
3754
3755
3756 static const value_string x411_T_attempted_vals[] = {
3757   {   0, "mta" },
3758   {   1, "domain" },
3759   { 0, NULL }
3760 };
3761
3762 static const ber_choice_t T_attempted_choice[] = {
3763   {   0, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_mta },
3764   {   1, BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_domain },
3765   { 0, 0, 0, 0, NULL }
3766 };
3767
3768 static int
3769 dissect_x411_T_attempted(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3770   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3771                                  T_attempted_choice, hf_index, ett_x411_T_attempted,
3772                                  NULL);
3773
3774   return offset;
3775 }
3776 static int dissect_attempted(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3777   return dissect_x411_T_attempted(FALSE, tvb, offset, pinfo, tree, hf_x411_attempted);
3778 }
3779
3780
3781 static const ber_sequence_t MTASuppliedInformation_set[] = {
3782   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_arrival_time_impl },
3783   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_routing_action_impl },
3784   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_attempted },
3785   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferred_time_impl },
3786   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_converted_encoded_information_types },
3787   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_other_actions_impl },
3788   { 0, 0, 0, NULL }
3789 };
3790
3791 static int
3792 dissect_x411_MTASuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3793 #line 633 "x411.cnf"
3794
3795         doing_address = FALSE;
3796
3797           offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3798                               MTASuppliedInformation_set, hf_index, ett_x411_MTASuppliedInformation);
3799
3800
3801         doing_address = TRUE;
3802         proto_item_append_text(tree, ")");
3803
3804
3805
3806   return offset;
3807 }
3808 static int dissect_mta_supplied_information(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3809   return dissect_x411_MTASuppliedInformation(FALSE, tvb, offset, pinfo, tree, hf_x411_mta_supplied_information);
3810 }
3811
3812
3813 static const ber_sequence_t InternalTraceInformationElement_sequence[] = {
3814   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_global_domain_identifier },
3815   { BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_mta_name },
3816   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_mta_supplied_information },
3817   { 0, 0, 0, NULL }
3818 };
3819
3820 static int
3821 dissect_x411_InternalTraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3822 #line 616 "x411.cnf"
3823
3824         doing_address = TRUE;
3825
3826           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
3827                                    InternalTraceInformationElement_sequence, hf_index, ett_x411_InternalTraceInformationElement);
3828
3829
3830         doing_address = FALSE;
3831
3832
3833
3834   return offset;
3835 }
3836 static int dissect_InternalTraceInformation_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3837   return dissect_x411_InternalTraceInformationElement(FALSE, tvb, offset, pinfo, tree, hf_x411_InternalTraceInformation_item);
3838 }
3839
3840
3841 static const ber_sequence_t InternalTraceInformation_sequence_of[1] = {
3842   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_InternalTraceInformation_item },
3843 };
3844
3845 static int
3846 dissect_x411_InternalTraceInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3847   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
3848                                       InternalTraceInformation_sequence_of, hf_index, ett_x411_InternalTraceInformation);
3849
3850   return offset;
3851 }
3852
3853
3854 static const value_string x411_ObjectName_vals[] = {
3855   {   0, "user-agent" },
3856   {   1, "mTA" },
3857   {   2, "message-store" },
3858   { 0, NULL }
3859 };
3860
3861 static const ber_choice_t ObjectName_choice[] = {
3862   {   0, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_user_agent },
3863   {   1, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_mTA_impl },
3864   {   2, BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_message_store_impl },
3865   { 0, 0, 0, 0, NULL }
3866 };
3867
3868 static int
3869 dissect_x411_ObjectName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3870   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
3871                                  ObjectName_choice, hf_index, ett_x411_ObjectName,
3872                                  NULL);
3873
3874   return offset;
3875 }
3876 static int dissect_initiator_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3877   return dissect_x411_ObjectName(FALSE, tvb, offset, pinfo, tree, hf_x411_initiator_name);
3878 }
3879 static int dissect_responder_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3880   return dissect_x411_ObjectName(FALSE, tvb, offset, pinfo, tree, hf_x411_responder_name);
3881 }
3882
3883
3884 static const ber_sequence_t DeliveryQueue_set[] = {
3885   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_messages_impl },
3886   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_delivery_queue_octets_impl },
3887   { 0, 0, 0, NULL }
3888 };
3889
3890 static int
3891 dissect_x411_DeliveryQueue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3892   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3893                               DeliveryQueue_set, hf_index, ett_x411_DeliveryQueue);
3894
3895   return offset;
3896 }
3897 static int dissect_urgent_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3898   return dissect_x411_DeliveryQueue(TRUE, tvb, offset, pinfo, tree, hf_x411_urgent);
3899 }
3900 static int dissect_normal_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3901   return dissect_x411_DeliveryQueue(TRUE, tvb, offset, pinfo, tree, hf_x411_normal);
3902 }
3903 static int dissect_non_urgent_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3904   return dissect_x411_DeliveryQueue(TRUE, tvb, offset, pinfo, tree, hf_x411_non_urgent);
3905 }
3906
3907
3908 static const ber_sequence_t MessagesWaiting_set[] = {
3909   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_urgent_impl },
3910   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_normal_impl },
3911   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_non_urgent_impl },
3912   { 0, 0, 0, NULL }
3913 };
3914
3915 static int
3916 dissect_x411_MessagesWaiting(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3917   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3918                               MessagesWaiting_set, hf_index, ett_x411_MessagesWaiting);
3919
3920   return offset;
3921 }
3922 static int dissect_messages_waiting(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3923   return dissect_x411_MessagesWaiting(FALSE, tvb, offset, pinfo, tree, hf_x411_messages_waiting);
3924 }
3925
3926
3927 static const ber_sequence_t MTSBindArgument_set[] = {
3928   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_initiator_name },
3929   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_messages_waiting },
3930   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_initiator_credentials_impl },
3931   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_security_context_impl },
3932   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3933   { 0, 0, 0, NULL }
3934 };
3935
3936 static int
3937 dissect_x411_MTSBindArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3938   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3939                               MTSBindArgument_set, hf_index, ett_x411_MTSBindArgument);
3940
3941   return offset;
3942 }
3943
3944
3945 static const ber_sequence_t MTSBindResult_set[] = {
3946   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_responder_name },
3947   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL, dissect_messages_waiting },
3948   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_responder_credentials_impl },
3949   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
3950   { 0, 0, 0, NULL }
3951 };
3952
3953 static int
3954 dissect_x411_MTSBindResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3955   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
3956                               MTSBindResult_set, hf_index, ett_x411_MTSBindResult);
3957
3958   return offset;
3959 }
3960
3961
3962 static const value_string x411_MTSBindError_vals[] = {
3963   {   0, "busy" },
3964   {   2, "authentication-error" },
3965   {   3, "unacceptable-dialogue-mode" },
3966   {   4, "unacceptable-security-context" },
3967   {   5, "inadequate-association-confidentiality" },
3968   { 0, NULL }
3969 };
3970
3971
3972 static int
3973 dissect_x411_MTSBindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3974   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
3975                                   NULL);
3976
3977   return offset;
3978 }
3979
3980
3981
3982 static int
3983 dissect_x411_ORAddressAndOrDirectoryName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3984   offset = dissect_x411_ORName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3985
3986   return offset;
3987 }
3988 static int dissect_DLExemptedRecipients_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
3989   return dissect_x411_ORAddressAndOrDirectoryName(FALSE, tvb, offset, pinfo, tree, hf_x411_DLExemptedRecipients_item);
3990 }
3991
3992
3993
3994 static int
3995 dissect_x411_MTSOriginatorName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
3996   offset = dissect_x411_ORAddressAndOrDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
3997
3998   return offset;
3999 }
4000 static int dissect_mts_originator_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4001   return dissect_x411_MTSOriginatorName(FALSE, tvb, offset, pinfo, tree, hf_x411_mts_originator_name);
4002 }
4003
4004
4005
4006 static int
4007 dissect_x411_MTSRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4008   offset = dissect_x411_ORAddressAndOrDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4009
4010   return offset;
4011 }
4012 static int dissect_ImproperlySpecifiedRecipients_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4013   return dissect_x411_MTSRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_ImproperlySpecifiedRecipients_item);
4014 }
4015 static int dissect_submission_recipient_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4016   return dissect_x411_MTSRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_submission_recipient_name);
4017 }
4018 static int dissect_probe_recipient_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4019   return dissect_x411_MTSRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_probe_recipient_name);
4020 }
4021 static int dissect_token_recipient_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4022   return dissect_x411_MTSRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_token_recipient_name);
4023 }
4024
4025
4026 static const asn_namedbit OriginatorReportRequest_bits[] = {
4027   {  3, &hf_x411_OriginatorReportRequest_report, -1, -1, "report", NULL },
4028   {  4, &hf_x411_OriginatorReportRequest_non_delivery_report, -1, -1, "non-delivery-report", NULL },
4029   { 0, NULL, 0, 0, NULL, NULL }
4030 };
4031
4032 static int
4033 dissect_x411_OriginatorReportRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4034   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4035                                     OriginatorReportRequest_bits, hf_index, ett_x411_OriginatorReportRequest,
4036                                     NULL);
4037
4038   return offset;
4039 }
4040 static int dissect_originator_report_request_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4041   return dissect_x411_OriginatorReportRequest(TRUE, tvb, offset, pinfo, tree, hf_x411_originator_report_request);
4042 }
4043
4044
4045 static const ber_sequence_t PerRecipientMessageSubmissionFields_set[] = {
4046   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_submission_recipient_name },
4047   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_originator_report_request_impl },
4048   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_explicit_conversion_impl },
4049   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4050   { 0, 0, 0, NULL }
4051 };
4052
4053 static int
4054 dissect_x411_PerRecipientMessageSubmissionFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4055   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4056                               PerRecipientMessageSubmissionFields_set, hf_index, ett_x411_PerRecipientMessageSubmissionFields);
4057
4058   return offset;
4059 }
4060 static int dissect_per_recipient_message_submission_fields_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4061   return dissect_x411_PerRecipientMessageSubmissionFields(FALSE, tvb, offset, pinfo, tree, hf_x411_per_recipient_message_submission_fields_item);
4062 }
4063
4064
4065 static const ber_sequence_t SEQUENCE_OF_PerRecipientMessageSubmissionFields_sequence_of[1] = {
4066   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_per_recipient_message_submission_fields_item },
4067 };
4068
4069 static int
4070 dissect_x411_SEQUENCE_OF_PerRecipientMessageSubmissionFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4071   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4072                                       SEQUENCE_OF_PerRecipientMessageSubmissionFields_sequence_of, hf_index, ett_x411_SEQUENCE_OF_PerRecipientMessageSubmissionFields);
4073
4074   return offset;
4075 }
4076 static int dissect_per_recipient_message_submission_fields_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4077   return dissect_x411_SEQUENCE_OF_PerRecipientMessageSubmissionFields(TRUE, tvb, offset, pinfo, tree, hf_x411_per_recipient_message_submission_fields);
4078 }
4079
4080
4081 static const ber_sequence_t MessageSubmissionEnvelope_set[] = {
4082   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_mts_originator_name },
4083   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_original_encoded_information_types },
4084   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_content_type },
4085   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
4086   { BER_CLASS_APP, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_priority },
4087   { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_per_message_indicators },
4088   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_deferred_delivery_time_impl },
4089   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4090   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_per_recipient_message_submission_fields_impl },
4091   { 0, 0, 0, NULL }
4092 };
4093
4094 int
4095 dissect_x411_MessageSubmissionEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4096   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4097                               MessageSubmissionEnvelope_set, hf_index, ett_x411_MessageSubmissionEnvelope);
4098
4099   return offset;
4100 }
4101 static int dissect_message_submission_envelope(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4102   return dissect_x411_MessageSubmissionEnvelope(FALSE, tvb, offset, pinfo, tree, hf_x411_message_submission_envelope);
4103 }
4104
4105
4106 static const ber_sequence_t MessageSubmissionArgument_sequence[] = {
4107   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_message_submission_envelope },
4108   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_content },
4109   { 0, 0, 0, NULL }
4110 };
4111
4112 static int
4113 dissect_x411_MessageSubmissionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4114   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4115                                    MessageSubmissionArgument_sequence, hf_index, ett_x411_MessageSubmissionArgument);
4116
4117   return offset;
4118 }
4119
4120
4121
4122 static int
4123 dissect_x411_MessageSubmissionIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4124   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4125
4126   return offset;
4127 }
4128 static int dissect_message_submission_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4129   return dissect_x411_MessageSubmissionIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_message_submission_identifier);
4130 }
4131
4132
4133
4134 static int
4135 dissect_x411_MessageSubmissionTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4136   offset = dissect_x411_Time(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4137
4138   return offset;
4139 }
4140 static int dissect_message_submission_time_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4141   return dissect_x411_MessageSubmissionTime(TRUE, tvb, offset, pinfo, tree, hf_x411_message_submission_time);
4142 }
4143
4144
4145 static const ber_sequence_t MessageSubmissionResult_set[] = {
4146   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_message_submission_identifier },
4147   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_message_submission_time_impl },
4148   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
4149   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4150   { 0, 0, 0, NULL }
4151 };
4152
4153 static int
4154 dissect_x411_MessageSubmissionResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4155   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4156                               MessageSubmissionResult_set, hf_index, ett_x411_MessageSubmissionResult);
4157
4158   return offset;
4159 }
4160
4161
4162 static const ber_sequence_t PerRecipientProbeSubmissionFields_set[] = {
4163   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_probe_recipient_name },
4164   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_originator_report_request_impl },
4165   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_explicit_conversion_impl },
4166   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4167   { 0, 0, 0, NULL }
4168 };
4169
4170 static int
4171 dissect_x411_PerRecipientProbeSubmissionFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4172   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4173                               PerRecipientProbeSubmissionFields_set, hf_index, ett_x411_PerRecipientProbeSubmissionFields);
4174
4175   return offset;
4176 }
4177 static int dissect_per_recipient_probe_submission_fields_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4178   return dissect_x411_PerRecipientProbeSubmissionFields(FALSE, tvb, offset, pinfo, tree, hf_x411_per_recipient_probe_submission_fields_item);
4179 }
4180
4181
4182 static const ber_sequence_t SEQUENCE_OF_PerRecipientProbeSubmissionFields_sequence_of[1] = {
4183   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_per_recipient_probe_submission_fields_item },
4184 };
4185
4186 static int
4187 dissect_x411_SEQUENCE_OF_PerRecipientProbeSubmissionFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4188   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4189                                       SEQUENCE_OF_PerRecipientProbeSubmissionFields_sequence_of, hf_index, ett_x411_SEQUENCE_OF_PerRecipientProbeSubmissionFields);
4190
4191   return offset;
4192 }
4193 static int dissect_per_recipient_probe_submission_fields_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4194   return dissect_x411_SEQUENCE_OF_PerRecipientProbeSubmissionFields(TRUE, tvb, offset, pinfo, tree, hf_x411_per_recipient_probe_submission_fields);
4195 }
4196
4197
4198 static const ber_sequence_t ProbeSubmissionEnvelope_set[] = {
4199   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_mts_originator_name },
4200   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_original_encoded_information_types },
4201   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_content_type },
4202   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
4203   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_length_impl },
4204   { BER_CLASS_APP, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_per_message_indicators },
4205   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4206   { BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_per_recipient_probe_submission_fields_impl },
4207   { 0, 0, 0, NULL }
4208 };
4209
4210 static int
4211 dissect_x411_ProbeSubmissionEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4212   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4213                               ProbeSubmissionEnvelope_set, hf_index, ett_x411_ProbeSubmissionEnvelope);
4214
4215   return offset;
4216 }
4217
4218
4219
4220 static int
4221 dissect_x411_ProbeSubmissionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4222   offset = dissect_x411_ProbeSubmissionEnvelope(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4223
4224   return offset;
4225 }
4226
4227
4228
4229 static int
4230 dissect_x411_ProbeSubmissionIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4231   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4232
4233   return offset;
4234 }
4235 static int dissect_probe_submission_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4236   return dissect_x411_ProbeSubmissionIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_probe_submission_identifier);
4237 }
4238
4239
4240
4241 static int
4242 dissect_x411_ProbeSubmissionTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4243   offset = dissect_x411_Time(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4244
4245   return offset;
4246 }
4247 static int dissect_probe_submission_time_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4248   return dissect_x411_ProbeSubmissionTime(TRUE, tvb, offset, pinfo, tree, hf_x411_probe_submission_time);
4249 }
4250
4251
4252 static const ber_sequence_t ProbeSubmissionResult_set[] = {
4253   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_probe_submission_identifier },
4254   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_probe_submission_time_impl },
4255   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
4256   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4257   { 0, 0, 0, NULL }
4258 };
4259
4260 static int
4261 dissect_x411_ProbeSubmissionResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4262   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4263                               ProbeSubmissionResult_set, hf_index, ett_x411_ProbeSubmissionResult);
4264
4265   return offset;
4266 }
4267
4268
4269
4270 static int
4271 dissect_x411_CancelDeferredDeliveryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4272   offset = dissect_x411_MessageSubmissionIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4273
4274   return offset;
4275 }
4276
4277
4278
4279 static int
4280 dissect_x411_CancelDeferredDeliveryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4281   offset = dissect_ber_null(implicit_tag, pinfo, tree, tvb, offset, hf_index);
4282
4283   return offset;
4284 }
4285
4286
4287
4288 static int
4289 dissect_x411_BOOLEAN(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4290   offset = dissect_ber_boolean(implicit_tag, pinfo, tree, tvb, offset, hf_index);
4291
4292   return offset;
4293 }
4294 static int dissect_restrict_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4295   return dissect_x411_BOOLEAN(TRUE, tvb, offset, pinfo, tree, hf_x411_restrict);
4296 }
4297 static int dissect_permitted(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4298   return dissect_x411_BOOLEAN(FALSE, tvb, offset, pinfo, tree, hf_x411_permitted);
4299 }
4300
4301
4302 static const asn_namedbit Operations_bits[] = {
4303   {  0, &hf_x411_Operations_probe_submission_or_report_delivery, -1, -1, "probe-submission-or-report-delivery", NULL },
4304   {  1, &hf_x411_Operations_message_submission_or_message_delivery, -1, -1, "message-submission-or-message-delivery", NULL },
4305   { 0, NULL, 0, 0, NULL, NULL }
4306 };
4307
4308 static int
4309 dissect_x411_Operations(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4310   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4311                                     Operations_bits, hf_index, ett_x411_Operations,
4312                                     NULL);
4313
4314   return offset;
4315 }
4316 static int dissect_waiting_operations_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4317   return dissect_x411_Operations(TRUE, tvb, offset, pinfo, tree, hf_x411_waiting_operations);
4318 }
4319 static int dissect_permissible_operations_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4320   return dissect_x411_Operations(TRUE, tvb, offset, pinfo, tree, hf_x411_permissible_operations);
4321 }
4322
4323
4324 static const ber_sequence_t ContentTypes_set_of[1] = {
4325   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ContentTypes_item },
4326 };
4327
4328 static int
4329 dissect_x411_ContentTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4330   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
4331                                  ContentTypes_set_of, hf_index, ett_x411_ContentTypes);
4332
4333   return offset;
4334 }
4335 static int dissect_permissible_content_types_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4336   return dissect_x411_ContentTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_permissible_content_types);
4337 }
4338 static int dissect_content_types_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4339   return dissect_x411_ContentTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_content_types);
4340 }
4341
4342
4343 static const ber_sequence_t EncodedInformationTypesConstraints_sequence[] = {
4344   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_unacceptable_eits_impl },
4345   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_acceptable_eits_impl },
4346   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_exclusively_acceptable_eits_impl },
4347   { 0, 0, 0, NULL }
4348 };
4349
4350 int
4351 dissect_x411_EncodedInformationTypesConstraints(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4352   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4353                                    EncodedInformationTypesConstraints_sequence, hf_index, ett_x411_EncodedInformationTypesConstraints);
4354
4355   return offset;
4356 }
4357 static int dissect_encoded_information_types_constraints_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4358   return dissect_x411_EncodedInformationTypesConstraints(TRUE, tvb, offset, pinfo, tree, hf_x411_encoded_information_types_constraints);
4359 }
4360
4361
4362
4363 static int
4364 dissect_x411_PermissibleEncodedInformationTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4365   offset = dissect_x411_EncodedInformationTypesConstraints(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4366
4367   return offset;
4368 }
4369 static int dissect_permissible_encoded_information_types(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4370   return dissect_x411_PermissibleEncodedInformationTypes(FALSE, tvb, offset, pinfo, tree, hf_x411_permissible_encoded_information_types);
4371 }
4372
4373
4374 static const ber_sequence_t Controls_set[] = {
4375   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_restrict_impl },
4376   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_operations_impl },
4377   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_maximum_content_length_impl },
4378   { BER_CLASS_APP, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_permissible_lowest_priority },
4379   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_content_types_impl },
4380   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_permissible_encoded_information_types },
4381   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_security_context_impl },
4382   { 0, 0, 0, NULL }
4383 };
4384
4385 static int
4386 dissect_x411_Controls(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4387   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4388                               Controls_set, hf_index, ett_x411_Controls);
4389
4390   return offset;
4391 }
4392
4393
4394
4395 static int
4396 dissect_x411_SubmissionControls(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4397   offset = dissect_x411_Controls(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4398
4399   return offset;
4400 }
4401
4402
4403
4404 static int
4405 dissect_x411_SubmissionControlArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4406   offset = dissect_x411_SubmissionControls(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4407
4408   return offset;
4409 }
4410
4411
4412 static const asn_namedbit WaitingMessages_bits[] = {
4413   {  0, &hf_x411_WaitingMessages_long_content, -1, -1, "long-content", NULL },
4414   {  1, &hf_x411_WaitingMessages_low_priority, -1, -1, "low-priority", NULL },
4415   {  2, &hf_x411_WaitingMessages_other_security_labels, -1, -1, "other-security-labels", NULL },
4416   { 0, NULL, 0, 0, NULL, NULL }
4417 };
4418
4419 static int
4420 dissect_x411_WaitingMessages(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4421   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4422                                     WaitingMessages_bits, hf_index, ett_x411_WaitingMessages,
4423                                     NULL);
4424
4425   return offset;
4426 }
4427 static int dissect_waiting_messages_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4428   return dissect_x411_WaitingMessages(TRUE, tvb, offset, pinfo, tree, hf_x411_waiting_messages);
4429 }
4430
4431
4432 static const ber_sequence_t SET_OF_ContentType_set_of[1] = {
4433   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_waiting_content_types_item },
4434 };
4435
4436 static int
4437 dissect_x411_SET_OF_ContentType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4438   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
4439                                  SET_OF_ContentType_set_of, hf_index, ett_x411_SET_OF_ContentType);
4440
4441   return offset;
4442 }
4443 static int dissect_waiting_content_types_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4444   return dissect_x411_SET_OF_ContentType(TRUE, tvb, offset, pinfo, tree, hf_x411_waiting_content_types);
4445 }
4446
4447
4448 static const ber_sequence_t Waiting_set[] = {
4449   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_waiting_operations_impl },
4450   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_waiting_messages_impl },
4451   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_waiting_content_types_impl },
4452   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_waiting_encoded_information_types },
4453   { 0, 0, 0, NULL }
4454 };
4455
4456 static int
4457 dissect_x411_Waiting(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4458   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4459                               Waiting_set, hf_index, ett_x411_Waiting);
4460
4461   return offset;
4462 }
4463
4464
4465
4466 static int
4467 dissect_x411_SubmissionControlResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4468   offset = dissect_x411_Waiting(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4469
4470   return offset;
4471 }
4472
4473
4474 static const ber_sequence_t ImproperlySpecifiedRecipients_sequence_of[1] = {
4475   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_ImproperlySpecifiedRecipients_item },
4476 };
4477
4478 static int
4479 dissect_x411_ImproperlySpecifiedRecipients(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4480   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4481                                       ImproperlySpecifiedRecipients_sequence_of, hf_index, ett_x411_ImproperlySpecifiedRecipients);
4482
4483   return offset;
4484 }
4485
4486
4487 static const value_string x411_SecurityProblem_vals[] = {
4488   {   0, "assemby-instructions-conflict-with-security-services" },
4489   {   1, "authentication-problem" },
4490   {   2, "authentication-failure-on-subject-message" },
4491   {   3, "confidentiality-association-problem" },
4492   {   4, "decryption-failed" },
4493   {   5, "decryption-key-unobtainable" },
4494   {   6, "failure-of-proof-of-message" },
4495   {   7, "forbidden-user-security-label-register" },
4496   {   8, "incompatible-change-with-original-security-context" },
4497   {   9, "integrity-failure-on-subject-message" },
4498   {  10, "invalid-security-label" },
4499   {  11, "invalid-security-label-update" },
4500   {  12, "key-failure" },
4501   {  13, "mandatory-parameter-absence" },
4502   {  14, "operation-security-failure" },
4503   {  15, "redirection-prohibited" },
4504   {  16, "refused-alternate-recipient-name" },
4505   {  17, "repudiation-failure-of-message" },
4506   {  18, "responder-credentials-checking-problem" },
4507   {  19, "security-context-failure" },
4508   {  20, "security-context-problem" },
4509   {  21, "security-policy-violation" },
4510   {  22, "security-services-refusal" },
4511   {  23, "token-decryption-failed" },
4512   {  24, "token-error" },
4513   {  25, "unable-to-aggregate-security-labels" },
4514   {  26, "unauthorised-dl-name" },
4515   {  27, "unauthorised-entry-class" },
4516   {  28, "unauthorised-originally-intended-recipient-name" },
4517   {  29, "unauthorised-originator-name" },
4518   {  30, "unauthorised-recipient-name" },
4519   {  31, "unauthorised-security-label-update" },
4520   {  32, "unauthorised-user-name" },
4521   {  33, "unknown-security-label" },
4522   {  34, "unsupported-algorithm-identifier" },
4523   {  35, "unsupported-security-policy" },
4524   { 0, NULL }
4525 };
4526
4527
4528 static int
4529 dissect_x411_SecurityProblem(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4530   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4531                                   NULL);
4532
4533   return offset;
4534 }
4535
4536
4537
4538 int
4539 dissect_x411_MessageDeliveryIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4540   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4541
4542   return offset;
4543 }
4544 static int dissect_message_delivery_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4545   return dissect_x411_MessageDeliveryIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_message_delivery_identifier);
4546 }
4547
4548
4549 static const value_string x411_DeliveredContentType_vals[] = {
4550   {   0, "built-in" },
4551   {   1, "extended" },
4552   { 0, NULL }
4553 };
4554
4555 static const ber_choice_t DeliveredContentType_choice[] = {
4556   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_built_in_impl },
4557   {   1, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_extended },
4558   { 0, 0, 0, 0, NULL }
4559 };
4560
4561 static int
4562 dissect_x411_DeliveredContentType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4563   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4564                                  DeliveredContentType_choice, hf_index, ett_x411_DeliveredContentType,
4565                                  NULL);
4566
4567   return offset;
4568 }
4569 static int dissect_delivered_content_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4570   return dissect_x411_DeliveredContentType(FALSE, tvb, offset, pinfo, tree, hf_x411_delivered_content_type);
4571 }
4572
4573
4574
4575 static int
4576 dissect_x411_DeliveredOriginatorName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4577   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4578
4579   return offset;
4580 }
4581 static int dissect_originator_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4582   return dissect_x411_DeliveredOriginatorName(FALSE, tvb, offset, pinfo, tree, hf_x411_originator_name);
4583 }
4584
4585
4586 static const asn_namedbit DeliveryFlags_bits[] = {
4587   {  1, &hf_x411_DeliveryFlags_implicit_conversion_prohibited, -1, -1, "implicit-conversion-prohibited", NULL },
4588   { 0, NULL, 0, 0, NULL, NULL }
4589 };
4590
4591 static int
4592 dissect_x411_DeliveryFlags(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4593   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
4594                                     DeliveryFlags_bits, hf_index, ett_x411_DeliveryFlags,
4595                                     NULL);
4596
4597   return offset;
4598 }
4599 static int dissect_delivery_flags_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4600   return dissect_x411_DeliveryFlags(TRUE, tvb, offset, pinfo, tree, hf_x411_delivery_flags);
4601 }
4602
4603
4604
4605 static int
4606 dissect_x411_OtherRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4607   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4608
4609   return offset;
4610 }
4611 static int dissect_OtherRecipientNames_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4612   return dissect_x411_OtherRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_OtherRecipientNames_item);
4613 }
4614
4615
4616 static const ber_sequence_t OtherRecipientNames_sequence_of[1] = {
4617   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_OtherRecipientNames_item },
4618 };
4619
4620 static int
4621 dissect_x411_OtherRecipientNames(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4622   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4623                                       OtherRecipientNames_sequence_of, hf_index, ett_x411_OtherRecipientNames);
4624
4625   return offset;
4626 }
4627 static int dissect_other_recipient_names_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4628   return dissect_x411_OtherRecipientNames(TRUE, tvb, offset, pinfo, tree, hf_x411_other_recipient_names);
4629 }
4630
4631
4632
4633 static int
4634 dissect_x411_ThisRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4635   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4636
4637   return offset;
4638 }
4639 static int dissect_this_recipient_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4640   return dissect_x411_ThisRecipientName(TRUE, tvb, offset, pinfo, tree, hf_x411_this_recipient_name);
4641 }
4642
4643
4644
4645 static int
4646 dissect_x411_MTSOriginallyIntendedRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4647   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4648
4649   return offset;
4650 }
4651 static int dissect_originally_intended_recipient_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4652   return dissect_x411_MTSOriginallyIntendedRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_originally_intended_recipient_name);
4653 }
4654 static int dissect_originally_intended_recipient_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4655   return dissect_x411_MTSOriginallyIntendedRecipientName(TRUE, tvb, offset, pinfo, tree, hf_x411_originally_intended_recipient_name);
4656 }
4657
4658
4659 static const ber_sequence_t OtherMessageDeliveryFields_set[] = {
4660   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_delivered_content_type },
4661   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_originator_name },
4662   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_original_encoded_information_types_impl },
4663   { BER_CLASS_APP, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_priority },
4664   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_delivery_flags_impl },
4665   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_other_recipient_names_impl },
4666   { BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_this_recipient_name_impl },
4667   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_originally_intended_recipient_name_impl },
4668   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_converted_encoded_information_types_impl },
4669   { BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_message_submission_time_impl },
4670   { BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_identifier_impl },
4671   { BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4672   { 0, 0, 0, NULL }
4673 };
4674
4675 int
4676 dissect_x411_OtherMessageDeliveryFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4677   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4678                               OtherMessageDeliveryFields_set, hf_index, ett_x411_OtherMessageDeliveryFields);
4679
4680   return offset;
4681 }
4682 static int dissect_other_fields(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4683   return dissect_x411_OtherMessageDeliveryFields(FALSE, tvb, offset, pinfo, tree, hf_x411_other_fields);
4684 }
4685
4686
4687 static const ber_sequence_t MessageDeliveryArgument_sequence[] = {
4688   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_message_delivery_identifier },
4689   { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_message_delivery_time },
4690   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_other_fields },
4691   { BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_content },
4692   { 0, 0, 0, NULL }
4693 };
4694
4695 static int
4696 dissect_x411_MessageDeliveryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4697   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
4698                                    MessageDeliveryArgument_sequence, hf_index, ett_x411_MessageDeliveryArgument);
4699
4700   return offset;
4701 }
4702
4703
4704
4705 static int
4706 dissect_x411_RecipientCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4707   offset = dissect_x509af_Certificates(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4708
4709   return offset;
4710 }
4711 static int dissect_recipient_certificate_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4712   return dissect_x411_RecipientCertificate(TRUE, tvb, offset, pinfo, tree, hf_x411_recipient_certificate);
4713 }
4714
4715
4716
4717 static int
4718 dissect_x411_ProofOfDelivery(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4719   offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4720
4721   return offset;
4722 }
4723 static int dissect_proof_of_delivery_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4724   return dissect_x411_ProofOfDelivery(TRUE, tvb, offset, pinfo, tree, hf_x411_proof_of_delivery);
4725 }
4726
4727
4728 static const ber_sequence_t MessageDeliveryResult_set[] = {
4729   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_recipient_certificate_impl },
4730   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_proof_of_delivery_impl },
4731   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4732   { 0, 0, 0, NULL }
4733 };
4734
4735 static int
4736 dissect_x411_MessageDeliveryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4737   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4738                               MessageDeliveryResult_set, hf_index, ett_x411_MessageDeliveryResult);
4739
4740   return offset;
4741 }
4742
4743
4744
4745 static int
4746 dissect_x411_SubjectSubmissionIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4747   offset = dissect_x411_MTSIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4748
4749   return offset;
4750 }
4751 static int dissect_subject_submission_identifier(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4752   return dissect_x411_SubjectSubmissionIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_subject_submission_identifier);
4753 }
4754
4755
4756
4757 static int
4758 dissect_x411_MTSActualRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4759   offset = dissect_x411_ORAddressAndOrDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
4760
4761   return offset;
4762 }
4763 static int dissect_actual_recipient_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4764   return dissect_x411_MTSActualRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_actual_recipient_name);
4765 }
4766 static int dissect_actual_recipient_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4767   return dissect_x411_MTSActualRecipientName(TRUE, tvb, offset, pinfo, tree, hf_x411_actual_recipient_name);
4768 }
4769
4770
4771 static const ber_sequence_t PerRecipientReportDeliveryFields_set[] = {
4772   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_actual_recipient_name_impl },
4773   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_delivery_report_type_impl },
4774   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_converted_encoded_information_types },
4775   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_originally_intended_recipient_name_impl },
4776   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_supplementary_information_impl },
4777   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4778   { 0, 0, 0, NULL }
4779 };
4780
4781 static int
4782 dissect_x411_PerRecipientReportDeliveryFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4783   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4784                               PerRecipientReportDeliveryFields_set, hf_index, ett_x411_PerRecipientReportDeliveryFields);
4785
4786   return offset;
4787 }
4788 static int dissect_per_recipient_report_delivery_fields_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4789   return dissect_x411_PerRecipientReportDeliveryFields(FALSE, tvb, offset, pinfo, tree, hf_x411_per_recipient_report_delivery_fields_item);
4790 }
4791
4792
4793 static const ber_sequence_t SEQUENCE_OF_PerRecipientReportDeliveryFields_sequence_of[1] = {
4794   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_per_recipient_report_delivery_fields_item },
4795 };
4796
4797 static int
4798 dissect_x411_SEQUENCE_OF_PerRecipientReportDeliveryFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4799   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
4800                                       SEQUENCE_OF_PerRecipientReportDeliveryFields_sequence_of, hf_index, ett_x411_SEQUENCE_OF_PerRecipientReportDeliveryFields);
4801
4802   return offset;
4803 }
4804 static int dissect_per_recipient_report_delivery_fields(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4805   return dissect_x411_SEQUENCE_OF_PerRecipientReportDeliveryFields(FALSE, tvb, offset, pinfo, tree, hf_x411_per_recipient_report_delivery_fields);
4806 }
4807
4808
4809 static const ber_sequence_t ReportDeliveryArgument_set[] = {
4810   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_subject_submission_identifier },
4811   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
4812   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_content_type },
4813   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_original_encoded_information_types },
4814   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4815   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_per_recipient_report_delivery_fields },
4816   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_returned_content_impl },
4817   { 0, 0, 0, NULL }
4818 };
4819
4820 static int
4821 dissect_x411_ReportDeliveryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4822   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4823                               ReportDeliveryArgument_set, hf_index, ett_x411_ReportDeliveryArgument);
4824
4825   return offset;
4826 }
4827
4828
4829 static const value_string x411_ReportDeliveryResult_vals[] = {
4830   {   0, "empty-result" },
4831   {   1, "extensions" },
4832   {   2, "extensions" },
4833   { 0, NULL }
4834 };
4835
4836 static const ber_choice_t ReportDeliveryResult_choice[] = {
4837   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_empty_result },
4838   {   1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_extensions },
4839   {   2, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_extensions },
4840   {   3, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_extensions },
4841   { 0, 0, 0, 0, NULL }
4842 };
4843
4844 static int
4845 dissect_x411_ReportDeliveryResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4846   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4847                                  ReportDeliveryResult_choice, hf_index, ett_x411_ReportDeliveryResult,
4848                                  NULL);
4849
4850   return offset;
4851 }
4852
4853
4854 static const ber_sequence_t DeliveryControlArgument_set[] = {
4855   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_restrict_impl },
4856   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_operations_impl },
4857   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_maximum_content_length_impl },
4858   { BER_CLASS_APP, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_permissible_lowest_priority },
4859   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_content_types_impl },
4860   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_permissible_encoded_information_types },
4861   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_permissible_security_context_impl },
4862   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4863   { 0, 0, 0, NULL }
4864 };
4865
4866 static int
4867 dissect_x411_DeliveryControlArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4868   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4869                               DeliveryControlArgument_set, hf_index, ett_x411_DeliveryControlArgument);
4870
4871   return offset;
4872 }
4873
4874
4875 static const ber_sequence_t DeliveryControlResult_set[] = {
4876   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_waiting_operations_impl },
4877   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_waiting_messages_impl },
4878   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_waiting_content_types_impl },
4879   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_waiting_encoded_information_types },
4880   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
4881   { 0, 0, 0, NULL }
4882 };
4883
4884 static int
4885 dissect_x411_DeliveryControlResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4886   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4887                               DeliveryControlResult_set, hf_index, ett_x411_DeliveryControlResult);
4888
4889   return offset;
4890 }
4891
4892
4893 static const value_string x411_RefusedArgument_vals[] = {
4894   {   0, "user-name" },
4895   {   1, "user-address" },
4896   {   2, "deliverable-content-types" },
4897   {   3, "deliverable-maximum-content-length" },
4898   {   4, "deliverable-encoded-information-types-constraints" },
4899   {   5, "deliverable-security-labels" },
4900   {   6, "recipient-assigned-redirections" },
4901   {   7, "restricted-delivery" },
4902   {   8, "retrieve-registrations" },
4903   {  10, "restrict" },
4904   {  11, "permissible-operations" },
4905   {  12, "permissible-lowest-priority" },
4906   {  13, "permissible-encoded-information-types" },
4907   {  14, "permissible-content-types" },
4908   {  15, "permissible-maximum-content-length" },
4909   {  16, "permissible-security-context" },
4910   { 0, NULL }
4911 };
4912
4913
4914 static int
4915 dissect_x411_RefusedArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4916   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4917                                   NULL);
4918
4919   return offset;
4920 }
4921 static int dissect_built_in_argument_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4922   return dissect_x411_RefusedArgument(TRUE, tvb, offset, pinfo, tree, hf_x411_built_in_argument);
4923 }
4924
4925
4926
4927 static int
4928 dissect_x411_T_refused_extension(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4929 #line 268 "x411.cnf"
4930 /*XXX not implemented yet */
4931
4932
4933
4934   return offset;
4935 }
4936 static int dissect_refused_extension(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4937   return dissect_x411_T_refused_extension(FALSE, tvb, offset, pinfo, tree, hf_x411_refused_extension);
4938 }
4939
4940
4941 static const value_string x411_T_refused_argument_vals[] = {
4942   {   0, "built-in-argument" },
4943   {   1, "refused-extension" },
4944   { 0, NULL }
4945 };
4946
4947 static const ber_choice_t T_refused_argument_choice[] = {
4948   {   0, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_built_in_argument_impl },
4949   {   1, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_refused_extension },
4950   { 0, 0, 0, 0, NULL }
4951 };
4952
4953 static int
4954 dissect_x411_T_refused_argument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4955   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
4956                                  T_refused_argument_choice, hf_index, ett_x411_T_refused_argument,
4957                                  NULL);
4958
4959   return offset;
4960 }
4961 static int dissect_refused_argument(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4962   return dissect_x411_T_refused_argument(FALSE, tvb, offset, pinfo, tree, hf_x411_refused_argument);
4963 }
4964
4965
4966 static const value_string x411_RefusalReason_vals[] = {
4967   {   0, "facility-unavailable" },
4968   {   1, "facility-not-subscribed" },
4969   {   2, "parameter-unacceptable" },
4970   { 0, NULL }
4971 };
4972
4973
4974 static int
4975 dissect_x411_RefusalReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4976   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
4977                                   NULL);
4978
4979   return offset;
4980 }
4981 static int dissect_refusal_reason_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
4982   return dissect_x411_RefusalReason(TRUE, tvb, offset, pinfo, tree, hf_x411_refusal_reason);
4983 }
4984
4985
4986 static const ber_sequence_t RefusedOperation_set[] = {
4987   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_refused_argument },
4988   { BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_refusal_reason_impl },
4989   { 0, 0, 0, NULL }
4990 };
4991
4992 static int
4993 dissect_x411_RefusedOperation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
4994   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
4995                               RefusedOperation_set, hf_index, ett_x411_RefusedOperation);
4996
4997   return offset;
4998 }
4999
5000
5001
5002 static int
5003 dissect_x411_ProofOfDeliveryAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5004   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5005
5006   return offset;
5007 }
5008
5009
5010
5011 static int
5012 dissect_x411_DeliveryControls(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5013   offset = dissect_x411_Controls(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5014
5015   return offset;
5016 }
5017
5018
5019
5020 static int
5021 dissect_x411_UserName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5022   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5023
5024   return offset;
5025 }
5026 static int dissect_user_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5027   return dissect_x411_UserName(FALSE, tvb, offset, pinfo, tree, hf_x411_user_name);
5028 }
5029
5030
5031 static const ber_sequence_t T_x121_sequence[] = {
5032   { BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x121_address },
5033   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_tsap_id },
5034   { 0, 0, 0, NULL }
5035 };
5036
5037 static int
5038 dissect_x411_T_x121(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5039   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5040                                    T_x121_sequence, hf_index, ett_x411_T_x121);
5041
5042   return offset;
5043 }
5044 static int dissect_x121_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5045   return dissect_x411_T_x121(TRUE, tvb, offset, pinfo, tree, hf_x411_x121);
5046 }
5047
5048
5049
5050 static int
5051 dissect_x411_PSAPAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5052   offset = dissect_x509sat_PresentationAddress(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5053
5054   return offset;
5055 }
5056 static int dissect_presentation_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5057   return dissect_x411_PSAPAddress(TRUE, tvb, offset, pinfo, tree, hf_x411_presentation);
5058 }
5059
5060
5061 static const value_string x411_UserAddress_vals[] = {
5062   {   0, "x121" },
5063   {   1, "presentation" },
5064   { 0, NULL }
5065 };
5066
5067 static const ber_choice_t UserAddress_choice[] = {
5068   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x121_impl },
5069   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_presentation_impl },
5070   { 0, 0, 0, 0, NULL }
5071 };
5072
5073 static int
5074 dissect_x411_UserAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5075   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5076                                  UserAddress_choice, hf_index, ett_x411_UserAddress,
5077                                  NULL);
5078
5079   return offset;
5080 }
5081 static int dissect_user_address_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5082   return dissect_x411_UserAddress(TRUE, tvb, offset, pinfo, tree, hf_x411_user_address);
5083 }
5084
5085
5086 static const ber_sequence_t SET_OF_Priority_set_of[1] = {
5087   { BER_CLASS_APP, 7, BER_FLAGS_NOOWNTAG, dissect_class_priority_item },
5088 };
5089
5090 static int
5091 dissect_x411_SET_OF_Priority(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5092   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
5093                                  SET_OF_Priority_set_of, hf_index, ett_x411_SET_OF_Priority);
5094
5095   return offset;
5096 }
5097 static int dissect_class_priority_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5098   return dissect_x411_SET_OF_Priority(TRUE, tvb, offset, pinfo, tree, hf_x411_class_priority);
5099 }
5100
5101
5102 static const value_string x411_T_objects_vals[] = {
5103   {   0, "messages" },
5104   {   1, "reports" },
5105   {   2, "both" },
5106   { 0, NULL }
5107 };
5108
5109
5110 static int
5111 dissect_x411_T_objects(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5112   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5113                                   NULL);
5114
5115   return offset;
5116 }
5117 static int dissect_objects_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5118   return dissect_x411_T_objects(TRUE, tvb, offset, pinfo, tree, hf_x411_objects);
5119 }
5120
5121
5122 static const asn_namedbit T_source_type_bits[] = {
5123   {  0, &hf_x411_T_source_type_originated_by, -1, -1, "originated-by", NULL },
5124   {  1, &hf_x411_T_source_type_redirected_by, -1, -1, "redirected-by", NULL },
5125   {  2, &hf_x411_T_source_type_dl_expanded_by, -1, -1, "dl-expanded-by", NULL },
5126   { 0, NULL, 0, 0, NULL, NULL }
5127 };
5128
5129 static int
5130 dissect_x411_T_source_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5131   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
5132                                     T_source_type_bits, hf_index, ett_x411_T_source_type,
5133                                     NULL);
5134
5135   return offset;
5136 }
5137 static int dissect_source_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5138   return dissect_x411_T_source_type(FALSE, tvb, offset, pinfo, tree, hf_x411_source_type);
5139 }
5140
5141
5142 static const value_string x411_ExactOrPattern_vals[] = {
5143   {   0, "exact-match" },
5144   {   1, "pattern-match" },
5145   { 0, NULL }
5146 };
5147
5148 static const ber_choice_t ExactOrPattern_choice[] = {
5149   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_exact_match_impl },
5150   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_pattern_match_impl },
5151   { 0, 0, 0, 0, NULL }
5152 };
5153
5154 static int
5155 dissect_x411_ExactOrPattern(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5156   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5157                                  ExactOrPattern_choice, hf_index, ett_x411_ExactOrPattern,
5158                                  NULL);
5159
5160   return offset;
5161 }
5162 static int dissect_source_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5163   return dissect_x411_ExactOrPattern(FALSE, tvb, offset, pinfo, tree, hf_x411_source_name);
5164 }
5165
5166
5167 static const ber_sequence_t Restriction_set[] = {
5168   { BER_CLASS_UNI, BER_UNI_TAG_BOOLEAN, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_permitted },
5169   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_source_type },
5170   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_source_name },
5171   { 0, 0, 0, NULL }
5172 };
5173
5174 static int
5175 dissect_x411_Restriction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5176   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
5177                               Restriction_set, hf_index, ett_x411_Restriction);
5178
5179   return offset;
5180 }
5181 static int dissect_applies_only_to_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5182   return dissect_x411_Restriction(FALSE, tvb, offset, pinfo, tree, hf_x411_applies_only_to_item);
5183 }
5184 static int dissect_RestrictedDelivery_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5185   return dissect_x411_Restriction(FALSE, tvb, offset, pinfo, tree, hf_x411_RestrictedDelivery_item);
5186 }
5187
5188
5189 static const ber_sequence_t SEQUENCE_OF_Restriction_sequence_of[1] = {
5190   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_applies_only_to_item },
5191 };
5192
5193 static int
5194 dissect_x411_SEQUENCE_OF_Restriction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5195   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5196                                       SEQUENCE_OF_Restriction_sequence_of, hf_index, ett_x411_SEQUENCE_OF_Restriction);
5197
5198   return offset;
5199 }
5200 static int dissect_applies_only_to_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5201   return dissect_x411_SEQUENCE_OF_Restriction(TRUE, tvb, offset, pinfo, tree, hf_x411_applies_only_to);
5202 }
5203
5204
5205 static const ber_sequence_t MessageClass_set[] = {
5206   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_types_impl },
5207   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_maximum_content_length_impl },
5208   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encoded_information_types_constraints_impl },
5209   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_security_labels_impl },
5210   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_class_priority_impl },
5211   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_objects_impl },
5212   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_applies_only_to_impl },
5213   { BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
5214   { 0, 0, 0, NULL }
5215 };
5216
5217 static int
5218 dissect_x411_MessageClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5219   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
5220                               MessageClass_set, hf_index, ett_x411_MessageClass);
5221
5222   return offset;
5223 }
5224
5225
5226
5227 static int
5228 dissect_x411_DeliverableClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5229   offset = dissect_x411_MessageClass(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5230
5231   return offset;
5232 }
5233 static int dissect_deliverable_class_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5234   return dissect_x411_DeliverableClass(FALSE, tvb, offset, pinfo, tree, hf_x411_deliverable_class_item);
5235 }
5236
5237
5238 static const ber_sequence_t SET_OF_DeliverableClass_set_of[1] = {
5239   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_deliverable_class_item },
5240 };
5241
5242 static int
5243 dissect_x411_SET_OF_DeliverableClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5244   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
5245                                  SET_OF_DeliverableClass_set_of, hf_index, ett_x411_SET_OF_DeliverableClass);
5246
5247   return offset;
5248 }
5249 static int dissect_deliverable_class(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5250   return dissect_x411_SET_OF_DeliverableClass(FALSE, tvb, offset, pinfo, tree, hf_x411_deliverable_class);
5251 }
5252
5253
5254
5255 static int
5256 dissect_x411_DefaultDeliveryControls(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5257   offset = dissect_x411_Controls(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5258
5259   return offset;
5260 }
5261 static int dissect_default_delivery_controls(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5262   return dissect_x411_DefaultDeliveryControls(FALSE, tvb, offset, pinfo, tree, hf_x411_default_delivery_controls);
5263 }
5264
5265
5266
5267 static int
5268 dissect_x411_RedirectionClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5269   offset = dissect_x411_MessageClass(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5270
5271   return offset;
5272 }
5273 static int dissect_redirection_classes_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5274   return dissect_x411_RedirectionClass(FALSE, tvb, offset, pinfo, tree, hf_x411_redirection_classes_item);
5275 }
5276
5277
5278 static const ber_sequence_t SET_OF_RedirectionClass_set_of[1] = {
5279   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_redirection_classes_item },
5280 };
5281
5282 static int
5283 dissect_x411_SET_OF_RedirectionClass(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5284   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
5285                                  SET_OF_RedirectionClass_set_of, hf_index, ett_x411_SET_OF_RedirectionClass);
5286
5287   return offset;
5288 }
5289 static int dissect_redirection_classes_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5290   return dissect_x411_SET_OF_RedirectionClass(TRUE, tvb, offset, pinfo, tree, hf_x411_redirection_classes);
5291 }
5292
5293
5294
5295 static int
5296 dissect_x411_RecipientAssignedAlternateRecipient(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5297   offset = dissect_x411_ORAddressAndOrDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5298
5299   return offset;
5300 }
5301 static int dissect_recipient_assigned_alternate_recipient_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5302   return dissect_x411_RecipientAssignedAlternateRecipient(TRUE, tvb, offset, pinfo, tree, hf_x411_recipient_assigned_alternate_recipient);
5303 }
5304
5305
5306 static const ber_sequence_t RecipientRedirection_set[] = {
5307   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_redirection_classes_impl },
5308   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_recipient_assigned_alternate_recipient_impl },
5309   { 0, 0, 0, NULL }
5310 };
5311
5312 static int
5313 dissect_x411_RecipientRedirection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5314   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
5315                               RecipientRedirection_set, hf_index, ett_x411_RecipientRedirection);
5316
5317   return offset;
5318 }
5319 static int dissect_Redirections_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5320   return dissect_x411_RecipientRedirection(FALSE, tvb, offset, pinfo, tree, hf_x411_Redirections_item);
5321 }
5322
5323
5324 static const ber_sequence_t Redirections_sequence_of[1] = {
5325   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_Redirections_item },
5326 };
5327
5328 static int
5329 dissect_x411_Redirections(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5330   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5331                                       Redirections_sequence_of, hf_index, ett_x411_Redirections);
5332
5333   return offset;
5334 }
5335 static int dissect_redirections_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5336   return dissect_x411_Redirections(TRUE, tvb, offset, pinfo, tree, hf_x411_redirections);
5337 }
5338
5339
5340 static const ber_sequence_t RestrictedDelivery_sequence_of[1] = {
5341   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_RestrictedDelivery_item },
5342 };
5343
5344 static int
5345 dissect_x411_RestrictedDelivery(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5346   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5347                                       RestrictedDelivery_sequence_of, hf_index, ett_x411_RestrictedDelivery);
5348
5349   return offset;
5350 }
5351 static int dissect_restricted_delivery_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5352   return dissect_x411_RestrictedDelivery(TRUE, tvb, offset, pinfo, tree, hf_x411_restricted_delivery);
5353 }
5354
5355
5356 static const asn_namedbit T_standard_parameters_bits[] = {
5357   {  0, &hf_x411_T_standard_parameters_user_name, -1, -1, "user-name", NULL },
5358   {  1, &hf_x411_T_standard_parameters_user_address, -1, -1, "user-address", NULL },
5359   {  2, &hf_x411_T_standard_parameters_deliverable_class, -1, -1, "deliverable-class", NULL },
5360   {  3, &hf_x411_T_standard_parameters_default_delivery_controls, -1, -1, "default-delivery-controls", NULL },
5361   {  4, &hf_x411_T_standard_parameters_redirections, -1, -1, "redirections", NULL },
5362   {  5, &hf_x411_T_standard_parameters_restricted_delivery, -1, -1, "restricted-delivery", NULL },
5363   { 0, NULL, 0, 0, NULL, NULL }
5364 };
5365
5366 static int
5367 dissect_x411_T_standard_parameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5368   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
5369                                     T_standard_parameters_bits, hf_index, ett_x411_T_standard_parameters,
5370                                     NULL);
5371
5372   return offset;
5373 }
5374 static int dissect_standard_parameters_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5375   return dissect_x411_T_standard_parameters(TRUE, tvb, offset, pinfo, tree, hf_x411_standard_parameters);
5376 }
5377
5378
5379
5380 static int
5381 dissect_x411_T_type_extensions_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5382 #line 245 "x411.cnf"
5383 /*XXX not implemented yet */
5384
5385
5386
5387   return offset;
5388 }
5389 static int dissect_type_extensions_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5390   return dissect_x411_T_type_extensions_item(FALSE, tvb, offset, pinfo, tree, hf_x411_type_extensions_item);
5391 }
5392
5393
5394 static const ber_sequence_t T_type_extensions_set_of[1] = {
5395   { BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_type_extensions_item },
5396 };
5397
5398 static int
5399 dissect_x411_T_type_extensions(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5400   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
5401                                  T_type_extensions_set_of, hf_index, ett_x411_T_type_extensions);
5402
5403   return offset;
5404 }
5405 static int dissect_type_extensions_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5406   return dissect_x411_T_type_extensions(TRUE, tvb, offset, pinfo, tree, hf_x411_type_extensions);
5407 }
5408
5409
5410 static const ber_sequence_t RegistrationTypes_sequence[] = {
5411   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_standard_parameters_impl },
5412   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_type_extensions_impl },
5413   { 0, 0, 0, NULL }
5414 };
5415
5416 static int
5417 dissect_x411_RegistrationTypes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5418   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5419                                    RegistrationTypes_sequence, hf_index, ett_x411_RegistrationTypes);
5420
5421   return offset;
5422 }
5423 static int dissect_retrieve_registrations_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5424   return dissect_x411_RegistrationTypes(TRUE, tvb, offset, pinfo, tree, hf_x411_retrieve_registrations);
5425 }
5426
5427
5428 static const ber_sequence_t RegisterArgument_set[] = {
5429   { BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_user_name },
5430   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_user_address_impl },
5431   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_deliverable_class },
5432   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL, dissect_default_delivery_controls },
5433   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_redirections_impl },
5434   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_restricted_delivery_impl },
5435   { BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_retrieve_registrations_impl },
5436   { BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
5437   { 0, 0, 0, NULL }
5438 };
5439
5440 static int
5441 dissect_x411_RegisterArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5442   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
5443                               RegisterArgument_set, hf_index, ett_x411_RegisterArgument);
5444
5445   return offset;
5446 }
5447 static int dissect_registered_information_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5448   return dissect_x411_RegisterArgument(TRUE, tvb, offset, pinfo, tree, hf_x411_registered_information);
5449 }
5450
5451
5452 static const ber_sequence_t T_non_empty_result_set[] = {
5453   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_registered_information_impl },
5454   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
5455   { 0, 0, 0, NULL }
5456 };
5457
5458 static int
5459 dissect_x411_T_non_empty_result(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5460   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
5461                               T_non_empty_result_set, hf_index, ett_x411_T_non_empty_result);
5462
5463   return offset;
5464 }
5465 static int dissect_non_empty_result(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5466   return dissect_x411_T_non_empty_result(FALSE, tvb, offset, pinfo, tree, hf_x411_non_empty_result);
5467 }
5468
5469
5470 static const value_string x411_RegisterResult_vals[] = {
5471   {   0, "empty-result" },
5472   {   1, "non-empty-result" },
5473   { 0, NULL }
5474 };
5475
5476 static const ber_choice_t RegisterResult_choice[] = {
5477   {   0, BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_empty_result },
5478   {   1, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_non_empty_result },
5479   { 0, 0, 0, 0, NULL }
5480 };
5481
5482 static int
5483 dissect_x411_RegisterResult(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5484   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5485                                  RegisterResult_choice, hf_index, ett_x411_RegisterResult,
5486                                  NULL);
5487
5488   return offset;
5489 }
5490
5491
5492 static const ber_sequence_t ChangeCredentialsArgument_set[] = {
5493   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_old_credentials_impl },
5494   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_new_credentials_impl },
5495   { 0, 0, 0, NULL }
5496 };
5497
5498 static int
5499 dissect_x411_ChangeCredentialsArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5500   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
5501                               ChangeCredentialsArgument_set, hf_index, ett_x411_ChangeCredentialsArgument);
5502
5503   return offset;
5504 }
5505
5506
5507 static const ber_sequence_t MessageDeliveryEnvelope_sequence[] = {
5508   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_message_delivery_identifier },
5509   { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_message_delivery_time },
5510   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_other_fields },
5511   { 0, 0, 0, NULL }
5512 };
5513
5514 static int
5515 dissect_x411_MessageDeliveryEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5516   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5517                                    MessageDeliveryEnvelope_sequence, hf_index, ett_x411_MessageDeliveryEnvelope);
5518
5519   return offset;
5520 }
5521
5522
5523 static const ber_sequence_t ReportDeliveryEnvelope_set[] = {
5524   { BER_CLASS_APP, 4, BER_FLAGS_NOOWNTAG, dissect_subject_submission_identifier },
5525   { BER_CLASS_APP, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_content_identifier },
5526   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_content_type },
5527   { BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_original_encoded_information_types },
5528   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_extensions_impl },
5529   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_per_recipient_report_delivery_fields },
5530   { 0, 0, 0, NULL }
5531 };
5532
5533 static int
5534 dissect_x411_ReportDeliveryEnvelope(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5535   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
5536                               ReportDeliveryEnvelope_set, hf_index, ett_x411_ReportDeliveryEnvelope);
5537
5538   return offset;
5539 }
5540
5541
5542 static const value_string x411_RecipientReassignmentProhibited_vals[] = {
5543   {   0, "recipient-reassignment-allowed" },
5544   {   1, "recipient-reassignment-prohibited" },
5545   { 0, NULL }
5546 };
5547
5548
5549 static int
5550 dissect_x411_RecipientReassignmentProhibited(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5551   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5552                                   NULL);
5553
5554   return offset;
5555 }
5556
5557
5558
5559 static int
5560 dissect_x411_MTSOriginatorRequestedAlternateRecipient(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5561   offset = dissect_x411_ORAddressAndOrDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5562
5563   return offset;
5564 }
5565
5566
5567 static const value_string x411_DLExpansionProhibited_vals[] = {
5568   {   0, "dl-expansion-allowed" },
5569   {   1, "dl-expansion-prohibited" },
5570   { 0, NULL }
5571 };
5572
5573
5574 static int
5575 dissect_x411_DLExpansionProhibited(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5576   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5577                                   NULL);
5578
5579   return offset;
5580 }
5581
5582
5583 static const value_string x411_ConversionWithLossProhibited_vals[] = {
5584   {   0, "conversion-with-loss-allowed" },
5585   {   1, "conversion-with-loss-prohibited" },
5586   { 0, NULL }
5587 };
5588
5589
5590 static int
5591 dissect_x411_ConversionWithLossProhibited(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5592   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5593                                   NULL);
5594
5595   return offset;
5596 }
5597
5598
5599
5600 static int
5601 dissect_x411_LatestDeliveryTime(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5602   offset = dissect_x411_Time(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5603
5604   return offset;
5605 }
5606
5607
5608 static const value_string x411_RequestedDeliveryMethod_item_vals[] = {
5609   {   0, "any-delivery-method" },
5610   {   1, "mhs-delivery" },
5611   {   2, "physical-delivery" },
5612   {   3, "telex-delivery" },
5613   {   4, "teletex-delivery" },
5614   {   5, "g3-facsimile-delivery" },
5615   {   6, "g4-facsimile-delivery" },
5616   {   7, "ia5-terminal-delivery" },
5617   {   8, "videotex-delivery" },
5618   {   9, "telephone-delivery" },
5619   { 0, NULL }
5620 };
5621
5622
5623 static int
5624 dissect_x411_RequestedDeliveryMethod_item(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5625   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5626                                   NULL);
5627
5628   return offset;
5629 }
5630 static int dissect_RequestedDeliveryMethod_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5631   return dissect_x411_RequestedDeliveryMethod_item(FALSE, tvb, offset, pinfo, tree, hf_x411_RequestedDeliveryMethod_item);
5632 }
5633
5634
5635 static const ber_sequence_t RequestedDeliveryMethod_sequence_of[1] = {
5636   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_RequestedDeliveryMethod_item },
5637 };
5638
5639 int
5640 dissect_x411_RequestedDeliveryMethod(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5641   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
5642                                       RequestedDeliveryMethod_sequence_of, hf_index, ett_x411_RequestedDeliveryMethod);
5643
5644   return offset;
5645 }
5646
5647
5648 static const value_string x411_PhysicalForwardingProhibited_vals[] = {
5649   {   0, "physical-forwarding-allowed" },
5650   {   1, "physical-forwarding-prohibited" },
5651   { 0, NULL }
5652 };
5653
5654
5655 static int
5656 dissect_x411_PhysicalForwardingProhibited(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5657   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5658                                   NULL);
5659
5660   return offset;
5661 }
5662
5663
5664 static const value_string x411_PhysicalForwardingAddressRequest_vals[] = {
5665   {   0, "physical-forwarding-address-not-requested" },
5666   {   1, "physical-forwarding-address-requested" },
5667   { 0, NULL }
5668 };
5669
5670
5671 static int
5672 dissect_x411_PhysicalForwardingAddressRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5673   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5674                                   NULL);
5675
5676   return offset;
5677 }
5678
5679
5680 static const asn_namedbit PhysicalDeliveryModes_bits[] = {
5681   {  0, &hf_x411_PhysicalDeliveryModes_ordinary_mail, -1, -1, "ordinary-mail", NULL },
5682   {  1, &hf_x411_PhysicalDeliveryModes_special_delivery, -1, -1, "special-delivery", NULL },
5683   {  2, &hf_x411_PhysicalDeliveryModes_express_mail, -1, -1, "express-mail", NULL },
5684   {  3, &hf_x411_PhysicalDeliveryModes_counter_collection, -1, -1, "counter-collection", NULL },
5685   {  4, &hf_x411_PhysicalDeliveryModes_counter_collection_with_telephone_advice, -1, -1, "counter-collection-with-telephone-advice", NULL },
5686   {  5, &hf_x411_PhysicalDeliveryModes_counter_collection_with_telex_advice, -1, -1, "counter-collection-with-telex-advice", NULL },
5687   {  6, &hf_x411_PhysicalDeliveryModes_counter_collection_with_teletex_advice, -1, -1, "counter-collection-with-teletex-advice", NULL },
5688   {  7, &hf_x411_PhysicalDeliveryModes_bureau_fax_delivery, -1, -1, "bureau-fax-delivery", NULL },
5689   { 0, NULL, 0, 0, NULL, NULL }
5690 };
5691
5692 static int
5693 dissect_x411_PhysicalDeliveryModes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5694   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
5695                                     PhysicalDeliveryModes_bits, hf_index, ett_x411_PhysicalDeliveryModes,
5696                                     NULL);
5697
5698   return offset;
5699 }
5700
5701
5702 static const value_string x411_RegisteredMailType_vals[] = {
5703   {   0, "non-registered-mail" },
5704   {   1, "registered-mail" },
5705   {   2, "registered-mail-to-addressee-in-person" },
5706   { 0, NULL }
5707 };
5708
5709
5710 static int
5711 dissect_x411_RegisteredMailType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5712   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5713                                   NULL);
5714
5715   return offset;
5716 }
5717
5718
5719
5720 static int
5721 dissect_x411_RecipientNumberForAdvice(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5722   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
5723                                             pinfo, tree, tvb, offset, hf_index,
5724                                             NULL);
5725
5726   return offset;
5727 }
5728
5729
5730
5731 static int
5732 dissect_x411_PhysicalRenditionAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5733   offset = dissect_ber_object_identifier(implicit_tag, pinfo, tree, tvb, offset, hf_index, NULL);
5734
5735   return offset;
5736 }
5737
5738
5739 static const ber_sequence_t ORAddress_sequence[] = {
5740   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_built_in_standard_attributes },
5741   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_built_in_domain_defined_attributes },
5742   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_extension_attributes },
5743   { 0, 0, 0, NULL }
5744 };
5745
5746 int
5747 dissect_x411_ORAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5748 #line 537 "x411.cnf"
5749         
5750         oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0';     
5751         doing_address = TRUE;
5752         address_item = NULL;
5753
5754           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5755                                    ORAddress_sequence, hf_index, ett_x411_ORAddress);
5756
5757
5758         if(*oraddress && address_item)
5759                 proto_item_append_text(address_item, " %s/", oraddress);
5760
5761         doing_address = FALSE;
5762
5763
5764
5765   return offset;
5766 }
5767
5768
5769
5770 static int
5771 dissect_x411_OriginatorReturnAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5772   offset = dissect_x411_ORAddress(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5773
5774   return offset;
5775 }
5776
5777
5778 static const value_string x411_PhysicalDeliveryReportRequest_vals[] = {
5779   {   0, "return-of-undeliverable-mail-by-PDS" },
5780   {   1, "return-of-notification-by-PDS" },
5781   {   2, "return-of-notification-by-MHS" },
5782   {   3, "return-of-notification-by-MHS-and-PDS" },
5783   { 0, NULL }
5784 };
5785
5786
5787 static int
5788 dissect_x411_PhysicalDeliveryReportRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5789   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5790                                   NULL);
5791
5792   return offset;
5793 }
5794
5795
5796
5797 static int
5798 dissect_x411_OriginatorCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5799   offset = dissect_x509af_Certificates(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5800
5801   return offset;
5802 }
5803
5804
5805
5806 static int
5807 dissect_x411_MessageToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5808   offset = dissect_x411_Token(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5809
5810   return offset;
5811 }
5812
5813
5814
5815 static int
5816 dissect_x411_ContentConfidentialityAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5817   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5818
5819   return offset;
5820 }
5821 static int dissect_content_confidentiality_algorithm_identifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5822   return dissect_x411_ContentConfidentialityAlgorithmIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_content_confidentiality_algorithm_identifier);
5823 }
5824
5825
5826
5827 static int
5828 dissect_x411_ContentIntegrityCheck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5829   offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5830
5831   return offset;
5832 }
5833 static int dissect_content_integrity_check_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5834   return dissect_x411_ContentIntegrityCheck(TRUE, tvb, offset, pinfo, tree, hf_x411_content_integrity_check);
5835 }
5836
5837
5838
5839 static int
5840 dissect_x411_ContentIntegrityAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5841   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5842
5843   return offset;
5844 }
5845
5846
5847
5848 static int
5849 dissect_x411_MessageOriginAuthenticationCheck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5850   offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5851
5852   return offset;
5853 }
5854
5855
5856
5857 static int
5858 dissect_x411_MessageOriginAuthenticationAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5859   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5860
5861   return offset;
5862 }
5863
5864
5865
5866 static int
5867 dissect_x411_MessageSecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5868   offset = dissect_x411_SecurityLabel(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5869
5870   return offset;
5871 }
5872 static int dissect_message_security_label_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5873   return dissect_x411_MessageSecurityLabel(TRUE, tvb, offset, pinfo, tree, hf_x411_message_security_label);
5874 }
5875
5876
5877 static const value_string x411_ProofOfSubmissionRequest_vals[] = {
5878   {   0, "proof-of-submission-not-requested" },
5879   {   1, "proof-of-submission-requested" },
5880   { 0, NULL }
5881 };
5882
5883
5884 static int
5885 dissect_x411_ProofOfSubmissionRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5886   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5887                                   NULL);
5888
5889   return offset;
5890 }
5891
5892
5893 static const value_string x411_ProofOfDeliveryRequest_vals[] = {
5894   {   0, "proof-of-delivery-not-requested" },
5895   {   1, "proof-of-delivery-requested" },
5896   { 0, NULL }
5897 };
5898
5899
5900 static int
5901 dissect_x411_ProofOfDeliveryRequest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5902   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5903                                   NULL);
5904
5905   return offset;
5906 }
5907 static int dissect_proof_of_delivery_request_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5908   return dissect_x411_ProofOfDeliveryRequest(TRUE, tvb, offset, pinfo, tree, hf_x411_proof_of_delivery_request);
5909 }
5910
5911
5912 static const value_string x411_ContentCorrelator_vals[] = {
5913   {   0, "ia5text" },
5914   {   1, "octets" },
5915   { 0, NULL }
5916 };
5917
5918 static const ber_choice_t ContentCorrelator_choice[] = {
5919   {   0, BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_ia5text },
5920   {   1, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_octets },
5921   { 0, 0, 0, 0, NULL }
5922 };
5923
5924 static int
5925 dissect_x411_ContentCorrelator(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5926   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
5927                                  ContentCorrelator_choice, hf_index, ett_x411_ContentCorrelator,
5928                                  NULL);
5929
5930   return offset;
5931 }
5932
5933
5934
5935 static int
5936 dissect_x411_ProbeOriginAuthenticationCheck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5937   offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5938
5939   return offset;
5940 }
5941
5942
5943
5944 static int
5945 dissect_x411_ProbeOriginAuthenticationAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5946   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
5947
5948   return offset;
5949 }
5950
5951
5952 static const ber_sequence_t IntendedRecipientName_sequence[] = {
5953   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_intended_recipient },
5954   { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_redirection_time },
5955   { 0, 0, 0, NULL }
5956 };
5957
5958 static int
5959 dissect_x411_IntendedRecipientName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5960   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
5961                                    IntendedRecipientName_sequence, hf_index, ett_x411_IntendedRecipientName);
5962
5963   return offset;
5964 }
5965 static int dissect_intended_recipient_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5966   return dissect_x411_IntendedRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_intended_recipient_name);
5967 }
5968
5969
5970 static const value_string x411_RedirectionReason_vals[] = {
5971   {   0, "recipient-assigned-alternate-recipient" },
5972   {   1, "originator-requested-alternate-recipient" },
5973   {   2, "recipient-MD-assigned-alternate-recipient" },
5974   {   3, "directory-look-up" },
5975   {   4, "alias" },
5976   { 0, NULL }
5977 };
5978
5979
5980 static int
5981 dissect_x411_RedirectionReason(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
5982   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
5983                                   NULL);
5984
5985   return offset;
5986 }
5987 static int dissect_redirection_reason(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
5988   return dissect_x411_RedirectionReason(FALSE, tvb, offset, pinfo, tree, hf_x411_redirection_reason);
5989 }
5990
5991
5992 static const ber_sequence_t Redirection_sequence[] = {
5993   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_intended_recipient_name },
5994   { BER_CLASS_UNI, BER_UNI_TAG_ENUMERATED, BER_FLAGS_NOOWNTAG, dissect_redirection_reason },
5995   { 0, 0, 0, NULL }
5996 };
5997
5998 static int
5999 dissect_x411_Redirection(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6000   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6001                                    Redirection_sequence, hf_index, ett_x411_Redirection);
6002
6003   return offset;
6004 }
6005 static int dissect_RedirectionHistory_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6006   return dissect_x411_Redirection(FALSE, tvb, offset, pinfo, tree, hf_x411_RedirectionHistory_item);
6007 }
6008
6009
6010 static const ber_sequence_t RedirectionHistory_sequence_of[1] = {
6011   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_RedirectionHistory_item },
6012 };
6013
6014 static int
6015 dissect_x411_RedirectionHistory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6016   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6017                                       RedirectionHistory_sequence_of, hf_index, ett_x411_RedirectionHistory);
6018
6019   return offset;
6020 }
6021
6022
6023 static const ber_sequence_t DLExpansion_sequence[] = {
6024   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_dl },
6025   { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_dl_expansion_time },
6026   { 0, 0, 0, NULL }
6027 };
6028
6029 static int
6030 dissect_x411_DLExpansion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6031   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6032                                    DLExpansion_sequence, hf_index, ett_x411_DLExpansion);
6033
6034   return offset;
6035 }
6036 static int dissect_DLExpansionHistory_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6037   return dissect_x411_DLExpansion(FALSE, tvb, offset, pinfo, tree, hf_x411_DLExpansionHistory_item);
6038 }
6039
6040
6041 static const ber_sequence_t DLExpansionHistory_sequence_of[1] = {
6042   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_DLExpansionHistory_item },
6043 };
6044
6045 static int
6046 dissect_x411_DLExpansionHistory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6047   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6048                                       DLExpansionHistory_sequence_of, hf_index, ett_x411_DLExpansionHistory);
6049
6050   return offset;
6051 }
6052
6053
6054
6055 static int
6056 dissect_x411_PhysicalForwardingAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6057   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6058
6059   return offset;
6060 }
6061
6062
6063 static const ber_sequence_t OriginatorAndDLExpansion_sequence[] = {
6064   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_originator_or_dl_name },
6065   { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_origination_or_expansion_time },
6066   { 0, 0, 0, NULL }
6067 };
6068
6069 static int
6070 dissect_x411_OriginatorAndDLExpansion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6071   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6072                                    OriginatorAndDLExpansion_sequence, hf_index, ett_x411_OriginatorAndDLExpansion);
6073
6074   return offset;
6075 }
6076 static int dissect_OriginatorAndDLExpansionHistory_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6077   return dissect_x411_OriginatorAndDLExpansion(FALSE, tvb, offset, pinfo, tree, hf_x411_OriginatorAndDLExpansionHistory_item);
6078 }
6079
6080
6081 static const ber_sequence_t OriginatorAndDLExpansionHistory_sequence_of[1] = {
6082   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_OriginatorAndDLExpansionHistory_item },
6083 };
6084
6085 static int
6086 dissect_x411_OriginatorAndDLExpansionHistory(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6087   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6088                                       OriginatorAndDLExpansionHistory_sequence_of, hf_index, ett_x411_OriginatorAndDLExpansionHistory);
6089
6090   return offset;
6091 }
6092
6093
6094
6095 static int
6096 dissect_x411_ReportingDLName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6097   offset = dissect_x411_ORAddressAndOptionalDirectoryName(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6098
6099   return offset;
6100 }
6101
6102
6103
6104 static int
6105 dissect_x411_ReportingMTACertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6106   offset = dissect_x509af_Certificates(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6107
6108   return offset;
6109 }
6110
6111
6112
6113 static int
6114 dissect_x411_ReportOriginAuthenticationCheck(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6115   offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6116
6117   return offset;
6118 }
6119
6120
6121
6122 static int
6123 dissect_x411_ReportOriginAuthenticationAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6124   offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6125
6126   return offset;
6127 }
6128
6129
6130 static const ber_sequence_t PerRecipientDeliveryReportFields_sequence[] = {
6131   { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_message_delivery_time },
6132   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_type_of_MTS_user },
6133   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_recipient_certificate_impl },
6134   { 0, 0, 0, NULL }
6135 };
6136
6137 static int
6138 dissect_x411_PerRecipientDeliveryReportFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6139   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6140                                    PerRecipientDeliveryReportFields_sequence, hf_index, ett_x411_PerRecipientDeliveryReportFields);
6141
6142   return offset;
6143 }
6144 static int dissect_report_type_delivery_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6145   return dissect_x411_PerRecipientDeliveryReportFields(TRUE, tvb, offset, pinfo, tree, hf_x411_report_type_delivery);
6146 }
6147
6148
6149 static const ber_sequence_t PerRecipientNonDeliveryReportFields_sequence[] = {
6150   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_non_delivery_reason_code },
6151   { BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_non_delivery_diagnostic_code },
6152   { 0, 0, 0, NULL }
6153 };
6154
6155 static int
6156 dissect_x411_PerRecipientNonDeliveryReportFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6157   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6158                                    PerRecipientNonDeliveryReportFields_sequence, hf_index, ett_x411_PerRecipientNonDeliveryReportFields);
6159
6160   return offset;
6161 }
6162 static int dissect_non_delivery_report_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6163   return dissect_x411_PerRecipientNonDeliveryReportFields(TRUE, tvb, offset, pinfo, tree, hf_x411_non_delivery_report);
6164 }
6165
6166
6167 static const value_string x411_T_report_type_vals[] = {
6168   {   0, "delivery" },
6169   {   1, "non-delivery" },
6170   { 0, NULL }
6171 };
6172
6173 static const ber_choice_t T_report_type_choice[] = {
6174   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_report_type_delivery_impl },
6175   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_non_delivery_report_impl },
6176   { 0, 0, 0, 0, NULL }
6177 };
6178
6179 static int
6180 dissect_x411_T_report_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6181   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6182                                  T_report_type_choice, hf_index, ett_x411_T_report_type,
6183                                  NULL);
6184
6185   return offset;
6186 }
6187 static int dissect_report_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6188   return dissect_x411_T_report_type(FALSE, tvb, offset, pinfo, tree, hf_x411_report_type);
6189 }
6190
6191
6192 static const ber_sequence_t PerRecipientReportFields_sequence[] = {
6193   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_actual_recipient_name },
6194   { BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_originally_intended_recipient_name },
6195   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_report_type },
6196   { 0, 0, 0, NULL }
6197 };
6198
6199 static int
6200 dissect_x411_PerRecipientReportFields(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6201   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6202                                    PerRecipientReportFields_sequence, hf_index, ett_x411_PerRecipientReportFields);
6203
6204   return offset;
6205 }
6206
6207
6208
6209 int
6210 dissect_x411_OriginatingMTACertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6211   offset = dissect_x509af_Certificates(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6212
6213   return offset;
6214 }
6215
6216
6217
6218 int
6219 dissect_x411_ProofOfSubmission(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6220   offset = dissect_x411_Signature(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6221
6222   return offset;
6223 }
6224
6225
6226 static const ber_sequence_t ReportingMTAName_sequence[] = {
6227   { BER_CLASS_APP, 3, BER_FLAGS_NOOWNTAG, dissect_domain },
6228   { BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_mta_name },
6229   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_mta_directory_name_impl },
6230   { 0, 0, 0, NULL }
6231 };
6232
6233 static int
6234 dissect_x411_ReportingMTAName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6235   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6236                                    ReportingMTAName_sequence, hf_index, ett_x411_ReportingMTAName);
6237
6238   return offset;
6239 }
6240
6241
6242 static const value_string x411_ExtendedCertificate_vals[] = {
6243   {   0, "directory-entry" },
6244   {   1, "certificate" },
6245   { 0, NULL }
6246 };
6247
6248 static const ber_choice_t ExtendedCertificate_choice[] = {
6249   {   0, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_directory_entry_impl },
6250   {   1, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_certificate_impl },
6251   { 0, 0, 0, 0, NULL }
6252 };
6253
6254 static int
6255 dissect_x411_ExtendedCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6256   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6257                                  ExtendedCertificate_choice, hf_index, ett_x411_ExtendedCertificate,
6258                                  NULL);
6259
6260   return offset;
6261 }
6262 static int dissect_ExtendedCertificates_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6263   return dissect_x411_ExtendedCertificate(FALSE, tvb, offset, pinfo, tree, hf_x411_ExtendedCertificates_item);
6264 }
6265
6266
6267 static const ber_sequence_t ExtendedCertificates_set_of[1] = {
6268   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_ExtendedCertificates_item },
6269 };
6270
6271 int
6272 dissect_x411_ExtendedCertificates(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6273   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
6274                                  ExtendedCertificates_set_of, hf_index, ett_x411_ExtendedCertificates);
6275
6276   return offset;
6277 }
6278
6279
6280 static const ber_sequence_t DLExemptedRecipients_set_of[1] = {
6281   { BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_DLExemptedRecipients_item },
6282 };
6283
6284 static int
6285 dissect_x411_DLExemptedRecipients(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6286   offset = dissect_ber_set_of(implicit_tag, pinfo, tree, tvb, offset,
6287                                  DLExemptedRecipients_set_of, hf_index, ett_x411_DLExemptedRecipients);
6288
6289   return offset;
6290 }
6291
6292
6293 static const ber_sequence_t CertificateSelectors_set[] = {
6294   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryption_recipient_impl },
6295   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryption_originator_impl },
6296   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_selectors_content_integrity_check_impl },
6297   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_token_signature_impl },
6298   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_message_origin_authentication_impl },
6299   { 0, 0, 0, NULL }
6300 };
6301
6302 static int
6303 dissect_x411_CertificateSelectors(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6304   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
6305                               CertificateSelectors_set, hf_index, ett_x411_CertificateSelectors);
6306
6307   return offset;
6308 }
6309
6310
6311
6312 static int
6313 dissect_x411_CommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6314 #line 479 "x411.cnf"
6315         tvbuff_t        *string = NULL;
6316
6317           offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
6318                                             pinfo, tree, tvb, offset, hf_index,
6319                                             &string);
6320
6321
6322         if(doing_address && string) {
6323                 g_strlcat(oraddress, "/CN=", MAX_ORA_STR_LEN);
6324                 g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN);
6325         }
6326
6327
6328
6329
6330
6331   return offset;
6332 }
6333
6334
6335
6336 static int
6337 dissect_x411_TeletexCommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6338   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
6339                                             pinfo, tree, tvb, offset, hf_index,
6340                                             NULL);
6341
6342   return offset;
6343 }
6344
6345
6346
6347 static int
6348 dissect_x411_BMPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6349   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_BMPString,
6350                                             pinfo, tree, tvb, offset, hf_index,
6351                                             NULL);
6352
6353   return offset;
6354 }
6355 static int dissect_two_octets(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6356   return dissect_x411_BMPString(FALSE, tvb, offset, pinfo, tree, hf_x411_two_octets);
6357 }
6358
6359
6360
6361 static int
6362 dissect_x411_UniversalString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6363   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UniversalString,
6364                                             pinfo, tree, tvb, offset, hf_index,
6365                                             NULL);
6366
6367   return offset;
6368 }
6369 static int dissect_four_octets(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6370   return dissect_x411_UniversalString(FALSE, tvb, offset, pinfo, tree, hf_x411_four_octets);
6371 }
6372
6373
6374 static const value_string x411_T_character_encoding_vals[] = {
6375   {   0, "two-octets" },
6376   {   1, "four-octets" },
6377   { 0, NULL }
6378 };
6379
6380 static const ber_choice_t T_character_encoding_choice[] = {
6381   {   0, BER_CLASS_UNI, BER_UNI_TAG_BMPString, BER_FLAGS_NOOWNTAG, dissect_two_octets },
6382   {   1, BER_CLASS_UNI, BER_UNI_TAG_UniversalString, BER_FLAGS_NOOWNTAG, dissect_four_octets },
6383   { 0, 0, 0, 0, NULL }
6384 };
6385
6386 static int
6387 dissect_x411_T_character_encoding(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6388   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6389                                  T_character_encoding_choice, hf_index, ett_x411_T_character_encoding,
6390                                  NULL);
6391
6392   return offset;
6393 }
6394 static int dissect_character_encoding(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6395   return dissect_x411_T_character_encoding(FALSE, tvb, offset, pinfo, tree, hf_x411_character_encoding);
6396 }
6397
6398
6399 static const ber_sequence_t UniversalOrBMPString_set[] = {
6400   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_character_encoding },
6401   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_iso_639_language_code },
6402   { 0, 0, 0, NULL }
6403 };
6404
6405 int
6406 dissect_x411_UniversalOrBMPString(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6407   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
6408                               UniversalOrBMPString_set, hf_index, ett_x411_UniversalOrBMPString);
6409
6410   return offset;
6411 }
6412 static int dissect_universal_surname_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6413   return dissect_x411_UniversalOrBMPString(TRUE, tvb, offset, pinfo, tree, hf_x411_universal_surname);
6414 }
6415 static int dissect_universal_given_name_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6416   return dissect_x411_UniversalOrBMPString(TRUE, tvb, offset, pinfo, tree, hf_x411_universal_given_name);
6417 }
6418 static int dissect_universal_initials_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6419   return dissect_x411_UniversalOrBMPString(TRUE, tvb, offset, pinfo, tree, hf_x411_universal_initials);
6420 }
6421 static int dissect_universal_generation_qualifier_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6422   return dissect_x411_UniversalOrBMPString(TRUE, tvb, offset, pinfo, tree, hf_x411_universal_generation_qualifier);
6423 }
6424 static int dissect_universal_type(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6425   return dissect_x411_UniversalOrBMPString(FALSE, tvb, offset, pinfo, tree, hf_x411_universal_type);
6426 }
6427 static int dissect_universal_value(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6428   return dissect_x411_UniversalOrBMPString(FALSE, tvb, offset, pinfo, tree, hf_x411_universal_value);
6429 }
6430
6431
6432
6433 static int
6434 dissect_x411_UniversalCommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6435   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6436
6437   return offset;
6438 }
6439
6440
6441
6442 static int
6443 dissect_x411_TeletexOrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6444   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
6445                                             pinfo, tree, tvb, offset, hf_index,
6446                                             NULL);
6447
6448   return offset;
6449 }
6450
6451
6452
6453 static int
6454 dissect_x411_UniversalOrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6455   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6456
6457   return offset;
6458 }
6459
6460
6461 static const ber_sequence_t TeletexPersonalName_set[] = {
6462   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_teletex_surname_impl },
6463   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teletex_given_name_impl },
6464   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teletex_initials_impl },
6465   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teletex_generation_qualifier_impl },
6466   { 0, 0, 0, NULL }
6467 };
6468
6469 static int
6470 dissect_x411_TeletexPersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6471   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
6472                               TeletexPersonalName_set, hf_index, ett_x411_TeletexPersonalName);
6473
6474   return offset;
6475 }
6476
6477
6478 static const ber_sequence_t UniversalPersonalName_set[] = {
6479   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_universal_surname_impl },
6480   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_universal_given_name_impl },
6481   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_universal_initials_impl },
6482   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_universal_generation_qualifier_impl },
6483   { 0, 0, 0, NULL }
6484 };
6485
6486 static int
6487 dissect_x411_UniversalPersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6488   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
6489                               UniversalPersonalName_set, hf_index, ett_x411_UniversalPersonalName);
6490
6491   return offset;
6492 }
6493
6494
6495
6496 static int
6497 dissect_x411_TeletexOrganizationalUnitName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6498   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
6499                                             pinfo, tree, tvb, offset, hf_index,
6500                                             NULL);
6501
6502   return offset;
6503 }
6504 static int dissect_TeletexOrganizationalUnitNames_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6505   return dissect_x411_TeletexOrganizationalUnitName(FALSE, tvb, offset, pinfo, tree, hf_x411_TeletexOrganizationalUnitNames_item);
6506 }
6507
6508
6509 static const ber_sequence_t TeletexOrganizationalUnitNames_sequence_of[1] = {
6510   { BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_TeletexOrganizationalUnitNames_item },
6511 };
6512
6513 static int
6514 dissect_x411_TeletexOrganizationalUnitNames(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6515   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6516                                       TeletexOrganizationalUnitNames_sequence_of, hf_index, ett_x411_TeletexOrganizationalUnitNames);
6517
6518   return offset;
6519 }
6520
6521
6522
6523 static int
6524 dissect_x411_UniversalOrganizationalUnitName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6525   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6526
6527   return offset;
6528 }
6529 static int dissect_UniversalOrganizationalUnitNames_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6530   return dissect_x411_UniversalOrganizationalUnitName(FALSE, tvb, offset, pinfo, tree, hf_x411_UniversalOrganizationalUnitNames_item);
6531 }
6532
6533
6534 static const ber_sequence_t UniversalOrganizationalUnitNames_sequence_of[1] = {
6535   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_UniversalOrganizationalUnitNames_item },
6536 };
6537
6538 static int
6539 dissect_x411_UniversalOrganizationalUnitNames(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6540   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6541                                       UniversalOrganizationalUnitNames_sequence_of, hf_index, ett_x411_UniversalOrganizationalUnitNames);
6542
6543   return offset;
6544 }
6545
6546
6547
6548 static int
6549 dissect_x411_PDSName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6550   offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
6551                                             pinfo, tree, tvb, offset, hf_index,
6552                                             NULL);
6553
6554   return offset;
6555 }
6556
6557
6558 static const value_string x411_PhysicalDeliveryCountryName_vals[] = {
6559   {   0, "x121-dcc-code" },
6560   {   1, "iso-3166-alpha2-code" },
6561   { 0, NULL }
6562 };
6563
6564 static const ber_choice_t PhysicalDeliveryCountryName_choice[] = {
6565   {   0, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_x121_dcc_code },
6566   {   1, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_iso_3166_alpha2_code },
6567   { 0, 0, 0, 0, NULL }
6568 };
6569
6570 static int
6571 dissect_x411_PhysicalDeliveryCountryName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6572   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6573                                  PhysicalDeliveryCountryName_choice, hf_index, ett_x411_PhysicalDeliveryCountryName,
6574                                  NULL);
6575
6576   return offset;
6577 }
6578
6579
6580 static const value_string x411_PostalCode_vals[] = {
6581   {   0, "numeric-code" },
6582   {   1, "printable-code" },
6583   { 0, NULL }
6584 };
6585
6586 static const ber_choice_t PostalCode_choice[] = {
6587   {   0, BER_CLASS_UNI, BER_UNI_TAG_NumericString, BER_FLAGS_NOOWNTAG, dissect_numeric_code },
6588   {   1, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printable_code },
6589   { 0, 0, 0, 0, NULL }
6590 };
6591
6592 static int
6593 dissect_x411_PostalCode(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6594   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6595                                  PostalCode_choice, hf_index, ett_x411_PostalCode,
6596                                  NULL);
6597
6598   return offset;
6599 }
6600
6601
6602 static const ber_sequence_t PDSParameter_set[] = {
6603   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_printable_string },
6604   { BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_teletex_string },
6605   { 0, 0, 0, NULL }
6606 };
6607
6608 static int
6609 dissect_x411_PDSParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6610   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
6611                               PDSParameter_set, hf_index, ett_x411_PDSParameter);
6612
6613   return offset;
6614 }
6615
6616
6617
6618 static int
6619 dissect_x411_PhysicalDeliveryOfficeName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6620   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6621
6622   return offset;
6623 }
6624
6625
6626
6627 static int
6628 dissect_x411_UniversalPDSParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6629   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6630
6631   return offset;
6632 }
6633
6634
6635
6636 static int
6637 dissect_x411_UniversalPhysicalDeliveryOfficeName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6638   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6639
6640   return offset;
6641 }
6642
6643
6644
6645 static int
6646 dissect_x411_PhysicalDeliveryOfficeNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6647   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6648
6649   return offset;
6650 }
6651
6652
6653
6654 static int
6655 dissect_x411_UniversalPhysicalDeliveryOfficeNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6656   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6657
6658   return offset;
6659 }
6660
6661
6662
6663 static int
6664 dissect_x411_ExtensionORAddressComponents(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6665   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6666
6667   return offset;
6668 }
6669
6670
6671
6672 static int
6673 dissect_x411_UniversalExtensionORAddressComponents(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6674   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6675
6676   return offset;
6677 }
6678
6679
6680
6681 static int
6682 dissect_x411_PhysicalDeliveryPersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6683   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6684
6685   return offset;
6686 }
6687
6688
6689
6690 static int
6691 dissect_x411_UniversalPhysicalDeliveryPersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6692   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6693
6694   return offset;
6695 }
6696
6697
6698
6699 static int
6700 dissect_x411_PhysicalDeliveryOrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6701   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6702
6703   return offset;
6704 }
6705
6706
6707
6708 static int
6709 dissect_x411_UniversalPhysicalDeliveryOrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6710   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6711
6712   return offset;
6713 }
6714
6715
6716
6717 static int
6718 dissect_x411_ExtensionPhysicalDeliveryAddressComponents(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6719   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6720
6721   return offset;
6722 }
6723
6724
6725
6726 static int
6727 dissect_x411_UniversalExtensionPhysicalDeliveryAddressComponents(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6728   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6729
6730   return offset;
6731 }
6732
6733
6734 static const ber_sequence_t T_printable_address_sequence_of[1] = {
6735   { BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_printable_address_item },
6736 };
6737
6738 static int
6739 dissect_x411_T_printable_address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6740   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6741                                       T_printable_address_sequence_of, hf_index, ett_x411_T_printable_address);
6742
6743   return offset;
6744 }
6745 static int dissect_printable_address(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6746   return dissect_x411_T_printable_address(FALSE, tvb, offset, pinfo, tree, hf_x411_printable_address);
6747 }
6748
6749
6750 static const ber_sequence_t UnformattedPostalAddress_set[] = {
6751   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_printable_address },
6752   { BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_teletex_string },
6753   { 0, 0, 0, NULL }
6754 };
6755
6756 static int
6757 dissect_x411_UnformattedPostalAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6758   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
6759                               UnformattedPostalAddress_set, hf_index, ett_x411_UnformattedPostalAddress);
6760
6761   return offset;
6762 }
6763
6764
6765
6766 static int
6767 dissect_x411_UniversalUnformattedPostalAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6768   offset = dissect_x411_UniversalOrBMPString(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6769
6770   return offset;
6771 }
6772
6773
6774
6775 static int
6776 dissect_x411_StreetAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6777   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6778
6779   return offset;
6780 }
6781
6782
6783
6784 static int
6785 dissect_x411_UniversalStreetAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6786   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6787
6788   return offset;
6789 }
6790
6791
6792
6793 static int
6794 dissect_x411_PostOfficeBoxAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6795   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6796
6797   return offset;
6798 }
6799
6800
6801
6802 static int
6803 dissect_x411_UniversalPostOfficeBoxAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6804   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6805
6806   return offset;
6807 }
6808
6809
6810
6811 static int
6812 dissect_x411_UniversalPosteRestanteAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6813   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6814
6815   return offset;
6816 }
6817
6818
6819
6820 static int
6821 dissect_x411_UniquePostalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6822   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6823
6824   return offset;
6825 }
6826
6827
6828
6829 static int
6830 dissect_x411_UniversalUniquePostalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6831   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6832
6833   return offset;
6834 }
6835
6836
6837
6838 static int
6839 dissect_x411_LocalPostalAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6840   offset = dissect_x411_PDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6841
6842   return offset;
6843 }
6844
6845
6846
6847 static int
6848 dissect_x411_UniversalLocalPostalAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6849   offset = dissect_x411_UniversalPDSParameter(implicit_tag, tvb, offset, pinfo, tree, hf_index);
6850
6851   return offset;
6852 }
6853
6854
6855 static const ber_sequence_t T_e163_4_address_sequence[] = {
6856   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_number_impl },
6857   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_sub_address_impl },
6858   { 0, 0, 0, NULL }
6859 };
6860
6861 static int
6862 dissect_x411_T_e163_4_address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6863   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6864                                    T_e163_4_address_sequence, hf_index, ett_x411_T_e163_4_address);
6865
6866   return offset;
6867 }
6868 static int dissect_e163_4_address(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6869   return dissect_x411_T_e163_4_address(FALSE, tvb, offset, pinfo, tree, hf_x411_e163_4_address);
6870 }
6871
6872
6873 static const value_string x411_ExtendedNetworkAddress_vals[] = {
6874   {   0, "e163-4-address" },
6875   {   1, "psap-address" },
6876   { 0, NULL }
6877 };
6878
6879 static const ber_choice_t ExtendedNetworkAddress_choice[] = {
6880   {   0, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_e163_4_address },
6881   {   1, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_psap_address_impl },
6882   { 0, 0, 0, 0, NULL }
6883 };
6884
6885 static int
6886 dissect_x411_ExtendedNetworkAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6887   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
6888                                  ExtendedNetworkAddress_choice, hf_index, ett_x411_ExtendedNetworkAddress,
6889                                  NULL);
6890
6891   return offset;
6892 }
6893
6894
6895 static const value_string x411_TerminalType_vals[] = {
6896   {   3, "telex" },
6897   {   4, "teletex" },
6898   {   5, "g3-facsimile" },
6899   {   6, "g4-facsimile" },
6900   {   7, "ia5-terminal" },
6901   {   8, "videotex" },
6902   { 0, NULL }
6903 };
6904
6905
6906 static int
6907 dissect_x411_TerminalType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6908   offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index,
6909                                   NULL);
6910
6911   return offset;
6912 }
6913
6914
6915 static const ber_sequence_t TeletexDomainDefinedAttribute_sequence[] = {
6916   { BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_type },
6917   { BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_teletex_value },
6918   { 0, 0, 0, NULL }
6919 };
6920
6921 static int
6922 dissect_x411_TeletexDomainDefinedAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6923   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6924                                    TeletexDomainDefinedAttribute_sequence, hf_index, ett_x411_TeletexDomainDefinedAttribute);
6925
6926   return offset;
6927 }
6928 static int dissect_TeletexDomainDefinedAttributes_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6929   return dissect_x411_TeletexDomainDefinedAttribute(FALSE, tvb, offset, pinfo, tree, hf_x411_TeletexDomainDefinedAttributes_item);
6930 }
6931
6932
6933 static const ber_sequence_t TeletexDomainDefinedAttributes_sequence_of[1] = {
6934   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_TeletexDomainDefinedAttributes_item },
6935 };
6936
6937 static int
6938 dissect_x411_TeletexDomainDefinedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6939   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6940                                       TeletexDomainDefinedAttributes_sequence_of, hf_index, ett_x411_TeletexDomainDefinedAttributes);
6941
6942   return offset;
6943 }
6944
6945
6946 static const ber_sequence_t UniversalDomainDefinedAttribute_sequence[] = {
6947   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_universal_type },
6948   { BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_universal_value },
6949   { 0, 0, 0, NULL }
6950 };
6951
6952 static int
6953 dissect_x411_UniversalDomainDefinedAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6954   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
6955                                    UniversalDomainDefinedAttribute_sequence, hf_index, ett_x411_UniversalDomainDefinedAttribute);
6956
6957   return offset;
6958 }
6959 static int dissect_UniversalDomainDefinedAttributes_item(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
6960   return dissect_x411_UniversalDomainDefinedAttribute(FALSE, tvb, offset, pinfo, tree, hf_x411_UniversalDomainDefinedAttributes_item);
6961 }
6962
6963
6964 static const ber_sequence_t UniversalDomainDefinedAttributes_sequence_of[1] = {
6965   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_UniversalDomainDefinedAttributes_item },
6966 };
6967
6968 static int
6969 dissect_x411_UniversalDomainDefinedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6970   offset = dissect_ber_sequence_of(implicit_tag, pinfo, tree, tvb, offset,
6971                                       UniversalDomainDefinedAttributes_sequence_of, hf_index, ett_x411_UniversalDomainDefinedAttributes);
6972
6973   return offset;
6974 }
6975
6976
6977 static const ber_sequence_t NonBasicParameters_set[] = {
6978   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_g3_facsimile_impl },
6979   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_teletex_impl },
6980   { 0, 0, 0, NULL }
6981 };
6982
6983 static int
6984 dissect_x411_NonBasicParameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
6985   offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset,
6986                               NonBasicParameters_set, hf_index, ett_x411_NonBasicParameters);
6987
6988   return offset;
6989 }
6990
6991
6992 static const ber_sequence_t MTANameAndOptionalGDI_sequence[] = {
6993   { BER_CLASS_APP, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_global_domain_identifier },
6994   { BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_mta_name },
6995   { 0, 0, 0, NULL }
6996 };
6997
6998 static int
6999 dissect_x411_MTANameAndOptionalGDI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7000 #line 593 "x411.cnf"
7001
7002         doing_address = TRUE;
7003
7004           offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7005                                    MTANameAndOptionalGDI_sequence, hf_index, ett_x411_MTANameAndOptionalGDI);
7006
7007
7008         doing_address = FALSE;
7009         proto_item_append_text(tree, ")");
7010
7011
7012
7013   return offset;
7014 }
7015 static int dissect_token_mta_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
7016   return dissect_x411_MTANameAndOptionalGDI(TRUE, tvb, offset, pinfo, tree, hf_x411_token_mta);
7017 }
7018
7019
7020 static const value_string x411_T_name_vals[] = {
7021   {   0, "recipient-name" },
7022   {   1, "mta" },
7023   { 0, NULL }
7024 };
7025
7026 static const ber_choice_t T_name_choice[] = {
7027   {   0, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_token_recipient_name },
7028   {   1, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_token_mta_impl },
7029   { 0, 0, 0, 0, NULL }
7030 };
7031
7032 static int
7033 dissect_x411_T_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7034   offset = dissect_ber_choice(pinfo, tree, tvb, offset,
7035                                  T_name_choice, hf_index, ett_x411_T_name,
7036                                  NULL);
7037
7038   return offset;
7039 }
7040 static int dissect_name(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
7041   return dissect_x411_T_name(FALSE, tvb, offset, pinfo, tree, hf_x411_name);
7042 }
7043
7044
7045
7046 static int
7047 dissect_x411_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7048 #line 693 "x411.cnf"
7049
7050         offset=call_x411_oid_callback("x411.tokendata", tvb, offset, pinfo, tree);
7051
7052
7053
7054   return offset;
7055 }
7056 static int dissect_value_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
7057   return dissect_x411_T_value(TRUE, tvb, offset, pinfo, tree, hf_x411_value);
7058 }
7059
7060
7061 static const ber_sequence_t TokenData_sequence[] = {
7062   { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_token_data_type_impl },
7063   { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_value_impl },
7064   { 0, 0, 0, NULL }
7065 };
7066
7067 static int
7068 dissect_x411_TokenData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7069   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7070                                    TokenData_sequence, hf_index, ett_x411_TokenData);
7071
7072   return offset;
7073 }
7074 static int dissect_signed_data_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
7075   return dissect_x411_TokenData(TRUE, tvb, offset, pinfo, tree, hf_x411_signed_data);
7076 }
7077
7078
7079 static const ber_sequence_t AsymmetricTokenData_sequence[] = {
7080   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signature_algorithm_identifier },
7081   { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_name },
7082   { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_time },
7083   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signed_data_impl },
7084   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryption_algorithm_identifier_impl },
7085   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encrypted_data_impl },
7086   { 0, 0, 0, NULL }
7087 };
7088
7089 static int
7090 dissect_x411_AsymmetricTokenData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7091   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7092                                    AsymmetricTokenData_sequence, hf_index, ett_x411_AsymmetricTokenData);
7093
7094   return offset;
7095 }
7096 static int dissect_asymmetric_token_data(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
7097   return dissect_x411_AsymmetricTokenData(FALSE, tvb, offset, pinfo, tree, hf_x411_asymmetric_token_data);
7098 }
7099
7100
7101 static const ber_sequence_t AsymmetricToken_sequence[] = {
7102   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_asymmetric_token_data },
7103   { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithm_identifier },
7104   { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted },
7105   { 0, 0, 0, NULL }
7106 };
7107
7108 static int
7109 dissect_x411_AsymmetricToken(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7110   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7111                                    AsymmetricToken_sequence, hf_index, ett_x411_AsymmetricToken);
7112
7113   return offset;
7114 }
7115
7116
7117
7118 static int
7119 dissect_x411_RandomNumber(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7120   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7121                                     NULL, hf_index, -1,
7122                                     NULL);
7123
7124   return offset;
7125 }
7126
7127
7128
7129 static int
7130 dissect_x411_BindTokenSignedData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7131   offset = dissect_x411_RandomNumber(implicit_tag, tvb, offset, pinfo, tree, hf_index);
7132
7133   return offset;
7134 }
7135
7136
7137 static const ber_sequence_t MessageTokenSignedData_sequence[] = {
7138   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_confidentiality_algorithm_identifier_impl },
7139   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_integrity_check_impl },
7140   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_message_security_label_impl },
7141   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_proof_of_delivery_request_impl },
7142   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_message_sequence_number_impl },
7143   { 0, 0, 0, NULL }
7144 };
7145
7146 static int
7147 dissect_x411_MessageTokenSignedData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7148   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7149                                    MessageTokenSignedData_sequence, hf_index, ett_x411_MessageTokenSignedData);
7150
7151   return offset;
7152 }
7153
7154
7155
7156 static int
7157 dissect_x411_EncryptionKey(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7158   offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset,
7159                                     NULL, hf_index, -1,
7160                                     NULL);
7161
7162   return offset;
7163 }
7164 static int dissect_content_confidentiality_key_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
7165   return dissect_x411_EncryptionKey(TRUE, tvb, offset, pinfo, tree, hf_x411_content_confidentiality_key);
7166 }
7167 static int dissect_content_integrity_key_impl(packet_info *pinfo _U_, proto_tree *tree _U_, tvbuff_t *tvb _U_, int offset _U_) {
7168   return dissect_x411_EncryptionKey(TRUE, tvb, offset, pinfo, tree, hf_x411_content_integrity_key);
7169 }
7170
7171
7172 static const ber_sequence_t MessageTokenEncryptedData_sequence[] = {
7173   { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_confidentiality_key_impl },
7174   { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_integrity_check_impl },
7175   { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_message_security_label_impl },
7176   { BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_content_integrity_key_impl },
7177   { BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_message_sequence_number_impl },
7178   { 0, 0, 0, NULL }
7179 };
7180
7181 static int
7182 dissect_x411_MessageTokenEncryptedData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7183   offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset,
7184                                    MessageTokenEncryptedData_sequence, hf_index, ett_x411_MessageTokenEncryptedData);
7185
7186   return offset;
7187 }
7188
7189
7190
7191 static int
7192 dissect_x411_BindTokenEncryptedData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_) {
7193   offset = dissect_acse_EXTERNALt(implicit_tag, tvb, offset, pinfo, tree, hf_index);
7194
7195   return offset;
7196 }
7197
7198 /*--- PDUs ---*/
7199
7200 static void dissect_MTABindArgument_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7201   dissect_x411_MTABindArgument(FALSE, tvb, 0, pinfo, tree, hf_x411_MTABindArgument_PDU);
7202 }
7203 static void dissect_MTABindResult_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7204   dissect_x411_MTABindResult(FALSE, tvb, 0, pinfo, tree, hf_x411_MTABindResult_PDU);
7205 }
7206 static void dissect_MTABindError_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7207   dissect_x411_MTABindError(FALSE, tvb, 0, pinfo, tree, hf_x411_MTABindError_PDU);
7208 }
7209 static void dissect_MTS_APDU_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7210   dissect_x411_MTS_APDU(FALSE, tvb, 0, pinfo, tree, hf_x411_MTS_APDU_PDU);
7211 }
7212 static void dissect_InternalTraceInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7213   dissect_x411_InternalTraceInformation(FALSE, tvb, 0, pinfo, tree, hf_x411_InternalTraceInformation_PDU);
7214 }
7215 static void dissect_TraceInformation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7216   dissect_x411_TraceInformation(FALSE, tvb, 0, pinfo, tree, hf_x411_TraceInformation_PDU);
7217 }
7218 static void dissect_ReportDeliveryArgument_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7219   dissect_x411_ReportDeliveryArgument(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportDeliveryArgument_PDU);
7220 }
7221 static void dissect_RecipientCertificate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7222   dissect_x411_RecipientCertificate(FALSE, tvb, 0, pinfo, tree, hf_x411_RecipientCertificate_PDU);
7223 }
7224 static void dissect_ProofOfDelivery_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7225   dissect_x411_ProofOfDelivery(FALSE, tvb, 0, pinfo, tree, hf_x411_ProofOfDelivery_PDU);
7226 }
7227 static void dissect_ExtendedContentType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7228   dissect_x411_ExtendedContentType(FALSE, tvb, 0, pinfo, tree, hf_x411_ExtendedContentType_PDU);
7229 }
7230 static void dissect_ContentLength_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7231   dissect_x411_ContentLength(FALSE, tvb, 0, pinfo, tree, hf_x411_ContentLength_PDU);
7232 }
7233 static void dissect_RecipientReassignmentProhibited_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7234   dissect_x411_RecipientReassignmentProhibited(FALSE, tvb, 0, pinfo, tree, hf_x411_RecipientReassignmentProhibited_PDU);
7235 }
7236 static void dissect_MTSOriginatorRequestedAlternateRecipient_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7237   dissect_x411_MTSOriginatorRequestedAlternateRecipient(FALSE, tvb, 0, pinfo, tree, hf_x411_MTSOriginatorRequestedAlternateRecipient_PDU);
7238 }
7239 static void dissect_DLExpansionProhibited_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7240   dissect_x411_DLExpansionProhibited(FALSE, tvb, 0, pinfo, tree, hf_x411_DLExpansionProhibited_PDU);
7241 }
7242 static void dissect_ConversionWithLossProhibited_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7243   dissect_x411_ConversionWithLossProhibited(FALSE, tvb, 0, pinfo, tree, hf_x411_ConversionWithLossProhibited_PDU);
7244 }
7245 static void dissect_LatestDeliveryTime_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7246   dissect_x411_LatestDeliveryTime(FALSE, tvb, 0, pinfo, tree, hf_x411_LatestDeliveryTime_PDU);
7247 }
7248 static void dissect_RequestedDeliveryMethod_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7249   dissect_x411_RequestedDeliveryMethod(FALSE, tvb, 0, pinfo, tree, hf_x411_RequestedDeliveryMethod_PDU);
7250 }
7251 static void dissect_PhysicalForwardingProhibited_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7252   dissect_x411_PhysicalForwardingProhibited(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalForwardingProhibited_PDU);
7253 }
7254 static void dissect_PhysicalForwardingAddressRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7255   dissect_x411_PhysicalForwardingAddressRequest(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalForwardingAddressRequest_PDU);
7256 }
7257 static void dissect_PhysicalDeliveryModes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7258   dissect_x411_PhysicalDeliveryModes(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalDeliveryModes_PDU);
7259 }
7260 static void dissect_RegisteredMailType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7261   dissect_x411_RegisteredMailType(FALSE, tvb, 0, pinfo, tree, hf_x411_RegisteredMailType_PDU);
7262 }
7263 static void dissect_RecipientNumberForAdvice_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7264   dissect_x411_RecipientNumberForAdvice(FALSE, tvb, 0, pinfo, tree, hf_x411_RecipientNumberForAdvice_PDU);
7265 }
7266 static void dissect_PhysicalRenditionAttributes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7267   dissect_x411_PhysicalRenditionAttributes(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalRenditionAttributes_PDU);
7268 }
7269 static void dissect_OriginatorReturnAddress_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7270   dissect_x411_OriginatorReturnAddress(FALSE, tvb, 0, pinfo, tree, hf_x411_OriginatorReturnAddress_PDU);
7271 }
7272 static void dissect_PhysicalDeliveryReportRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7273   dissect_x411_PhysicalDeliveryReportRequest(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalDeliveryReportRequest_PDU);
7274 }
7275 static void dissect_OriginatorCertificate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7276   dissect_x411_OriginatorCertificate(FALSE, tvb, 0, pinfo, tree, hf_x411_OriginatorCertificate_PDU);
7277 }
7278 static void dissect_MessageToken_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7279   dissect_x411_MessageToken(FALSE, tvb, 0, pinfo, tree, hf_x411_MessageToken_PDU);
7280 }
7281 static void dissect_ContentConfidentialityAlgorithmIdentifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7282   dissect_x411_ContentConfidentialityAlgorithmIdentifier(FALSE, tvb, 0, pinfo, tree, hf_x411_ContentConfidentialityAlgorithmIdentifier_PDU);
7283 }
7284 static void dissect_ContentIntegrityCheck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7285   dissect_x411_ContentIntegrityCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_ContentIntegrityCheck_PDU);
7286 }
7287 static void dissect_MessageOriginAuthenticationCheck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7288   dissect_x411_MessageOriginAuthenticationCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_MessageOriginAuthenticationCheck_PDU);
7289 }
7290 static void dissect_MessageSecurityLabel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7291   dissect_x411_MessageSecurityLabel(FALSE, tvb, 0, pinfo, tree, hf_x411_MessageSecurityLabel_PDU);
7292 }
7293 static void dissect_ProofOfSubmissionRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7294   dissect_x411_ProofOfSubmissionRequest(FALSE, tvb, 0, pinfo, tree, hf_x411_ProofOfSubmissionRequest_PDU);
7295 }
7296 static void dissect_ProofOfDeliveryRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7297   dissect_x411_ProofOfDeliveryRequest(FALSE, tvb, 0, pinfo, tree, hf_x411_ProofOfDeliveryRequest_PDU);
7298 }
7299 static void dissect_ContentCorrelator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7300   dissect_x411_ContentCorrelator(FALSE, tvb, 0, pinfo, tree, hf_x411_ContentCorrelator_PDU);
7301 }
7302 static void dissect_ProbeOriginAuthenticationCheck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7303   dissect_x411_ProbeOriginAuthenticationCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_ProbeOriginAuthenticationCheck_PDU);
7304 }
7305 static void dissect_RedirectionHistory_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7306   dissect_x411_RedirectionHistory(FALSE, tvb, 0, pinfo, tree, hf_x411_RedirectionHistory_PDU);
7307 }
7308 static void dissect_DLExpansionHistory_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7309   dissect_x411_DLExpansionHistory(FALSE, tvb, 0, pinfo, tree, hf_x411_DLExpansionHistory_PDU);
7310 }
7311 static void dissect_PhysicalForwardingAddress_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7312   dissect_x411_PhysicalForwardingAddress(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalForwardingAddress_PDU);
7313 }
7314 static void dissect_OriginatorAndDLExpansionHistory_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7315   dissect_x411_OriginatorAndDLExpansionHistory(FALSE, tvb, 0, pinfo, tree, hf_x411_OriginatorAndDLExpansionHistory_PDU);
7316 }
7317 static void dissect_ReportingDLName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7318   dissect_x411_ReportingDLName(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportingDLName_PDU);
7319 }
7320 static void dissect_ReportingMTACertificate_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7321   dissect_x411_ReportingMTACertificate(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportingMTACertificate_PDU);
7322 }
7323 static void dissect_ReportOriginAuthenticationCheck_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7324   dissect_x411_ReportOriginAuthenticationCheck(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportOriginAuthenticationCheck_PDU);
7325 }
7326 static void dissect_ProofOfSubmission_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7327   dissect_x411_ProofOfSubmission(FALSE, tvb, 0, pinfo, tree, hf_x411_ProofOfSubmission_PDU);
7328 }
7329 static void dissect_ReportingMTAName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7330   dissect_x411_ReportingMTAName(FALSE, tvb, 0, pinfo, tree, hf_x411_ReportingMTAName_PDU);
7331 }
7332 static void dissect_ExtendedCertificates_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7333   dissect_x411_ExtendedCertificates(FALSE, tvb, 0, pinfo, tree, hf_x411_ExtendedCertificates_PDU);
7334 }
7335 static void dissect_DLExemptedRecipients_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7336   dissect_x411_DLExemptedRecipients(FALSE, tvb, 0, pinfo, tree, hf_x411_DLExemptedRecipients_PDU);
7337 }
7338 static void dissect_CertificateSelectors_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7339   dissect_x411_CertificateSelectors(FALSE, tvb, 0, pinfo, tree, hf_x411_CertificateSelectors_PDU);
7340 }
7341 static void dissect_ORName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7342   dissect_x411_ORName(FALSE, tvb, 0, pinfo, tree, hf_x411_ORName_PDU);
7343 }
7344 static void dissect_ORAddress_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7345   dissect_x411_ORAddress(FALSE, tvb, 0, pinfo, tree, hf_x411_ORAddress_PDU);
7346 }
7347 static void dissect_CommonName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7348   dissect_x411_CommonName(FALSE, tvb, 0, pinfo, tree, hf_x411_CommonName_PDU);
7349 }
7350 static void dissect_TeletexCommonName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7351   dissect_x411_TeletexCommonName(FALSE, tvb, 0, pinfo, tree, hf_x411_TeletexCommonName_PDU);
7352 }
7353 static void dissect_UniversalCommonName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7354   dissect_x411_UniversalCommonName(FALSE, tvb, 0, pinfo, tree, hf_x411_UniversalCommonName_PDU);
7355 }
7356 static void dissect_TeletexOrganizationName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7357   dissect_x411_TeletexOrganizationName(FALSE, tvb, 0, pinfo, tree, hf_x411_TeletexOrganizationName_PDU);
7358 }
7359 static void dissect_UniversalOrganizationName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7360   dissect_x411_UniversalOrganizationName(FALSE, tvb, 0, pinfo, tree, hf_x411_UniversalOrganizationName_PDU);
7361 }
7362 static void dissect_TeletexPersonalName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7363   dissect_x411_TeletexPersonalName(FALSE, tvb, 0, pinfo, tree, hf_x411_TeletexPersonalName_PDU);
7364 }
7365 static void dissect_UniversalPersonalName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7366   dissect_x411_UniversalPersonalName(FALSE, tvb, 0, pinfo, tree, hf_x411_UniversalPersonalName_PDU);
7367 }
7368 static void dissect_TeletexOrganizationalUnitNames_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7369   dissect_x411_TeletexOrganizationalUnitNames(FALSE, tvb, 0, pinfo, tree, hf_x411_TeletexOrganizationalUnitNames_PDU);
7370 }
7371 static void dissect_UniversalOrganizationalUnitNames_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7372   dissect_x411_UniversalOrganizationalUnitNames(FALSE, tvb, 0, pinfo, tree, hf_x411_UniversalOrganizationalUnitNames_PDU);
7373 }
7374 static void dissect_PDSName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7375   dissect_x411_PDSName(FALSE, tvb, 0, pinfo, tree, hf_x411_PDSName_PDU);
7376 }
7377 static void dissect_PhysicalDeliveryCountryName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7378   dissect_x411_PhysicalDeliveryCountryName(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalDeliveryCountryName_PDU);
7379 }
7380 static void dissect_PostalCode_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7381   dissect_x411_PostalCode(FALSE, tvb, 0, pinfo, tree, hf_x411_PostalCode_PDU);
7382 }
7383 static void dissect_PhysicalDeliveryOfficeName_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7384   dissect_x411_PhysicalDeliveryOfficeName(FALSE, tvb, 0, pinfo, tree, hf_x411_PhysicalDeliveryOfficeName_PDU);
7385 }
7386 static void dissect_ExtendedEncodedInformationType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7387   dissect_x411_ExtendedEncodedInformationType(FALSE, tvb, 0, pinfo, tree, hf_x411_ExtendedEncodedInformationType_PDU);
7388 }
7389 static void dissect_MTANameAndOptionalGDI_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7390   dissect_x411_MTANameAndOptionalGDI(FALSE, tvb, 0, pinfo, tree, hf_x411_MTANameAndOptionalGDI_PDU);
7391 }
7392 static void dissect_AsymmetricToken_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7393   dissect_x411_AsymmetricToken(FALSE, tvb, 0, pinfo, tree, hf_x411_AsymmetricToken_PDU);
7394 }
7395 static void dissect_BindTokenSignedData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7396   dissect_x411_BindTokenSignedData(FALSE, tvb, 0, pinfo, tree, hf_x411_BindTokenSignedData_PDU);
7397 }
7398 static void dissect_MessageTokenSignedData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7399   dissect_x411_MessageTokenSignedData(FALSE, tvb, 0, pinfo, tree, hf_x411_MessageTokenSignedData_PDU);
7400 }
7401 static void dissect_MessageTokenEncryptedData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7402   dissect_x411_MessageTokenEncryptedData(FALSE, tvb, 0, pinfo, tree, hf_x411_MessageTokenEncryptedData_PDU);
7403 }
7404 static void dissect_BindTokenEncryptedData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_) {
7405   dissect_x411_BindTokenEncryptedData(FALSE, tvb, 0, pinfo, tree, hf_x411_BindTokenEncryptedData_PDU);
7406 }
7407
7408
7409 /*--- End of included file: packet-x411-fn.c ---*/
7410 #line 84 "packet-x411-template.c"
7411
7412 static int
7413 call_x411_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
7414 {
7415   const char *name = NULL;
7416   char extension_oid[MAX_OID_STR_LEN];
7417
7418   sprintf(extension_oid, "%s.%d", base_oid, extension_id);      
7419
7420   name = get_oid_str_name(extension_oid);
7421   proto_item_append_text(tree, " (%s)", name ? name : extension_oid); 
7422
7423   return call_ber_oid_callback(extension_oid, tvb, offset, pinfo, tree);
7424
7425 }
7426
7427
7428 /*
7429  * Dissect X411 MTS APDU
7430  */
7431 void
7432 dissect_x411_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
7433 {
7434         proto_item *item=NULL;
7435         proto_tree *tree=NULL;
7436
7437         /* save parent_tree so subdissectors can create new top nodes */
7438         top_tree=parent_tree;
7439
7440         if(parent_tree){
7441                 item = proto_tree_add_item(parent_tree, proto_x411, tvb, 0, -1, FALSE);
7442                 tree = proto_item_add_subtree(item, ett_x411);
7443         }
7444
7445         if (check_col(pinfo->cinfo, COL_PROTOCOL))
7446                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "P1");
7447         if (check_col(pinfo->cinfo, COL_INFO))
7448                 col_set_str(pinfo->cinfo, COL_INFO, "Transfer");
7449
7450         dissect_x411_MTS_APDU (FALSE, tvb, 0, pinfo, tree, hf_x411_MTS_APDU_PDU);
7451 }
7452
7453 /*
7454 * Dissect X411 PDUs inside a PPDU.
7455 */
7456 static void
7457 dissect_x411(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
7458 {
7459         int offset = 0;
7460         int old_offset;
7461         proto_item *item=NULL;
7462         proto_tree *tree=NULL;
7463         int (*x411_dissector)(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) = NULL;
7464         char *x411_op_name;
7465         int hf_x411_index;
7466
7467         /* save parent_tree so subdissectors can create new top nodes */
7468         top_tree=parent_tree;
7469
7470         /* do we have operation information from the ROS dissector?  */
7471         if( !pinfo->private_data ){
7472                 if(parent_tree){
7473                         proto_tree_add_text(parent_tree, tvb, offset, -1,
7474                                 "Internal error: can't get operation information from ROS dissector.");
7475                 } 
7476                 return  ;
7477         } else {
7478                 session  = ( (struct SESSION_DATA_STRUCTURE*)(pinfo->private_data) );
7479         }
7480
7481         if(parent_tree){
7482                 item = proto_tree_add_item(parent_tree, proto_x411, tvb, 0, -1, FALSE);
7483                 tree = proto_item_add_subtree(item, ett_x411);
7484         }
7485         if (check_col(pinfo->cinfo, COL_PROTOCOL))
7486                 col_set_str(pinfo->cinfo, COL_PROTOCOL, "P1");
7487         if (check_col(pinfo->cinfo, COL_INFO))
7488                 col_clear(pinfo->cinfo, COL_INFO);
7489
7490         switch(session->ros_op & ROS_OP_MASK) {
7491         case (ROS_OP_BIND | ROS_OP_ARGUMENT):   /*  BindInvoke */
7492           x411_dissector = dissect_x411_MTABindArgument;
7493           x411_op_name = "Bind-Argument";
7494           hf_x411_index = hf_x411_MTABindArgument_PDU;
7495           break;
7496         case (ROS_OP_BIND | ROS_OP_RESULT):     /*  BindResult */
7497           x411_dissector = dissect_x411_MTABindResult;
7498           x411_op_name = "Bind-Result";
7499           hf_x411_index = hf_x411_MTABindResult_PDU;
7500           break;
7501         case (ROS_OP_BIND | ROS_OP_ERROR):      /*  BindError */
7502           x411_dissector = dissect_x411_MTABindError;
7503           x411_op_name = "Bind-Error";
7504           hf_x411_index = hf_x411_MTABindError_PDU;
7505           break;
7506         case (ROS_OP_INVOKE | ROS_OP_ARGUMENT): /*  Invoke Argument */
7507           x411_dissector = dissect_x411_MTS_APDU;
7508           x411_op_name = "Transfer";
7509           hf_x411_index = hf_x411_MTS_APDU_PDU;
7510           break;
7511         default:
7512           proto_tree_add_text(tree, tvb, offset, -1,"Unsupported X411 PDU");
7513           return;
7514         }
7515
7516         if (check_col(pinfo->cinfo, COL_INFO))
7517           col_add_str(pinfo->cinfo, COL_INFO, x411_op_name);
7518
7519         while (tvb_reported_length_remaining(tvb, offset) > 0){
7520                 old_offset=offset;
7521                 offset=(*x411_dissector)(FALSE, tvb, offset, pinfo , tree, hf_x411_index);
7522                 if(offset == old_offset){
7523                         proto_tree_add_text(tree, tvb, offset, -1,"Internal error, zero-byte X411 PDU");
7524                         offset = tvb_length(tvb);
7525                         break;
7526                 }
7527         }
7528 }
7529
7530
7531 /*--- proto_register_x411 -------------------------------------------*/
7532 void proto_register_x411(void) {
7533
7534   /* List of fields */
7535   static hf_register_info hf[] =
7536   {
7537
7538 /*--- Included file: packet-x411-hfarr.c ---*/
7539 #line 1 "packet-x411-hfarr.c"
7540     { &hf_x411_MTABindArgument_PDU,
7541       { "MTABindArgument", "x411.MTABindArgument",
7542         FT_UINT32, BASE_DEC, VALS(x411_MTABindArgument_vals), 0,
7543         "x411.MTABindArgument", HFILL }},
7544     { &hf_x411_MTABindResult_PDU,
7545       { "MTABindResult", "x411.MTABindResult",
7546         FT_UINT32, BASE_DEC, VALS(x411_MTABindResult_vals), 0,
7547         "x411.MTABindResult", HFILL }},
7548     { &hf_x411_MTABindError_PDU,
7549       { "MTABindError", "x411.MTABindError",
7550         FT_UINT32, BASE_DEC, VALS(x411_MTABindError_vals), 0,
7551         "x411.MTABindError", HFILL }},
7552     { &hf_x411_MTS_APDU_PDU,
7553       { "MTS-APDU", "x411.MTS_APDU",
7554         FT_UINT32, BASE_DEC, VALS(x411_MTS_APDU_vals), 0,
7555         "x411.MTS_APDU", HFILL }},
7556     { &hf_x411_InternalTraceInformation_PDU,
7557       { "InternalTraceInformation", "x411.InternalTraceInformation",
7558         FT_UINT32, BASE_DEC, NULL, 0,
7559         "x411.InternalTraceInformation", HFILL }},
7560     { &hf_x411_TraceInformation_PDU,
7561       { "TraceInformation", "x411.TraceInformation",
7562         FT_UINT32, BASE_DEC, NULL, 0,
7563         "x411.TraceInformation", HFILL }},
7564     { &hf_x411_ReportDeliveryArgument_PDU,
7565       { "ReportDeliveryArgument", "x411.ReportDeliveryArgument",
7566         FT_NONE, BASE_NONE, NULL, 0,
7567         "x411.ReportDeliveryArgument", HFILL }},
7568     { &hf_x411_RecipientCertificate_PDU,
7569       { "RecipientCertificate", "x411.RecipientCertificate",
7570         FT_NONE, BASE_NONE, NULL, 0,
7571         "x411.RecipientCertificate", HFILL }},
7572     { &hf_x411_ProofOfDelivery_PDU,
7573       { "ProofOfDelivery", "x411.ProofOfDelivery",
7574         FT_NONE, BASE_NONE, NULL, 0,
7575         "x411.ProofOfDelivery", HFILL }},
7576     { &hf_x411_ExtendedContentType_PDU,
7577       { "ExtendedContentType", "x411.ExtendedContentType",
7578         FT_OID, BASE_NONE, NULL, 0,
7579         "x411.ExtendedContentType", HFILL }},
7580     { &hf_x411_ContentLength_PDU,
7581       { "ContentLength", "x411.ContentLength",
7582         FT_UINT32, BASE_DEC, NULL, 0,
7583         "x411.ContentLength", HFILL }},
7584     { &hf_x411_RecipientReassignmentProhibited_PDU,
7585       { "RecipientReassignmentProhibited", "x411.RecipientReassignmentProhibited",
7586         FT_UINT32, BASE_DEC, VALS(x411_RecipientReassignmentProhibited_vals), 0,
7587         "x411.RecipientReassignmentProhibited", HFILL }},
7588     { &hf_x411_MTSOriginatorRequestedAlternateRecipient_PDU,
7589       { "MTSOriginatorRequestedAlternateRecipient", "x411.MTSOriginatorRequestedAlternateRecipient",
7590         FT_NONE, BASE_NONE, NULL, 0,
7591         "x411.MTSOriginatorRequestedAlternateRecipient", HFILL }},
7592     { &hf_x411_DLExpansionProhibited_PDU,
7593       { "DLExpansionProhibited", "x411.DLExpansionProhibited",
7594         FT_UINT32, BASE_DEC, VALS(x411_DLExpansionProhibited_vals), 0,
7595         "x411.DLExpansionProhibited", HFILL }},
7596     { &hf_x411_ConversionWithLossProhibited_PDU,
7597       { "ConversionWithLossProhibited", "x411.ConversionWithLossProhibited",
7598         FT_UINT32, BASE_DEC, VALS(x411_ConversionWithLossProhibited_vals), 0,
7599         "x411.ConversionWithLossProhibited", HFILL }},
7600     { &hf_x411_LatestDeliveryTime_PDU,
7601       { "LatestDeliveryTime", "x411.LatestDeliveryTime",
7602         FT_STRING, BASE_NONE, NULL, 0,
7603         "x411.LatestDeliveryTime", HFILL }},
7604     { &hf_x411_RequestedDeliveryMethod_PDU,
7605       { "RequestedDeliveryMethod", "x411.RequestedDeliveryMethod",
7606         FT_UINT32, BASE_DEC, NULL, 0,
7607         "x411.RequestedDeliveryMethod", HFILL }},
7608     { &hf_x411_PhysicalForwardingProhibited_PDU,
7609       { "PhysicalForwardingProhibited", "x411.PhysicalForwardingProhibited",
7610         FT_UINT32, BASE_DEC, VALS(x411_PhysicalForwardingProhibited_vals), 0,
7611         "x411.PhysicalForwardingProhibited", HFILL }},
7612     { &hf_x411_PhysicalForwardingAddressRequest_PDU,
7613       { "PhysicalForwardingAddressRequest", "x411.PhysicalForwardingAddressRequest",
7614         FT_UINT32, BASE_DEC, VALS(x411_PhysicalForwardingAddressRequest_vals), 0,
7615         "x411.PhysicalForwardingAddressRequest", HFILL }},
7616     { &hf_x411_PhysicalDeliveryModes_PDU,
7617       { "PhysicalDeliveryModes", "x411.PhysicalDeliveryModes",
7618         FT_BYTES, BASE_HEX, NULL, 0,
7619         "x411.PhysicalDeliveryModes", HFILL }},
7620     { &hf_x411_RegisteredMailType_PDU,
7621       { "RegisteredMailType", "x411.RegisteredMailType",
7622         FT_UINT32, BASE_DEC, VALS(x411_RegisteredMailType_vals), 0,
7623         "x411.RegisteredMailType", HFILL }},
7624     { &hf_x411_RecipientNumberForAdvice_PDU,
7625       { "RecipientNumberForAdvice", "x411.RecipientNumberForAdvice",
7626         FT_STRING, BASE_NONE, NULL, 0,
7627         "x411.RecipientNumberForAdvice", HFILL }},
7628     { &hf_x411_PhysicalRenditionAttributes_PDU,
7629       { "PhysicalRenditionAttributes", "x411.PhysicalRenditionAttributes",
7630         FT_OID, BASE_NONE, NULL, 0,
7631         "x411.PhysicalRenditionAttributes", HFILL }},
7632     { &hf_x411_OriginatorReturnAddress_PDU,
7633       { "OriginatorReturnAddress", "x411.OriginatorReturnAddress",
7634         FT_NONE, BASE_NONE, NULL, 0,
7635         "x411.OriginatorReturnAddress", HFILL }},
7636     { &hf_x411_PhysicalDeliveryReportRequest_PDU,
7637       { "PhysicalDeliveryReportRequest", "x411.PhysicalDeliveryReportRequest",
7638         FT_INT32, BASE_DEC, VALS(x411_PhysicalDeliveryReportRequest_vals), 0,
7639         "x411.PhysicalDeliveryReportRequest", HFILL }},
7640     { &hf_x411_OriginatorCertificate_PDU,
7641       { "OriginatorCertificate", "x411.OriginatorCertificate",
7642         FT_NONE, BASE_NONE, NULL, 0,
7643         "x411.OriginatorCertificate", HFILL }},
7644     { &hf_x411_MessageToken_PDU,
7645       { "MessageToken", "x411.MessageToken",
7646         FT_NONE, BASE_NONE, NULL, 0,
7647         "x411.MessageToken", HFILL }},
7648     { &hf_x411_ContentConfidentialityAlgorithmIdentifier_PDU,
7649       { "ContentConfidentialityAlgorithmIdentifier", "x411.ContentConfidentialityAlgorithmIdentifier",
7650         FT_NONE, BASE_NONE, NULL, 0,
7651         "x411.ContentConfidentialityAlgorithmIdentifier", HFILL }},
7652     { &hf_x411_ContentIntegrityCheck_PDU,
7653       { "ContentIntegrityCheck", "x411.ContentIntegrityCheck",
7654         FT_NONE, BASE_NONE, NULL, 0,
7655         "x411.ContentIntegrityCheck", HFILL }},
7656     { &hf_x411_MessageOriginAuthenticationCheck_PDU,
7657       { "MessageOriginAuthenticationCheck", "x411.MessageOriginAuthenticationCheck",
7658         FT_NONE, BASE_NONE, NULL, 0,
7659         "x411.MessageOriginAuthenticationCheck", HFILL }},
7660     { &hf_x411_MessageSecurityLabel_PDU,
7661       { "MessageSecurityLabel", "x411.MessageSecurityLabel",
7662         FT_NONE, BASE_NONE, NULL, 0,
7663         "x411.MessageSecurityLabel", HFILL }},
7664     { &hf_x411_ProofOfSubmissionRequest_PDU,
7665       { "ProofOfSubmissionRequest", "x411.ProofOfSubmissionRequest",
7666         FT_UINT32, BASE_DEC, VALS(x411_ProofOfSubmissionRequest_vals), 0,
7667         "x411.ProofOfSubmissionRequest", HFILL }},
7668     { &hf_x411_ProofOfDeliveryRequest_PDU,
7669       { "ProofOfDeliveryRequest", "x411.ProofOfDeliveryRequest",
7670         FT_UINT32, BASE_DEC, VALS(x411_ProofOfDeliveryRequest_vals), 0,
7671         "x411.ProofOfDeliveryRequest", HFILL }},
7672     { &hf_x411_ContentCorrelator_PDU,
7673       { "ContentCorrelator", "x411.ContentCorrelator",
7674         FT_UINT32, BASE_DEC, VALS(x411_ContentCorrelator_vals), 0,
7675         "x411.ContentCorrelator", HFILL }},
7676     { &hf_x411_ProbeOriginAuthenticationCheck_PDU,
7677       { "ProbeOriginAuthenticationCheck", "x411.ProbeOriginAuthenticationCheck",
7678         FT_NONE, BASE_NONE, NULL, 0,
7679         "x411.ProbeOriginAuthenticationCheck", HFILL }},
7680     { &hf_x411_RedirectionHistory_PDU,
7681       { "RedirectionHistory", "x411.RedirectionHistory",
7682         FT_UINT32, BASE_DEC, NULL, 0,
7683         "x411.RedirectionHistory", HFILL }},
7684     { &hf_x411_DLExpansionHistory_PDU,
7685       { "DLExpansionHistory", "x411.DLExpansionHistory",
7686         FT_UINT32, BASE_DEC, NULL, 0,
7687         "x411.DLExpansionHistory", HFILL }},
7688     { &hf_x411_PhysicalForwardingAddress_PDU,
7689       { "PhysicalForwardingAddress", "x411.PhysicalForwardingAddress",
7690         FT_NONE, BASE_NONE, NULL, 0,
7691         "x411.PhysicalForwardingAddress", HFILL }},
7692     { &hf_x411_OriginatorAndDLExpansionHistory_PDU,
7693       { "OriginatorAndDLExpansionHistory", "x411.OriginatorAndDLExpansionHistory",
7694         FT_UINT32, BASE_DEC, NULL, 0,
7695         "x411.OriginatorAndDLExpansionHistory", HFILL }},
7696     { &hf_x411_ReportingDLName_PDU,
7697       { "ReportingDLName", "x411.ReportingDLName",
7698         FT_NONE, BASE_NONE, NULL, 0,
7699         "x411.ReportingDLName", HFILL }},
7700     { &hf_x411_ReportingMTACertificate_PDU,
7701       { "ReportingMTACertificate", "x411.ReportingMTACertificate",
7702         FT_NONE, BASE_NONE, NULL, 0,
7703         "x411.ReportingMTACertificate", HFILL }},
7704     { &hf_x411_ReportOriginAuthenticationCheck_PDU,
7705       { "ReportOriginAuthenticationCheck", "x411.ReportOriginAuthenticationCheck",
7706         FT_NONE, BASE_NONE, NULL, 0,
7707         "x411.ReportOriginAuthenticationCheck", HFILL }},
7708     { &hf_x411_ProofOfSubmission_PDU,
7709       { "ProofOfSubmission", "x411.ProofOfSubmission",
7710         FT_NONE, BASE_NONE, NULL, 0,
7711         "x411.ProofOfSubmission", HFILL }},
7712     { &hf_x411_ReportingMTAName_PDU,
7713       { "ReportingMTAName", "x411.ReportingMTAName",
7714         FT_NONE, BASE_NONE, NULL, 0,
7715         "x411.ReportingMTAName", HFILL }},
7716     { &hf_x411_ExtendedCertificates_PDU,
7717       { "ExtendedCertificates", "x411.ExtendedCertificates",
7718         FT_UINT32, BASE_DEC, NULL, 0,
7719         "x411.ExtendedCertificates", HFILL }},
7720     { &hf_x411_DLExemptedRecipients_PDU,
7721       { "DLExemptedRecipients", "x411.DLExemptedRecipients",
7722         FT_UINT32, BASE_DEC, NULL, 0,
7723         "x411.DLExemptedRecipients", HFILL }},
7724     { &hf_x411_CertificateSelectors_PDU,
7725       { "CertificateSelectors", "x411.CertificateSelectors",
7726         FT_NONE, BASE_NONE, NULL, 0,
7727         "x411.CertificateSelectors", HFILL }},
7728     { &hf_x411_ORName_PDU,
7729       { "ORName", "x411.ORName",
7730         FT_NONE, BASE_NONE, NULL, 0,
7731         "x411.ORName", HFILL }},
7732     { &hf_x411_ORAddress_PDU,
7733       { "ORAddress", "x411.ORAddress",
7734         FT_NONE, BASE_NONE, NULL, 0,
7735         "x411.ORAddress", HFILL }},
7736     { &hf_x411_CommonName_PDU,
7737       { "CommonName", "x411.CommonName",
7738         FT_STRING, BASE_NONE, NULL, 0,
7739         "x411.CommonName", HFILL }},
7740     { &hf_x411_TeletexCommonName_PDU,
7741       { "TeletexCommonName", "x411.TeletexCommonName",
7742         FT_STRING, BASE_NONE, NULL, 0,
7743         "x411.TeletexCommonName", HFILL }},
7744     { &hf_x411_UniversalCommonName_PDU,
7745       { "UniversalCommonName", "x411.UniversalCommonName",
7746         FT_NONE, BASE_NONE, NULL, 0,
7747         "x411.UniversalCommonName", HFILL }},
7748     { &hf_x411_TeletexOrganizationName_PDU,
7749       { "TeletexOrganizationName", "x411.TeletexOrganizationName",
7750         FT_STRING, BASE_NONE, NULL, 0,
7751         "x411.TeletexOrganizationName", HFILL }},
7752     { &hf_x411_UniversalOrganizationName_PDU,
7753       { "UniversalOrganizationName", "x411.UniversalOrganizationName",
7754         FT_NONE, BASE_NONE, NULL, 0,
7755         "x411.UniversalOrganizationName", HFILL }},
7756     { &hf_x411_TeletexPersonalName_PDU,
7757       { "TeletexPersonalName", "x411.TeletexPersonalName",
7758         FT_NONE, BASE_NONE, NULL, 0,
7759         "x411.TeletexPersonalName", HFILL }},
7760     { &hf_x411_UniversalPersonalName_PDU,
7761       { "UniversalPersonalName", "x411.UniversalPersonalName",
7762         FT_NONE, BASE_NONE, NULL, 0,
7763         "x411.UniversalPersonalName", HFILL }},
7764     { &hf_x411_TeletexOrganizationalUnitNames_PDU,
7765       { "TeletexOrganizationalUnitNames", "x411.TeletexOrganizationalUnitNames",
7766         FT_UINT32, BASE_DEC, NULL, 0,
7767         "x411.TeletexOrganizationalUnitNames", HFILL }},
7768     { &hf_x411_UniversalOrganizationalUnitNames_PDU,
7769       { "UniversalOrganizationalUnitNames", "x411.UniversalOrganizationalUnitNames",
7770         FT_UINT32, BASE_DEC, NULL, 0,
7771         "x411.UniversalOrganizationalUnitNames", HFILL }},
7772     { &hf_x411_PDSName_PDU,
7773       { "PDSName", "x411.PDSName",
7774         FT_STRING, BASE_NONE, NULL, 0,
7775         "x411.PDSName", HFILL }},
7776     { &hf_x411_PhysicalDeliveryCountryName_PDU,
7777       { "PhysicalDeliveryCountryName", "x411.PhysicalDeliveryCountryName",
7778         FT_UINT32, BASE_DEC, VALS(x411_PhysicalDeliveryCountryName_vals), 0,
7779         "x411.PhysicalDeliveryCountryName", HFILL }},
7780     { &hf_x411_PostalCode_PDU,
7781       { "PostalCode", "x411.PostalCode",
7782         FT_UINT32, BASE_DEC, VALS(x411_PostalCode_vals), 0,
7783         "x411.PostalCode", HFILL }},
7784     { &hf_x411_PhysicalDeliveryOfficeName_PDU,
7785       { "PhysicalDeliveryOfficeName", "x411.PhysicalDeliveryOfficeName",
7786         FT_NONE, BASE_NONE, NULL, 0,
7787         "x411.PhysicalDeliveryOfficeName", HFILL }},
7788     { &hf_x411_ExtendedEncodedInformationType_PDU,
7789       { "ExtendedEncodedInformationType", "x411.ExtendedEncodedInformationType",
7790         FT_OID, BASE_NONE, NULL, 0,
7791         "x411.ExtendedEncodedInformationType", HFILL }},
7792     { &hf_x411_MTANameAndOptionalGDI_PDU,
7793       { "MTANameAndOptionalGDI", "x411.MTANameAndOptionalGDI",
7794         FT_NONE, BASE_NONE, NULL, 0,
7795         "x411.MTANameAndOptionalGDI", HFILL }},
7796     { &hf_x411_AsymmetricToken_PDU,
7797       { "AsymmetricToken", "x411.AsymmetricToken",
7798         FT_NONE, BASE_NONE, NULL, 0,
7799         "x411.AsymmetricToken", HFILL }},
7800     { &hf_x411_BindTokenSignedData_PDU,
7801       { "BindTokenSignedData", "x411.BindTokenSignedData",
7802         FT_BYTES, BASE_HEX, NULL, 0,
7803         "x411.BindTokenSignedData", HFILL }},
7804     { &hf_x411_MessageTokenSignedData_PDU,
7805       { "MessageTokenSignedData", "x411.MessageTokenSignedData",
7806         FT_NONE, BASE_NONE, NULL, 0,
7807         "x411.MessageTokenSignedData", HFILL }},
7808     { &hf_x411_MessageTokenEncryptedData_PDU,
7809       { "MessageTokenEncryptedData", "x411.MessageTokenEncryptedData",
7810         FT_NONE, BASE_NONE, NULL, 0,
7811         "x411.MessageTokenEncryptedData", HFILL }},
7812     { &hf_x411_BindTokenEncryptedData_PDU,
7813       { "BindTokenEncryptedData", "x411.BindTokenEncryptedData",
7814         FT_NONE, BASE_NONE, NULL, 0,
7815         "x411.BindTokenEncryptedData", HFILL }},
7816     { &hf_x411_unauthenticated,
7817       { "unauthenticated", "x411.unauthenticated",
7818         FT_NONE, BASE_NONE, NULL, 0,
7819         "x411.NULL", HFILL }},
7820     { &hf_x411_authenticated_argument,
7821       { "authenticated", "x411.authenticated",
7822         FT_NONE, BASE_NONE, NULL, 0,
7823         "x411.AuthenticatedArgument", HFILL }},
7824     { &hf_x411_authenticated_initiator_name,
7825       { "initiator-name", "x411.initiator_name",
7826         FT_STRING, BASE_NONE, NULL, 0,
7827         "x411.MTAName", HFILL }},
7828     { &hf_x411_initiator_credentials,
7829       { "initiator-credentials", "x411.initiator_credentials",
7830         FT_UINT32, BASE_DEC, VALS(x411_Credentials_vals), 0,
7831         "x411.InitiatorCredentials", HFILL }},
7832     { &hf_x411_security_context,
7833       { "security-context", "x411.security_context",
7834         FT_UINT32, BASE_DEC, NULL, 0,
7835         "x411.SecurityContext", HFILL }},
7836     { &hf_x411_authenticated_result,
7837       { "authenticated", "x411.authenticated",
7838         FT_NONE, BASE_NONE, NULL, 0,
7839         "x411.AuthenticatedResult", HFILL }},
7840     { &hf_x411_authenticated_responder_name,
7841       { "responder-name", "x411.responder_name",
7842         FT_STRING, BASE_NONE, NULL, 0,
7843         "x411.MTAName", HFILL }},
7844     { &hf_x411_responder_credentials,
7845       { "responder-credentials", "x411.responder_credentials",
7846         FT_UINT32, BASE_DEC, VALS(x411_Credentials_vals), 0,
7847         "x411.ResponderCredentials", HFILL }},
7848     { &hf_x411_message,
7849       { "message", "x411.message",
7850         FT_NONE, BASE_NONE, NULL, 0,
7851         "x411.Message", HFILL }},
7852     { &hf_x411_probe,
7853       { "probe", "x411.probe",
7854         FT_NONE, BASE_NONE, NULL, 0,
7855         "x411.Probe", HFILL }},
7856     { &hf_x411_report,
7857       { "report", "x411.report",
7858         FT_NONE, BASE_NONE, NULL, 0,
7859         "x411.Report", HFILL }},
7860     { &hf_x411_message_envelope,
7861       { "envelope", "x411.envelope",
7862         FT_NONE, BASE_NONE, NULL, 0,
7863         "x411.MessageTransferEnvelope", HFILL }},
7864     { &hf_x411_content,
7865       { "content", "x411.content",
7866         FT_BYTES, BASE_HEX, NULL, 0,
7867         "x411.Content", HFILL }},
7868     { &hf_x411_report_envelope,
7869       { "envelope", "x411.envelope",
7870         FT_NONE, BASE_NONE, NULL, 0,
7871         "x411.ReportTransferEnvelope", HFILL }},
7872     { &hf_x411_report_content,
7873       { "content", "x411.content",
7874         FT_NONE, BASE_NONE, NULL, 0,
7875         "x411.ReportTransferContent", HFILL }},
7876     { &hf_x411_message_identifier,
7877       { "message-identifier", "x411.message_identifier",
7878         FT_NONE, BASE_NONE, NULL, 0,
7879         "x411.MessageIdentifier", HFILL }},
7880     { &hf_x411_mta_originator_name,
7881       { "originator-name", "x411.originator_name",
7882         FT_NONE, BASE_NONE, NULL, 0,
7883         "x411.MTAOriginatorName", HFILL }},
7884     { &hf_x411_original_encoded_information_types,
7885       { "original-encoded-information-types", "x411.original_encoded_information_types",
7886         FT_NONE, BASE_NONE, NULL, 0,
7887         "x411.OriginalEncodedInformationTypes", HFILL }},
7888     { &hf_x411_content_type,
7889       { "content-type", "x411.content_type",
7890         FT_UINT32, BASE_DEC, VALS(x411_ContentType_vals), 0,
7891         "x411.ContentType", HFILL }},
7892     { &hf_x411_content_identifier,
7893       { "content-identifier", "x411.content_identifier",
7894         FT_STRING, BASE_NONE, NULL, 0,
7895         "x411.ContentIdentifier", HFILL }},
7896     { &hf_x411_priority,
7897       { "priority", "x411.priority",
7898         FT_UINT32, BASE_DEC, VALS(x411_Priority_vals), 0,
7899         "x411.Priority", HFILL }},
7900     { &hf_x411_per_message_indicators,
7901       { "per-message-indicators", "x411.per_message_indicators",
7902         FT_BYTES, BASE_HEX, NULL, 0,
7903         "x411.PerMessageIndicators", HFILL }},
7904     { &hf_x411_deferred_delivery_time,
7905       { "deferred-delivery-time", "x411.deferred_delivery_time",
7906         FT_STRING, BASE_NONE, NULL, 0,
7907         "x411.DeferredDeliveryTime", HFILL }},
7908     { &hf_x411_per_domain_bilateral_information,
7909       { "per-domain-bilateral-information", "x411.per_domain_bilateral_information",
7910         FT_UINT32, BASE_DEC, NULL, 0,
7911         "x411.SEQUENCE_OF_PerDomainBilateralInformation", HFILL }},
7912     { &hf_x411_per_domain_bilateral_information_item,
7913       { "Item", "x411.per_domain_bilateral_information_item",
7914         FT_NONE, BASE_NONE, NULL, 0,
7915         "x411.PerDomainBilateralInformation", HFILL }},
7916     { &hf_x411_trace_information,
7917       { "trace-information", "x411.trace_information",
7918         FT_UINT32, BASE_DEC, NULL, 0,
7919         "x411.TraceInformation", HFILL }},
7920     { &hf_x411_extensions,
7921       { "extensions", "x411.extensions",
7922         FT_UINT32, BASE_DEC, NULL, 0,
7923         "x411.SET_OF_ExtensionField", HFILL }},
7924     { &hf_x411_extensions_item,
7925       { "Item", "x411.extensions_item",
7926         FT_NONE, BASE_NONE, NULL, 0,
7927         "x411.ExtensionField", HFILL }},
7928     { &hf_x411_per_recipient_message_fields,
7929       { "per-recipient-fields", "x411.per_recipient_fields",
7930         FT_UINT32, BASE_DEC, NULL, 0,
7931         "x411.SEQUENCE_OF_PerRecipientMessageTransferFields", HFILL }},
7932     { &hf_x411_per_recipient_message_fields_item,
7933       { "Item", "x411.per_recipient_fields_item",
7934         FT_NONE, BASE_NONE, NULL, 0,
7935         "x411.PerRecipientMessageTransferFields", HFILL }},
7936     { &hf_x411_recipient_name,
7937       { "recipient-name", "x411.recipient_name",
7938         FT_NONE, BASE_NONE, NULL, 0,
7939         "x411.MTARecipientName", HFILL }},
7940     { &hf_x411_originally_specified_recipient_number,
7941       { "originally-specified-recipient-number", "x411.originally_specified_recipient_number",
7942         FT_INT32, BASE_DEC, NULL, 0,
7943         "x411.OriginallySpecifiedRecipientNumber", HFILL }},
7944     { &hf_x411_per_recipient_indicators,
7945       { "per-recipient-indicators", "x411.per_recipient_indicators",
7946         FT_BYTES, BASE_HEX, NULL, 0,
7947         "x411.PerRecipientIndicators", HFILL }},
7948     { &hf_x411_explicit_conversion,
7949       { "explicit-conversion", "x411.explicit_conversion",
7950         FT_UINT32, BASE_DEC, VALS(x411_ExplicitConversion_vals), 0,
7951         "x411.ExplicitConversion", HFILL }},
7952     { &hf_x411_probe_identifier,
7953       { "probe-identifier", "x411.probe_identifier",
7954         FT_NONE, BASE_NONE, NULL, 0,
7955         "x411.ProbeIdentifier", HFILL }},
7956     { &hf_x411_content_length,
7957       { "content-length", "x411.content_length",
7958         FT_UINT32, BASE_DEC, NULL, 0,
7959         "x411.ContentLength", HFILL }},
7960     { &hf_x411_per_recipient_probe_transfer_fields,
7961       { "per-recipient-fields", "x411.per_recipient_fields",
7962         FT_UINT32, BASE_DEC, NULL, 0,
7963         "x411.SEQUENCE_OF_PerRecipientProbeTransferFields", HFILL }},
7964     { &hf_x411_per_recipient_probe_transfer_fields_item,
7965       { "Item", "x411.per_recipient_fields_item",
7966         FT_NONE, BASE_NONE, NULL, 0,
7967         "x411.PerRecipientProbeTransferFields", HFILL }},
7968     { &hf_x411_report_identifier,
7969       { "report-identifier", "x411.report_identifier",
7970         FT_NONE, BASE_NONE, NULL, 0,
7971         "x411.ReportIdentifier", HFILL }},
7972     { &hf_x411_report_destination_name,
7973       { "report-destination-name", "x411.report_destination_name",
7974         FT_NONE, BASE_NONE, NULL, 0,
7975         "x411.ReportDestinationName", HFILL }},
7976     { &hf_x411_subject_identifier,
7977       { "subject-identifier", "x411.subject_identifier",
7978         FT_NONE, BASE_NONE, NULL, 0,
7979         "x411.SubjectIdentifier", HFILL }},
7980     { &hf_x411_subject_intermediate_trace_information,
7981       { "subject-intermediate-trace-information", "x411.subject_intermediate_trace_information",
7982         FT_UINT32, BASE_DEC, NULL, 0,
7983         "x411.SubjectIntermediateTraceInformation", HFILL }},
7984     { &hf_x411_returned_content,
7985       { "returned-content", "x411.returned_content",
7986         FT_BYTES, BASE_HEX, NULL, 0,
7987         "x411.Content", HFILL }},
7988     { &hf_x411_additional_information,
7989       { "additional-information", "x411.additional_information",
7990         FT_NONE, BASE_NONE, NULL, 0,
7991         "x411.AdditionalInformation", HFILL }},
7992     { &hf_x411_per_recipient_report_fields,
7993       { "per-recipient-fields", "x411.per_recipient_fields",
7994         FT_UINT32, BASE_DEC, NULL, 0,
7995         "x411.SEQUENCE_OF_PerRecipientReportTransferFields", HFILL }},
7996     { &hf_x411_per_recipient_report_fields_item,
7997       { "Item", "x411.per_recipient_fields_item",
7998         FT_NONE, BASE_NONE, NULL, 0,
7999         "x411.PerRecipientReportTransferFields", HFILL }},
8000     { &hf_x411_mta_actual_recipient_name,
8001       { "actual-recipient-name", "x411.actual_recipient_name",
8002         FT_NONE, BASE_NONE, NULL, 0,
8003         "x411.MTAActualRecipientName", HFILL }},
8004     { &hf_x411_last_trace_information,
8005       { "last-trace-information", "x411.last_trace_information",
8006         FT_NONE, BASE_NONE, NULL, 0,
8007         "x411.LastTraceInformation", HFILL }},
8008     { &hf_x411_report_originally_intended_recipient_name,
8009       { "originally-intended-recipient-name", "x411.originally_intended_recipient_name",
8010         FT_NONE, BASE_NONE, NULL, 0,
8011         "x411.MTAOriginallyIntendedRecipientName", HFILL }},
8012     { &hf_x411_supplementary_information,
8013       { "supplementary-information", "x411.supplementary_information",
8014         FT_STRING, BASE_NONE, NULL, 0,
8015         "x411.SupplementaryInformation", HFILL }},
8016     { &hf_x411_country_name,
8017       { "country-name", "x411.country_name",
8018         FT_UINT32, BASE_DEC, VALS(x411_CountryName_vals), 0,
8019         "x411.CountryName", HFILL }},
8020     { &hf_x411_bilateral_domain,
8021       { "domain", "x411.domain",
8022         FT_UINT32, BASE_DEC, VALS(x411_T_bilateral_domain_vals), 0,
8023         "x411.T_bilateral_domain", HFILL }},
8024     { &hf_x411_administration_domain_name,
8025       { "administration-domain-name", "x411.administration_domain_name",
8026         FT_UINT32, BASE_DEC, VALS(x411_AdministrationDomainName_vals), 0,
8027         "x411.AdministrationDomainName", HFILL }},
8028     { &hf_x411_private_domain,
8029       { "private-domain", "x411.private_domain",
8030         FT_NONE, BASE_NONE, NULL, 0,
8031         "x411.T_private_domain", HFILL }},
8032     { &hf_x411_private_domain_identifier,
8033       { "private-domain-identifier", "x411.private_domain_identifier",
8034         FT_UINT32, BASE_DEC, VALS(x411_PrivateDomainIdentifier_vals), 0,
8035         "x411.PrivateDomainIdentifier", HFILL }},
8036     { &hf_x411_bilateral_information,
8037       { "bilateral-information", "x411.bilateral_information",
8038         FT_NONE, BASE_NONE, NULL, 0,
8039         "x411.T_bilateral_information", HFILL }},
8040     { &hf_x411_arrival_time,
8041       { "arrival-time", "x411.arrival_time",
8042         FT_STRING, BASE_NONE, NULL, 0,
8043         "x411.ArrivalTime", HFILL }},
8044     { &hf_x411_converted_encoded_information_types,
8045       { "converted-encoded-information-types", "x411.converted_encoded_information_types",
8046         FT_NONE, BASE_NONE, NULL, 0,
8047         "x411.ConvertedEncodedInformationTypes", HFILL }},
8048     { &hf_x411_trace_report_type,
8049       { "report-type", "x411.report_type",
8050         FT_UINT32, BASE_DEC, VALS(x411_ReportType_vals), 0,
8051         "x411.ReportType", HFILL }},
8052     { &hf_x411_InternalTraceInformation_item,
8053       { "Item", "x411.InternalTraceInformation_item",
8054         FT_NONE, BASE_NONE, NULL, 0,
8055         "x411.InternalTraceInformationElement", HFILL }},
8056     { &hf_x411_global_domain_identifier,
8057       { "global-domain-identifier", "x411.global_domain_identifier",
8058         FT_NONE, BASE_NONE, NULL, 0,
8059         "x411.GlobalDomainIdentifier", HFILL }},
8060     { &hf_x411_mta_name,
8061       { "mta-name", "x411.mta_name",
8062         FT_STRING, BASE_NONE, NULL, 0,
8063         "x411.MTAName", HFILL }},
8064     { &hf_x411_mta_supplied_information,
8065       { "mta-supplied-information", "x411.mta_supplied_information",
8066         FT_NONE, BASE_NONE, NULL, 0,
8067         "x411.MTASuppliedInformation", HFILL }},
8068     { &hf_x411_routing_action,
8069       { "routing-action", "x411.routing_action",
8070         FT_UINT32, BASE_DEC, VALS(x411_RoutingAction_vals), 0,
8071         "x411.RoutingAction", HFILL }},
8072     { &hf_x411_attempted,
8073       { "attempted", "x411.attempted",
8074         FT_UINT32, BASE_DEC, VALS(x411_T_attempted_vals), 0,
8075         "x411.T_attempted", HFILL }},
8076     { &hf_x411_mta,
8077       { "mta", "x411.mta",
8078         FT_STRING, BASE_NONE, NULL, 0,
8079         "x411.MTAName", HFILL }},
8080     { &hf_x411_domain,
8081       { "domain", "x411.domain",
8082         FT_NONE, BASE_NONE, NULL, 0,
8083         "x411.GlobalDomainIdentifier", HFILL }},
8084     { &hf_x411_deferred_time,
8085       { "deferred-time", "x411.deferred_time",
8086         FT_STRING, BASE_NONE, NULL, 0,
8087         "x411.DeferredTime", HFILL }},
8088     { &hf_x411_other_actions,
8089       { "other-actions", "x411.other_actions",
8090         FT_BYTES, BASE_HEX, NULL, 0,
8091         "x411.OtherActions", HFILL }},
8092     { &hf_x411_TraceInformation_item,
8093       { "Item", "x411.TraceInformation_item",
8094         FT_NONE, BASE_NONE, NULL, 0,
8095         "x411.TraceInformationElement", HFILL }},
8096     { &hf_x411_domain_supplied_information,
8097       { "domain-supplied-information", "x411.domain_supplied_information",
8098         FT_NONE, BASE_NONE, NULL, 0,
8099         "x411.DomainSuppliedInformation", HFILL }},
8100     { &hf_x411_attempted_domain,
8101       { "attempted-domain", "x411.attempted_domain",
8102         FT_NONE, BASE_NONE, NULL, 0,
8103         "x411.GlobalDomainIdentifier", HFILL }},
8104     { &hf_x411_initiator_name,
8105       { "initiator-name", "x411.initiator_name",
8106         FT_UINT32, BASE_DEC, VALS(x411_ObjectName_vals), 0,
8107         "x411.ObjectName", HFILL }},
8108     { &hf_x411_messages_waiting,
8109       { "messages-waiting", "x411.messages_waiting",
8110         FT_NONE, BASE_NONE, NULL, 0,
8111         "x411.MessagesWaiting", HFILL }},
8112     { &hf_x411_responder_name,
8113       { "responder-name", "x411.responder_name",
8114         FT_UINT32, BASE_DEC, VALS(x411_ObjectName_vals), 0,
8115         "x411.ObjectName", HFILL }},
8116     { &hf_x411_user_agent,
8117       { "user-agent", "x411.user_agent",
8118         FT_NONE, BASE_NONE, NULL, 0,
8119         "x411.ORAddressAndOptionalDirectoryName", HFILL }},
8120     { &hf_x411_mTA,
8121       { "mTA", "x411.mTA",
8122         FT_STRING, BASE_NONE, NULL, 0,
8123         "x411.MTAName", HFILL }},
8124     { &hf_x411_message_store,
8125       { "message-store", "x411.message_store",
8126         FT_NONE, BASE_NONE, NULL, 0,
8127         "x411.ORAddressAndOptionalDirectoryName", HFILL }},
8128     { &hf_x411_urgent,
8129       { "urgent", "x411.urgent",
8130         FT_NONE, BASE_NONE, NULL, 0,
8131         "x411.DeliveryQueue", HFILL }},
8132     { &hf_x411_normal,
8133       { "normal", "x411.normal",
8134         FT_NONE, BASE_NONE, NULL, 0,
8135         "x411.DeliveryQueue", HFILL }},
8136     { &hf_x411_non_urgent,
8137       { "non-urgent", "x411.non_urgent",
8138         FT_NONE, BASE_NONE, NULL, 0,
8139         "x411.DeliveryQueue", HFILL }},
8140     { &hf_x411_messages,
8141       { "messages", "x411.messages",
8142         FT_INT32, BASE_DEC, NULL, 0,
8143         "x411.INTEGER", HFILL }},
8144     { &hf_x411_delivery_queue_octets,
8145       { "octets", "x411.octets",
8146         FT_INT32, BASE_DEC, NULL, 0,
8147         "x411.INTEGER", HFILL }},
8148     { &hf_x411_simple,
8149       { "simple", "x411.simple",
8150         FT_UINT32, BASE_DEC, VALS(x411_Password_vals), 0,
8151         "x411.Password", HFILL }},
8152     { &hf_x411_strong,
8153       { "strong", "x411.strong",
8154         FT_NONE, BASE_NONE, NULL, 0,
8155         "x411.StrongCredentials", HFILL }},
8156     { &hf_x411_protected,
8157       { "protected", "x411.protected",
8158         FT_NONE, BASE_NONE, NULL, 0,
8159         "x411.ProtectedPassword", HFILL }},
8160     { &hf_x411_ia5_string,
8161       { "ia5-string", "x411.ia5_string",
8162         FT_STRING, BASE_NONE, NULL, 0,
8163         "x411.IA5String", HFILL }},
8164     { &hf_x411_octet_string,
8165       { "octet-string", "x411.octet_string",
8166         FT_BYTES, BASE_HEX, NULL, 0,
8167         "x411.OCTET_STRING", HFILL }},
8168     { &hf_x411_bind_token,
8169       { "bind-token", "x411.bind_token",
8170         FT_NONE, BASE_NONE, NULL, 0,
8171         "x411.Token", HFILL }},
8172     { &hf_x411_certificate,
8173       { "certificate", "x411.certificate",
8174         FT_NONE, BASE_NONE, NULL, 0,
8175         "x509af.Certificates", HFILL }},
8176     { &hf_x411_certificate_selector,
8177       { "certificate-selector", "x411.certificate_selector",
8178         FT_NONE, BASE_NONE, NULL, 0,
8179         "x509ce.CertificateAssertion", HFILL }},
8180     { &hf_x411_signature,
8181       { "signature", "x411.signature",
8182         FT_NONE, BASE_NONE, NULL, 0,
8183         "x411.Signature", HFILL }},
8184     { &hf_x411_time1,
8185       { "time1", "x411.time1",
8186         FT_STRING, BASE_NONE, NULL, 0,
8187         "x411.UTCTime", HFILL }},
8188     { &hf_x411_time2,
8189       { "time2", "x411.time2",
8190         FT_STRING, BASE_NONE, NULL, 0,
8191         "x411.UTCTime", HFILL }},
8192     { &hf_x411_random1,
8193       { "random1", "x411.random1",
8194         FT_BYTES, BASE_HEX, NULL, 0,
8195         "x411.BIT_STRING", HFILL }},
8196     { &hf_x411_random2,
8197       { "random2", "x411.random2",
8198         FT_BYTES, BASE_HEX, NULL, 0,
8199         "x411.BIT_STRING", HFILL }},
8200     { &hf_x411_algorithmIdentifier,
8201       { "algorithmIdentifier", "x411.algorithmIdentifier",
8202         FT_NONE, BASE_NONE, NULL, 0,
8203         "x509af.AlgorithmIdentifier", HFILL }},
8204     { &hf_x411_encrypted,
8205       { "encrypted", "x411.encrypted",
8206         FT_BYTES, BASE_HEX, NULL, 0,
8207         "x411.BIT_STRING", HFILL }},
8208     { &hf_x411_SecurityContext_item,
8209       { "Item", "x411.SecurityContext_item",
8210         FT_NONE, BASE_NONE, NULL, 0,
8211         "x411.SecurityLabel", HFILL }},
8212     { &hf_x411_message_submission_envelope,
8213       { "envelope", "x411.envelope",
8214         FT_NONE, BASE_NONE, NULL, 0,
8215         "x411.MessageSubmissionEnvelope", HFILL }},
8216     { &hf_x411_message_submission_identifier,
8217       { "message-submission-identifier", "x411.message_submission_identifier",
8218         FT_NONE, BASE_NONE, NULL, 0,
8219         "x411.MessageSubmissionIdentifier", HFILL }},
8220     { &hf_x411_message_submission_time,
8221       { "message-submission-time", "x411.message_submission_time",
8222         FT_STRING, BASE_NONE, NULL, 0,
8223         "x411.MessageSubmissionTime", HFILL }},
8224     { &hf_x411_probe_submission_identifier,
8225       { "probe-submission-identifier", "x411.probe_submission_identifier",
8226         FT_NONE, BASE_NONE, NULL, 0,
8227         "x411.ProbeSubmissionIdentifier", HFILL }},
8228     { &hf_x411_probe_submission_time,
8229       { "probe-submission-time", "x411.probe_submission_time",
8230         FT_STRING, BASE_NONE, NULL, 0,
8231         "x411.ProbeSubmissionTime", HFILL }},
8232     { &hf_x411_ImproperlySpecifiedRecipients_item,
8233       { "Item", "x411.ImproperlySpecifiedRecipients_item",
8234         FT_NONE, BASE_NONE, NULL, 0,
8235         "x411.MTSRecipientName", HFILL }},
8236     { &hf_x411_waiting_operations,
8237       { "waiting-operations", "x411.waiting_operations",
8238         FT_BYTES, BASE_HEX, NULL, 0,
8239         "x411.Operations", HFILL }},
8240     { &hf_x411_waiting_messages,
8241       { "waiting-messages", "x411.waiting_messages",
8242         FT_BYTES, BASE_HEX, NULL, 0,
8243         "x411.WaitingMessages", HFILL }},
8244     { &hf_x411_waiting_content_types,
8245       { "waiting-content-types", "x411.waiting_content_types",
8246         FT_UINT32, BASE_DEC, NULL, 0,
8247         "x411.SET_OF_ContentType", HFILL }},
8248     { &hf_x411_waiting_content_types_item,
8249       { "Item", "x411.waiting_content_types_item",
8250         FT_UINT32, BASE_DEC, VALS(x411_ContentType_vals), 0,
8251         "x411.ContentType", HFILL }},
8252     { &hf_x411_waiting_encoded_information_types,
8253       { "waiting-encoded-information-types", "x411.waiting_encoded_information_types",
8254         FT_NONE, BASE_NONE, NULL, 0,
8255         "x411.EncodedInformationTypes", HFILL }},
8256     { &hf_x411_message_delivery_identifier,
8257       { "message-delivery-identifier", "x411.message_delivery_identifier",
8258         FT_NONE, BASE_NONE, NULL, 0,
8259         "x411.MessageDeliveryIdentifier", HFILL }},
8260     { &hf_x411_message_delivery_time,
8261       { "message-delivery-time", "x411.message_delivery_time",
8262         FT_STRING, BASE_NONE, NULL, 0,
8263         "x411.MessageDeliveryTime", HFILL }},
8264     { &hf_x411_other_fields,
8265       { "other-fields", "x411.other_fields",
8266         FT_NONE, BASE_NONE, NULL, 0,
8267         "x411.OtherMessageDeliveryFields", HFILL }},
8268     { &hf_x411_recipient_certificate,
8269       { "recipient-certificate", "x411.recipient_certificate",
8270         FT_NONE, BASE_NONE, NULL, 0,
8271         "x411.RecipientCertificate", HFILL }},
8272     { &hf_x411_proof_of_delivery,
8273       { "proof-of-delivery", "x411.proof_of_delivery",
8274         FT_NONE, BASE_NONE, NULL, 0,
8275         "x411.ProofOfDelivery", HFILL }},
8276     { &hf_x411_subject_submission_identifier,
8277       { "subject-submission-identifier", "x411.subject_submission_identifier",
8278         FT_NONE, BASE_NONE, NULL, 0,
8279         "x411.SubjectSubmissionIdentifier", HFILL }},
8280     { &hf_x411_per_recipient_report_delivery_fields,
8281       { "per-recipient-fields", "x411.per_recipient_fields",
8282         FT_UINT32, BASE_DEC, NULL, 0,
8283         "x411.SEQUENCE_OF_PerRecipientReportDeliveryFields", HFILL }},
8284     { &hf_x411_per_recipient_report_delivery_fields_item,
8285       { "Item", "x411.per_recipient_fields_item",
8286         FT_NONE, BASE_NONE, NULL, 0,
8287         "x411.PerRecipientReportDeliveryFields", HFILL }},
8288     { &hf_x411_empty_result,
8289       { "empty-result", "x411.empty_result",
8290         FT_NONE, BASE_NONE, NULL, 0,
8291         "x411.NULL", HFILL }},
8292     { &hf_x411_restrict,
8293       { "restrict", "x411.restrict",
8294         FT_BOOLEAN, 8, NULL, 0,
8295         "x411.BOOLEAN", HFILL }},
8296     { &hf_x411_permissible_operations,
8297       { "permissible-operations", "x411.permissible_operations",
8298         FT_BYTES, BASE_HEX, NULL, 0,
8299         "x411.Operations", HFILL }},
8300     { &hf_x411_permissible_maximum_content_length,
8301       { "permissible-maximum-content-length", "x411.permissible_maximum_content_length",
8302         FT_UINT32, BASE_DEC, NULL, 0,
8303         "x411.ContentLength", HFILL }},
8304     { &hf_x411_permissible_lowest_priority,
8305       { "permissible-lowest-priority", "x411.permissible_lowest_priority",
8306         FT_UINT32, BASE_DEC, VALS(x411_Priority_vals), 0,
8307         "x411.Priority", HFILL }},
8308     { &hf_x411_permissible_content_types,
8309       { "permissible-content-types", "x411.permissible_content_types",
8310         FT_UINT32, BASE_DEC, NULL, 0,
8311         "x411.ContentTypes", HFILL }},
8312     { &hf_x411_permissible_encoded_information_types,
8313       { "permissible-encoded-information-types", "x411.permissible_encoded_information_types",
8314         FT_NONE, BASE_NONE, NULL, 0,
8315         "x411.PermissibleEncodedInformationTypes", HFILL }},
8316     { &hf_x411_permissible_security_context,
8317       { "permissible-security-context", "x411.permissible_security_context",
8318         FT_UINT32, BASE_DEC, NULL, 0,
8319         "x411.SecurityContext", HFILL }},
8320     { &hf_x411_refused_argument,
8321       { "refused-argument", "x411.refused_argument",
8322         FT_UINT32, BASE_DEC, VALS(x411_T_refused_argument_vals), 0,
8323         "x411.T_refused_argument", HFILL }},
8324     { &hf_x411_built_in_argument,
8325       { "built-in-argument", "x411.built_in_argument",
8326         FT_UINT32, BASE_DEC, VALS(x411_RefusedArgument_vals), 0,
8327         "x411.RefusedArgument", HFILL }},
8328     { &hf_x411_refused_extension,
8329       { "refused-extension", "x411.refused_extension",
8330         FT_NONE, BASE_NONE, NULL, 0,
8331         "x411.T_refused_extension", HFILL }},
8332     { &hf_x411_refusal_reason,
8333       { "refusal-reason", "x411.refusal_reason",
8334         FT_UINT32, BASE_DEC, VALS(x411_RefusalReason_vals), 0,
8335         "x411.RefusalReason", HFILL }},
8336     { &hf_x411_user_name,
8337       { "user-name", "x411.user_name",
8338         FT_NONE, BASE_NONE, NULL, 0,
8339         "x411.UserName", HFILL }},
8340     { &hf_x411_user_address,
8341       { "user-address", "x411.user_address",
8342         FT_UINT32, BASE_DEC, VALS(x411_UserAddress_vals), 0,
8343         "x411.UserAddress", HFILL }},
8344     { &hf_x411_deliverable_class,
8345       { "deliverable-class", "x411.deliverable_class",
8346         FT_UINT32, BASE_DEC, NULL, 0,
8347         "x411.SET_OF_DeliverableClass", HFILL }},
8348     { &hf_x411_deliverable_class_item,
8349       { "Item", "x411.deliverable_class_item",
8350         FT_NONE, BASE_NONE, NULL, 0,
8351         "x411.DeliverableClass", HFILL }},
8352     { &hf_x411_default_delivery_controls,
8353       { "default-delivery-controls", "x411.default_delivery_controls",
8354         FT_NONE, BASE_NONE, NULL, 0,
8355         "x411.DefaultDeliveryControls", HFILL }},
8356     { &hf_x411_redirections,
8357       { "redirections", "x411.redirections",
8358         FT_UINT32, BASE_DEC, NULL, 0,
8359         "x411.Redirections", HFILL }},
8360     { &hf_x411_restricted_delivery,
8361       { "restricted-delivery", "x411.restricted_delivery",
8362         FT_UINT32, BASE_DEC, NULL, 0,
8363         "x411.RestrictedDelivery", HFILL }},
8364     { &hf_x411_retrieve_registrations,
8365       { "retrieve-registrations", "x411.retrieve_registrations",
8366         FT_NONE, BASE_NONE, NULL, 0,
8367         "x411.RegistrationTypes", HFILL }},
8368     { &hf_x411_non_empty_result,
8369       { "non-empty-result", "x411.non_empty_result",
8370         FT_NONE, BASE_NONE, NULL, 0,
8371         "x411.T_non_empty_result", HFILL }},
8372     { &hf_x411_registered_information,
8373       { "registered-information", "x411.registered_information",
8374         FT_NONE, BASE_NONE, NULL, 0,
8375         "x411.RegisterArgument", HFILL }},
8376     { &hf_x411_old_credentials,
8377       { "old-credentials", "x411.old_credentials",
8378         FT_UINT32, BASE_DEC, VALS(x411_Credentials_vals), 0,
8379         "x411.Credentials", HFILL }},
8380     { &hf_x411_new_credentials,
8381       { "new-credentials", "x411.new_credentials",
8382         FT_UINT32, BASE_DEC, VALS(x411_Credentials_vals), 0,
8383         "x411.Credentials", HFILL }},
8384     { &hf_x411_x121,
8385       { "x121", "x411.x121",
8386         FT_NONE, BASE_NONE, NULL, 0,
8387         "x411.T_x121", HFILL }},
8388     { &hf_x411_x121_address,
8389       { "x121-address", "x411.x121_address",
8390         FT_STRING, BASE_NONE, NULL, 0,
8391         "x411.NumericString", HFILL }},
8392     { &hf_x411_tsap_id,
8393       { "tsap-id", "x411.tsap_id",
8394         FT_STRING, BASE_NONE, NULL, 0,
8395         "x411.PrintableString", HFILL }},
8396     { &hf_x411_presentation,
8397       { "presentation", "x411.presentation",
8398         FT_NONE, BASE_NONE, NULL, 0,
8399         "x411.PSAPAddress", HFILL }},
8400     { &hf_x411_Redirections_item,
8401       { "Item", "x411.Redirections_item",
8402         FT_NONE, BASE_NONE, NULL, 0,
8403         "x411.RecipientRedirection", HFILL }},
8404     { &hf_x411_redirection_classes,
8405       { "redirection-classes", "x411.redirection_classes",
8406         FT_UINT32, BASE_DEC, NULL, 0,
8407         "x411.SET_OF_RedirectionClass", HFILL }},
8408     { &hf_x411_redirection_classes_item,
8409       { "Item", "x411.redirection_classes_item",
8410         FT_NONE, BASE_NONE, NULL, 0,
8411         "x411.RedirectionClass", HFILL }},
8412     { &hf_x411_recipient_assigned_alternate_recipient,
8413       { "recipient-assigned-alternate-recipient", "x411.recipient_assigned_alternate_recipient",
8414         FT_NONE, BASE_NONE, NULL, 0,
8415         "x411.RecipientAssignedAlternateRecipient", HFILL }},
8416     { &hf_x411_content_types,
8417       { "content-types", "x411.content_types",
8418         FT_UINT32, BASE_DEC, NULL, 0,
8419         "x411.ContentTypes", HFILL }},
8420     { &hf_x411_maximum_content_length,
8421       { "maximum-content-length", "x411.maximum_content_length",
8422         FT_UINT32, BASE_DEC, NULL, 0,
8423         "x411.ContentLength", HFILL }},
8424     { &hf_x411_encoded_information_types_constraints,
8425       { "encoded-information-types-constraints", "x411.encoded_information_types_constraints",
8426         FT_NONE, BASE_NONE, NULL, 0,
8427         "x411.EncodedInformationTypesConstraints", HFILL }},
8428     { &hf_x411_security_labels,
8429       { "security-labels", "x411.security_labels",
8430         FT_UINT32, BASE_DEC, NULL, 0,
8431         "x411.SecurityContext", HFILL }},
8432     { &hf_x411_class_priority,
8433       { "priority", "x411.priority",
8434         FT_UINT32, BASE_DEC, NULL, 0,
8435         "x411.SET_OF_Priority", HFILL }},
8436     { &hf_x411_class_priority_item,
8437       { "Item", "x411.priority_item",
8438         FT_UINT32, BASE_DEC, VALS(x411_Priority_vals), 0,
8439         "x411.Priority", HFILL }},
8440     { &hf_x411_objects,
8441       { "objects", "x411.objects",
8442         FT_UINT32, BASE_DEC, VALS(x411_T_objects_vals), 0,
8443         "x411.T_objects", HFILL }},
8444     { &hf_x411_applies_only_to,
8445       { "applies-only-to", "x411.applies_only_to",
8446         FT_UINT32, BASE_DEC, NULL, 0,
8447         "x411.SEQUENCE_OF_Restriction", HFILL }},
8448     { &hf_x411_applies_only_to_item,
8449       { "Item", "x411.applies_only_to_item",
8450         FT_NONE, BASE_NONE, NULL, 0,
8451         "x411.Restriction", HFILL }},
8452     { &hf_x411_unacceptable_eits,
8453       { "unacceptable-eits", "x411.unacceptable_eits",
8454         FT_UINT32, BASE_DEC, NULL, 0,
8455         "x411.ExtendedEncodedInformationTypes", HFILL }},
8456     { &hf_x411_acceptable_eits,
8457       { "acceptable-eits", "x411.acceptable_eits",
8458         FT_UINT32, BASE_DEC, NULL, 0,
8459         "x411.ExtendedEncodedInformationTypes", HFILL }},
8460     { &hf_x411_exclusively_acceptable_eits,
8461       { "exclusively-acceptable-eits", "x411.exclusively_acceptable_eits",
8462         FT_UINT32, BASE_DEC, NULL, 0,
8463         "x411.ExtendedEncodedInformationTypes", HFILL }},
8464     { &hf_x411_RestrictedDelivery_item,
8465       { "Item", "x411.RestrictedDelivery_item",
8466         FT_NONE, BASE_NONE, NULL, 0,
8467         "x411.Restriction", HFILL }},
8468     { &hf_x411_permitted,
8469       { "permitted", "x411.permitted",
8470         FT_BOOLEAN, 8, NULL, 0,
8471         "x411.BOOLEAN", HFILL }},
8472     { &hf_x411_source_type,
8473       { "source-type", "x411.source_type",
8474         FT_BYTES, BASE_HEX, NULL, 0,
8475         "x411.T_source_type", HFILL }},
8476     { &hf_x411_source_name,
8477       { "source-name", "x411.source_name",
8478         FT_UINT32, BASE_DEC, VALS(x411_ExactOrPattern_vals), 0,
8479         "x411.ExactOrPattern", HFILL }},
8480     { &hf_x411_exact_match,
8481       { "exact-match", "x411.exact_match",
8482         FT_NONE, BASE_NONE, NULL, 0,
8483         "x411.ORName", HFILL }},
8484     { &hf_x411_pattern_match,
8485       { "pattern-match", "x411.pattern_match",
8486         FT_NONE, BASE_NONE, NULL, 0,
8487         "x411.ORName", HFILL }},
8488     { &hf_x411_standard_parameters,
8489       { "standard-parameters", "x411.standard_parameters",
8490         FT_BYTES, BASE_HEX, NULL, 0,
8491         "x411.T_standard_parameters", HFILL }},
8492     { &hf_x411_type_extensions,
8493       { "extensions", "x411.extensions",
8494         FT_UINT32, BASE_DEC, NULL, 0,
8495         "x411.T_type_extensions", HFILL }},
8496     { &hf_x411_type_extensions_item,
8497       { "Item", "x411.extensions_item",
8498         FT_NONE, BASE_NONE, NULL, 0,
8499         "x411.T_type_extensions_item", HFILL }},
8500     { &hf_x411_mts_originator_name,
8501       { "originator-name", "x411.originator_name",
8502         FT_NONE, BASE_NONE, NULL, 0,
8503         "x411.MTSOriginatorName", HFILL }},
8504     { &hf_x411_per_recipient_message_submission_fields,
8505       { "per-recipient-fields", "x411.per_recipient_fields",
8506         FT_UINT32, BASE_DEC, NULL, 0,
8507         "x411.SEQUENCE_OF_PerRecipientMessageSubmissionFields", HFILL }},
8508     { &hf_x411_per_recipient_message_submission_fields_item,
8509       { "Item", "x411.per_recipient_fields_item",
8510         FT_NONE, BASE_NONE, NULL, 0,
8511         "x411.PerRecipientMessageSubmissionFields", HFILL }},
8512     { &hf_x411_submission_recipient_name,
8513       { "recipient-name", "x411.recipient_name",
8514         FT_NONE, BASE_NONE, NULL, 0,
8515         "x411.MTSRecipientName", HFILL }},
8516     { &hf_x411_originator_report_request,
8517       { "originator-report-request", "x411.originator_report_request",
8518         FT_BYTES, BASE_HEX, NULL, 0,
8519         "x411.OriginatorReportRequest", HFILL }},
8520     { &hf_x411_per_recipient_probe_submission_fields,
8521       { "per-recipient-fields", "x411.per_recipient_fields",
8522         FT_UINT32, BASE_DEC, NULL, 0,
8523         "x411.SEQUENCE_OF_PerRecipientProbeSubmissionFields", HFILL }},
8524     { &hf_x411_per_recipient_probe_submission_fields_item,
8525       { "Item", "x411.per_recipient_fields_item",
8526         FT_NONE, BASE_NONE, NULL, 0,
8527         "x411.PerRecipientProbeSubmissionFields", HFILL }},
8528     { &hf_x411_probe_recipient_name,
8529       { "recipient-name", "x411.recipient_name",
8530         FT_NONE, BASE_NONE, NULL, 0,
8531         "x411.MTSRecipientName", HFILL }},
8532     { &hf_x411_delivered_content_type,
8533       { "content-type", "x411.content_type",
8534         FT_UINT32, BASE_DEC, VALS(x411_DeliveredContentType_vals), 0,
8535         "x411.DeliveredContentType", HFILL }},
8536     { &hf_x411_originator_name,
8537       { "originator-name", "x411.originator_name",
8538         FT_NONE, BASE_NONE, NULL, 0,
8539         "x411.DeliveredOriginatorName", HFILL }},
8540     { &hf_x411_delivery_flags,
8541       { "delivery-flags", "x411.delivery_flags",
8542         FT_BYTES, BASE_HEX, NULL, 0,
8543         "x411.DeliveryFlags", HFILL }},
8544     { &hf_x411_other_recipient_names,
8545       { "other-recipient-names", "x411.other_recipient_names",
8546         FT_UINT32, BASE_DEC, NULL, 0,
8547         "x411.OtherRecipientNames", HFILL }},
8548     { &hf_x411_this_recipient_name,
8549       { "this-recipient-name", "x411.this_recipient_name",
8550         FT_NONE, BASE_NONE, NULL, 0,
8551         "x411.ThisRecipientName", HFILL }},
8552     { &hf_x411_originally_intended_recipient_name,
8553       { "originally-intended-recipient-name", "x411.originally_intended_recipient_name",
8554         FT_NONE, BASE_NONE, NULL, 0,
8555         "x411.MTSOriginallyIntendedRecipientName", HFILL }},
8556     { &hf_x411_actual_recipient_name,
8557       { "actual-recipient-name", "x411.actual_recipient_name",
8558         FT_NONE, BASE_NONE, NULL, 0,
8559         "x411.MTSActualRecipientName", HFILL }},
8560     { &hf_x411_delivery_report_type,
8561       { "report-type", "x411.report_type",
8562         FT_UINT32, BASE_DEC, VALS(x411_ReportType_vals), 0,
8563         "x411.ReportType", HFILL }},
8564     { &hf_x411_delivery,
8565       { "delivery", "x411.delivery",
8566         FT_NONE, BASE_NONE, NULL, 0,
8567         "x411.DeliveryReport", HFILL }},
8568     { &hf_x411_non_delivery,
8569       { "non-delivery", "x411.non_delivery",
8570         FT_NONE, BASE_NONE, NULL, 0,
8571         "x411.NonDeliveryReport", HFILL }},
8572     { &hf_x411_type_of_MTS_user,
8573       { "type-of-MTS-user", "x411.type_of_MTS_user",
8574         FT_UINT32, BASE_DEC, VALS(x411_TypeOfMTSUser_vals), 0,
8575         "x411.TypeOfMTSUser", HFILL }},
8576     { &hf_x411_non_delivery_reason_code,
8577       { "non-delivery-reason-code", "x411.non_delivery_reason_code",
8578         FT_UINT32, BASE_DEC, VALS(x411_NonDeliveryReasonCode_vals), 0,
8579         "x411.NonDeliveryReasonCode", HFILL }},
8580     { &hf_x411_non_delivery_diagnostic_code,
8581       { "non-delivery-diagnostic-code", "x411.non_delivery_diagnostic_code",
8582         FT_UINT32, BASE_DEC, VALS(x411_NonDeliveryDiagnosticCode_vals), 0,
8583         "x411.NonDeliveryDiagnosticCode", HFILL }},
8584     { &hf_x411_ContentTypes_item,
8585       { "Item", "x411.ContentTypes_item",
8586         FT_UINT32, BASE_DEC, VALS(x411_ContentType_vals), 0,
8587         "x411.ContentType", HFILL }},
8588     { &hf_x411_built_in,
8589       { "built-in", "x411.built_in",
8590         FT_INT32, BASE_DEC, VALS(x411_BuiltInContentType_vals), 0,
8591         "x411.BuiltInContentType", HFILL }},
8592     { &hf_x411_extended,
8593       { "extended", "x411.extended",
8594         FT_OID, BASE_NONE, NULL, 0,
8595         "x411.ExtendedContentType", HFILL }},
8596     { &hf_x411_OtherRecipientNames_item,
8597       { "Item", "x411.OtherRecipientNames_item",
8598         FT_NONE, BASE_NONE, NULL, 0,
8599         "x411.OtherRecipientName", HFILL }},
8600     { &hf_x411_standard_extension,
8601       { "standard-extension", "x411.standard_extension",
8602         FT_INT32, BASE_DEC, NULL, 0,
8603         "x411.INTEGER", HFILL }},
8604     { &hf_x411_private_extension,
8605       { "private-extension", "x411.private_extension",
8606         FT_OID, BASE_NONE, NULL, 0,
8607         "x411.OBJECT_IDENTIFIER", HFILL }},
8608     { &hf_x411_extension_type,
8609       { "type", "x411.type",
8610         FT_UINT32, BASE_DEC, VALS(x411_ExtensionType_vals), 0,
8611         "x411.ExtensionType", HFILL }},
8612     { &hf_x411_criticality,
8613       { "criticality", "x411.criticality",
8614         FT_BYTES, BASE_HEX, NULL, 0,
8615         "x411.Criticality", HFILL }},
8616     { &hf_x411_extension_value,
8617       { "value", "x411.value",
8618         FT_NONE, BASE_NONE, NULL, 0,
8619         "x411.ExtensionValue", HFILL }},
8620     { &hf_x411_RequestedDeliveryMethod_item,
8621       { "Item", "x411.RequestedDeliveryMethod_item",
8622         FT_UINT32, BASE_DEC, VALS(x411_RequestedDeliveryMethod_item_vals), 0,
8623         "x411.RequestedDeliveryMethod_item", HFILL }},
8624     { &hf_x411_ia5text,
8625       { "ia5text", "x411.ia5text",
8626         FT_STRING, BASE_NONE, NULL, 0,
8627         "x411.IA5String", HFILL }},
8628     { &hf_x411_octets,
8629       { "octets", "x411.octets",
8630         FT_BYTES, BASE_HEX, NULL, 0,
8631         "x411.OCTET_STRING", HFILL }},
8632     { &hf_x411_RedirectionHistory_item,
8633       { "Item", "x411.RedirectionHistory_item",
8634         FT_NONE, BASE_NONE, NULL, 0,
8635         "x411.Redirection", HFILL }},
8636     { &hf_x411_intended_recipient_name,
8637       { "intended-recipient-name", "x411.intended_recipient_name",
8638         FT_NONE, BASE_NONE, NULL, 0,
8639         "x411.IntendedRecipientName", HFILL }},
8640     { &hf_x411_redirection_reason,
8641       { "redirection-reason", "x411.redirection_reason",
8642         FT_UINT32, BASE_DEC, VALS(x411_RedirectionReason_vals), 0,
8643         "x411.RedirectionReason", HFILL }},
8644     { &hf_x411_intended_recipient,
8645       { "intended-recipient", "x411.intended_recipient",
8646         FT_NONE, BASE_NONE, NULL, 0,
8647         "x411.ORAddressAndOptionalDirectoryName", HFILL }},
8648     { &hf_x411_redirection_time,
8649       { "redirection-time", "x411.redirection_time",
8650         FT_STRING, BASE_NONE, NULL, 0,
8651         "x411.Time", HFILL }},
8652     { &hf_x411_DLExpansionHistory_item,
8653       { "Item", "x411.DLExpansionHistory_item",
8654         FT_NONE, BASE_NONE, NULL, 0,
8655         "x411.DLExpansion", HFILL }},
8656     { &hf_x411_dl,
8657       { "dl", "x411.dl",
8658         FT_NONE, BASE_NONE, NULL, 0,
8659         "x411.ORAddressAndOptionalDirectoryName", HFILL }},
8660     { &hf_x411_dl_expansion_time,
8661       { "dl-expansion-time", "x411.dl_expansion_time",
8662         FT_STRING, BASE_NONE, NULL, 0,
8663         "x411.Time", HFILL }},
8664     { &hf_x411_OriginatorAndDLExpansionHistory_item,
8665       { "Item", "x411.OriginatorAndDLExpansionHistory_item",
8666         FT_NONE, BASE_NONE, NULL, 0,
8667         "x411.OriginatorAndDLExpansion", HFILL }},
8668     { &hf_x411_originator_or_dl_name,
8669       { "originator-or-dl-name", "x411.originator_or_dl_name",
8670         FT_NONE, BASE_NONE, NULL, 0,
8671         "x411.ORAddressAndOptionalDirectoryName", HFILL }},
8672     { &hf_x411_origination_or_expansion_time,
8673       { "origination-or-expansion-time", "x411.origination_or_expansion_time",
8674         FT_STRING, BASE_NONE, NULL, 0,
8675         "x411.Time", HFILL }},
8676     { &hf_x411_report_type,
8677       { "report-type", "x411.report_type",
8678         FT_UINT32, BASE_DEC, VALS(x411_T_report_type_vals), 0,
8679         "x411.T_report_type", HFILL }},
8680     { &hf_x411_report_type_delivery,
8681       { "delivery", "x411.delivery",
8682         FT_NONE, BASE_NONE, NULL, 0,
8683         "x411.PerRecipientDeliveryReportFields", HFILL }},
8684     { &hf_x411_non_delivery_report,
8685       { "non-delivery", "x411.non_delivery",
8686         FT_NONE, BASE_NONE, NULL, 0,
8687         "x411.PerRecipientNonDeliveryReportFields", HFILL }},
8688     { &hf_x411_mta_directory_name,
8689       { "mta-directory-name", "x411.mta_directory_name",
8690         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
8691         "x509if.Name", HFILL }},
8692     { &hf_x411_ExtendedCertificates_item,
8693       { "Item", "x411.ExtendedCertificates_item",
8694         FT_UINT32, BASE_DEC, VALS(x411_ExtendedCertificate_vals), 0,
8695         "x411.ExtendedCertificate", HFILL }},
8696     { &hf_x411_directory_entry,
8697       { "directory-entry", "x411.directory_entry",
8698         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
8699         "x509if.Name", HFILL }},
8700     { &hf_x411_DLExemptedRecipients_item,
8701       { "Item", "x411.DLExemptedRecipients_item",
8702         FT_NONE, BASE_NONE, NULL, 0,
8703         "x411.ORAddressAndOrDirectoryName", HFILL }},
8704     { &hf_x411_encryption_recipient,
8705       { "encryption-recipient", "x411.encryption_recipient",
8706         FT_NONE, BASE_NONE, NULL, 0,
8707         "x509ce.CertificateAssertion", HFILL }},
8708     { &hf_x411_encryption_originator,
8709       { "encryption-originator", "x411.encryption_originator",
8710         FT_NONE, BASE_NONE, NULL, 0,
8711         "x509ce.CertificateAssertion", HFILL }},
8712     { &hf_x411_selectors_content_integrity_check,
8713       { "content-integrity-check", "x411.content_integrity_check",
8714         FT_NONE, BASE_NONE, NULL, 0,
8715         "x509ce.CertificateAssertion", HFILL }},
8716     { &hf_x411_token_signature,
8717       { "token-signature", "x411.token_signature",
8718         FT_NONE, BASE_NONE, NULL, 0,
8719         "x509ce.CertificateAssertion", HFILL }},
8720     { &hf_x411_message_origin_authentication,
8721       { "message-origin-authentication", "x411.message_origin_authentication",
8722         FT_NONE, BASE_NONE, NULL, 0,
8723         "x509ce.CertificateAssertion", HFILL }},
8724     { &hf_x411_local_identifier,
8725       { "local-identifier", "x411.local_identifier",
8726         FT_STRING, BASE_NONE, NULL, 0,
8727         "x411.LocalIdentifier", HFILL }},
8728     { &hf_x411_numeric,
8729       { "numeric", "x411.numeric",
8730         FT_STRING, BASE_NONE, NULL, 0,
8731         "x411.NumericString", HFILL }},
8732     { &hf_x411_printable,
8733       { "printable", "x411.printable",
8734         FT_STRING, BASE_NONE, NULL, 0,
8735         "x411.PrintableString", HFILL }},
8736     { &hf_x411_built_in_standard_attributes,
8737       { "built-in-standard-attributes", "x411.built_in_standard_attributes",
8738         FT_NONE, BASE_NONE, NULL, 0,
8739         "x411.BuiltInStandardAttributes", HFILL }},
8740     { &hf_x411_built_in_domain_defined_attributes,
8741       { "built-in-domain-defined-attributes", "x411.built_in_domain_defined_attributes",
8742         FT_UINT32, BASE_DEC, NULL, 0,
8743         "x411.BuiltInDomainDefinedAttributes", HFILL }},
8744     { &hf_x411_extension_attributes,
8745       { "extension-attributes", "x411.extension_attributes",
8746         FT_UINT32, BASE_DEC, NULL, 0,
8747         "x411.ExtensionAttributes", HFILL }},
8748     { &hf_x411_directory_name,
8749       { "directory-name", "x411.directory_name",
8750         FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0,
8751         "x509if.Name", HFILL }},
8752     { &hf_x411_network_address,
8753       { "network-address", "x411.network_address",
8754         FT_STRING, BASE_NONE, NULL, 0,
8755         "x411.NetworkAddress", HFILL }},
8756     { &hf_x411_terminal_identifier,
8757       { "terminal-identifier", "x411.terminal_identifier",
8758         FT_STRING, BASE_NONE, NULL, 0,
8759         "x411.TerminalIdentifier", HFILL }},
8760     { &hf_x411_private_domain_name,
8761       { "private-domain-name", "x411.private_domain_name",
8762         FT_UINT32, BASE_DEC, VALS(x411_PrivateDomainName_vals), 0,
8763         "x411.PrivateDomainName", HFILL }},
8764     { &hf_x411_organization_name,
8765       { "organization-name", "x411.organization_name",
8766         FT_STRING, BASE_NONE, NULL, 0,
8767         "x411.OrganizationName", HFILL }},
8768     { &hf_x411_numeric_user_identifier,
8769       { "numeric-user-identifier", "x411.numeric_user_identifier",
8770         FT_STRING, BASE_NONE, NULL, 0,
8771         "x411.NumericUserIdentifier", HFILL }},
8772     { &hf_x411_personal_name,
8773       { "personal-name", "x411.personal_name",
8774         FT_NONE, BASE_NONE, NULL, 0,
8775         "x411.PersonalName", HFILL }},
8776     { &hf_x411_organizational_unit_names,
8777       { "organizational-unit-names", "x411.organizational_unit_names",
8778         FT_UINT32, BASE_DEC, NULL, 0,
8779         "x411.OrganizationalUnitNames", HFILL }},
8780     { &hf_x411_x121_dcc_code,
8781       { "x121-dcc-code", "x411.x121_dcc_code",
8782         FT_STRING, BASE_NONE, NULL, 0,
8783         "x411.NumericString", HFILL }},
8784     { &hf_x411_iso_3166_alpha2_code,
8785       { "iso-3166-alpha2-code", "x411.iso_3166_alpha2_code",
8786         FT_STRING, BASE_NONE, NULL, 0,
8787         "x411.PrintableString", HFILL }},
8788     { &hf_x411_printable_surname,
8789       { "surname", "x411.surname",
8790         FT_STRING, BASE_NONE, NULL, 0,
8791         "x411.PrintableString", HFILL }},
8792     { &hf_x411_printable_given_name,
8793       { "given-name", "x411.given_name",
8794         FT_STRING, BASE_NONE, NULL, 0,
8795         "x411.PrintableString", HFILL }},
8796     { &hf_x411_printable_initials,
8797       { "initials", "x411.initials",
8798         FT_STRING, BASE_NONE, NULL, 0,
8799         "x411.PrintableString", HFILL }},
8800     { &hf_x411_printable_generation_qualifier,
8801       { "generation-qualifier", "x411.generation_qualifier",
8802         FT_STRING, BASE_NONE, NULL, 0,
8803         "x411.PrintableString", HFILL }},
8804     { &hf_x411_OrganizationalUnitNames_item,
8805       { "Item", "x411.OrganizationalUnitNames_item",
8806         FT_STRING, BASE_NONE, NULL, 0,
8807         "x411.OrganizationalUnitName", HFILL }},
8808     { &hf_x411_BuiltInDomainDefinedAttributes_item,
8809       { "Item", "x411.BuiltInDomainDefinedAttributes_item",
8810         FT_NONE, BASE_NONE, NULL, 0,
8811         "x411.BuiltInDomainDefinedAttribute", HFILL }},
8812     { &hf_x411_printable_type,
8813       { "type", "x411.type",
8814         FT_STRING, BASE_NONE, NULL, 0,
8815         "x411.PrintableString", HFILL }},
8816     { &hf_x411_printable_value,
8817       { "value", "x411.value",
8818         FT_STRING, BASE_NONE, NULL, 0,
8819         "x411.PrintableString", HFILL }},
8820     { &hf_x411_ExtensionAttributes_item,
8821       { "Item", "x411.ExtensionAttributes_item",
8822         FT_NONE, BASE_NONE, NULL, 0,
8823         "x411.ExtensionAttribute", HFILL }},
8824     { &hf_x411_extension_attribute_type,
8825       { "extension-attribute-type", "x411.extension_attribute_type",
8826         FT_INT32, BASE_DEC, NULL, 0,
8827         "x411.INTEGER", HFILL }},
8828     { &hf_x411_extension_attribute_value,
8829       { "extension-attribute-value", "x411.extension_attribute_value",
8830         FT_NONE, BASE_NONE, NULL, 0,
8831         "x411.T_extension_attribute_value", HFILL }},
8832     { &hf_x411_teletex_surname,
8833       { "surname", "x411.surname",
8834         FT_STRING, BASE_NONE, NULL, 0,
8835         "x411.TeletexString", HFILL }},
8836     { &hf_x411_teletex_given_name,
8837       { "given-name", "x411.given_name",
8838         FT_STRING, BASE_NONE, NULL, 0,
8839         "x411.TeletexString", HFILL }},
8840     { &hf_x411_teletex_initials,
8841       { "initials", "x411.initials",
8842         FT_STRING, BASE_NONE, NULL, 0,
8843         "x411.TeletexString", HFILL }},
8844     { &hf_x411_teletex_generation_qualifier,
8845       { "generation-qualifier", "x411.generation_qualifier",
8846         FT_STRING, BASE_NONE, NULL, 0,
8847         "x411.TeletexString", HFILL }},
8848     { &hf_x411_universal_surname,
8849       { "surname", "x411.surname",
8850         FT_NONE, BASE_NONE, NULL, 0,
8851         "x411.UniversalOrBMPString", HFILL }},
8852     { &hf_x411_universal_given_name,
8853       { "given-name", "x411.given_name",
8854         FT_NONE, BASE_NONE, NULL, 0,
8855         "x411.UniversalOrBMPString", HFILL }},
8856     { &hf_x411_universal_initials,
8857       { "initials", "x411.initials",
8858         FT_NONE, BASE_NONE, NULL, 0,
8859         "x411.UniversalOrBMPString", HFILL }},
8860     { &hf_x411_universal_generation_qualifier,
8861       { "generation-qualifier", "x411.generation_qualifier",
8862         FT_NONE, BASE_NONE, NULL, 0,
8863         "x411.UniversalOrBMPString", HFILL }},
8864     { &hf_x411_TeletexOrganizationalUnitNames_item,
8865       { "Item", "x411.TeletexOrganizationalUnitNames_item",
8866         FT_STRING, BASE_NONE, NULL, 0,
8867         "x411.TeletexOrganizationalUnitName", HFILL }},
8868     { &hf_x411_UniversalOrganizationalUnitNames_item,
8869       { "Item", "x411.UniversalOrganizationalUnitNames_item",
8870         FT_NONE, BASE_NONE, NULL, 0,
8871         "x411.UniversalOrganizationalUnitName", HFILL }},
8872     { &hf_x411_character_encoding,
8873       { "character-encoding", "x411.character_encoding",
8874         FT_UINT32, BASE_DEC, VALS(x411_T_character_encoding_vals), 0,
8875         "x411.T_character_encoding", HFILL }},
8876     { &hf_x411_two_octets,
8877       { "two-octets", "x411.two_octets",
8878         FT_STRING, BASE_NONE, NULL, 0,
8879         "x411.BMPString", HFILL }},
8880     { &hf_x411_four_octets,
8881       { "four-octets", "x411.four_octets",
8882         FT_STRING, BASE_NONE, NULL, 0,
8883         "x411.UniversalString", HFILL }},
8884     { &hf_x411_iso_639_language_code,
8885       { "iso-639-language-code", "x411.iso_639_language_code",
8886         FT_STRING, BASE_NONE, NULL, 0,
8887         "x411.PrintableString", HFILL }},
8888     { &hf_x411_numeric_code,
8889       { "numeric-code", "x411.numeric_code",
8890         FT_STRING, BASE_NONE, NULL, 0,
8891         "x411.NumericString", HFILL }},
8892     { &hf_x411_printable_code,
8893       { "printable-code", "x411.printable_code",
8894         FT_STRING, BASE_NONE, NULL, 0,
8895         "x411.PrintableString", HFILL }},
8896     { &hf_x411_printable_address,
8897       { "printable-address", "x411.printable_address",
8898         FT_UINT32, BASE_DEC, NULL, 0,
8899         "x411.T_printable_address", HFILL }},
8900     { &hf_x411_printable_address_item,
8901       { "Item", "x411.printable_address_item",
8902         FT_STRING, BASE_NONE, NULL, 0,
8903         "x411.PrintableString", HFILL }},
8904     { &hf_x411_teletex_string,
8905       { "teletex-string", "x411.teletex_string",
8906         FT_STRING, BASE_NONE, NULL, 0,
8907         "x411.TeletexString", HFILL }},
8908     { &hf_x411_printable_string,
8909       { "printable-string", "x411.printable_string",
8910         FT_STRING, BASE_NONE, NULL, 0,
8911         "x411.PrintableString", HFILL }},
8912     { &hf_x411_e163_4_address,
8913       { "e163-4-address", "x411.e163_4_address",
8914         FT_NONE, BASE_NONE, NULL, 0,
8915         "x411.T_e163_4_address", HFILL }},
8916     { &hf_x411_number,
8917       { "number", "x411.number",
8918         FT_STRING, BASE_NONE, NULL, 0,
8919         "x411.NumericString", HFILL }},
8920     { &hf_x411_sub_address,
8921       { "sub-address", "x411.sub_address",
8922         FT_STRING, BASE_NONE, NULL, 0,
8923         "x411.NumericString", HFILL }},
8924     { &hf_x411_psap_address,
8925       { "psap-address", "x411.psap_address",
8926         FT_NONE, BASE_NONE, NULL, 0,
8927         "x509sat.PresentationAddress", HFILL }},
8928     { &hf_x411_TeletexDomainDefinedAttributes_item,
8929       { "Item", "x411.TeletexDomainDefinedAttributes_item",
8930         FT_NONE, BASE_NONE, NULL, 0,
8931         "x411.TeletexDomainDefinedAttribute", HFILL }},
8932     { &hf_x411_type,
8933       { "type", "x411.type",
8934         FT_STRING, BASE_NONE, NULL, 0,
8935         "x411.TeletexString", HFILL }},
8936     { &hf_x411_teletex_value,
8937       { "value", "x411.value",
8938         FT_STRING, BASE_NONE, NULL, 0,
8939         "x411.TeletexString", HFILL }},
8940     { &hf_x411_UniversalDomainDefinedAttributes_item,
8941       { "Item", "x411.UniversalDomainDefinedAttributes_item",
8942         FT_NONE, BASE_NONE, NULL, 0,
8943         "x411.UniversalDomainDefinedAttribute", HFILL }},
8944     { &hf_x411_universal_type,
8945       { "type", "x411.type",
8946         FT_NONE, BASE_NONE, NULL, 0,
8947         "x411.UniversalOrBMPString", HFILL }},
8948     { &hf_x411_universal_value,
8949       { "value", "x411.value",
8950         FT_NONE, BASE_NONE, NULL, 0,
8951         "x411.UniversalOrBMPString", HFILL }},
8952     { &hf_x411_built_in_encoded_information_types,
8953       { "built-in-encoded-information-types", "x411.built_in_encoded_information_types",
8954         FT_BYTES, BASE_HEX, NULL, 0,
8955         "x411.BuiltInEncodedInformationTypes", HFILL }},
8956     { &hf_x411_g3_facsimile,
8957       { "g3-facsimile", "x411.g3_facsimile",
8958         FT_BYTES, BASE_HEX, NULL, 0,
8959         "x411.G3FacsimileNonBasicParameters", HFILL }},
8960     { &hf_x411_teletex,
8961       { "teletex", "x411.teletex",
8962         FT_NONE, BASE_NONE, NULL, 0,
8963         "x411.TeletexNonBasicParameters", HFILL }},
8964     { &hf_x411_extended_encoded_information_types,
8965       { "extended-encoded-information-types", "x411.extended_encoded_information_types",
8966         FT_UINT32, BASE_DEC, NULL, 0,
8967         "x411.ExtendedEncodedInformationTypes", HFILL }},
8968     { &hf_x411_ExtendedEncodedInformationTypes_item,
8969       { "Item", "x411.ExtendedEncodedInformationTypes_item",
8970         FT_OID, BASE_NONE, NULL, 0,
8971         "x411.ExtendedEncodedInformationType", HFILL }},
8972     { &hf_x411_graphic_character_sets,
8973       { "graphic-character-sets", "x411.graphic_character_sets",
8974         FT_STRING, BASE_NONE, NULL, 0,
8975         "x411.TeletexString", HFILL }},
8976     { &hf_x411_control_character_sets,
8977       { "control-character-sets", "x411.control_character_sets",
8978         FT_STRING, BASE_NONE, NULL, 0,
8979         "x411.TeletexString", HFILL }},
8980     { &hf_x411_page_formats,
8981       { "page-formats", "x411.page_formats",
8982         FT_BYTES, BASE_HEX, NULL, 0,
8983         "x411.OCTET_STRING", HFILL }},
8984     { &hf_x411_miscellaneous_terminal_capabilities,
8985       { "miscellaneous-terminal-capabilities", "x411.miscellaneous_terminal_capabilities",
8986         FT_STRING, BASE_NONE, NULL, 0,
8987         "x411.TeletexString", HFILL }},
8988     { &hf_x411_private_use,
8989       { "private-use", "x411.private_use",
8990         FT_BYTES, BASE_HEX, NULL, 0,
8991         "x411.OCTET_STRING", HFILL }},
8992     { &hf_x411_token_type_identifier,
8993       { "token-type-identifier", "x411.token_type_identifier",
8994         FT_OID, BASE_NONE, NULL, 0,
8995         "x411.TokenTypeIdentifier", HFILL }},
8996     { &hf_x411_token,
8997       { "token", "x411.token",
8998         FT_NONE, BASE_NONE, NULL, 0,
8999         "x411.TokenTypeData", HFILL }},
9000     { &hf_x411_signature_algorithm_identifier,
9001       { "signature-algorithm-identifier", "x411.signature_algorithm_identifier",
9002         FT_NONE, BASE_NONE, NULL, 0,
9003         "x509af.AlgorithmIdentifier", HFILL }},
9004     { &hf_x411_name,
9005       { "name", "x411.name",
9006         FT_UINT32, BASE_DEC, VALS(x411_T_name_vals), 0,
9007         "x411.T_name", HFILL }},
9008     { &hf_x411_token_recipient_name,
9009       { "recipient-name", "x411.recipient_name",
9010         FT_NONE, BASE_NONE, NULL, 0,
9011         "x411.MTSRecipientName", HFILL }},
9012     { &hf_x411_token_mta,
9013       { "mta", "x411.mta",
9014         FT_NONE, BASE_NONE, NULL, 0,
9015         "x411.MTANameAndOptionalGDI", HFILL }},
9016     { &hf_x411_time,
9017       { "time", "x411.time",
9018         FT_STRING, BASE_NONE, NULL, 0,
9019         "x411.Time", HFILL }},
9020     { &hf_x411_signed_data,
9021       { "signed-data", "x411.signed_data",
9022         FT_NONE, BASE_NONE, NULL, 0,
9023         "x411.TokenData", HFILL }},
9024     { &hf_x411_encryption_algorithm_identifier,
9025       { "encryption-algorithm-identifier", "x411.encryption_algorithm_identifier",
9026         FT_NONE, BASE_NONE, NULL, 0,
9027         "x509af.AlgorithmIdentifier", HFILL }},
9028     { &hf_x411_encrypted_data,
9029       { "encrypted-data", "x411.encrypted_data",
9030         FT_BYTES, BASE_HEX, NULL, 0,
9031         "x411.BIT_STRING", HFILL }},
9032     { &hf_x411_asymmetric_token_data,
9033       { "asymmetric-token-data", "x411.asymmetric_token_data",
9034         FT_NONE, BASE_NONE, NULL, 0,
9035         "x411.AsymmetricTokenData", HFILL }},
9036     { &hf_x411_algorithm_identifier,
9037       { "algorithm-identifier", "x411.algorithm_identifier",
9038         FT_NONE, BASE_NONE, NULL, 0,
9039         "x509af.AlgorithmIdentifier", HFILL }},
9040     { &hf_x411_token_data_type,
9041       { "type", "x411.type",
9042         FT_INT32, BASE_DEC, NULL, 0,
9043         "x411.INTEGER", HFILL }},
9044     { &hf_x411_value,
9045       { "value", "x411.value",
9046         FT_NONE, BASE_NONE, NULL, 0,
9047         "x411.T_value", HFILL }},
9048     { &hf_x411_content_confidentiality_algorithm_identifier,
9049       { "content-confidentiality-algorithm-identifier", "x411.content_confidentiality_algorithm_identifier",
9050         FT_NONE, BASE_NONE, NULL, 0,
9051         "x411.ContentConfidentialityAlgorithmIdentifier", HFILL }},
9052     { &hf_x411_content_integrity_check,
9053       { "content-integrity-check", "x411.content_integrity_check",
9054         FT_NONE, BASE_NONE, NULL, 0,
9055         "x411.ContentIntegrityCheck", HFILL }},
9056     { &hf_x411_message_security_label,
9057       { "message-security-label", "x411.message_security_label",
9058         FT_NONE, BASE_NONE, NULL, 0,
9059         "x411.MessageSecurityLabel", HFILL }},
9060     { &hf_x411_proof_of_delivery_request,
9061       { "proof-of-delivery-request", "x411.proof_of_delivery_request",
9062         FT_UINT32, BASE_DEC, VALS(x411_ProofOfDeliveryRequest_vals), 0,
9063         "x411.ProofOfDeliveryRequest", HFILL }},
9064     { &hf_x411_message_sequence_number,
9065       { "message-sequence-number", "x411.message_sequence_number",
9066         FT_INT32, BASE_DEC, NULL, 0,
9067         "x411.INTEGER", HFILL }},
9068     { &hf_x411_content_confidentiality_key,
9069       { "content-confidentiality-key", "x411.content_confidentiality_key",
9070         FT_BYTES, BASE_HEX, NULL, 0,
9071         "x411.EncryptionKey", HFILL }},
9072     { &hf_x411_content_integrity_key,
9073       { "content-integrity-key", "x411.content_integrity_key",
9074         FT_BYTES, BASE_HEX, NULL, 0,
9075         "x411.EncryptionKey", HFILL }},
9076     { &hf_x411_security_policy_identifier,
9077       { "security-policy-identifier", "x411.security_policy_identifier",
9078         FT_OID, BASE_NONE, NULL, 0,
9079         "x411.SecurityPolicyIdentifier", HFILL }},
9080     { &hf_x411_security_classification,
9081       { "security-classification", "x411.security_classification",
9082         FT_UINT32, BASE_DEC, VALS(x411_SecurityClassification_vals), 0,
9083         "x411.SecurityClassification", HFILL }},
9084     { &hf_x411_privacy_mark,
9085       { "privacy-mark", "x411.privacy_mark",
9086         FT_STRING, BASE_NONE, NULL, 0,
9087         "x411.PrivacyMark", HFILL }},
9088     { &hf_x411_security_categories,
9089       { "security-categories", "x411.security_categories",
9090         FT_UINT32, BASE_DEC, NULL, 0,
9091         "x411.SecurityCategories", HFILL }},
9092     { &hf_x411_SecurityCategories_item,
9093       { "Item", "x411.SecurityCategories_item",
9094         FT_NONE, BASE_NONE, NULL, 0,
9095         "x411.SecurityCategory", HFILL }},
9096     { &hf_x411_category_type,
9097       { "type", "x411.type",
9098         FT_OID, BASE_NONE, NULL, 0,
9099         "x411.OBJECT_IDENTIFIER", HFILL }},
9100     { &hf_x411_category_value,
9101       { "value", "x411.value",
9102         FT_NONE, BASE_NONE, NULL, 0,
9103         "x411.CategoryValue", HFILL }},
9104     { &hf_x411_PerRecipientIndicators_responsibility,
9105       { "responsibility", "x411.responsibility",
9106         FT_BOOLEAN, 8, NULL, 0x80,
9107         "", HFILL }},
9108     { &hf_x411_PerRecipientIndicators_originating_MTA_report,
9109       { "originating-MTA-report", "x411.originating-MTA-report",
9110         FT_BOOLEAN, 8, NULL, 0x40,
9111         "", HFILL }},
9112     { &hf_x411_PerRecipientIndicators_originating_MTA_non_delivery_report,
9113       { "originating-MTA-non-delivery-report", "x411.originating-MTA-non-delivery-report",
9114         FT_BOOLEAN, 8, NULL, 0x20,
9115         "", HFILL }},
9116     { &hf_x411_PerRecipientIndicators_originator_report,
9117       { "originator-report", "x411.originator-report",
9118         FT_BOOLEAN, 8, NULL, 0x10,
9119         "", HFILL }},
9120     { &hf_x411_PerRecipientIndicators_originator_non_delivery_report,
9121       { "originator-non-delivery-report", "x411.originator-non-delivery-report",
9122         FT_BOOLEAN, 8, NULL, 0x08,
9123         "", HFILL }},
9124     { &hf_x411_PerRecipientIndicators_reserved_5,
9125       { "reserved-5", "x411.reserved-5",
9126         FT_BOOLEAN, 8, NULL, 0x04,
9127         "", HFILL }},
9128     { &hf_x411_PerRecipientIndicators_reserved_6,
9129       { "reserved-6", "x411.reserved-6",
9130         FT_BOOLEAN, 8, NULL, 0x02,
9131         "", HFILL }},
9132     { &hf_x411_PerRecipientIndicators_reserved_7,
9133       { "reserved-7", "x411.reserved-7",
9134         FT_BOOLEAN, 8, NULL, 0x01,
9135         "", HFILL }},
9136     { &hf_x411_OtherActions_redirected,
9137       { "redirected", "x411.redirected",
9138         FT_BOOLEAN, 8, NULL, 0x80,
9139         "", HFILL }},
9140     { &hf_x411_OtherActions_dl_operation,
9141       { "dl-operation", "x411.dl-operation",
9142         FT_BOOLEAN, 8, NULL, 0x40,
9143         "", HFILL }},
9144     { &hf_x411_Operations_probe_submission_or_report_delivery,
9145       { "probe-submission-or-report-delivery", "x411.probe-submission-or-report-delivery",
9146         FT_BOOLEAN, 8, NULL, 0x80,
9147         "", HFILL }},
9148     { &hf_x411_Operations_message_submission_or_message_delivery,
9149       { "message-submission-or-message-delivery", "x411.message-submission-or-message-delivery",
9150         FT_BOOLEAN, 8, NULL, 0x40,
9151         "", HFILL }},
9152     { &hf_x411_WaitingMessages_long_content,
9153       { "long-content", "x411.long-content",
9154         FT_BOOLEAN, 8, NULL, 0x80,
9155         "", HFILL }},
9156     { &hf_x411_WaitingMessages_low_priority,
9157       { "low-priority", "x411.low-priority",
9158         FT_BOOLEAN, 8, NULL, 0x40,
9159         "", HFILL }},
9160     { &hf_x411_WaitingMessages_other_security_labels,
9161       { "other-security-labels", "x411.other-security-labels",
9162         FT_BOOLEAN, 8, NULL, 0x20,
9163         "", HFILL }},
9164     { &hf_x411_T_source_type_originated_by,
9165       { "originated-by", "x411.originated-by",
9166         FT_BOOLEAN, 8, NULL, 0x80,
9167         "", HFILL }},
9168     { &hf_x411_T_source_type_redirected_by,
9169       { "redirected-by", "x411.redirected-by",
9170         FT_BOOLEAN, 8, NULL, 0x40,
9171         "", HFILL }},
9172     { &hf_x411_T_source_type_dl_expanded_by,
9173       { "dl-expanded-by", "x411.dl-expanded-by",
9174         FT_BOOLEAN, 8, NULL, 0x20,
9175         "", HFILL }},
9176     { &hf_x411_T_standard_parameters_user_name,
9177       { "user-name", "x411.user-name",
9178         FT_BOOLEAN, 8, NULL, 0x80,
9179         "", HFILL }},
9180     { &hf_x411_T_standard_parameters_user_address,
9181       { "user-address", "x411.user-address",
9182         FT_BOOLEAN, 8, NULL, 0x40,
9183         "", HFILL }},
9184     { &hf_x411_T_standard_parameters_deliverable_class,
9185       { "deliverable-class", "x411.deliverable-class",
9186         FT_BOOLEAN, 8, NULL, 0x20,
9187         "", HFILL }},
9188     { &hf_x411_T_standard_parameters_default_delivery_controls,
9189       { "default-delivery-controls", "x411.default-delivery-controls",
9190         FT_BOOLEAN, 8, NULL, 0x10,
9191         "", HFILL }},
9192     { &hf_x411_T_standard_parameters_redirections,
9193       { "redirections", "x411.redirections",
9194         FT_BOOLEAN, 8, NULL, 0x08,
9195         "", HFILL }},
9196     { &hf_x411_T_standard_parameters_restricted_delivery,
9197       { "restricted-delivery", "x411.restricted-delivery",
9198         FT_BOOLEAN, 8, NULL, 0x04,
9199         "", HFILL }},
9200     { &hf_x411_PerMessageIndicators_disclosure_of_other_recipients,
9201       { "disclosure-of-other-recipients", "x411.disclosure-of-other-recipients",
9202         FT_BOOLEAN, 8, NULL, 0x80,
9203         "", HFILL }},
9204     { &hf_x411_PerMessageIndicators_implicit_conversion_prohibited,
9205       { "implicit-conversion-prohibited", "x411.implicit-conversion-prohibited",
9206         FT_BOOLEAN, 8, NULL, 0x40,
9207         "", HFILL }},
9208     { &hf_x411_PerMessageIndicators_alternate_recipient_allowed,
9209       { "alternate-recipient-allowed", "x411.alternate-recipient-allowed",
9210         FT_BOOLEAN, 8, NULL, 0x20,
9211         "", HFILL }},
9212     { &hf_x411_PerMessageIndicators_content_return_request,
9213       { "content-return-request", "x411.content-return-request",
9214         FT_BOOLEAN, 8, NULL, 0x10,
9215         "", HFILL }},
9216     { &hf_x411_PerMessageIndicators_reserved,
9217       { "reserved", "x411.reserved",
9218         FT_BOOLEAN, 8, NULL, 0x08,
9219         "", HFILL }},
9220     { &hf_x411_PerMessageIndicators_bit_5,
9221       { "bit-5", "x411.bit-5",
9222         FT_BOOLEAN, 8, NULL, 0x04,
9223         "", HFILL }},
9224     { &hf_x411_PerMessageIndicators_bit_6,
9225       { "bit-6", "x411.bit-6",
9226         FT_BOOLEAN, 8, NULL, 0x02,
9227         "", HFILL }},
9228     { &hf_x411_PerMessageIndicators_service_message,
9229       { "service-message", "x411.service-message",
9230         FT_BOOLEAN, 8, NULL, 0x01,
9231         "", HFILL }},
9232     { &hf_x411_OriginatorReportRequest_report,
9233       { "report", "x411.report",
9234         FT_BOOLEAN, 8, NULL, 0x10,
9235         "", HFILL }},
9236     { &hf_x411_OriginatorReportRequest_non_delivery_report,
9237       { "non-delivery-report", "x411.non-delivery-report",
9238         FT_BOOLEAN, 8, NULL, 0x08,
9239         "", HFILL }},
9240     { &hf_x411_DeliveryFlags_implicit_conversion_prohibited,
9241       { "implicit-conversion-prohibited", "x411.implicit-conversion-prohibited",
9242         FT_BOOLEAN, 8, NULL, 0x40,
9243         "", HFILL }},
9244     { &hf_x411_Criticality_for_submission,
9245       { "for-submission", "x411.for-submission",
9246         FT_BOOLEAN, 8, NULL, 0x80,
9247         "", HFILL }},
9248     { &hf_x411_Criticality_for_transfer,
9249       { "for-transfer", "x411.for-transfer",
9250         FT_BOOLEAN, 8, NULL, 0x40,
9251         "", HFILL }},
9252     { &hf_x411_Criticality_for_delivery,
9253       { "for-delivery", "x411.for-delivery",
9254         FT_BOOLEAN, 8, NULL, 0x20,
9255         "", HFILL }},
9256     { &hf_x411_PhysicalDeliveryModes_ordinary_mail,
9257       { "ordinary-mail", "x411.ordinary-mail",
9258         FT_BOOLEAN, 8, NULL, 0x80,
9259         "", HFILL }},
9260     { &hf_x411_PhysicalDeliveryModes_special_delivery,
9261       { "special-delivery", "x411.special-delivery",
9262         FT_BOOLEAN, 8, NULL, 0x40,
9263         "", HFILL }},
9264     { &hf_x411_PhysicalDeliveryModes_express_mail,
9265       { "express-mail", "x411.express-mail",
9266         FT_BOOLEAN, 8, NULL, 0x20,
9267         "", HFILL }},
9268     { &hf_x411_PhysicalDeliveryModes_counter_collection,
9269       { "counter-collection", "x411.counter-collection",
9270         FT_BOOLEAN, 8, NULL, 0x10,
9271         "", HFILL }},
9272     { &hf_x411_PhysicalDeliveryModes_counter_collection_with_telephone_advice,
9273       { "counter-collection-with-telephone-advice", "x411.counter-collection-with-telephone-advice",
9274         FT_BOOLEAN, 8, NULL, 0x08,
9275         "", HFILL }},
9276     { &hf_x411_PhysicalDeliveryModes_counter_collection_with_telex_advice,
9277       { "counter-collection-with-telex-advice", "x411.counter-collection-with-telex-advice",
9278         FT_BOOLEAN, 8, NULL, 0x04,
9279         "", HFILL }},
9280     { &hf_x411_PhysicalDeliveryModes_counter_collection_with_teletex_advice,
9281       { "counter-collection-with-teletex-advice", "x411.counter-collection-with-teletex-advice",
9282         FT_BOOLEAN, 8, NULL, 0x02,
9283         "", HFILL }},
9284     { &hf_x411_PhysicalDeliveryModes_bureau_fax_delivery,
9285       { "bureau-fax-delivery", "x411.bureau-fax-delivery",
9286         FT_BOOLEAN, 8, NULL, 0x01,
9287         "", HFILL }},
9288     { &hf_x411_BuiltInEncodedInformationTypes_unknown,
9289       { "unknown", "x411.unknown",
9290         FT_BOOLEAN, 8, NULL, 0x80,
9291         "", HFILL }},
9292     { &hf_x411_BuiltInEncodedInformationTypes_ia5_text,
9293       { "ia5-text", "x411.ia5-text",
9294         FT_BOOLEAN, 8, NULL, 0x20,
9295         "", HFILL }},
9296     { &hf_x411_BuiltInEncodedInformationTypes_g3_facsimile,
9297       { "g3-facsimile", "x411.g3-facsimile",
9298         FT_BOOLEAN, 8, NULL, 0x10,
9299         "", HFILL }},
9300     { &hf_x411_BuiltInEncodedInformationTypes_g4_class_1,
9301       { "g4-class-1", "x411.g4-class-1",
9302         FT_BOOLEAN, 8, NULL, 0x08,
9303         "", HFILL }},
9304     { &hf_x411_BuiltInEncodedInformationTypes_teletex,
9305       { "teletex", "x411.teletex",
9306         FT_BOOLEAN, 8, NULL, 0x04,
9307         "", HFILL }},
9308     { &hf_x411_BuiltInEncodedInformationTypes_videotex,
9309       { "videotex", "x411.videotex",
9310         FT_BOOLEAN, 8, NULL, 0x02,
9311         "", HFILL }},
9312     { &hf_x411_BuiltInEncodedInformationTypes_voice,
9313       { "voice", "x411.voice",
9314         FT_BOOLEAN, 8, NULL, 0x01,
9315         "", HFILL }},
9316     { &hf_x411_BuiltInEncodedInformationTypes_sfd,
9317       { "sfd", "x411.sfd",
9318         FT_BOOLEAN, 8, NULL, 0x80,
9319         "", HFILL }},
9320     { &hf_x411_BuiltInEncodedInformationTypes_mixed_mode,
9321       { "mixed-mode", "x411.mixed-mode",
9322         FT_BOOLEAN, 8, NULL, 0x40,
9323         "", HFILL }},
9324     { &hf_x411_G3FacsimileNonBasicParameters_two_dimensional,
9325       { "two-dimensional", "x411.two-dimensional",
9326         FT_BOOLEAN, 8, NULL, 0x80,
9327         "", HFILL }},
9328     { &hf_x411_G3FacsimileNonBasicParameters_fine_resolution,
9329       { "fine-resolution", "x411.fine-resolution",
9330         FT_BOOLEAN, 8, NULL, 0x40,
9331         "", HFILL }},
9332     { &hf_x411_G3FacsimileNonBasicParameters_unlimited_length,
9333       { "unlimited-length", "x411.unlimited-length",
9334         FT_BOOLEAN, 8, NULL, 0x08,
9335         "", HFILL }},
9336     { &hf_x411_G3FacsimileNonBasicParameters_b4_length,
9337       { "b4-length", "x411.b4-length",
9338         FT_BOOLEAN, 8, NULL, 0x04,
9339         "", HFILL }},
9340     { &hf_x411_G3FacsimileNonBasicParameters_a3_width,
9341       { "a3-width", "x411.a3-width",
9342         FT_BOOLEAN, 8, NULL, 0x02,
9343         "", HFILL }},
9344     { &hf_x411_G3FacsimileNonBasicParameters_b4_width,
9345       { "b4-width", "x411.b4-width",
9346         FT_BOOLEAN, 8, NULL, 0x01,
9347         "", HFILL }},
9348     { &hf_x411_G3FacsimileNonBasicParameters_t6_coding,
9349       { "t6-coding", "x411.t6-coding",
9350         FT_BOOLEAN, 8, NULL, 0x40,
9351         "", HFILL }},
9352     { &hf_x411_G3FacsimileNonBasicParameters_uncompressed,
9353       { "uncompressed", "x411.uncompressed",
9354         FT_BOOLEAN, 8, NULL, 0x02,
9355         "", HFILL }},
9356     { &hf_x411_G3FacsimileNonBasicParameters_width_middle_864_of_1728,
9357       { "width-middle-864-of-1728", "x411.width-middle-864-of-1728",
9358         FT_BOOLEAN, 8, NULL, 0x04,
9359         "", HFILL }},
9360     { &hf_x411_G3FacsimileNonBasicParameters_width_middle_1216_of_1728,
9361       { "width-middle-1216-of-1728", "x411.width-middle-1216-of-1728",
9362         FT_BOOLEAN, 8, NULL, 0x02,
9363         "", HFILL }},
9364     { &hf_x411_G3FacsimileNonBasicParameters_resolution_type,
9365       { "resolution-type", "x411.resolution-type",
9366         FT_BOOLEAN, 8, NULL, 0x08,
9367         "", HFILL }},
9368     { &hf_x411_G3FacsimileNonBasicParameters_resolution_400x400,
9369       { "resolution-400x400", "x411.resolution-400x400",
9370         FT_BOOLEAN, 8, NULL, 0x04,
9371         "", HFILL }},
9372     { &hf_x411_G3FacsimileNonBasicParameters_resolution_300x300,
9373       { "resolution-300x300", "x411.resolution-300x300",
9374         FT_BOOLEAN, 8, NULL, 0x02,
9375         "", HFILL }},
9376     { &hf_x411_G3FacsimileNonBasicParameters_resolution_8x15,
9377       { "resolution-8x15", "x411.resolution-8x15",
9378         FT_BOOLEAN, 8, NULL, 0x01,
9379         "", HFILL }},
9380     { &hf_x411_G3FacsimileNonBasicParameters_edi,
9381       { "edi", "x411.edi",
9382         FT_BOOLEAN, 8, NULL, 0x40,
9383         "", HFILL }},
9384     { &hf_x411_G3FacsimileNonBasicParameters_dtm,
9385       { "dtm", "x411.dtm",
9386         FT_BOOLEAN, 8, NULL, 0x20,
9387         "", HFILL }},
9388     { &hf_x411_G3FacsimileNonBasicParameters_bft,
9389       { "bft", "x411.bft",
9390         FT_BOOLEAN, 8, NULL, 0x10,
9391         "", HFILL }},
9392     { &hf_x411_G3FacsimileNonBasicParameters_mixed_mode,
9393       { "mixed-mode", "x411.mixed-mode",
9394         FT_BOOLEAN, 8, NULL, 0x20,
9395         "", HFILL }},
9396     { &hf_x411_G3FacsimileNonBasicParameters_character_mode,
9397       { "character-mode", "x411.character-mode",
9398         FT_BOOLEAN, 8, NULL, 0x08,
9399         "", HFILL }},
9400     { &hf_x411_G3FacsimileNonBasicParameters_twelve_bits,
9401       { "twelve-bits", "x411.twelve-bits",
9402         FT_BOOLEAN, 8, NULL, 0x40,
9403         "", HFILL }},
9404     { &hf_x411_G3FacsimileNonBasicParameters_preferred_huffmann,
9405       { "preferred-huffmann", "x411.preferred-huffmann",
9406         FT_BOOLEAN, 8, NULL, 0x20,
9407         "", HFILL }},
9408     { &hf_x411_G3FacsimileNonBasicParameters_full_colour,
9409       { "full-colour", "x411.full-colour",
9410         FT_BOOLEAN, 8, NULL, 0x10,
9411         "", HFILL }},
9412     { &hf_x411_G3FacsimileNonBasicParameters_jpeg,
9413       { "jpeg", "x411.jpeg",
9414         FT_BOOLEAN, 8, NULL, 0x08,
9415         "", HFILL }},
9416     { &hf_x411_G3FacsimileNonBasicParameters_processable_mode_26,
9417       { "processable-mode-26", "x411.processable-mode-26",
9418         FT_BOOLEAN, 8, NULL, 0x01,
9419         "", HFILL }},
9420
9421 /*--- End of included file: packet-x411-hfarr.c ---*/
9422 #line 211 "packet-x411-template.c"
9423   };
9424
9425   /* List of subtrees */
9426   static gint *ett[] = {
9427     &ett_x411,
9428     &ett_x411_content_unknown,
9429     &ett_x411_bilateral_information,
9430     &ett_x411_additional_information,
9431
9432 /*--- Included file: packet-x411-ettarr.c ---*/
9433 #line 1 "packet-x411-ettarr.c"
9434     &ett_x411_MTABindArgument,
9435     &ett_x411_AuthenticatedArgument,
9436     &ett_x411_MTABindResult,
9437     &ett_x411_AuthenticatedResult,
9438     &ett_x411_MTS_APDU,
9439     &ett_x411_Message,
9440     &ett_x411_Report,
9441     &ett_x411_MessageTransferEnvelope,
9442     &ett_x411_SEQUENCE_OF_PerDomainBilateralInformation,
9443     &ett_x411_SET_OF_ExtensionField,
9444     &ett_x411_SEQUENCE_OF_PerRecipientMessageTransferFields,
9445     &ett_x411_PerRecipientMessageTransferFields,
9446     &ett_x411_ProbeTransferEnvelope,
9447     &ett_x411_SEQUENCE_OF_PerRecipientProbeTransferFields,
9448     &ett_x411_PerRecipientProbeTransferFields,
9449     &ett_x411_ReportTransferEnvelope,
9450     &ett_x411_ReportTransferContent,
9451     &ett_x411_SEQUENCE_OF_PerRecipientReportTransferFields,
9452     &ett_x411_PerRecipientReportTransferFields,
9453     &ett_x411_PerDomainBilateralInformation,
9454     &ett_x411_T_bilateral_domain,
9455     &ett_x411_T_private_domain,
9456     &ett_x411_PerRecipientIndicators,
9457     &ett_x411_LastTraceInformation,
9458     &ett_x411_InternalTraceInformation,
9459     &ett_x411_InternalTraceInformationElement,
9460     &ett_x411_MTASuppliedInformation,
9461     &ett_x411_T_attempted,
9462     &ett_x411_TraceInformation,
9463     &ett_x411_TraceInformationElement,
9464     &ett_x411_DomainSuppliedInformation,
9465     &ett_x411_OtherActions,
9466     &ett_x411_MTSBindArgument,
9467     &ett_x411_MTSBindResult,
9468     &ett_x411_ObjectName,
9469     &ett_x411_MessagesWaiting,
9470     &ett_x411_DeliveryQueue,
9471     &ett_x411_Credentials,
9472     &ett_x411_Password,
9473     &ett_x411_StrongCredentials,
9474     &ett_x411_ProtectedPassword,
9475     &ett_x411_Signature,
9476     &ett_x411_SecurityContext,
9477     &ett_x411_MessageSubmissionArgument,
9478     &ett_x411_MessageSubmissionResult,
9479     &ett_x411_ProbeSubmissionResult,
9480     &ett_x411_ImproperlySpecifiedRecipients,
9481     &ett_x411_Waiting,
9482     &ett_x411_SET_OF_ContentType,
9483     &ett_x411_Operations,
9484     &ett_x411_WaitingMessages,
9485     &ett_x411_MessageDeliveryArgument,
9486     &ett_x411_MessageDeliveryResult,
9487     &ett_x411_ReportDeliveryArgument,
9488     &ett_x411_SEQUENCE_OF_PerRecipientReportDeliveryFields,
9489     &ett_x411_ReportDeliveryResult,
9490     &ett_x411_DeliveryControlArgument,
9491     &ett_x411_DeliveryControlResult,
9492     &ett_x411_RefusedOperation,
9493     &ett_x411_T_refused_argument,
9494     &ett_x411_Controls,
9495     &ett_x411_RegisterArgument,
9496     &ett_x411_SET_OF_DeliverableClass,
9497     &ett_x411_RegisterResult,
9498     &ett_x411_T_non_empty_result,
9499     &ett_x411_ChangeCredentialsArgument,
9500     &ett_x411_UserAddress,
9501     &ett_x411_T_x121,
9502     &ett_x411_Redirections,
9503     &ett_x411_RecipientRedirection,
9504     &ett_x411_SET_OF_RedirectionClass,
9505     &ett_x411_MessageClass,
9506     &ett_x411_SET_OF_Priority,
9507     &ett_x411_SEQUENCE_OF_Restriction,
9508     &ett_x411_EncodedInformationTypesConstraints,
9509     &ett_x411_RestrictedDelivery,
9510     &ett_x411_Restriction,
9511     &ett_x411_T_source_type,
9512     &ett_x411_ExactOrPattern,
9513     &ett_x411_RegistrationTypes,
9514     &ett_x411_T_standard_parameters,
9515     &ett_x411_T_type_extensions,
9516     &ett_x411_MessageSubmissionEnvelope,
9517     &ett_x411_SEQUENCE_OF_PerRecipientMessageSubmissionFields,
9518     &ett_x411_PerRecipientMessageSubmissionFields,
9519     &ett_x411_ProbeSubmissionEnvelope,
9520     &ett_x411_SEQUENCE_OF_PerRecipientProbeSubmissionFields,
9521     &ett_x411_PerRecipientProbeSubmissionFields,
9522     &ett_x411_MessageDeliveryEnvelope,
9523     &ett_x411_OtherMessageDeliveryFields,
9524     &ett_x411_ReportDeliveryEnvelope,
9525     &ett_x411_PerRecipientReportDeliveryFields,
9526     &ett_x411_ReportType,
9527     &ett_x411_DeliveryReport,
9528     &ett_x411_NonDeliveryReport,
9529     &ett_x411_ContentTypes,
9530     &ett_x411_ContentType,
9531     &ett_x411_DeliveredContentType,
9532     &ett_x411_PerMessageIndicators,
9533     &ett_x411_OriginatorReportRequest,
9534     &ett_x411_DeliveryFlags,
9535     &ett_x411_OtherRecipientNames,
9536     &ett_x411_ExtensionType,
9537     &ett_x411_Criticality,
9538     &ett_x411_ExtensionField,
9539     &ett_x411_RequestedDeliveryMethod,
9540     &ett_x411_PhysicalDeliveryModes,
9541     &ett_x411_ContentCorrelator,
9542     &ett_x411_RedirectionHistory,
9543     &ett_x411_Redirection,
9544     &ett_x411_IntendedRecipientName,
9545     &ett_x411_DLExpansionHistory,
9546     &ett_x411_DLExpansion,
9547     &ett_x411_OriginatorAndDLExpansionHistory,
9548     &ett_x411_OriginatorAndDLExpansion,
9549     &ett_x411_PerRecipientReportFields,
9550     &ett_x411_T_report_type,
9551     &ett_x411_PerRecipientDeliveryReportFields,
9552     &ett_x411_PerRecipientNonDeliveryReportFields,
9553     &ett_x411_ReportingMTAName,
9554     &ett_x411_ExtendedCertificates,
9555     &ett_x411_ExtendedCertificate,
9556     &ett_x411_DLExemptedRecipients,
9557     &ett_x411_CertificateSelectors,
9558     &ett_x411_MTSIdentifier,
9559     &ett_x411_GlobalDomainIdentifier,
9560     &ett_x411_PrivateDomainIdentifier,
9561     &ett_x411_ORName,
9562     &ett_x411_ORAddress,
9563     &ett_x411_BuiltInStandardAttributes,
9564     &ett_x411_CountryName,
9565     &ett_x411_AdministrationDomainName,
9566     &ett_x411_PrivateDomainName,
9567     &ett_x411_PersonalName,
9568     &ett_x411_OrganizationalUnitNames,
9569     &ett_x411_BuiltInDomainDefinedAttributes,
9570     &ett_x411_BuiltInDomainDefinedAttribute,
9571     &ett_x411_ExtensionAttributes,
9572     &ett_x411_ExtensionAttribute,
9573     &ett_x411_TeletexPersonalName,
9574     &ett_x411_UniversalPersonalName,
9575     &ett_x411_TeletexOrganizationalUnitNames,
9576     &ett_x411_UniversalOrganizationalUnitNames,
9577     &ett_x411_UniversalOrBMPString,
9578     &ett_x411_T_character_encoding,
9579     &ett_x411_PhysicalDeliveryCountryName,
9580     &ett_x411_PostalCode,
9581     &ett_x411_UnformattedPostalAddress,
9582     &ett_x411_T_printable_address,
9583     &ett_x411_PDSParameter,
9584     &ett_x411_ExtendedNetworkAddress,
9585     &ett_x411_T_e163_4_address,
9586     &ett_x411_TeletexDomainDefinedAttributes,
9587     &ett_x411_TeletexDomainDefinedAttribute,
9588     &ett_x411_UniversalDomainDefinedAttributes,
9589     &ett_x411_UniversalDomainDefinedAttribute,
9590     &ett_x411_EncodedInformationTypes,
9591     &ett_x411_BuiltInEncodedInformationTypes,
9592     &ett_x411_ExtendedEncodedInformationTypes,
9593     &ett_x411_NonBasicParameters,
9594     &ett_x411_G3FacsimileNonBasicParameters,
9595     &ett_x411_TeletexNonBasicParameters,
9596     &ett_x411_Token,
9597     &ett_x411_AsymmetricTokenData,
9598     &ett_x411_T_name,
9599     &ett_x411_MTANameAndOptionalGDI,
9600     &ett_x411_AsymmetricToken,
9601     &ett_x411_TokenData,
9602     &ett_x411_MessageTokenSignedData,
9603     &ett_x411_MessageTokenEncryptedData,
9604     &ett_x411_SecurityLabel,
9605     &ett_x411_SecurityCategories,
9606     &ett_x411_SecurityCategory,
9607
9608 /*--- End of included file: packet-x411-ettarr.c ---*/
9609 #line 220 "packet-x411-template.c"
9610   };
9611
9612   /* Register protocol */
9613   proto_x411 = proto_register_protocol(PNAME, PSNAME, PFNAME);
9614   register_dissector("x411", dissect_x411, proto_x411);
9615   /* Register fields and subtrees */
9616   proto_register_field_array(proto_x411, hf, array_length(hf));
9617   proto_register_subtree_array(ett, array_length(ett));
9618
9619 }
9620
9621
9622 /*--- proto_reg_handoff_x411 --- */
9623 void proto_reg_handoff_x411(void) {
9624   dissector_handle_t handle = NULL;
9625
9626
9627 /*--- Included file: packet-x411-dis-tab.c ---*/
9628 #line 1 "packet-x411-dis-tab.c"
9629   register_ber_oid_dissector("x411.extension.1", dissect_RecipientReassignmentProhibited_PDU, proto_x411, "recipient-reassignment-prohibited");
9630   register_ber_oid_dissector("x411.extension.2", dissect_MTSOriginatorRequestedAlternateRecipient_PDU, proto_x411, "originator-requested-alternate-recipient");
9631   register_ber_oid_dissector("x411.extension.3", dissect_DLExpansionProhibited_PDU, proto_x411, "dl-expansion-prohibited");
9632   register_ber_oid_dissector("x411.extension.4", dissect_ConversionWithLossProhibited_PDU, proto_x411, "conversion-with-loss-prohibited");
9633   register_ber_oid_dissector("x411.extension.5", dissect_LatestDeliveryTime_PDU, proto_x411, "latest-delivery-time");
9634   register_ber_oid_dissector("x411.extension.6", dissect_RequestedDeliveryMethod_PDU, proto_x411, "requested-delivery-method");
9635   register_ber_oid_dissector("x411.extension.7", dissect_PhysicalForwardingProhibited_PDU, proto_x411, "physical-forwarding-prohibited");
9636   register_ber_oid_dissector("x411.extension.8", dissect_PhysicalForwardingAddressRequest_PDU, proto_x411, "physical-forwarding-address-request");
9637   register_ber_oid_dissector("x411.extension.9", dissect_PhysicalDeliveryModes_PDU, proto_x411, "physical-delivery-modes");
9638   register_ber_oid_dissector("x411.extension.10", dissect_RegisteredMailType_PDU, proto_x411, "registered-mail-type");
9639   register_ber_oid_dissector("x411.extension.11", dissect_RecipientNumberForAdvice_PDU, proto_x411, "recipient-number-for-advice");
9640   register_ber_oid_dissector("x411.extension.12", dissect_PhysicalRenditionAttributes_PDU, proto_x411, "physical-rendition-attributes");
9641   register_ber_oid_dissector("x411.extension.13", dissect_OriginatorReturnAddress_PDU, proto_x411, "originator-return-address");
9642   register_ber_oid_dissector("x411.extension.14", dissect_PhysicalDeliveryReportRequest_PDU, proto_x411, "physical-delivery-report-request");
9643   register_ber_oid_dissector("x411.extension.15", dissect_OriginatorCertificate_PDU, proto_x411, "originator-certificate");
9644   register_ber_oid_dissector("x411.extension.16", dissect_MessageToken_PDU, proto_x411, "message-token");
9645   register_ber_oid_dissector("x411.extension.17", dissect_ContentConfidentialityAlgorithmIdentifier_PDU, proto_x411, "content-confidentiality-algorithm-identifier");
9646   register_ber_oid_dissector("x411.extension.18", dissect_ContentIntegrityCheck_PDU, proto_x411, "content-integrity-check");
9647   register_ber_oid_dissector("x411.extension.19", dissect_MessageOriginAuthenticationCheck_PDU, proto_x411, "message-origin-authentication-check");
9648   register_ber_oid_dissector("x411.extension.20", dissect_MessageSecurityLabel_PDU, proto_x411, "message-security-label");
9649   register_ber_oid_dissector("x411.extension.21", dissect_ProofOfSubmissionRequest_PDU, proto_x411, "proof-of-submission-request");
9650   register_ber_oid_dissector("x411.extension.22", dissect_ProofOfDeliveryRequest_PDU, proto_x411, "proof-of-delivery-request");
9651   register_ber_oid_dissector("x411.extension.23", dissect_ContentCorrelator_PDU, proto_x411, "content-correlator");
9652   register_ber_oid_dissector("x411.extension.24", dissect_ProbeOriginAuthenticationCheck_PDU, proto_x411, "probe-origin-authentication-check");
9653   register_ber_oid_dissector("x411.extension.25", dissect_RedirectionHistory_PDU, proto_x411, "redirection-history");
9654   register_ber_oid_dissector("x411.extension.26", dissect_DLExpansionHistory_PDU, proto_x411, "dl-expansion-history");
9655   register_ber_oid_dissector("x411.extension.27", dissect_PhysicalForwardingAddress_PDU, proto_x411, "physical-forwarding-address");
9656   register_ber_oid_dissector("x411.extension.28", dissect_RecipientCertificate_PDU, proto_x411, "recipient-certificate");
9657   register_ber_oid_dissector("x411.extension.29", dissect_ProofOfDelivery_PDU, proto_x411, "proof-of-delivery");
9658   register_ber_oid_dissector("x411.extension.30", dissect_OriginatorAndDLExpansionHistory_PDU, proto_x411, "originator-and-DL-expansion-history");
9659   register_ber_oid_dissector("x411.extension.31", dissect_ReportingDLName_PDU, proto_x411, "reporting-DL-name");
9660   register_ber_oid_dissector("x411.extension.32", dissect_ReportingMTACertificate_PDU, proto_x411, "reporting-MTA-certificate");
9661   register_ber_oid_dissector("x411.extension.33", dissect_ReportOriginAuthenticationCheck_PDU, proto_x411, "report-origin-authentication-check");
9662   register_ber_oid_dissector("x411.extension.35", dissect_ProofOfSubmission_PDU, proto_x411, "proof-of-submission");
9663   register_ber_oid_dissector("x411.extension.37", dissect_TraceInformation_PDU, proto_x411, "trace-information");
9664   register_ber_oid_dissector("x411.extension.38", dissect_InternalTraceInformation_PDU, proto_x411, "internal-trace-information");
9665   register_ber_oid_dissector("x411.extension.39", dissect_ReportingMTAName_PDU, proto_x411, "reporting-MTA-name");
9666   register_ber_oid_dissector("x411.extension.40", dissect_ExtendedCertificates_PDU, proto_x411, "multiple-originator-certificates");
9667   register_ber_oid_dissector("x411.extension.42", dissect_DLExemptedRecipients_PDU, proto_x411, "dl-exempted-recipients");
9668   register_ber_oid_dissector("x411.extension.45", dissect_CertificateSelectors_PDU, proto_x411, "certificate-selectors");
9669   register_ber_oid_dissector("x411.extension-attribute.1", dissect_CommonName_PDU, proto_x411, "common-name");
9670   register_ber_oid_dissector("x411.extension-attribute.2", dissect_TeletexCommonName_PDU, proto_x411, "teletex-common-name");
9671   register_ber_oid_dissector("x411.extension-attribute.3", dissect_TeletexOrganizationName_PDU, proto_x411, "teletex-organization-name");
9672   register_ber_oid_dissector("x411.extension-attribute.4", dissect_TeletexPersonalName_PDU, proto_x411, "teletex-personal-name");
9673   register_ber_oid_dissector("x411.extension-attribute.5", dissect_TeletexOrganizationalUnitNames_PDU, proto_x411, "teletex-organizational-unit-names");
9674   register_ber_oid_dissector("x411.extension-attribute.7", dissect_PDSName_PDU, proto_x411, "pds-name");
9675   register_ber_oid_dissector("x411.extension-attribute.8", dissect_PhysicalDeliveryCountryName_PDU, proto_x411, "physical-delivery-country-name");
9676   register_ber_oid_dissector("x411.extension-attribute.9", dissect_PostalCode_PDU, proto_x411, "postal-code");
9677   register_ber_oid_dissector("x411.extension-attribute.10", dissect_PhysicalDeliveryOfficeName_PDU, proto_x411, "physical-delivery-office-name");
9678   register_ber_oid_dissector("x411.extension-attribute.24", dissect_UniversalCommonName_PDU, proto_x411, "universal-common-name");
9679   register_ber_oid_dissector("x411.extension-attribute.25", dissect_UniversalOrganizationName_PDU, proto_x411, "universal-organization-name");
9680   register_ber_oid_dissector("x411.extension-attribute.26", dissect_UniversalPersonalName_PDU, proto_x411, "universal-personal-name");
9681   register_ber_oid_dissector("x411.extension-attribute.27", dissect_UniversalOrganizationalUnitNames_PDU, proto_x411, "universal-organizational-unit-names");
9682   register_ber_oid_dissector("2.6.1.4.14", dissect_ReportDeliveryArgument_PDU, proto_x411, "id-et-report");
9683   register_ber_oid_dissector("2.6.3.6.0", dissect_AsymmetricToken_PDU, proto_x411, "id-tok-asymmetricToken");
9684   register_ber_oid_dissector("2.6.5.6.0", dissect_MTANameAndOptionalGDI_PDU, proto_x411, "id-on-mtaName");
9685   register_ber_oid_dissector("x411.tokendata.1", dissect_BindTokenSignedData_PDU, proto_x411, "bind-token-signed-data");
9686   register_ber_oid_dissector("x411.tokendata.2", dissect_MessageTokenSignedData_PDU, proto_x411, "message-token-signed-data");
9687   register_ber_oid_dissector("x411.tokendata.3", dissect_MessageTokenEncryptedData_PDU, proto_x411, "message-token-encrypted-data");
9688   register_ber_oid_dissector("x411.tokendata.4", dissect_BindTokenEncryptedData_PDU, proto_x411, "bind-token-encrypted-data");
9689   register_ber_oid_dissector("2.6.5.2.0", dissect_ContentLength_PDU, proto_x411, "id-at-mhs-maximum-content-length");
9690   register_ber_oid_dissector("2.6.5.2.1", dissect_ExtendedContentType_PDU, proto_x411, "id-at-mhs-deliverable-content-types");
9691   register_ber_oid_dissector("2.6.5.2.2", dissect_ExtendedEncodedInformationType_PDU, proto_x411, "id-at-mhs-exclusively-acceptable-eits");
9692   register_ber_oid_dissector("2.6.5.2.3", dissect_ORName_PDU, proto_x411, "id-at-mhs-dl-members");
9693   register_ber_oid_dissector("2.6.5.2.6", dissect_ORAddress_PDU, proto_x411, "id-at-mhs-or-addresses");
9694   register_ber_oid_dissector("2.6.5.2.9", dissect_ExtendedContentType_PDU, proto_x411, "id-at-mhs-supported-content-types");
9695   register_ber_oid_dissector("2.6.5.2.12", dissect_ORName_PDU, proto_x411, "id-at-mhs-dl-archive-service");
9696   register_ber_oid_dissector("2.6.5.2.15", dissect_ORName_PDU, proto_x411, "id-at-mhs-dl-subscription-service");
9697   register_ber_oid_dissector("2.6.5.2.17", dissect_ExtendedEncodedInformationType_PDU, proto_x411, "id-at-mhs-acceptable-eits");
9698   register_ber_oid_dissector("2.6.5.2.18", dissect_ExtendedEncodedInformationType_PDU, proto_x411, "id-at-mhs-unacceptable-eits");
9699   register_ber_oid_dissector("2.16.840.1.101.2.1.5.47", dissect_ORName_PDU, proto_x411, "id-at-aLExemptedAddressProcessor");
9700   register_ber_oid_dissector("2.16.840.1.101.2.2.1.134.1", dissect_ORAddress_PDU, proto_x411, "id-at-collective-mhs-or-addresses");
9701
9702
9703 /*--- End of included file: packet-x411-dis-tab.c ---*/
9704 #line 237 "packet-x411-template.c"
9705
9706   /* APPLICATION CONTEXT */
9707
9708   add_oid_str_name("2.6.0.1.6", "id-ac-mts-transfer");
9709
9710   /* ABSTRACT SYNTAXES */
9711
9712   if((handle = find_dissector("x411")) != NULL) {
9713     register_rtse_oid_dissector_handle("2.6.0.2.12", handle, 0, "id-as-mta-rtse", TRUE); 
9714     register_rtse_oid_dissector_handle("2.6.0.2.7", handle, 0, "id-as-mtse", FALSE);
9715
9716     register_ber_syntax_dissector("X.411 Message", proto_x411, dissect_x411_mts_apdu);
9717     register_rtse_oid_dissector_handle("applicationProtocol.1", handle, 0, "mts-transfer-protocol-1984", FALSE);
9718     register_rtse_oid_dissector_handle("applicationProtocol.12", handle, 0, "mta-transfer-protocol", FALSE);
9719   }
9720
9721
9722 }