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