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