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