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