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