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