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