Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / packet-p22.c
blobd958ab41223f7ba7ad299258c0594fc68a7a5bab
1 /* Do not modify this file. Changes will be overwritten. */
2 /* Generated automatically by the ASN.1 to Wireshark dissector compiler */
3 /* packet-p22.c */
4 /* asn2wrs.py -b -C -q -L -p p22 -c ./p22.cnf -s ./packet-p22-template -D . -O ../.. IPMSInformationObjects.asn IPMSHeadingExtensions.asn IPMSExtendedBodyPartTypes2.asn IPMSFileTransferBodyPartType.asn IPMSExtendedVoiceBodyPartType.asn IPMSForwardedContentBodyPartType.asn IPMSMessageStoreAttributes.asn IPMSSecurityExtensions.asn IPMSObjectIdentifiers.asn IPMSUpperBounds.asn */
6 /* packet-p22.c
7 * Routines for X.420 (X.400 Message Transfer) packet dissection
8 * Graeme Lunt 2005
10 * Wireshark - Network traffic analyzer
11 * By Gerald Combs <gerald@wireshark.org>
12 * Copyright 1998 Gerald Combs
14 * SPDX-License-Identifier: GPL-2.0-or-later
17 #include "config.h"
19 #include <epan/packet.h>
20 #include <epan/oids.h>
21 #include <epan/asn1.h>
22 #include <epan/proto_data.h>
23 #include <wsutil/array.h>
25 #include "packet-ber.h"
26 #include "packet-acse.h"
27 #include "packet-ros.h"
29 #include "packet-x509af.h"
30 #include "packet-x509ce.h"
31 #include "packet-ftam.h"
32 #include "packet-p1.h"
33 #include "packet-p7.h"
35 #include "packet-p22.h"
37 #define PNAME "X.420 Information Object"
38 #define PSNAME "P22"
39 #define PFNAME "p22"
41 /* Initialize the protocol and registered fields */
42 static int proto_p22;
44 static const value_string charsetreg_vals [] = {
45 { 1, "C0: (ISO/IEC 6429)"},
46 { 6, "G0: ASCII (ISO/IEC 646)"},
47 { 77, "C1: (ISO/IEC 6429)"},
48 { 100, "Gn: Latin Alphabet No.1, Western European Supplementary Set (GR area of ISO-8859-1)"},
49 { 101, "Gn: Latin Alphabet No.2, Central EuropeanSupplementary Set (GR area of ISO-8859-2)"},
50 { 104, "C0: (ISO/IEC 4873)"},
51 { 105, "C1: (ISO/IEC 4873)"},
52 { 106, "C0: Teletex (CCITT T.61)"},
53 { 107, "C1: Teletex (CCITT T.61)"},
54 { 109, "Gn: Latin Alphabet No.3, Southern European Supplementary Set (GR area of ISO-8859-3)"},
55 { 110, "Gn: Latin Alphabet No.4, Baltic Supplementary Set (GR area of ISO-8859-4)"},
56 { 126, "Gn: Greek Supplementary Set (GR area of ISO-8859-7)"},
57 { 127, "Gn: Arabic Supplementary Set (GR area of ISO-8859-6)"},
58 { 138, "Gn: Hebrew Supplementary Set (GR area of ISO-8859-8)"},
59 { 144, "Gn: Cyrillic Supplementary Set (GR area of ISO-8859-5)"},
60 { 148, "Gn: Latin Alphabet No.5, Cyrillic Supplementary Set (GR area of ISO-8859-9)"},
61 { 154, "Gn: Supplementary Set for Latin Alphabets No.1 or No.5, and No.2"},
62 { 157, "Gn: Latin Alphabet No.6, Arabic Supplementary Set (GR area of ISO-8859-10)"},
63 { 158, "Gn: Supplementary Set for Sami (Lappish) to complement Latin Alphabet No.6 (from Annex A of ISO-8859-10)"},
64 { 166, "Gn: Thai Supplementary Set (GR area of ISO-8859-11)"},
65 { 179, "Gn: Latin Alphabet No.7, Baltic Rim Supplementary Set (GR area of ISO-8859-13)"},
66 { 182, "Gn: Welsh Variant of Latin Alphabet No.1, Supplementary Set (GR area of ISO-8859-1)"},
67 { 197, "Gn: Supplementary Set for Sami to complement Latin Alphabet No.6 (from Annex A of ISO-8859-10)"},
68 { 199, "Gn: Latin Alphabet No.8, Celtic Supplementary Set (GR area of ISO-8859-14)"},
69 { 203, "Gn: Latin Alphabet No.9, European Rim Supplementary Set (GR area of ISO-8859-15)"},
70 { 0, NULL}
73 #define id_ipms "2.6.1"
74 #define id_mod id_ipms".0"
75 #define id_ot id_ipms".1"
76 #define id_pt id_ipms".2"
77 #define id_et id_ipms".4"
78 #define id_hex id_ipms".5"
79 #define id_sat id_ipms".6"
80 #define id_hat id_ipms".7"
81 #define id_bat id_ipms".8"
82 #define id_nat id_ipms".9"
83 #define id_mct id_ipms".10"
84 #define id_ep id_ipms".11"
85 #define id_eit id_ipms".12"
86 #define id_cat id_ipms".13"
87 #define id_mr id_ipms".14"
88 #define id_aa id_ipms".15"
89 #define id_aae id_ipms".16"
90 #define id_mst id_ipms".17"
91 #define id_sec id_ipms".18"
92 #define id_on id_ipms".19"
93 #define id_rex id_ipms".20"
94 #define id_mod_object_identifiers id_mod".0"
95 #define id_mod_functional_objects id_mod".1"
96 #define id_mod_information_objects id_mod".2"
97 #define id_mod_abstract_service id_mod".3"
98 #define id_mod_heading_extensions id_mod".6"
99 #define id_mod_extended_body_part_types id_mod".7"
100 #define id_mod_message_store_attributes id_mod".8"
101 #define id_mod_file_transfer_body_part_type id_mod".9"
102 #define id_mod_upper_bounds id_mod".10"
103 #define id_mod_extended_voice_body_part_type id_mod".11"
104 #define id_mod_forwarded_report_body_part_type id_mod".12"
105 #define id_mod_auto_actions id_mod".13"
106 #define id_mod_ipm_security_extensions id_mod".14"
107 #define id_mod_forwarded_content_body_part_type id_mod".15"
108 #define id_mod_pkcs7_body_part_type id_mod".16"
109 #define id_ot_ipms_user id_ot".1"
110 #define id_ot_ipms id_ot".2"
111 #define id_pt_origination id_pt".0"
112 #define id_pt_reception id_pt".1"
113 #define id_pt_management id_pt".2"
114 #define id_et_ia5_text id_et".0"
115 #define id_et_g3_facsimile id_et".2"
116 #define id_et_g4_class1 id_et".3"
117 #define id_et_teletex id_et".4"
118 #define id_et_videotex id_et".5"
119 #define id_et_encrypted id_et".6"
120 #define id_et_message id_et".7"
121 #define id_et_mixed_mode id_et".8"
122 #define id_et_bilaterally_defined id_et".9"
123 #define id_et_nationally_defined id_et".10"
124 #define id_et_general_text id_et".11"
125 #define id_et_file_transfer id_et".12"
126 #define id_et_report id_et".14"
127 #define id_et_notification id_et".15"
128 #define id_et_voice id_et".16"
129 #define id_et_content id_et".17"
130 #define id_et_pkcs7 id_et".18"
131 #define id_hex_incomplete_copy id_hex".0"
132 #define id_hex_languages id_hex".1"
133 #define id_hex_auto_submitted id_hex".2"
134 #define id_hex_body_part_signatures id_hex".3"
135 #define id_hex_ipm_security_label id_hex".4"
136 #define id_hex_authorization_time id_hex".5"
137 #define id_hex_circulation_list_recipients id_hex".6"
138 #define id_hex_distribution_codes id_hex".7"
139 #define id_hex_extended_subject id_hex".8"
140 #define id_hex_information_category id_hex".9"
141 #define id_hex_manual_handling_instructions id_hex".10"
142 #define id_hex_originators_reference id_hex".11"
143 #define id_hex_precedence_policy_id id_hex".12"
144 #define id_sat_ipm_entry_type id_sat".0"
145 #define id_sat_ipm_synopsis id_sat".1"
146 #define id_sat_body_parts_summary id_sat".2"
147 #define id_sat_ipm_auto_discarded id_sat".3"
148 #define id_hat_heading id_hat".0"
149 #define id_hat_this_ipm id_hat".1"
150 #define id_hat_originator id_hat".2"
151 #define id_hat_replied_to_IPM id_hat".3"
152 #define id_hat_subject id_hat".4"
153 #define id_hat_expiry_time id_hat".5"
154 #define id_hat_reply_time id_hat".6"
155 #define id_hat_importance id_hat".7"
156 #define id_hat_sensitivity id_hat".8"
157 #define id_hat_auto_forwarded id_hat".9"
158 #define id_hat_authorizing_users id_hat".10"
159 #define id_hat_primary_recipients id_hat".11"
160 #define id_hat_copy_recipients id_hat".12"
161 #define id_hat_blind_copy_recipients id_hat".13"
162 #define id_hat_obsoleted_IPMs id_hat".14"
163 #define id_hat_related_IPMs id_hat".15"
164 #define id_hat_reply_recipients id_hat".16"
165 #define id_hat_incomplete_copy id_hat".17"
166 #define id_hat_languages id_hat".18"
167 #define id_hat_rn_requestors id_hat".19"
168 #define id_hat_nrn_requestors id_hat".20"
169 #define id_hat_reply_requestors id_hat".21"
170 #define id_hat_auto_submitted id_hat".22"
171 #define id_hat_body_part_signatures id_hat".23"
172 #define id_hat_ipm_security_label id_hat".24"
173 #define id_hat_body_part_security_label id_hat".25"
174 #define id_hat_body_part_encryption_token id_hat".26"
175 #define id_hat_authorization_time id_hat".27"
176 #define id_hat_circulation_list_recipients id_hat".28"
177 #define id_hat_distribution_codes id_hat".29"
178 #define id_hat_extended_subject id_hat".30"
179 #define id_hat_information_category id_hat".31"
180 #define id_hat_manual_handling_instructions id_hat".32"
181 #define id_hat_originators_reference id_hat".33"
182 #define id_hat_precedence_policy_id id_hat".34"
183 #define id_hat_forwarded_content_token id_hat".35"
184 #define id_hat_forwarding_token id_hat".36"
185 #define id_hat_precedence id_hat".37"
186 #define id_hat_body_part_signature_verification_status id_hat".38"
187 #define id_bat_body id_bat".0"
188 #define id_bat_ia5_text_body_parts id_bat".1"
189 #define id_bat_g3_facsimile_body_parts id_bat".3"
190 #define id_bat_g4_class1_body_parts id_bat".4"
191 #define id_bat_teletex_body_parts id_bat".5"
192 #define id_bat_videotex_body_parts id_bat".6"
193 #define id_bat_encrypted_body_parts id_bat".7"
194 #define id_bat_message_body_parts id_bat".8"
195 #define id_bat_mixed_mode_body_parts id_bat".9"
196 #define id_bat_bilaterally_defined_body_parts id_bat".10"
197 #define id_bat_nationally_defined_body_parts id_bat".11"
198 #define id_bat_extended_body_part_types id_bat".12"
199 #define id_bat_ia5_text_parameters id_bat".13"
200 #define id_bat_g3_facsimile_parameters id_bat".15"
201 #define id_bat_teletex_parameters id_bat".16"
202 #define id_bat_videotex_parameters id_bat".17"
203 #define id_bat_encrypted_parameters id_bat".18"
204 #define id_bat_message_parameters id_bat".19"
205 #define id_bat_ia5_text_data id_bat".20"
206 #define id_bat_g3_facsimile_data id_bat".22"
207 #define id_bat_teletex_data id_bat".23"
208 #define id_bat_videotex_data id_bat".24"
209 #define id_bat_encrypted_data id_bat".25"
210 #define id_bat_message_data id_bat".26"
211 #define id_nat_subject_ipm id_nat".0"
212 #define id_nat_ipn_originator id_nat".1"
213 #define id_nat_ipm_intended_recipient id_nat".2"
214 #define id_nat_conversion_eits id_nat".3"
215 #define id_nat_non_receipt_reason id_nat".4"
216 #define id_nat_discard_reason id_nat".5"
217 #define id_nat_auto_forward_comment id_nat".6"
218 #define id_nat_returned_ipm id_nat".7"
219 #define id_nat_receipt_time id_nat".8"
220 #define id_nat_acknowledgment_mode id_nat".9"
221 #define id_nat_suppl_receipt_info id_nat".10"
222 #define id_nat_notification_extensions id_nat".11"
223 #define id_nat_nrn_extensions id_nat".12"
224 #define id_nat_rn_extensions id_nat".13"
225 #define id_nat_other_notification_type_fields id_nat".14"
226 #define id_cat_correlated_delivered_ipns id_cat".0"
227 #define id_cat_correlated_delivered_replies id_cat".1"
228 #define id_cat_delivered_ipn_summary id_cat".2"
229 #define id_cat_delivered_replies_summary id_cat".3"
230 #define id_cat_forwarded_ipms id_cat".4"
231 #define id_cat_forwarding_ipms id_cat".5"
232 #define id_cat_ipm_recipients id_cat".6"
233 #define id_cat_obsoleted_ipms id_cat".7"
234 #define id_cat_obsoleting_ipms id_cat".8"
235 #define id_cat_related_ipms id_cat".9"
236 #define id_cat_relating_ipms id_cat".10"
237 #define id_cat_replied_to_ipm id_cat".11"
238 #define id_cat_replying_ipms id_cat".12"
239 #define id_cat_revised_reply_time id_cat".13"
240 #define id_cat_submitted_ipn_status id_cat".14"
241 #define id_cat_submitted_ipns id_cat".15"
242 #define id_cat_submitted_reply_status id_cat".16"
243 #define id_cat_subject_ipm id_cat".17"
244 #define id_cat_recipient_category id_cat".18"
245 #define id_mct_p2_1984 id_mct".0"
246 #define id_mct_p2_1988 id_mct".1"
247 #define id_ep_ia5_text id_ep".0"
248 #define id_ep_g3_facsimile id_ep".2"
249 #define id_ep_teletex id_ep".4"
250 #define id_ep_videotex id_ep".5"
251 #define id_ep_encrypted id_ep".6"
252 #define id_ep_message id_ep".7"
253 #define id_ep_general_text id_ep".11"
254 #define id_ep_file_transfer id_ep".12"
255 #define id_ep_notification id_ep".15"
256 #define id_ep_voice id_ep".16"
257 #define id_ep_content id_ep".17"
258 #define id_eit_file_transfer id_eit".0"
259 #define id_eit_voice id_eit".1"
260 #define id_voice_11khz_sample id_eit_voice".0"
261 #define id_voice_22khz_sample id_eit_voice".1"
262 #define id_voice_cd_quality id_eit_voice".2"
263 #define id_voice_g711_mu_law id_eit_voice".3"
264 #define id_voice_g726_32k_adpcm id_eit_voice".4"
265 #define id_voice_g728_16k_ld_celp id_eit_voice".5"
266 #define id_mr_ipm_identifier id_mr".0"
267 #define id_mr_or_descriptor id_mr".1"
268 #define id_mr_or_descriptor_elements id_mr".2"
269 #define id_mr_or_descriptor_substring_elements id_mr".3"
270 #define id_mr_recipient_specifier id_mr".4"
271 #define id_mr_recipient_specifier_elements id_mr".5"
272 #define id_mr_recipient_specifier_substring_elements id_mr".6"
273 #define id_mr_ipm_location id_mr".7"
274 #define id_mr_or_descriptor_single_element id_mr".8"
275 #define id_mr_recipient_specifier_single_element id_mr".9"
276 #define id_mr_circulation_member id_mr".10"
277 #define id_mr_circulation_member_elements id_mr".11"
278 #define id_mr_circulation_member_substring_elements id_mr".12"
279 #define id_mr_circulation_member_single_element id_mr".13"
280 #define id_mr_circulation_member_checkmark id_mr".14"
281 #define id_mr_distribution_code id_mr".15"
282 #define id_mr_information_category id_mr".16"
283 #define id_aa_ipm_auto_acknowledgement id_aa".0"
284 #define id_aa_ipm_auto_correlate id_aa".1"
285 #define id_aa_ipm_auto_discard id_aa".2"
286 #define id_aa_ipm_auto_advise id_aa".3"
287 #define id_aae_auto_discard_error id_aae".0"
288 #define id_aae_auto_forwarding_loop id_aae".1"
289 #define id_aae_duplicate_ipn id_aae".2"
290 #define id_mst_invalid_assembly_instructions id_mst".0"
291 #define id_mst_invalid_ipn id_mst".1"
292 #define id_mst_assembly_instructions id_mst".2"
293 #define id_mst_suspend_auto_acknowledgement id_mst".3"
294 #define id_mst_prevent_nrn_generation id_mst".4"
295 #define id_mst_originator_body_part_encryption_token id_mst".5"
296 #define id_mst_originator_forwarded_content_token id_mst".6"
297 #define id_mst_assembly_capability id_mst".7"
298 #define id_sec_ipm_security_request id_sec".0"
299 #define id_sec_security_common_fields id_sec".1"
300 #define id_on_absence_advice id_on".0"
301 #define id_on_change_of_address_advice id_on".1"
302 #define id_rex_circulation_list_indicator id_rex".0"
303 #define id_rex_precedence id_rex".1"
304 #define ub_alpha_code_length 16
305 #define ub_auto_forward_comment 256
306 #define ub_circulation_list_members 256
307 #define ub_distribution_codes 16
308 #define ub_extended_subject_length 256
309 #define ub_free_form_name 64
310 #define ub_information_categories 16
311 #define ub_information_category_length 64
312 #define ub_ipm_identifier_suffix 2
313 #define ub_local_ipm_identifier 64
314 #define ub_manual_handling_instruction_length 128
315 #define ub_manual_handling_instructions 16
316 #define ub_originators_reference_length 64
317 #define ub_precedence 127
318 #define ub_subject_field 128
319 #define ub_telephone_number 32
321 static int hf_p22_InformationObject_PDU; /* InformationObject */
322 static int hf_p22_Heading_PDU; /* Heading */
323 static int hf_p22_ORDescriptor_PDU; /* ORDescriptor */
324 static int hf_p22_ThisIPMField_PDU; /* ThisIPMField */
325 static int hf_p22_OriginatorField_PDU; /* OriginatorField */
326 static int hf_p22_AuthorizingUsersSubfield_PDU; /* AuthorizingUsersSubfield */
327 static int hf_p22_PrimaryRecipientsSubfield_PDU; /* PrimaryRecipientsSubfield */
328 static int hf_p22_CopyRecipientsSubfield_PDU; /* CopyRecipientsSubfield */
329 static int hf_p22_BlindCopyRecipientsSubfield_PDU; /* BlindCopyRecipientsSubfield */
330 static int hf_p22_RepliedToIPMField_PDU; /* RepliedToIPMField */
331 static int hf_p22_ObsoletedIPMsSubfield_PDU; /* ObsoletedIPMsSubfield */
332 static int hf_p22_RelatedIPMsSubfield_PDU; /* RelatedIPMsSubfield */
333 static int hf_p22_SubjectField_PDU; /* SubjectField */
334 static int hf_p22_ExpiryTimeField_PDU; /* ExpiryTimeField */
335 static int hf_p22_ReplyTimeField_PDU; /* ReplyTimeField */
336 static int hf_p22_ReplyRecipientsSubfield_PDU; /* ReplyRecipientsSubfield */
337 static int hf_p22_ImportanceField_PDU; /* ImportanceField */
338 static int hf_p22_SensitivityField_PDU; /* SensitivityField */
339 static int hf_p22_AutoForwardedField_PDU; /* AutoForwardedField */
340 static int hf_p22_Body_PDU; /* Body */
341 static int hf_p22_IA5TextParameters_PDU; /* IA5TextParameters */
342 static int hf_p22_IA5TextData_PDU; /* IA5TextData */
343 static int hf_p22_G3FacsimileParameters_PDU; /* G3FacsimileParameters */
344 static int hf_p22_G3FacsimileData_PDU; /* G3FacsimileData */
345 static int hf_p22_G4Class1BodyPart_PDU; /* G4Class1BodyPart */
346 static int hf_p22_MixedModeBodyPart_PDU; /* MixedModeBodyPart */
347 static int hf_p22_TeletexParameters_PDU; /* TeletexParameters */
348 static int hf_p22_TeletexData_PDU; /* TeletexData */
349 static int hf_p22_VideotexParameters_PDU; /* VideotexParameters */
350 static int hf_p22_VideotexData_PDU; /* VideotexData */
351 static int hf_p22_EncryptedParameters_PDU; /* EncryptedParameters */
352 static int hf_p22_EncryptedData_PDU; /* EncryptedData */
353 static int hf_p22_MessageParameters_PDU; /* MessageParameters */
354 static int hf_p22_MessageData_PDU; /* MessageData */
355 static int hf_p22_BilaterallyDefinedBodyPart_PDU; /* BilaterallyDefinedBodyPart */
356 static int hf_p22_IPN_PDU; /* IPN */
357 static int hf_p22_AbsenceAdvice_PDU; /* AbsenceAdvice */
358 static int hf_p22_ChangeOfAddressAdvice_PDU; /* ChangeOfAddressAdvice */
359 static int hf_p22_IPMAssemblyInstructions_PDU; /* IPMAssemblyInstructions */
360 static int hf_p22_IncompleteCopy_PDU; /* IncompleteCopy */
361 static int hf_p22_Languages_PDU; /* Languages */
362 static int hf_p22_Language_PDU; /* Language */
363 static int hf_p22_AutoSubmitted_PDU; /* AutoSubmitted */
364 static int hf_p22_BodyPartSignatures_PDU; /* BodyPartSignatures */
365 static int hf_p22_IPMSecurityLabel_PDU; /* IPMSecurityLabel */
366 static int hf_p22_BodyPartSecurityLabel_PDU; /* BodyPartSecurityLabel */
367 static int hf_p22_AuthorizationTime_PDU; /* AuthorizationTime */
368 static int hf_p22_CirculationList_PDU; /* CirculationList */
369 static int hf_p22_CirculationMember_PDU; /* CirculationMember */
370 static int hf_p22_CirculationListIndicator_PDU; /* CirculationListIndicator */
371 static int hf_p22_DistributionCodes_PDU; /* DistributionCodes */
372 static int hf_p22_DistributionCode_PDU; /* DistributionCode */
373 static int hf_p22_ExtendedSubject_PDU; /* ExtendedSubject */
374 static int hf_p22_InformationCategories_PDU; /* InformationCategories */
375 static int hf_p22_InformationCategory_PDU; /* InformationCategory */
376 static int hf_p22_ManualHandlingInstructions_PDU; /* ManualHandlingInstructions */
377 static int hf_p22_ManualHandlingInstruction_PDU; /* ManualHandlingInstruction */
378 static int hf_p22_OriginatorsReference_PDU; /* OriginatorsReference */
379 static int hf_p22_PrecedencePolicyIdentifier_PDU; /* PrecedencePolicyIdentifier */
380 static int hf_p22_Precedence_PDU; /* Precedence */
381 static int hf_p22_GeneralTextParameters_PDU; /* GeneralTextParameters */
382 static int hf_p22_GeneralTextData_PDU; /* GeneralTextData */
383 static int hf_p22_FileTransferParameters_PDU; /* FileTransferParameters */
384 static int hf_p22_FileTransferData_PDU; /* FileTransferData */
385 static int hf_p22_VoiceParameters_PDU; /* VoiceParameters */
386 static int hf_p22_VoiceData_PDU; /* VoiceData */
387 static int hf_p22_ForwardedContentParameters_PDU; /* ForwardedContentParameters */
388 static int hf_p22_IPMEntryType_PDU; /* IPMEntryType */
389 static int hf_p22_IPMSynopsis_PDU; /* IPMSynopsis */
390 static int hf_p22_BodyPartDescriptor_PDU; /* BodyPartDescriptor */
391 static int hf_p22_BodyPartSignatureVerification_PDU; /* BodyPartSignatureVerification */
392 static int hf_p22_IPMLocation_PDU; /* IPMLocation */
393 static int hf_p22_DeliveredReplyStatus_PDU; /* DeliveredReplyStatus */
394 static int hf_p22_CorrelatedDeliveredReplies_PDU; /* CorrelatedDeliveredReplies */
395 static int hf_p22_DeliveredIPNStatus_PDU; /* DeliveredIPNStatus */
396 static int hf_p22_CorrelatedDeliveredIPNs_PDU; /* CorrelatedDeliveredIPNs */
397 static int hf_p22_SubmittedReplyStatus_PDU; /* SubmittedReplyStatus */
398 static int hf_p22_SubmittedIPNStatus_PDU; /* SubmittedIPNStatus */
399 static int hf_p22_RecipientCategory_PDU; /* RecipientCategory */
400 static int hf_p22_RecipientSecurityRequest_PDU; /* RecipientSecurityRequest */
401 static int hf_p22_IpnSecurityResponse_PDU; /* IpnSecurityResponse */
402 static int hf_p22_BodyPartTokens_PDU; /* BodyPartTokens */
403 static int hf_p22_ForwardedContentToken_PDU; /* ForwardedContentToken */
404 static int hf_p22_ipm; /* IPM */
405 static int hf_p22_ipn; /* IPN */
406 static int hf_p22_heading; /* Heading */
407 static int hf_p22_body; /* Body */
408 static int hf_p22_type; /* T_type */
409 static int hf_p22_value; /* T_value */
410 static int hf_p22_this_IPM; /* ThisIPMField */
411 static int hf_p22_originator; /* OriginatorField */
412 static int hf_p22_authorizing_users; /* AuthorizingUsersField */
413 static int hf_p22_primary_recipients; /* PrimaryRecipientsField */
414 static int hf_p22_copy_recipients; /* CopyRecipientsField */
415 static int hf_p22_blind_copy_recipients; /* BlindCopyRecipientsField */
416 static int hf_p22_replied_to_IPM; /* RepliedToIPMField */
417 static int hf_p22_obsoleted_IPMs; /* ObsoletedIPMsField */
418 static int hf_p22_related_IPMs; /* RelatedIPMsField */
419 static int hf_p22_subject; /* SubjectField */
420 static int hf_p22_expiry_time; /* ExpiryTimeField */
421 static int hf_p22_reply_time; /* ReplyTimeField */
422 static int hf_p22_reply_recipients; /* ReplyRecipientsField */
423 static int hf_p22_importance; /* ImportanceField */
424 static int hf_p22_sensitivity; /* SensitivityField */
425 static int hf_p22_auto_forwarded; /* AutoForwardedField */
426 static int hf_p22_extensions; /* ExtensionsField */
427 static int hf_p22_user; /* ORName */
428 static int hf_p22_user_relative_identifier; /* LocalIPMIdentifier */
429 static int hf_p22_recipient; /* ORDescriptor */
430 static int hf_p22_notification_requests; /* NotificationRequests */
431 static int hf_p22_reply_requested; /* BOOLEAN */
432 static int hf_p22_recipient_extensions; /* RecipientExtensionsField */
433 static int hf_p22_formal_name; /* ORName */
434 static int hf_p22_free_form_name; /* FreeFormName */
435 static int hf_p22_telephone_number; /* TelephoneNumber */
436 static int hf_p22_RecipientExtensionsField_item; /* IPMSExtension */
437 static int hf_p22_AuthorizingUsersField_item; /* AuthorizingUsersSubfield */
438 static int hf_p22_PrimaryRecipientsField_item; /* PrimaryRecipientsSubfield */
439 static int hf_p22_CopyRecipientsField_item; /* CopyRecipientsSubfield */
440 static int hf_p22_BlindCopyRecipientsField_item; /* BlindCopyRecipientsSubfield */
441 static int hf_p22_ObsoletedIPMsField_item; /* ObsoletedIPMsSubfield */
442 static int hf_p22_RelatedIPMsField_item; /* RelatedIPMsSubfield */
443 static int hf_p22_ReplyRecipientsField_item; /* ReplyRecipientsSubfield */
444 static int hf_p22_ExtensionsField_item; /* IPMSExtension */
445 static int hf_p22_Body_item; /* BodyPart */
446 static int hf_p22_basic; /* T_basic */
447 static int hf_p22_ia5_text; /* IA5TextBodyPart */
448 static int hf_p22_g3_facsimile; /* G3FacsimileBodyPart */
449 static int hf_p22_g4_class1; /* G4Class1BodyPart */
450 static int hf_p22_teletex; /* TeletexBodyPart */
451 static int hf_p22_videotex; /* VideotexBodyPart */
452 static int hf_p22_encrypted_bp; /* EncryptedBodyPart */
453 static int hf_p22_message; /* MessageBodyPart */
454 static int hf_p22_mixed_mode; /* MixedModeBodyPart */
455 static int hf_p22_bilaterally_defined; /* BilaterallyDefinedBodyPart */
456 static int hf_p22_nationally_defined; /* NationallyDefinedBodyPart */
457 static int hf_p22_extended; /* ExtendedBodyPart */
458 static int hf_p22_extended_parameters; /* INSTANCE_OF */
459 static int hf_p22_extended_data; /* INSTANCE_OF */
460 static int hf_p22_ia5text_parameters; /* IA5TextParameters */
461 static int hf_p22_ia5text_data; /* IA5TextData */
462 static int hf_p22_repertoire; /* Repertoire */
463 static int hf_p22_g3facsimile_parameters; /* G3FacsimileParameters */
464 static int hf_p22_g3facsimile_data; /* G3FacsimileData */
465 static int hf_p22_number_of_pages; /* INTEGER */
466 static int hf_p22_g3facsimile_non_basic_parameters; /* G3FacsimileNonBasicParameters */
467 static int hf_p22_G3FacsimileData_item; /* BIT_STRING */
468 static int hf_p22_G4Class1BodyPart_item; /* Interchange_Data_Element */
469 static int hf_p22_MixedModeBodyPart_item; /* Interchange_Data_Element */
470 static int hf_p22_teletex_parameters; /* TeletexParameters */
471 static int hf_p22_teletex_data; /* TeletexData */
472 static int hf_p22_telex_compatible; /* BOOLEAN */
473 static int hf_p22_teletex_non_basic_parameters; /* TeletexNonBasicParameters */
474 static int hf_p22_TeletexData_item; /* TeletexString */
475 static int hf_p22_videotex_parameters; /* VideotexParameters */
476 static int hf_p22_videotex_data; /* VideotexData */
477 static int hf_p22_syntax; /* VideotexSyntax */
478 static int hf_p22_encrypted_parameters; /* EncryptedParameters */
479 static int hf_p22_encrypted_data; /* EncryptedData */
480 static int hf_p22_algorithm_identifier; /* AlgorithmIdentifier */
481 static int hf_p22_originator_certificates; /* ExtendedCertificates */
482 static int hf_p22_message_parameters; /* MessageParameters */
483 static int hf_p22_message_data; /* MessageData */
484 static int hf_p22_delivery_time; /* MessageDeliveryTime */
485 static int hf_p22_delivery_envelope; /* OtherMessageDeliveryFields */
486 static int hf_p22_subject_ipm; /* SubjectIPMField */
487 static int hf_p22_ipn_originator; /* IPNOriginatorField */
488 static int hf_p22_ipm_intended_recipient; /* IPMIntendedRecipientField */
489 static int hf_p22_conversion_eits; /* ConversionEITsField */
490 static int hf_p22_notification_extensions; /* NotificationExtensionsField */
491 static int hf_p22_non_receipt_reason; /* NonReceiptReasonField */
492 static int hf_p22_discard_reason; /* DiscardReasonField */
493 static int hf_p22_auto_forward_comment; /* AutoForwardCommentField */
494 static int hf_p22_returned_ipm; /* ReturnedIPMField */
495 static int hf_p22_nrn_extensions; /* NRNExtensionsField */
496 static int hf_p22_receipt_time; /* ReceiptTimeField */
497 static int hf_p22_acknowledgment_mode; /* AcknowledgmentModeField */
498 static int hf_p22_suppl_receipt_info; /* SupplReceiptInfoField */
499 static int hf_p22_rn_extensions; /* RNExtensionsField */
500 static int hf_p22_NotificationExtensionsField_item; /* IPMSExtension */
501 static int hf_p22_NRNExtensionsField_item; /* IPMSExtension */
502 static int hf_p22_RNExtensionsField_item; /* IPMSExtension */
503 static int hf_p22_OtherNotificationTypeFields_item; /* IPMSExtension */
504 static int hf_p22_advice; /* BodyPart */
505 static int hf_p22_next_available; /* Time */
506 static int hf_p22_new_address; /* ORDescriptor */
507 static int hf_p22_effective_from; /* Time */
508 static int hf_p22_assembly_instructions; /* BodyPartReferences */
509 static int hf_p22_BodyPartReferences_item; /* BodyPartReference */
510 static int hf_p22_stored_entry; /* SequenceNumber */
511 static int hf_p22_stored_content; /* SequenceNumber */
512 static int hf_p22_submitted_body_part; /* INTEGER_1_MAX */
513 static int hf_p22_stored_body_part; /* T_stored_body_part */
514 static int hf_p22_message_entry; /* SequenceNumber */
515 static int hf_p22_body_part_number; /* BodyPartNumber */
516 static int hf_p22_Languages_item; /* Language */
517 static int hf_p22_BodyPartSignatures_item; /* BodyPartSignatures_item */
518 static int hf_p22_body_part_signature; /* BodyPartSignature */
519 static int hf_p22_originator_certificate_selector; /* CertificateAssertion */
520 static int hf_p22_algorithmIdentifier; /* AlgorithmIdentifier */
521 static int hf_p22_encrypted; /* BIT_STRING */
522 static int hf_p22_content_security_label; /* SecurityLabel */
523 static int hf_p22_heading_security_label; /* SecurityLabel */
524 static int hf_p22_body_part_security_labels; /* SEQUENCE_OF_BodyPartSecurityLabel */
525 static int hf_p22_body_part_security_labels_item; /* BodyPartSecurityLabel */
526 static int hf_p22_body_part_unlabelled; /* NULL */
527 static int hf_p22_body_part_security_label; /* SecurityLabel */
528 static int hf_p22_CirculationList_item; /* CirculationMember */
529 static int hf_p22_circulation_recipient; /* RecipientSpecifier */
530 static int hf_p22_checked; /* Checkmark */
531 static int hf_p22_simple; /* NULL */
532 static int hf_p22_timestamped; /* CirculationTime */
533 static int hf_p22_signed; /* CirculationSignature */
534 static int hf_p22_circulation_signature_algorithm_identifier; /* CirculationSignatureAlgorithmIdentifier */
535 static int hf_p22_timestamp; /* CirculationTime */
536 static int hf_p22_circulation_signature_data; /* CirculationSignatureData */
537 static int hf_p22_DistributionCodes_item; /* DistributionCode */
538 static int hf_p22_oid_code; /* OBJECT_IDENTIFIER */
539 static int hf_p22_alphanumeric_code; /* AlphaCode */
540 static int hf_p22_or_descriptor; /* ORDescriptor */
541 static int hf_p22_InformationCategories_item; /* InformationCategory */
542 static int hf_p22_reference; /* OBJECT_IDENTIFIER */
543 static int hf_p22_description; /* DescriptionString */
544 static int hf_p22_ManualHandlingInstructions_item; /* ManualHandlingInstruction */
545 static int hf_p22_GeneralTextParameters_item; /* CharacterSetRegistration */
546 static int hf_p22_related_stored_file; /* RelatedStoredFile */
547 static int hf_p22_contents_type; /* ContentsTypeParameter */
548 static int hf_p22_environment; /* EnvironmentParameter */
549 static int hf_p22_compression; /* CompressionParameter */
550 static int hf_p22_file_attributes; /* FileAttributes */
551 static int hf_p22_FileTransferData_item; /* EXTERNAL */
552 static int hf_p22_RelatedStoredFile_item; /* RelatedStoredFile_item */
553 static int hf_p22_file_identifier; /* FileIdentifier */
554 static int hf_p22_relationship; /* Relationship */
555 static int hf_p22_pathname_and_version; /* PathnameandVersion */
556 static int hf_p22_cross_reference; /* CrossReference */
557 static int hf_p22_pathname; /* Pathname_Attribute */
558 static int hf_p22_file_version; /* GraphicString */
559 static int hf_p22_application_cross_reference; /* OCTET_STRING */
560 static int hf_p22_message_reference; /* MessageReference */
561 static int hf_p22_body_part_reference; /* INTEGER */
562 static int hf_p22_user_relative_identifier_ref; /* PrintableString */
563 static int hf_p22_explicit_relationship; /* ExplicitRelationship */
564 static int hf_p22_descriptive_relationship; /* GraphicString */
565 static int hf_p22_document_type; /* T_document_type */
566 static int hf_p22_document_type_name; /* Document_Type_Name */
567 static int hf_p22_parameter; /* T_parameter */
568 static int hf_p22_constraint_set_and_abstract_syntax; /* T_constraint_set_and_abstract_syntax */
569 static int hf_p22_constraint_set_name; /* Constraint_Set_Name */
570 static int hf_p22_abstract_syntax_name; /* Abstract_Syntax_Name */
571 static int hf_p22_application_reference; /* GeneralIdentifier */
572 static int hf_p22_machine; /* GeneralIdentifier */
573 static int hf_p22_operating_system; /* OBJECT_IDENTIFIER */
574 static int hf_p22_user_visible_string; /* T_user_visible_string */
575 static int hf_p22_user_visible_string_item; /* GraphicString */
576 static int hf_p22_registered_identifier; /* OBJECT_IDENTIFIER */
577 static int hf_p22_descriptive_identifier; /* T_descriptive_identifier */
578 static int hf_p22_descriptive_identifier_item; /* GraphicString */
579 static int hf_p22_compression_algorithm_id; /* T_compression_algorithm_id */
580 static int hf_p22_compression_algorithm_param; /* T_compression_algorithm_param */
581 static int hf_p22_permitted_actions; /* Permitted_Actions_Attribute */
582 static int hf_p22_storage_account; /* Account_Attribute */
583 static int hf_p22_date_and_time_of_creation; /* Date_and_Time_Attribute */
584 static int hf_p22_date_and_time_of_last_modification; /* Date_and_Time_Attribute */
585 static int hf_p22_date_and_time_of_last_read_access; /* Date_and_Time_Attribute */
586 static int hf_p22_date_and_time_of_last_attribute_modification; /* Date_and_Time_Attribute */
587 static int hf_p22_identity_of_creator; /* User_Identity_Attribute */
588 static int hf_p22_identity_of_last_modifier; /* User_Identity_Attribute */
589 static int hf_p22_identity_of_last_reader; /* User_Identity_Attribute */
590 static int hf_p22_identity_of_last_attribute_modifier; /* User_Identity_Attribute */
591 static int hf_p22_object_availability; /* Object_Availability_Attribute */
592 static int hf_p22_object_size; /* Object_Size_Attribute */
593 static int hf_p22_future_object_size; /* Object_Size_Attribute */
594 static int hf_p22_access_control; /* Access_Control_Attribute */
595 static int hf_p22_legal_qualifications; /* Legal_Qualification_Attribute */
596 static int hf_p22_private_use; /* Private_Use_Attribute */
597 static int hf_p22_attribute_extensions; /* Attribute_Extensions */
598 static int hf_p22_incomplete_pathname; /* Pathname */
599 static int hf_p22_complete_pathname; /* Pathname */
600 static int hf_p22_no_value_available; /* NULL */
601 static int hf_p22_account_actual_values; /* Account */
602 static int hf_p22_identity_actual_values; /* User_Identity */
603 static int hf_p22_actual_values; /* SET_OF_Access_Control_Element */
604 static int hf_p22_actual_values_item; /* Access_Control_Element */
605 static int hf_p22_action_list; /* Access_Request */
606 static int hf_p22_concurrency_access; /* Concurrency_Access */
607 static int hf_p22_identity; /* User_Identity */
608 static int hf_p22_passwords; /* Access_Passwords */
609 static int hf_p22_location; /* Application_Entity_Title */
610 static int hf_p22_read_password; /* Password */
611 static int hf_p22_insert_password; /* Password */
612 static int hf_p22_replace_password; /* Password */
613 static int hf_p22_extend_password; /* Password */
614 static int hf_p22_erase_password; /* Password */
615 static int hf_p22_read_attribute_password; /* Password */
616 static int hf_p22_change_attribute_password; /* Password */
617 static int hf_p22_delete_password; /* Password */
618 static int hf_p22_pass_passwords; /* Pass_Passwords */
619 static int hf_p22_link_password; /* Password */
620 static int hf_p22_graphic_string; /* GraphicString */
621 static int hf_p22_octet_string; /* OCTET_STRING */
622 static int hf_p22_Pass_Passwords_item; /* Password */
623 static int hf_p22_ap_title; /* AP_title */
624 static int hf_p22_ae_qualifier; /* AE_qualifier */
625 static int hf_p22_voice_message_duration; /* INTEGER */
626 static int hf_p22_voice_encoding_type; /* OBJECT_IDENTIFIER */
627 static int hf_p22_supplementary_information; /* IA5String */
628 static int hf_p22_mts_identifier; /* MessageDeliveryIdentifier */
629 static int hf_p22_submission_proof; /* SubmissionProof */
630 static int hf_p22_proof_of_submission; /* ProofOfSubmission */
631 static int hf_p22_originating_MTA_certificate; /* OriginatingMTACertificate */
632 static int hf_p22_message_submission_envelope; /* MessageSubmissionEnvelope */
633 static int hf_p22_IPMSynopsis_item; /* BodyPartSynopsis */
634 static int hf_p22_message_synopsis; /* MessageBodyPartSynopsis */
635 static int hf_p22_non_message; /* NonMessageBodyPartSynopsis */
636 static int hf_p22_number; /* SequenceNumber */
637 static int hf_p22_synopsis; /* IPMSynopsis */
638 static int hf_p22_bp_type; /* OBJECT_IDENTIFIER */
639 static int hf_p22_bp_parameters; /* INSTANCE_OF */
640 static int hf_p22_size; /* INTEGER */
641 static int hf_p22_processed; /* BOOLEAN */
642 static int hf_p22_data; /* OBJECT_IDENTIFIER */
643 static int hf_p22_parameters; /* OBJECT_IDENTIFIER */
644 static int hf_p22_this_child_entry; /* SequenceNumber */
645 static int hf_p22_position; /* INTEGER */
646 static int hf_p22_BodyPartSignatureVerification_item; /* BodyPartSignatureVerification_item */
647 static int hf_p22_body_part_sequence_number; /* BodyPartNumber */
648 static int hf_p22_body_part_signature_status; /* SignatureStatus */
649 static int hf_p22_stored; /* SET_OF_SequenceNumber */
650 static int hf_p22_stored_item; /* SequenceNumber */
651 static int hf_p22_absent; /* NULL */
652 static int hf_p22_no_reply_received; /* NULL */
653 static int hf_p22_received_replies; /* SEQUENCE_OF_SequenceNumber */
654 static int hf_p22_received_replies_item; /* SequenceNumber */
655 static int hf_p22_no_ipn_received; /* NULL */
656 static int hf_p22_ipns_received; /* SEQUENCE_OF_SequenceNumber */
657 static int hf_p22_ipns_received_item; /* SequenceNumber */
658 static int hf_p22_content_or_arguments; /* T_content_or_arguments */
659 static int hf_p22_original_content; /* OriginalContent */
660 static int hf_p22_original_security_arguments; /* T_original_security_arguments */
661 static int hf_p22_original_content_integrity_check; /* OriginalContentIntegrityCheck */
662 static int hf_p22_original_message_origin_authentication_check; /* OriginalMessageOriginAuthenticationCheck */
663 static int hf_p22_original_message_token; /* OriginalMessageToken */
664 static int hf_p22_security_diagnostic_code; /* SecurityDiagnosticCode */
665 static int hf_p22_BodyPartTokens_item; /* BodyPartTokens_item */
666 static int hf_p22_body_part_choice; /* T_body_part_choice */
667 static int hf_p22_encryption_token; /* EncryptionToken */
668 static int hf_p22_message_or_content_body_part; /* BodyPartTokens */
669 static int hf_p22_encryption_algorithm_identifier; /* AlgorithmIdentifier */
670 static int hf_p22_encrypted_key; /* BIT_STRING */
671 static int hf_p22_recipient_certificate_selector; /* CertificateAssertion */
672 static int hf_p22_recipient_certificate; /* Certificates */
673 static int hf_p22_ForwardedContentToken_item; /* ForwardedContentToken_item */
674 static int hf_p22_body_part_token_choice; /* T_body_part_token_choice */
675 static int hf_p22_forwarding_token; /* MessageToken */
676 static int hf_p22_forwarded_content_token; /* ForwardedContentToken */
677 static int hf_p22_choice; /* T_choice */
678 static int hf_p22_non_receipt_fields; /* NonReceiptFields */
679 static int hf_p22_receipt_fields; /* ReceiptFields */
680 static int hf_p22_other_notification_type_fields; /* OtherNotificationTypeFields */
681 /* named bits */
682 static int hf_p22_NotificationRequests_rn;
683 static int hf_p22_NotificationRequests_nrn;
684 static int hf_p22_NotificationRequests_ipm_return;
685 static int hf_p22_NotificationRequests_an_supported;
686 static int hf_p22_NotificationRequests_suppress_an;
687 static int hf_p22_Access_Request_read;
688 static int hf_p22_Access_Request_insert;
689 static int hf_p22_Access_Request_replace;
690 static int hf_p22_Access_Request_extend;
691 static int hf_p22_Access_Request_erase;
692 static int hf_p22_Access_Request_read_attribute;
693 static int hf_p22_Access_Request_change_attribute;
694 static int hf_p22_Access_Request_delete_object;
695 static int hf_p22_RecipientSecurityRequest_content_non_repudiation;
696 static int hf_p22_RecipientSecurityRequest_content_proof;
697 static int hf_p22_RecipientSecurityRequest_ipn_non_repudiation;
698 static int hf_p22_RecipientSecurityRequest_ipn_proof;
700 /* Initialize the subtree pointers */
701 static int ett_p22;
702 static int ett_p22_InformationObject;
703 static int ett_p22_IPM;
704 static int ett_p22_IPMSExtension;
705 static int ett_p22_Heading;
706 static int ett_p22_IPMIdentifier_U;
707 static int ett_p22_RecipientSpecifier;
708 static int ett_p22_ORDescriptor;
709 static int ett_p22_NotificationRequests;
710 static int ett_p22_RecipientExtensionsField;
711 static int ett_p22_AuthorizingUsersField;
712 static int ett_p22_PrimaryRecipientsField;
713 static int ett_p22_CopyRecipientsField;
714 static int ett_p22_BlindCopyRecipientsField;
715 static int ett_p22_ObsoletedIPMsField;
716 static int ett_p22_RelatedIPMsField;
717 static int ett_p22_ReplyRecipientsField;
718 static int ett_p22_ExtensionsField;
719 static int ett_p22_Body;
720 static int ett_p22_BodyPart;
721 static int ett_p22_T_basic;
722 static int ett_p22_ExtendedBodyPart;
723 static int ett_p22_IA5TextBodyPart;
724 static int ett_p22_IA5TextParameters;
725 static int ett_p22_G3FacsimileBodyPart;
726 static int ett_p22_G3FacsimileParameters;
727 static int ett_p22_G3FacsimileData;
728 static int ett_p22_G4Class1BodyPart;
729 static int ett_p22_MixedModeBodyPart;
730 static int ett_p22_TeletexBodyPart;
731 static int ett_p22_TeletexParameters;
732 static int ett_p22_TeletexData;
733 static int ett_p22_VideotexBodyPart;
734 static int ett_p22_VideotexParameters;
735 static int ett_p22_EncryptedBodyPart;
736 static int ett_p22_EncryptedParameters;
737 static int ett_p22_MessageBodyPart;
738 static int ett_p22_MessageParameters;
739 static int ett_p22_IPN;
740 static int ett_p22_CommonFields;
741 static int ett_p22_NonReceiptFields;
742 static int ett_p22_ReceiptFields;
743 static int ett_p22_NotificationExtensionsField;
744 static int ett_p22_NRNExtensionsField;
745 static int ett_p22_RNExtensionsField;
746 static int ett_p22_OtherNotificationTypeFields;
747 static int ett_p22_AbsenceAdvice;
748 static int ett_p22_ChangeOfAddressAdvice;
749 static int ett_p22_IPMAssemblyInstructions;
750 static int ett_p22_BodyPartReferences;
751 static int ett_p22_BodyPartReference;
752 static int ett_p22_T_stored_body_part;
753 static int ett_p22_Languages;
754 static int ett_p22_BodyPartSignatures;
755 static int ett_p22_BodyPartSignatures_item;
756 static int ett_p22_Signature;
757 static int ett_p22_IPMSecurityLabel;
758 static int ett_p22_SEQUENCE_OF_BodyPartSecurityLabel;
759 static int ett_p22_BodyPartSecurityLabel;
760 static int ett_p22_CirculationList;
761 static int ett_p22_CirculationMember;
762 static int ett_p22_Checkmark;
763 static int ett_p22_CirculationSignatureData;
764 static int ett_p22_CirculationSignature;
765 static int ett_p22_DistributionCodes;
766 static int ett_p22_DistributionCode;
767 static int ett_p22_InformationCategories;
768 static int ett_p22_InformationCategory;
769 static int ett_p22_ManualHandlingInstructions;
770 static int ett_p22_GeneralTextParameters;
771 static int ett_p22_FileTransferParameters;
772 static int ett_p22_FileTransferData;
773 static int ett_p22_RelatedStoredFile;
774 static int ett_p22_RelatedStoredFile_item;
775 static int ett_p22_FileIdentifier;
776 static int ett_p22_PathnameandVersion;
777 static int ett_p22_CrossReference;
778 static int ett_p22_MessageReference;
779 static int ett_p22_Relationship;
780 static int ett_p22_Contents_Type_Attribute;
781 static int ett_p22_T_document_type;
782 static int ett_p22_T_constraint_set_and_abstract_syntax;
783 static int ett_p22_EnvironmentParameter;
784 static int ett_p22_T_user_visible_string;
785 static int ett_p22_GeneralIdentifier;
786 static int ett_p22_T_descriptive_identifier;
787 static int ett_p22_CompressionParameter;
788 static int ett_p22_FileAttributes;
789 static int ett_p22_Pathname_Attribute;
790 static int ett_p22_Account_Attribute;
791 static int ett_p22_User_Identity_Attribute;
792 static int ett_p22_Access_Control_Attribute;
793 static int ett_p22_SET_OF_Access_Control_Element;
794 static int ett_p22_Access_Control_Element;
795 static int ett_p22_Access_Request;
796 static int ett_p22_Access_Passwords;
797 static int ett_p22_Password;
798 static int ett_p22_Pass_Passwords;
799 static int ett_p22_Application_Entity_Title;
800 static int ett_p22_VoiceParameters;
801 static int ett_p22_ForwardedContentParameters;
802 static int ett_p22_SubmissionProof;
803 static int ett_p22_IPMSynopsis;
804 static int ett_p22_BodyPartSynopsis;
805 static int ett_p22_MessageBodyPartSynopsis;
806 static int ett_p22_NonMessageBodyPartSynopsis;
807 static int ett_p22_BodyPartDescriptor;
808 static int ett_p22_BodyPartSignatureVerification;
809 static int ett_p22_BodyPartSignatureVerification_item;
810 static int ett_p22_IPMLocation;
811 static int ett_p22_SET_OF_SequenceNumber;
812 static int ett_p22_CorrelatedDeliveredReplies;
813 static int ett_p22_SEQUENCE_OF_SequenceNumber;
814 static int ett_p22_CorrelatedDeliveredIPNs;
815 static int ett_p22_RecipientSecurityRequest;
816 static int ett_p22_IpnSecurityResponse;
817 static int ett_p22_T_content_or_arguments;
818 static int ett_p22_T_original_security_arguments;
819 static int ett_p22_BodyPartTokens;
820 static int ett_p22_BodyPartTokens_item;
821 static int ett_p22_T_body_part_choice;
822 static int ett_p22_EncryptionToken;
823 static int ett_p22_ForwardedContentToken;
824 static int ett_p22_ForwardedContentToken_item;
825 static int ett_p22_T_body_part_token_choice;
826 static int ett_p22_T_choice;
828 /*--- Cyclic dependencies ---*/
830 /* IPM -> Body -> BodyPart -> BodyPart/basic -> MessageBodyPart -> MessageData -> IPM */
831 /*int dissect_p22_IPM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/
833 /* IPMSynopsis -> BodyPartSynopsis -> MessageBodyPartSynopsis -> IPMSynopsis */
834 static int dissect_p22_IPMSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
836 /* BodyPartTokens -> BodyPartTokens/_item -> BodyPartTokens/_item/body-part-choice -> BodyPartTokens */
837 static int dissect_p22_BodyPartTokens(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
839 /* ForwardedContentToken -> ForwardedContentToken/_item -> ForwardedContentToken/_item/body-part-choice -> ForwardedContentToken */
840 static int dissect_p22_ForwardedContentToken(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
845 static int
846 dissect_p22_Time(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
847 offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index, NULL, NULL);
849 return offset;
854 static int
855 dissect_p22_LocalIPMIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
856 offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
857 actx, tree, tvb, offset,
858 0, ub_local_ipm_identifier, hf_index, NULL);
860 return offset;
864 static const ber_sequence_t IPMIdentifier_U_set[] = {
865 { &hf_p22_user , BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p1_ORName },
866 { &hf_p22_user_relative_identifier, BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_p22_LocalIPMIdentifier },
867 { NULL, 0, 0, 0, NULL }
870 static int
871 dissect_p22_IPMIdentifier_U(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
872 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
873 IPMIdentifier_U_set, hf_index, ett_p22_IPMIdentifier_U);
875 return offset;
880 static int
881 dissect_p22_IPMIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
882 offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset,
883 hf_index, BER_CLASS_APP, 11, true, dissect_p22_IPMIdentifier_U);
885 return offset;
890 static int
891 dissect_p22_ThisIPMField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
892 offset = dissect_p22_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
894 return offset;
899 static int
900 dissect_p22_FreeFormName(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
901 offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
902 actx, tree, tvb, offset,
903 0, ub_free_form_name, hf_index, NULL);
905 return offset;
910 static int
911 dissect_p22_TelephoneNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
912 offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
913 actx, tree, tvb, offset,
914 0, ub_telephone_number, hf_index, NULL);
916 return offset;
920 static const ber_sequence_t ORDescriptor_set[] = {
921 { &hf_p22_formal_name , BER_CLASS_APP, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p1_ORName },
922 { &hf_p22_free_form_name , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_FreeFormName },
923 { &hf_p22_telephone_number, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_TelephoneNumber },
924 { NULL, 0, 0, 0, NULL }
928 dissect_p22_ORDescriptor(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
929 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
930 ORDescriptor_set, hf_index, ett_p22_ORDescriptor);
932 return offset;
937 static int
938 dissect_p22_OriginatorField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
939 offset = dissect_p22_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
941 return offset;
946 static int
947 dissect_p22_AuthorizingUsersSubfield(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
948 offset = dissect_p22_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
950 return offset;
954 static const ber_sequence_t AuthorizingUsersField_sequence_of[1] = {
955 { &hf_p22_AuthorizingUsersField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_AuthorizingUsersSubfield },
958 static int
959 dissect_p22_AuthorizingUsersField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
960 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
961 AuthorizingUsersField_sequence_of, hf_index, ett_p22_AuthorizingUsersField);
963 return offset;
967 static int * const NotificationRequests_bits[] = {
968 &hf_p22_NotificationRequests_rn,
969 &hf_p22_NotificationRequests_nrn,
970 &hf_p22_NotificationRequests_ipm_return,
971 &hf_p22_NotificationRequests_an_supported,
972 &hf_p22_NotificationRequests_suppress_an,
973 NULL
976 static int
977 dissect_p22_NotificationRequests(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
978 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
979 NotificationRequests_bits, 5, hf_index, ett_p22_NotificationRequests,
980 NULL);
982 return offset;
987 static int
988 dissect_p22_BOOLEAN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
989 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
991 return offset;
996 static int
997 dissect_p22_T_type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
998 const char *name = NULL;
1000 offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.direct_reference);
1003 name = oid_resolved_from_string(actx->pinfo->pool, actx->external.direct_reference);
1004 proto_item_append_text(tree, " (%s)", name ? name : actx->external.direct_reference);
1007 return offset;
1012 static int
1013 dissect_p22_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1015 offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL);
1018 return offset;
1022 static const ber_sequence_t IPMSExtension_sequence[] = {
1023 { &hf_p22_type , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_p22_T_type },
1024 { &hf_p22_value , BER_CLASS_ANY, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p22_T_value },
1025 { NULL, 0, 0, 0, NULL }
1028 static int
1029 dissect_p22_IPMSExtension(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1030 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1031 IPMSExtension_sequence, hf_index, ett_p22_IPMSExtension);
1033 return offset;
1037 static const ber_sequence_t RecipientExtensionsField_set_of[1] = {
1038 { &hf_p22_RecipientExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_IPMSExtension },
1041 static int
1042 dissect_p22_RecipientExtensionsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1043 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1044 RecipientExtensionsField_set_of, hf_index, ett_p22_RecipientExtensionsField);
1046 return offset;
1050 static const ber_sequence_t RecipientSpecifier_set[] = {
1051 { &hf_p22_recipient , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_ORDescriptor },
1052 { &hf_p22_notification_requests, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_NotificationRequests },
1053 { &hf_p22_reply_requested , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_BOOLEAN },
1054 { &hf_p22_recipient_extensions, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_RecipientExtensionsField },
1055 { NULL, 0, 0, 0, NULL }
1058 static int
1059 dissect_p22_RecipientSpecifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1060 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1061 RecipientSpecifier_set, hf_index, ett_p22_RecipientSpecifier);
1063 return offset;
1068 static int
1069 dissect_p22_PrimaryRecipientsSubfield(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1070 offset = dissect_p22_RecipientSpecifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1072 return offset;
1076 static const ber_sequence_t PrimaryRecipientsField_sequence_of[1] = {
1077 { &hf_p22_PrimaryRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_PrimaryRecipientsSubfield },
1080 static int
1081 dissect_p22_PrimaryRecipientsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1082 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1083 PrimaryRecipientsField_sequence_of, hf_index, ett_p22_PrimaryRecipientsField);
1085 return offset;
1090 static int
1091 dissect_p22_CopyRecipientsSubfield(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1092 offset = dissect_p22_RecipientSpecifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1094 return offset;
1098 static const ber_sequence_t CopyRecipientsField_sequence_of[1] = {
1099 { &hf_p22_CopyRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_CopyRecipientsSubfield },
1102 static int
1103 dissect_p22_CopyRecipientsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1104 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1105 CopyRecipientsField_sequence_of, hf_index, ett_p22_CopyRecipientsField);
1107 return offset;
1112 static int
1113 dissect_p22_BlindCopyRecipientsSubfield(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1114 offset = dissect_p22_RecipientSpecifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1116 return offset;
1120 static const ber_sequence_t BlindCopyRecipientsField_sequence_of[1] = {
1121 { &hf_p22_BlindCopyRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_BlindCopyRecipientsSubfield },
1124 static int
1125 dissect_p22_BlindCopyRecipientsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1126 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1127 BlindCopyRecipientsField_sequence_of, hf_index, ett_p22_BlindCopyRecipientsField);
1129 return offset;
1134 static int
1135 dissect_p22_RepliedToIPMField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1136 offset = dissect_p22_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1138 return offset;
1143 static int
1144 dissect_p22_ObsoletedIPMsSubfield(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1145 offset = dissect_p22_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1147 return offset;
1151 static const ber_sequence_t ObsoletedIPMsField_sequence_of[1] = {
1152 { &hf_p22_ObsoletedIPMsField_item, BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_p22_ObsoletedIPMsSubfield },
1155 static int
1156 dissect_p22_ObsoletedIPMsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1157 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1158 ObsoletedIPMsField_sequence_of, hf_index, ett_p22_ObsoletedIPMsField);
1160 return offset;
1165 static int
1166 dissect_p22_RelatedIPMsSubfield(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1167 offset = dissect_p22_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1169 return offset;
1173 static const ber_sequence_t RelatedIPMsField_sequence_of[1] = {
1174 { &hf_p22_RelatedIPMsField_item, BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_p22_RelatedIPMsSubfield },
1177 static int
1178 dissect_p22_RelatedIPMsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1179 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1180 RelatedIPMsField_sequence_of, hf_index, ett_p22_RelatedIPMsField);
1182 return offset;
1187 static int
1188 dissect_p22_SubjectField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1189 tvbuff_t *subject=NULL;
1191 offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
1192 actx, tree, tvb, offset,
1193 0, ub_subject_field, hf_index, &subject);
1196 if(subject)
1197 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%s)", tvb_get_string_enc(actx->pinfo->pool, subject, 0,
1198 tvb_reported_length(subject), ENC_T61));
1201 return offset;
1206 static int
1207 dissect_p22_ExpiryTimeField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1208 offset = dissect_p22_Time(implicit_tag, tvb, offset, actx, tree, hf_index);
1210 return offset;
1215 static int
1216 dissect_p22_ReplyTimeField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1217 offset = dissect_p22_Time(implicit_tag, tvb, offset, actx, tree, hf_index);
1219 return offset;
1224 static int
1225 dissect_p22_ReplyRecipientsSubfield(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1226 offset = dissect_p22_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
1228 return offset;
1232 static const ber_sequence_t ReplyRecipientsField_sequence_of[1] = {
1233 { &hf_p22_ReplyRecipientsField_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_ReplyRecipientsSubfield },
1236 static int
1237 dissect_p22_ReplyRecipientsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1238 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1239 ReplyRecipientsField_sequence_of, hf_index, ett_p22_ReplyRecipientsField);
1241 return offset;
1245 static const value_string p22_ImportanceField_vals[] = {
1246 { 0, "low" },
1247 { 1, "normal" },
1248 { 2, "high" },
1249 { 0, NULL }
1253 static int
1254 dissect_p22_ImportanceField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1255 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1256 NULL);
1258 return offset;
1262 static const value_string p22_SensitivityField_vals[] = {
1263 { 1, "personal" },
1264 { 2, "private" },
1265 { 3, "company-confidential" },
1266 { 0, NULL }
1270 static int
1271 dissect_p22_SensitivityField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1272 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1273 NULL);
1275 return offset;
1280 static int
1281 dissect_p22_AutoForwardedField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1282 offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
1284 return offset;
1288 static const ber_sequence_t ExtensionsField_set_of[1] = {
1289 { &hf_p22_ExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_IPMSExtension },
1293 dissect_p22_ExtensionsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1294 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1295 ExtensionsField_set_of, hf_index, ett_p22_ExtensionsField);
1297 return offset;
1301 static const ber_sequence_t Heading_set[] = {
1302 { &hf_p22_this_IPM , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_p22_ThisIPMField },
1303 { &hf_p22_originator , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_OriginatorField },
1304 { &hf_p22_authorizing_users, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_AuthorizingUsersField },
1305 { &hf_p22_primary_recipients, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_PrimaryRecipientsField },
1306 { &hf_p22_copy_recipients , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_CopyRecipientsField },
1307 { &hf_p22_blind_copy_recipients, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_BlindCopyRecipientsField },
1308 { &hf_p22_replied_to_IPM , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_RepliedToIPMField },
1309 { &hf_p22_obsoleted_IPMs , BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ObsoletedIPMsField },
1310 { &hf_p22_related_IPMs , BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_RelatedIPMsField },
1311 { &hf_p22_subject , BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL, dissect_p22_SubjectField },
1312 { &hf_p22_expiry_time , BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ExpiryTimeField },
1313 { &hf_p22_reply_time , BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ReplyTimeField },
1314 { &hf_p22_reply_recipients, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ReplyRecipientsField },
1315 { &hf_p22_importance , BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ImportanceField },
1316 { &hf_p22_sensitivity , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_SensitivityField },
1317 { &hf_p22_auto_forwarded , BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_AutoForwardedField },
1318 { &hf_p22_extensions , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ExtensionsField },
1319 { NULL, 0, 0, 0, NULL }
1322 static int
1323 dissect_p22_Heading(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1324 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1325 Heading_set, hf_index, ett_p22_Heading);
1327 return offset;
1331 static const value_string p22_Repertoire_vals[] = {
1332 { 2, "ita2" },
1333 { 5, "ia5" },
1334 { 0, NULL }
1338 static int
1339 dissect_p22_Repertoire(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1340 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1341 NULL);
1343 return offset;
1347 static const ber_sequence_t IA5TextParameters_set[] = {
1348 { &hf_p22_repertoire , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_Repertoire },
1349 { NULL, 0, 0, 0, NULL }
1352 static int
1353 dissect_p22_IA5TextParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1354 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1355 IA5TextParameters_set, hf_index, ett_p22_IA5TextParameters);
1357 return offset;
1362 static int
1363 dissect_p22_IA5TextData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1364 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
1365 actx, tree, tvb, offset, hf_index,
1366 NULL);
1368 return offset;
1372 static const ber_sequence_t IA5TextBodyPart_sequence[] = {
1373 { &hf_p22_ia5text_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_IA5TextParameters },
1374 { &hf_p22_ia5text_data , BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_p22_IA5TextData },
1375 { NULL, 0, 0, 0, NULL }
1378 static int
1379 dissect_p22_IA5TextBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1380 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1381 IA5TextBodyPart_sequence, hf_index, ett_p22_IA5TextBodyPart);
1383 return offset;
1388 static int
1389 dissect_p22_INTEGER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1390 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1391 NULL);
1393 return offset;
1397 static const ber_sequence_t G3FacsimileParameters_set[] = {
1398 { &hf_p22_number_of_pages , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_INTEGER },
1399 { &hf_p22_g3facsimile_non_basic_parameters, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_G3FacsimileNonBasicParameters },
1400 { NULL, 0, 0, 0, NULL }
1403 static int
1404 dissect_p22_G3FacsimileParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1405 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1406 G3FacsimileParameters_set, hf_index, ett_p22_G3FacsimileParameters);
1408 return offset;
1413 static int
1414 dissect_p22_BIT_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1415 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1416 NULL, 0, hf_index, -1,
1417 NULL);
1419 return offset;
1423 static const ber_sequence_t G3FacsimileData_sequence_of[1] = {
1424 { &hf_p22_G3FacsimileData_item, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_p22_BIT_STRING },
1427 static int
1428 dissect_p22_G3FacsimileData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1429 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1430 G3FacsimileData_sequence_of, hf_index, ett_p22_G3FacsimileData);
1432 return offset;
1436 static const ber_sequence_t G3FacsimileBodyPart_sequence[] = {
1437 { &hf_p22_g3facsimile_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_G3FacsimileParameters },
1438 { &hf_p22_g3facsimile_data, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_G3FacsimileData },
1439 { NULL, 0, 0, 0, NULL }
1442 static int
1443 dissect_p22_G3FacsimileBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1444 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1445 G3FacsimileBodyPart_sequence, hf_index, ett_p22_G3FacsimileBodyPart);
1447 return offset;
1452 static int
1453 dissect_p22_Interchange_Data_Element(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1454 /* XXX Not implemented yet */
1457 return offset;
1461 static const ber_sequence_t G4Class1BodyPart_sequence_of[1] = {
1462 { &hf_p22_G4Class1BodyPart_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_p22_Interchange_Data_Element },
1465 static int
1466 dissect_p22_G4Class1BodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1467 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1468 G4Class1BodyPart_sequence_of, hf_index, ett_p22_G4Class1BodyPart);
1470 return offset;
1474 static const ber_sequence_t TeletexParameters_set[] = {
1475 { &hf_p22_number_of_pages , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_INTEGER },
1476 { &hf_p22_telex_compatible, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_BOOLEAN },
1477 { &hf_p22_teletex_non_basic_parameters, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_TeletexNonBasicParameters },
1478 { NULL, 0, 0, 0, NULL }
1481 static int
1482 dissect_p22_TeletexParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1483 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1484 TeletexParameters_set, hf_index, ett_p22_TeletexParameters);
1486 return offset;
1491 static int
1492 dissect_p22_TeletexString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1493 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
1494 actx, tree, tvb, offset, hf_index,
1495 NULL);
1497 return offset;
1501 static const ber_sequence_t TeletexData_sequence_of[1] = {
1502 { &hf_p22_TeletexData_item, BER_CLASS_UNI, BER_UNI_TAG_TeletexString, BER_FLAGS_NOOWNTAG, dissect_p22_TeletexString },
1505 static int
1506 dissect_p22_TeletexData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1507 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1508 TeletexData_sequence_of, hf_index, ett_p22_TeletexData);
1510 return offset;
1514 static const ber_sequence_t TeletexBodyPart_sequence[] = {
1515 { &hf_p22_teletex_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_TeletexParameters },
1516 { &hf_p22_teletex_data , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_TeletexData },
1517 { NULL, 0, 0, 0, NULL }
1520 static int
1521 dissect_p22_TeletexBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1522 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1523 TeletexBodyPart_sequence, hf_index, ett_p22_TeletexBodyPart);
1525 return offset;
1529 static const value_string p22_VideotexSyntax_vals[] = {
1530 { 0, "ids" },
1531 { 1, "data-syntax1" },
1532 { 2, "data-syntax2" },
1533 { 3, "data-syntax3" },
1534 { 0, NULL }
1538 static int
1539 dissect_p22_VideotexSyntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1540 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1541 NULL);
1543 return offset;
1547 static const ber_sequence_t VideotexParameters_set[] = {
1548 { &hf_p22_syntax , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_VideotexSyntax },
1549 { NULL, 0, 0, 0, NULL }
1552 static int
1553 dissect_p22_VideotexParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1554 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1555 VideotexParameters_set, hf_index, ett_p22_VideotexParameters);
1557 return offset;
1562 static int
1563 dissect_p22_VideotexData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1564 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_VideotexString,
1565 actx, tree, tvb, offset, hf_index,
1566 NULL);
1568 return offset;
1572 static const ber_sequence_t VideotexBodyPart_sequence[] = {
1573 { &hf_p22_videotex_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_VideotexParameters },
1574 { &hf_p22_videotex_data , BER_CLASS_UNI, BER_UNI_TAG_VideotexString, BER_FLAGS_NOOWNTAG, dissect_p22_VideotexData },
1575 { NULL, 0, 0, 0, NULL }
1578 static int
1579 dissect_p22_VideotexBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1580 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1581 VideotexBodyPart_sequence, hf_index, ett_p22_VideotexBodyPart);
1583 return offset;
1587 static const ber_sequence_t EncryptedParameters_set[] = {
1588 { &hf_p22_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
1589 { &hf_p22_originator_certificates, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p1_ExtendedCertificates },
1590 { NULL, 0, 0, 0, NULL }
1593 static int
1594 dissect_p22_EncryptedParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1595 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1596 EncryptedParameters_set, hf_index, ett_p22_EncryptedParameters);
1598 return offset;
1603 static int
1604 dissect_p22_EncryptedData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1605 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
1606 NULL, 0, hf_index, -1,
1607 NULL);
1609 return offset;
1613 static const ber_sequence_t EncryptedBodyPart_sequence[] = {
1614 { &hf_p22_encrypted_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_EncryptedParameters },
1615 { &hf_p22_encrypted_data , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_p22_EncryptedData },
1616 { NULL, 0, 0, 0, NULL }
1619 static int
1620 dissect_p22_EncryptedBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1621 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1622 EncryptedBodyPart_sequence, hf_index, ett_p22_EncryptedBodyPart);
1624 return offset;
1628 static const ber_sequence_t MessageParameters_set[] = {
1629 { &hf_p22_delivery_time , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_MessageDeliveryTime },
1630 { &hf_p22_delivery_envelope, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_OtherMessageDeliveryFields },
1631 { NULL, 0, 0, 0, NULL }
1635 dissect_p22_MessageParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1636 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1637 MessageParameters_set, hf_index, ett_p22_MessageParameters);
1639 return offset;
1644 static int
1645 dissect_p22_MessageData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1646 offset = dissect_p22_IPM(implicit_tag, tvb, offset, actx, tree, hf_index);
1648 return offset;
1652 static const ber_sequence_t MessageBodyPart_sequence[] = {
1653 { &hf_p22_message_parameters, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_MessageParameters },
1654 { &hf_p22_message_data , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_MessageData },
1655 { NULL, 0, 0, 0, NULL }
1658 static int
1659 dissect_p22_MessageBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1660 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1661 MessageBodyPart_sequence, hf_index, ett_p22_MessageBodyPart);
1663 return offset;
1667 static const ber_sequence_t MixedModeBodyPart_sequence_of[1] = {
1668 { &hf_p22_MixedModeBodyPart_item, BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_p22_Interchange_Data_Element },
1671 static int
1672 dissect_p22_MixedModeBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1673 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1674 MixedModeBodyPart_sequence_of, hf_index, ett_p22_MixedModeBodyPart);
1676 return offset;
1681 static int
1682 dissect_p22_BilaterallyDefinedBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1683 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
1684 NULL);
1686 return offset;
1691 static int
1692 dissect_p22_NationallyDefinedBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1693 /* XXX Not implemented yet */
1696 return offset;
1700 static const value_string p22_T_basic_vals[] = {
1701 { 0, "ia5-text" },
1702 { 3, "g3-facsimile" },
1703 { 4, "g4-class1" },
1704 { 5, "teletex" },
1705 { 6, "videotex" },
1706 { 8, "encrypted" },
1707 { 9, "message" },
1708 { 11, "mixed-mode" },
1709 { 14, "bilaterally-defined" },
1710 { 7, "nationally-defined" },
1711 { 0, NULL }
1714 static const ber_choice_t T_basic_choice[] = {
1715 { 0, &hf_p22_ia5_text , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_IA5TextBodyPart },
1716 { 3, &hf_p22_g3_facsimile , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_p22_G3FacsimileBodyPart },
1717 { 4, &hf_p22_g4_class1 , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_p22_G4Class1BodyPart },
1718 { 5, &hf_p22_teletex , BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG, dissect_p22_TeletexBodyPart },
1719 { 6, &hf_p22_videotex , BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG, dissect_p22_VideotexBodyPart },
1720 { 8, &hf_p22_encrypted_bp , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_p22_EncryptedBodyPart },
1721 { 9, &hf_p22_message , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG, dissect_p22_MessageBodyPart },
1722 { 11, &hf_p22_mixed_mode , BER_CLASS_CON, 11, BER_FLAGS_IMPLTAG, dissect_p22_MixedModeBodyPart },
1723 { 14, &hf_p22_bilaterally_defined, BER_CLASS_CON, 14, BER_FLAGS_IMPLTAG, dissect_p22_BilaterallyDefinedBodyPart },
1724 { 7, &hf_p22_nationally_defined, BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG, dissect_p22_NationallyDefinedBodyPart },
1725 { 0, NULL, 0, 0, 0, NULL }
1728 static int
1729 dissect_p22_T_basic(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1730 offset = dissect_ber_choice(actx, tree, tvb, offset,
1731 T_basic_choice, hf_index, ett_p22_T_basic,
1732 NULL);
1734 return offset;
1739 static int
1740 dissect_p22_INSTANCE_OF(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1741 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
1743 return offset;
1747 static const ber_sequence_t ExtendedBodyPart_sequence[] = {
1748 { &hf_p22_extended_parameters, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_INSTANCE_OF },
1749 { &hf_p22_extended_data , BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_p22_INSTANCE_OF },
1750 { NULL, 0, 0, 0, NULL }
1753 static int
1754 dissect_p22_ExtendedBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1755 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1756 ExtendedBodyPart_sequence, hf_index, ett_p22_ExtendedBodyPart);
1758 return offset;
1762 static const value_string p22_BodyPart_vals[] = {
1763 { 0, "basic" },
1764 { 1, "extended" },
1765 { 0, NULL }
1768 static const ber_choice_t BodyPart_choice[] = {
1769 { 0, &hf_p22_basic , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_p22_T_basic },
1770 { 1, &hf_p22_extended , BER_CLASS_CON, 15, BER_FLAGS_IMPLTAG, dissect_p22_ExtendedBodyPart },
1771 { 0, NULL, 0, 0, 0, NULL }
1774 static int
1775 dissect_p22_BodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1776 offset = dissect_ber_choice(actx, tree, tvb, offset,
1777 BodyPart_choice, hf_index, ett_p22_BodyPart,
1778 NULL);
1780 return offset;
1784 static const ber_sequence_t Body_sequence_of[1] = {
1785 { &hf_p22_Body_item , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_BodyPart },
1788 static int
1789 dissect_p22_Body(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1790 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
1791 Body_sequence_of, hf_index, ett_p22_Body);
1793 return offset;
1797 static const ber_sequence_t IPM_sequence[] = {
1798 { &hf_p22_heading , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_Heading },
1799 { &hf_p22_body , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_Body },
1800 { NULL, 0, 0, 0, NULL }
1804 dissect_p22_IPM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1805 // IPM -> Body -> BodyPart -> BodyPart/basic -> MessageBodyPart -> MessageData -> IPM
1806 actx->pinfo->dissection_depth += 6;
1807 increment_dissection_depth(actx->pinfo);
1809 col_append_str(actx->pinfo->cinfo, COL_INFO, " Message");
1811 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
1812 IPM_sequence, hf_index, ett_p22_IPM);
1817 actx->pinfo->dissection_depth -= 6;
1818 decrement_dissection_depth(actx->pinfo);
1819 return offset;
1824 static int
1825 dissect_p22_SubjectIPMField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1826 offset = dissect_p22_IPMIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
1828 return offset;
1833 static int
1834 dissect_p22_IPNOriginatorField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1835 offset = dissect_p22_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
1837 return offset;
1842 static int
1843 dissect_p22_IPMIntendedRecipientField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1844 offset = dissect_p22_ORDescriptor(implicit_tag, tvb, offset, actx, tree, hf_index);
1846 return offset;
1851 static int
1852 dissect_p22_ConversionEITsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1853 offset = dissect_p1_EncodedInformationTypes(implicit_tag, tvb, offset, actx, tree, hf_index);
1855 return offset;
1859 static const ber_sequence_t NotificationExtensionsField_set_of[1] = {
1860 { &hf_p22_NotificationExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_IPMSExtension },
1863 static int
1864 dissect_p22_NotificationExtensionsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1865 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1866 NotificationExtensionsField_set_of, hf_index, ett_p22_NotificationExtensionsField);
1868 return offset;
1872 const value_string p22_NonReceiptReasonField_vals[] = {
1873 { 0, "ipm-discarded" },
1874 { 1, "ipm-auto-forwarded" },
1875 { 0, NULL }
1880 dissect_p22_NonReceiptReasonField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1881 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1882 NULL);
1884 return offset;
1888 const value_string p22_DiscardReasonField_vals[] = {
1889 { 0, "ipm-expired" },
1890 { 1, "ipm-obsoleted" },
1891 { 2, "user-subscription-terminated" },
1892 { 3, "not-used" },
1893 { 0, NULL }
1898 dissect_p22_DiscardReasonField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1899 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1900 NULL);
1902 return offset;
1907 static int
1908 dissect_p22_AutoForwardComment(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1909 offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
1910 actx, tree, tvb, offset,
1911 0, ub_auto_forward_comment, hf_index, NULL);
1913 return offset;
1918 static int
1919 dissect_p22_AutoForwardCommentField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1920 offset = dissect_p22_AutoForwardComment(implicit_tag, tvb, offset, actx, tree, hf_index);
1922 return offset;
1927 static int
1928 dissect_p22_ReturnedIPMField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1929 offset = dissect_p22_IPM(implicit_tag, tvb, offset, actx, tree, hf_index);
1931 return offset;
1935 static const ber_sequence_t NRNExtensionsField_set_of[1] = {
1936 { &hf_p22_NRNExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_IPMSExtension },
1939 static int
1940 dissect_p22_NRNExtensionsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1941 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
1942 NRNExtensionsField_set_of, hf_index, ett_p22_NRNExtensionsField);
1944 return offset;
1948 static const ber_sequence_t NonReceiptFields_set[] = {
1949 { &hf_p22_non_receipt_reason, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NonReceiptReasonField },
1950 { &hf_p22_discard_reason , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_DiscardReasonField },
1951 { &hf_p22_auto_forward_comment, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_AutoForwardCommentField },
1952 { &hf_p22_returned_ipm , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ReturnedIPMField },
1953 { &hf_p22_nrn_extensions , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_NRNExtensionsField },
1954 { NULL, 0, 0, 0, NULL }
1957 static int
1958 dissect_p22_NonReceiptFields(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1959 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
1960 NonReceiptFields_set, hf_index, ett_p22_NonReceiptFields);
1962 return offset;
1968 dissect_p22_ReceiptTimeField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1969 offset = dissect_p22_Time(implicit_tag, tvb, offset, actx, tree, hf_index);
1971 return offset;
1975 static const value_string p22_AcknowledgmentModeField_vals[] = {
1976 { 0, "manual" },
1977 { 1, "automatic" },
1978 { 0, NULL }
1982 static int
1983 dissect_p22_AcknowledgmentModeField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1984 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
1985 NULL);
1987 return offset;
1992 static int
1993 dissect_p22_SupplReceiptInfoField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
1994 offset = dissect_p1_SupplementaryInformation(implicit_tag, tvb, offset, actx, tree, hf_index);
1996 return offset;
2000 static const ber_sequence_t RNExtensionsField_set_of[1] = {
2001 { &hf_p22_RNExtensionsField_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_IPMSExtension },
2004 static int
2005 dissect_p22_RNExtensionsField(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2006 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2007 RNExtensionsField_set_of, hf_index, ett_p22_RNExtensionsField);
2009 return offset;
2013 static const ber_sequence_t ReceiptFields_set[] = {
2014 { &hf_p22_receipt_time , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_ReceiptTimeField },
2015 { &hf_p22_acknowledgment_mode, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_AcknowledgmentModeField },
2016 { &hf_p22_suppl_receipt_info, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_SupplReceiptInfoField },
2017 { &hf_p22_rn_extensions , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_RNExtensionsField },
2018 { NULL, 0, 0, 0, NULL }
2021 static int
2022 dissect_p22_ReceiptFields(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2023 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2024 ReceiptFields_set, hf_index, ett_p22_ReceiptFields);
2026 return offset;
2030 static const ber_sequence_t OtherNotificationTypeFields_set_of[1] = {
2031 { &hf_p22_OtherNotificationTypeFields_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_IPMSExtension },
2034 static int
2035 dissect_p22_OtherNotificationTypeFields(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2036 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2037 OtherNotificationTypeFields_set_of, hf_index, ett_p22_OtherNotificationTypeFields);
2039 return offset;
2043 static const value_string p22_T_choice_vals[] = {
2044 { 0, "non-receipt-fields" },
2045 { 1, "receipt-fields" },
2046 { 2, "other-notification-type-fields" },
2047 { 0, NULL }
2050 static const ber_choice_t T_choice_choice[] = {
2051 { 0, &hf_p22_non_receipt_fields, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NonReceiptFields },
2052 { 1, &hf_p22_receipt_fields , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_ReceiptFields },
2053 { 2, &hf_p22_other_notification_type_fields, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_p22_OtherNotificationTypeFields },
2054 { 0, NULL, 0, 0, 0, NULL }
2057 static int
2058 dissect_p22_T_choice(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2059 offset = dissect_ber_choice(actx, tree, tvb, offset,
2060 T_choice_choice, hf_index, ett_p22_T_choice,
2061 NULL);
2063 return offset;
2067 static const ber_sequence_t IPN_set[] = {
2068 { &hf_p22_subject_ipm , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_p22_SubjectIPMField },
2069 { &hf_p22_ipn_originator , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_IPNOriginatorField },
2070 { &hf_p22_ipm_intended_recipient, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_IPMIntendedRecipientField },
2071 { &hf_p22_conversion_eits , BER_CLASS_APP, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p22_ConversionEITsField },
2072 { &hf_p22_notification_extensions, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_NotificationExtensionsField },
2073 { &hf_p22_choice , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_T_choice },
2074 { NULL, 0, 0, 0, NULL }
2078 dissect_p22_IPN(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2080 col_append_str(actx->pinfo->cinfo, COL_INFO, " Notification");
2082 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2083 IPN_set, hf_index, ett_p22_IPN);
2087 return offset;
2091 const value_string p22_InformationObject_vals[] = {
2092 { 0, "ipm" },
2093 { 1, "ipn" },
2094 { 0, NULL }
2097 static const ber_choice_t InformationObject_choice[] = {
2098 { 0, &hf_p22_ipm , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_IPM },
2099 { 1, &hf_p22_ipn , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_IPN },
2100 { 0, NULL, 0, 0, 0, NULL }
2104 dissect_p22_InformationObject(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2105 offset = dissect_ber_choice(actx, tree, tvb, offset,
2106 InformationObject_choice, hf_index, ett_p22_InformationObject,
2107 NULL);
2109 return offset;
2114 static const ber_sequence_t AbsenceAdvice_sequence[] = {
2115 { &hf_p22_advice , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_BodyPart },
2116 { &hf_p22_next_available , BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p22_Time },
2117 { NULL, 0, 0, 0, NULL }
2120 static int
2121 dissect_p22_AbsenceAdvice(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2122 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2123 AbsenceAdvice_sequence, hf_index, ett_p22_AbsenceAdvice);
2125 return offset;
2129 static const ber_sequence_t ChangeOfAddressAdvice_sequence[] = {
2130 { &hf_p22_new_address , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_ORDescriptor },
2131 { &hf_p22_effective_from , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_Time },
2132 { NULL, 0, 0, 0, NULL }
2135 static int
2136 dissect_p22_ChangeOfAddressAdvice(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2137 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2138 ChangeOfAddressAdvice_sequence, hf_index, ett_p22_ChangeOfAddressAdvice);
2140 return offset;
2145 static int
2146 dissect_p22_INTEGER_1_MAX(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2147 offset = dissect_ber_constrained_integer64(implicit_tag, actx, tree, tvb, offset,
2148 1U, NO_BOUND, hf_index, NULL);
2150 return offset;
2155 static int
2156 dissect_p22_BodyPartNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2157 offset = dissect_ber_constrained_integer64(implicit_tag, actx, tree, tvb, offset,
2158 1U, NO_BOUND, hf_index, NULL);
2160 return offset;
2164 static const ber_sequence_t T_stored_body_part_sequence[] = {
2165 { &hf_p22_message_entry , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p7_SequenceNumber },
2166 { &hf_p22_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartNumber },
2167 { NULL, 0, 0, 0, NULL }
2170 static int
2171 dissect_p22_T_stored_body_part(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2172 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2173 T_stored_body_part_sequence, hf_index, ett_p22_T_stored_body_part);
2175 return offset;
2179 static const value_string p22_BodyPartReference_vals[] = {
2180 { 0, "stored-entry" },
2181 { 1, "stored-content" },
2182 { 2, "submitted-body-part" },
2183 { 3, "stored-body-part" },
2184 { 0, NULL }
2187 static const ber_choice_t BodyPartReference_choice[] = {
2188 { 0, &hf_p22_stored_entry , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
2189 { 1, &hf_p22_stored_content , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
2190 { 2, &hf_p22_submitted_body_part, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_p22_INTEGER_1_MAX },
2191 { 3, &hf_p22_stored_body_part, BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_p22_T_stored_body_part },
2192 { 0, NULL, 0, 0, 0, NULL }
2195 static int
2196 dissect_p22_BodyPartReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2197 offset = dissect_ber_choice(actx, tree, tvb, offset,
2198 BodyPartReference_choice, hf_index, ett_p22_BodyPartReference,
2199 NULL);
2201 return offset;
2205 static const ber_sequence_t BodyPartReferences_sequence_of[1] = {
2206 { &hf_p22_BodyPartReferences_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_BodyPartReference },
2209 static int
2210 dissect_p22_BodyPartReferences(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2211 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2212 BodyPartReferences_sequence_of, hf_index, ett_p22_BodyPartReferences);
2214 return offset;
2218 static const ber_sequence_t IPMAssemblyInstructions_set[] = {
2219 { &hf_p22_assembly_instructions, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_BodyPartReferences },
2220 { NULL, 0, 0, 0, NULL }
2223 static int
2224 dissect_p22_IPMAssemblyInstructions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2225 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2226 IPMAssemblyInstructions_set, hf_index, ett_p22_IPMAssemblyInstructions);
2228 return offset;
2233 static int
2234 dissect_p22_IncompleteCopy(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2235 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2237 return offset;
2242 static int
2243 dissect_p22_Language(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2244 offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
2245 actx, tree, tvb, offset,
2246 2, 5, hf_index, NULL);
2248 return offset;
2252 static const ber_sequence_t Languages_set_of[1] = {
2253 { &hf_p22_Languages_item , BER_CLASS_UNI, BER_UNI_TAG_PrintableString, BER_FLAGS_NOOWNTAG, dissect_p22_Language },
2256 static int
2257 dissect_p22_Languages(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2258 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2259 Languages_set_of, hf_index, ett_p22_Languages);
2261 return offset;
2265 static const value_string p22_AutoSubmitted_vals[] = {
2266 { 0, "not-auto-submitted" },
2267 { 1, "auto-generated" },
2268 { 2, "auto-replied" },
2269 { 0, NULL }
2273 static int
2274 dissect_p22_AutoSubmitted(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2275 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2276 NULL);
2278 return offset;
2282 static const ber_sequence_t Signature_sequence[] = {
2283 { &hf_p22_algorithmIdentifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2284 { &hf_p22_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_p22_BIT_STRING },
2285 { NULL, 0, 0, 0, NULL }
2288 static int
2289 dissect_p22_Signature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2290 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2291 Signature_sequence, hf_index, ett_p22_Signature);
2293 return offset;
2298 static int
2299 dissect_p22_BodyPartSignature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2300 offset = dissect_p22_Signature(implicit_tag, tvb, offset, actx, tree, hf_index);
2302 return offset;
2306 static const ber_sequence_t BodyPartSignatures_item_set[] = {
2307 { &hf_p22_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartNumber },
2308 { &hf_p22_body_part_signature, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartSignature },
2309 { &hf_p22_originator_certificate_selector, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_CertificateAssertion },
2310 { &hf_p22_originator_certificates, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_ExtendedCertificates },
2311 { NULL, 0, 0, 0, NULL }
2314 static int
2315 dissect_p22_BodyPartSignatures_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2316 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2317 BodyPartSignatures_item_set, hf_index, ett_p22_BodyPartSignatures_item);
2319 return offset;
2323 static const ber_sequence_t BodyPartSignatures_set_of[1] = {
2324 { &hf_p22_BodyPartSignatures_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartSignatures_item },
2327 static int
2328 dissect_p22_BodyPartSignatures(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2329 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2330 BodyPartSignatures_set_of, hf_index, ett_p22_BodyPartSignatures);
2332 return offset;
2337 static int
2338 dissect_p22_NULL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2339 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2341 return offset;
2345 static const value_string p22_BodyPartSecurityLabel_vals[] = {
2346 { 0, "body-part-unlabelled" },
2347 { 1, "body-part-security-label" },
2348 { 0, NULL }
2351 static const ber_choice_t BodyPartSecurityLabel_choice[] = {
2352 { 0, &hf_p22_body_part_unlabelled, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NULL },
2353 { 1, &hf_p22_body_part_security_label, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p1_SecurityLabel },
2354 { 0, NULL, 0, 0, 0, NULL }
2357 static int
2358 dissect_p22_BodyPartSecurityLabel(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2359 offset = dissect_ber_choice(actx, tree, tvb, offset,
2360 BodyPartSecurityLabel_choice, hf_index, ett_p22_BodyPartSecurityLabel,
2361 NULL);
2363 return offset;
2367 static const ber_sequence_t SEQUENCE_OF_BodyPartSecurityLabel_sequence_of[1] = {
2368 { &hf_p22_body_part_security_labels_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_BodyPartSecurityLabel },
2371 static int
2372 dissect_p22_SEQUENCE_OF_BodyPartSecurityLabel(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2373 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2374 SEQUENCE_OF_BodyPartSecurityLabel_sequence_of, hf_index, ett_p22_SEQUENCE_OF_BodyPartSecurityLabel);
2376 return offset;
2380 static const ber_sequence_t IPMSecurityLabel_sequence[] = {
2381 { &hf_p22_content_security_label, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p1_SecurityLabel },
2382 { &hf_p22_heading_security_label, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_SecurityLabel },
2383 { &hf_p22_body_part_security_labels, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_SEQUENCE_OF_BodyPartSecurityLabel },
2384 { NULL, 0, 0, 0, NULL }
2387 static int
2388 dissect_p22_IPMSecurityLabel(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2389 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2390 IPMSecurityLabel_sequence, hf_index, ett_p22_IPMSecurityLabel);
2392 return offset;
2397 static int
2398 dissect_p22_AuthorizationTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2399 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
2401 return offset;
2406 static int
2407 dissect_p22_CirculationTime(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2408 offset = dissect_ber_GeneralizedTime(implicit_tag, actx, tree, tvb, offset, hf_index);
2410 return offset;
2415 static int
2416 dissect_p22_CirculationSignatureAlgorithmIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2417 offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index);
2419 return offset;
2423 static const ber_sequence_t CirculationSignatureData_sequence[] = {
2424 { &hf_p22_circulation_signature_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_CirculationSignatureAlgorithmIdentifier },
2425 { &hf_p22_this_IPM , BER_CLASS_APP, 11, BER_FLAGS_NOOWNTAG, dissect_p22_ThisIPMField },
2426 { &hf_p22_timestamp , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_p22_CirculationTime },
2427 { NULL, 0, 0, 0, NULL }
2430 static int
2431 dissect_p22_CirculationSignatureData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2432 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2433 CirculationSignatureData_sequence, hf_index, ett_p22_CirculationSignatureData);
2435 return offset;
2439 static const ber_sequence_t CirculationSignature_sequence[] = {
2440 { &hf_p22_circulation_signature_data, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_CirculationSignatureData },
2441 { &hf_p22_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
2442 { &hf_p22_encrypted , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_p22_BIT_STRING },
2443 { NULL, 0, 0, 0, NULL }
2446 static int
2447 dissect_p22_CirculationSignature(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2448 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2449 CirculationSignature_sequence, hf_index, ett_p22_CirculationSignature);
2451 return offset;
2455 static const value_string p22_Checkmark_vals[] = {
2456 { 0, "simple" },
2457 { 1, "timestamped" },
2458 { 2, "signed" },
2459 { 0, NULL }
2462 static const ber_choice_t Checkmark_choice[] = {
2463 { 0, &hf_p22_simple , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_p22_NULL },
2464 { 1, &hf_p22_timestamped , BER_CLASS_UNI, BER_UNI_TAG_GeneralizedTime, BER_FLAGS_NOOWNTAG, dissect_p22_CirculationTime },
2465 { 2, &hf_p22_signed , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_CirculationSignature },
2466 { 0, NULL, 0, 0, 0, NULL }
2469 static int
2470 dissect_p22_Checkmark(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2471 offset = dissect_ber_choice(actx, tree, tvb, offset,
2472 Checkmark_choice, hf_index, ett_p22_Checkmark,
2473 NULL);
2475 return offset;
2479 static const ber_sequence_t CirculationMember_set[] = {
2480 { &hf_p22_circulation_recipient, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_RecipientSpecifier },
2481 { &hf_p22_checked , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Checkmark },
2482 { NULL, 0, 0, 0, NULL }
2485 static int
2486 dissect_p22_CirculationMember(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2487 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2488 CirculationMember_set, hf_index, ett_p22_CirculationMember);
2490 return offset;
2494 static const ber_sequence_t CirculationList_sequence_of[1] = {
2495 { &hf_p22_CirculationList_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_CirculationMember },
2498 static int
2499 dissect_p22_CirculationList(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2500 offset = dissect_ber_constrained_sequence_of(implicit_tag, actx, tree, tvb, offset,
2501 2, ub_circulation_list_members, CirculationList_sequence_of, hf_index, ett_p22_CirculationList);
2503 return offset;
2508 static int
2509 dissect_p22_CirculationListIndicator(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2510 offset = dissect_ber_null(implicit_tag, actx, tree, tvb, offset, hf_index);
2512 return offset;
2517 static int
2518 dissect_p22_OBJECT_IDENTIFIER(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2519 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2521 return offset;
2526 static int
2527 dissect_p22_AlphaCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2528 offset = dissect_p1_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2530 return offset;
2534 static const ber_sequence_t DistributionCode_sequence[] = {
2535 { &hf_p22_oid_code , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p22_OBJECT_IDENTIFIER },
2536 { &hf_p22_alphanumeric_code, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p22_AlphaCode },
2537 { &hf_p22_or_descriptor , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ORDescriptor },
2538 { NULL, 0, 0, 0, NULL }
2541 static int
2542 dissect_p22_DistributionCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2543 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2544 DistributionCode_sequence, hf_index, ett_p22_DistributionCode);
2546 return offset;
2550 static const ber_sequence_t DistributionCodes_sequence_of[1] = {
2551 { &hf_p22_DistributionCodes_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_DistributionCode },
2554 static int
2555 dissect_p22_DistributionCodes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2556 offset = dissect_ber_constrained_sequence_of(implicit_tag, actx, tree, tvb, offset,
2557 1, ub_distribution_codes, DistributionCodes_sequence_of, hf_index, ett_p22_DistributionCodes);
2559 return offset;
2564 static int
2565 dissect_p22_ExtendedSubject(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2566 offset = dissect_p1_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2568 return offset;
2573 static int
2574 dissect_p22_DescriptionString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2575 offset = dissect_p1_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2577 return offset;
2581 static const ber_sequence_t InformationCategory_sequence[] = {
2582 { &hf_p22_reference , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_OBJECT_IDENTIFIER },
2583 { &hf_p22_description , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_DescriptionString },
2584 { NULL, 0, 0, 0, NULL }
2587 static int
2588 dissect_p22_InformationCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2589 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2590 InformationCategory_sequence, hf_index, ett_p22_InformationCategory);
2592 return offset;
2596 static const ber_sequence_t InformationCategories_sequence_of[1] = {
2597 { &hf_p22_InformationCategories_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_InformationCategory },
2600 static int
2601 dissect_p22_InformationCategories(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2602 offset = dissect_ber_constrained_sequence_of(implicit_tag, actx, tree, tvb, offset,
2603 1, ub_information_categories, InformationCategories_sequence_of, hf_index, ett_p22_InformationCategories);
2605 return offset;
2610 static int
2611 dissect_p22_ManualHandlingInstruction(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2612 offset = dissect_p1_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2614 return offset;
2618 static const ber_sequence_t ManualHandlingInstructions_sequence_of[1] = {
2619 { &hf_p22_ManualHandlingInstructions_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_ManualHandlingInstruction },
2622 static int
2623 dissect_p22_ManualHandlingInstructions(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2624 offset = dissect_ber_constrained_sequence_of(implicit_tag, actx, tree, tvb, offset,
2625 1, ub_manual_handling_instructions, ManualHandlingInstructions_sequence_of, hf_index, ett_p22_ManualHandlingInstructions);
2627 return offset;
2632 static int
2633 dissect_p22_OriginatorsReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2634 offset = dissect_p1_UniversalOrBMPString(implicit_tag, tvb, offset, actx, tree, hf_index);
2636 return offset;
2641 static int
2642 dissect_p22_PrecedencePolicyIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2643 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2645 return offset;
2650 static int
2651 dissect_p22_Precedence(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2652 offset = dissect_ber_constrained_integer(implicit_tag, actx, tree, tvb, offset,
2653 0U, ub_precedence, hf_index, NULL);
2655 return offset;
2660 static int
2661 dissect_p22_CharacterSetRegistration(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2662 uint32_t crs;
2663 offset = dissect_ber_constrained_integer(implicit_tag, actx, tree, tvb, offset,
2664 1U, 32767U, hf_index, &crs);
2667 if(actx->created_item)
2668 proto_item_append_text(actx->created_item, " (%s)", val_to_str_const(crs, charsetreg_vals, "unknown"));
2671 return offset;
2675 static const ber_sequence_t GeneralTextParameters_set_of[1] = {
2676 { &hf_p22_GeneralTextParameters_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p22_CharacterSetRegistration },
2679 static int
2680 dissect_p22_GeneralTextParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2681 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2682 GeneralTextParameters_set_of, hf_index, ett_p22_GeneralTextParameters);
2684 return offset;
2689 static int
2690 dissect_p22_GeneralTextData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2691 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GeneralString,
2692 actx, tree, tvb, offset, hf_index,
2693 NULL);
2695 return offset;
2699 static const value_string p22_Pathname_Attribute_vals[] = {
2700 { 0, "incomplete-pathname" },
2701 { 23, "complete-pathname" },
2702 { 0, NULL }
2705 static const ber_choice_t Pathname_Attribute_choice[] = {
2706 { 0, &hf_p22_incomplete_pathname, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_ftam_Pathname },
2707 { 23, &hf_p22_complete_pathname, BER_CLASS_CON, 23, BER_FLAGS_IMPLTAG, dissect_ftam_Pathname },
2708 { 0, NULL, 0, 0, 0, NULL }
2711 static int
2712 dissect_p22_Pathname_Attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2713 offset = dissect_ber_choice(actx, tree, tvb, offset,
2714 Pathname_Attribute_choice, hf_index, ett_p22_Pathname_Attribute,
2715 NULL);
2717 return offset;
2722 static int
2723 dissect_p22_GraphicString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2724 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
2725 actx, tree, tvb, offset, hf_index,
2726 NULL);
2728 return offset;
2732 static const ber_sequence_t PathnameandVersion_sequence[] = {
2733 { &hf_p22_pathname , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Pathname_Attribute },
2734 { &hf_p22_file_version , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_GraphicString },
2735 { NULL, 0, 0, 0, NULL }
2738 static int
2739 dissect_p22_PathnameandVersion(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2740 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2741 PathnameandVersion_sequence, hf_index, ett_p22_PathnameandVersion);
2743 return offset;
2748 static int
2749 dissect_p22_OCTET_STRING(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2750 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
2751 NULL);
2753 return offset;
2758 static int
2759 dissect_p22_PrintableString(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2760 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
2761 actx, tree, tvb, offset, hf_index,
2762 NULL);
2764 return offset;
2768 static const ber_sequence_t MessageReference_set[] = {
2769 { &hf_p22_user , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_ORName },
2770 { &hf_p22_user_relative_identifier_ref, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_PrintableString },
2771 { NULL, 0, 0, 0, NULL }
2774 static int
2775 dissect_p22_MessageReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2776 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
2777 MessageReference_set, hf_index, ett_p22_MessageReference);
2779 return offset;
2783 static const ber_sequence_t CrossReference_sequence[] = {
2784 { &hf_p22_application_cross_reference, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_OCTET_STRING },
2785 { &hf_p22_message_reference, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_MessageReference },
2786 { &hf_p22_body_part_reference, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_INTEGER },
2787 { NULL, 0, 0, 0, NULL }
2790 static int
2791 dissect_p22_CrossReference(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2792 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2793 CrossReference_sequence, hf_index, ett_p22_CrossReference);
2795 return offset;
2799 static const value_string p22_FileIdentifier_vals[] = {
2800 { 0, "pathname-and-version" },
2801 { 1, "cross-reference" },
2802 { 0, NULL }
2805 static const ber_choice_t FileIdentifier_choice[] = {
2806 { 0, &hf_p22_pathname_and_version, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_PathnameandVersion },
2807 { 1, &hf_p22_cross_reference , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_CrossReference },
2808 { 0, NULL, 0, 0, 0, NULL }
2811 static int
2812 dissect_p22_FileIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2813 offset = dissect_ber_choice(actx, tree, tvb, offset,
2814 FileIdentifier_choice, hf_index, ett_p22_FileIdentifier,
2815 NULL);
2817 return offset;
2821 static const value_string p22_ExplicitRelationship_vals[] = {
2822 { 0, "unspecified" },
2823 { 1, "new-file" },
2824 { 2, "replacement" },
2825 { 3, "extension" },
2826 { 0, NULL }
2830 static int
2831 dissect_p22_ExplicitRelationship(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2832 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
2833 NULL);
2835 return offset;
2839 static const value_string p22_Relationship_vals[] = {
2840 { 0, "explicit-relationship" },
2841 { 1, "descriptive-relationship" },
2842 { 0, NULL }
2845 static const ber_choice_t Relationship_choice[] = {
2846 { 0, &hf_p22_explicit_relationship, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_ExplicitRelationship },
2847 { 1, &hf_p22_descriptive_relationship, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_GraphicString },
2848 { 0, NULL, 0, 0, 0, NULL }
2851 static int
2852 dissect_p22_Relationship(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2853 offset = dissect_ber_choice(actx, tree, tvb, offset,
2854 Relationship_choice, hf_index, ett_p22_Relationship,
2855 NULL);
2857 return offset;
2861 static const ber_sequence_t RelatedStoredFile_item_sequence[] = {
2862 { &hf_p22_file_identifier , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_FileIdentifier },
2863 { &hf_p22_relationship , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Relationship },
2864 { NULL, 0, 0, 0, NULL }
2867 static int
2868 dissect_p22_RelatedStoredFile_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2869 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2870 RelatedStoredFile_item_sequence, hf_index, ett_p22_RelatedStoredFile_item);
2872 return offset;
2876 static const ber_sequence_t RelatedStoredFile_set_of[1] = {
2877 { &hf_p22_RelatedStoredFile_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_RelatedStoredFile_item },
2880 static int
2881 dissect_p22_RelatedStoredFile(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2882 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
2883 RelatedStoredFile_set_of, hf_index, ett_p22_RelatedStoredFile);
2885 return offset;
2890 static int
2891 dissect_p22_Document_Type_Name(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2892 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2894 return offset;
2899 static int
2900 dissect_p22_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2901 /* XXX: Not implemented yet */
2904 return offset;
2908 static const ber_sequence_t T_document_type_sequence[] = {
2909 { &hf_p22_document_type_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_p22_Document_Type_Name },
2910 { &hf_p22_parameter , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_T_parameter },
2911 { NULL, 0, 0, 0, NULL }
2914 static int
2915 dissect_p22_T_document_type(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2916 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2917 T_document_type_sequence, hf_index, ett_p22_T_document_type);
2919 return offset;
2924 static int
2925 dissect_p22_Constraint_Set_Name(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2926 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2928 return offset;
2933 static int
2934 dissect_p22_Abstract_Syntax_Name(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2935 offset = dissect_ber_object_identifier(implicit_tag, actx, tree, tvb, offset, hf_index, NULL);
2937 return offset;
2941 static const ber_sequence_t T_constraint_set_and_abstract_syntax_sequence[] = {
2942 { &hf_p22_constraint_set_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_p22_Constraint_Set_Name },
2943 { &hf_p22_abstract_syntax_name, BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_p22_Abstract_Syntax_Name },
2944 { NULL, 0, 0, 0, NULL }
2947 static int
2948 dissect_p22_T_constraint_set_and_abstract_syntax(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2949 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
2950 T_constraint_set_and_abstract_syntax_sequence, hf_index, ett_p22_T_constraint_set_and_abstract_syntax);
2952 return offset;
2956 static const value_string p22_Contents_Type_Attribute_vals[] = {
2957 { 0, "document-type" },
2958 { 1, "constraint-set-and-abstract-syntax" },
2959 { 0, NULL }
2962 static const ber_choice_t Contents_Type_Attribute_choice[] = {
2963 { 0, &hf_p22_document_type , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_T_document_type },
2964 { 1, &hf_p22_constraint_set_and_abstract_syntax, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_T_constraint_set_and_abstract_syntax },
2965 { 0, NULL, 0, 0, 0, NULL }
2968 static int
2969 dissect_p22_Contents_Type_Attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2970 offset = dissect_ber_choice(actx, tree, tvb, offset,
2971 Contents_Type_Attribute_choice, hf_index, ett_p22_Contents_Type_Attribute,
2972 NULL);
2974 return offset;
2979 static int
2980 dissect_p22_ContentsTypeParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2981 offset = dissect_p22_Contents_Type_Attribute(implicit_tag, tvb, offset, actx, tree, hf_index);
2983 return offset;
2987 static const ber_sequence_t T_descriptive_identifier_sequence_of[1] = {
2988 { &hf_p22_descriptive_identifier_item, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_p22_GraphicString },
2991 static int
2992 dissect_p22_T_descriptive_identifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
2993 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
2994 T_descriptive_identifier_sequence_of, hf_index, ett_p22_T_descriptive_identifier);
2996 return offset;
3000 static const value_string p22_GeneralIdentifier_vals[] = {
3001 { 0, "registered-identifier" },
3002 { 1, "descriptive-identifier" },
3003 { 0, NULL }
3006 static const ber_choice_t GeneralIdentifier_choice[] = {
3007 { 0, &hf_p22_registered_identifier, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_OBJECT_IDENTIFIER },
3008 { 1, &hf_p22_descriptive_identifier, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_T_descriptive_identifier },
3009 { 0, NULL, 0, 0, 0, NULL }
3012 static int
3013 dissect_p22_GeneralIdentifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3014 offset = dissect_ber_choice(actx, tree, tvb, offset,
3015 GeneralIdentifier_choice, hf_index, ett_p22_GeneralIdentifier,
3016 NULL);
3018 return offset;
3022 static const ber_sequence_t T_user_visible_string_sequence_of[1] = {
3023 { &hf_p22_user_visible_string_item, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_p22_GraphicString },
3026 static int
3027 dissect_p22_T_user_visible_string(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3028 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3029 T_user_visible_string_sequence_of, hf_index, ett_p22_T_user_visible_string);
3031 return offset;
3035 static const ber_sequence_t EnvironmentParameter_sequence[] = {
3036 { &hf_p22_application_reference, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_GeneralIdentifier },
3037 { &hf_p22_machine , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_GeneralIdentifier },
3038 { &hf_p22_operating_system, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_OBJECT_IDENTIFIER },
3039 { &hf_p22_user_visible_string, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_T_user_visible_string },
3040 { NULL, 0, 0, 0, NULL }
3043 static int
3044 dissect_p22_EnvironmentParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3045 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3046 EnvironmentParameter_sequence, hf_index, ett_p22_EnvironmentParameter);
3048 return offset;
3053 static int
3054 dissect_p22_T_compression_algorithm_id(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3055 offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &actx->external.direct_reference);
3058 return offset;
3063 static int
3064 dissect_p22_T_compression_algorithm_param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3065 /* XXX: Not implemented yet */
3068 return offset;
3072 static const ber_sequence_t CompressionParameter_sequence[] = {
3073 { &hf_p22_compression_algorithm_id, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_T_compression_algorithm_id },
3074 { &hf_p22_compression_algorithm_param, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_T_compression_algorithm_param },
3075 { NULL, 0, 0, 0, NULL }
3078 static int
3079 dissect_p22_CompressionParameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3080 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3081 CompressionParameter_sequence, hf_index, ett_p22_CompressionParameter);
3083 return offset;
3088 static int
3089 dissect_p22_Account(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3090 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
3091 actx, tree, tvb, offset, hf_index,
3092 NULL);
3094 return offset;
3098 static const value_string p22_Account_Attribute_vals[] = {
3099 { 0, "no-value-available" },
3100 { 1, "actual-values" },
3101 { 0, NULL }
3104 static const ber_choice_t Account_Attribute_choice[] = {
3105 { 0, &hf_p22_no_value_available, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NULL },
3106 { 1, &hf_p22_account_actual_values, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_p22_Account },
3107 { 0, NULL, 0, 0, 0, NULL }
3110 static int
3111 dissect_p22_Account_Attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3112 offset = dissect_ber_choice(actx, tree, tvb, offset,
3113 Account_Attribute_choice, hf_index, ett_p22_Account_Attribute,
3114 NULL);
3116 return offset;
3121 static int
3122 dissect_p22_User_Identity(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3123 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_GraphicString,
3124 actx, tree, tvb, offset, hf_index,
3125 NULL);
3127 return offset;
3131 static const value_string p22_User_Identity_Attribute_vals[] = {
3132 { 0, "no-value-available" },
3133 { 1, "actual-values" },
3134 { 0, NULL }
3137 static const ber_choice_t User_Identity_Attribute_choice[] = {
3138 { 0, &hf_p22_no_value_available, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NULL },
3139 { 1, &hf_p22_identity_actual_values, BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_p22_User_Identity },
3140 { 0, NULL, 0, 0, 0, NULL }
3143 static int
3144 dissect_p22_User_Identity_Attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3145 offset = dissect_ber_choice(actx, tree, tvb, offset,
3146 User_Identity_Attribute_choice, hf_index, ett_p22_User_Identity_Attribute,
3147 NULL);
3149 return offset;
3153 static int * const Access_Request_bits[] = {
3154 &hf_p22_Access_Request_read,
3155 &hf_p22_Access_Request_insert,
3156 &hf_p22_Access_Request_replace,
3157 &hf_p22_Access_Request_extend,
3158 &hf_p22_Access_Request_erase,
3159 &hf_p22_Access_Request_read_attribute,
3160 &hf_p22_Access_Request_change_attribute,
3161 &hf_p22_Access_Request_delete_object,
3162 NULL
3165 static int
3166 dissect_p22_Access_Request(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3167 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3168 Access_Request_bits, 8, hf_index, ett_p22_Access_Request,
3169 NULL);
3171 return offset;
3175 static const value_string p22_Password_vals[] = {
3176 { 0, "graphic-string" },
3177 { 1, "octet-string" },
3178 { 0, NULL }
3181 static const ber_choice_t Password_choice[] = {
3182 { 0, &hf_p22_graphic_string , BER_CLASS_UNI, BER_UNI_TAG_GraphicString, BER_FLAGS_NOOWNTAG, dissect_p22_GraphicString },
3183 { 1, &hf_p22_octet_string , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_p22_OCTET_STRING },
3184 { 0, NULL, 0, 0, 0, NULL }
3187 static int
3188 dissect_p22_Password(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3189 offset = dissect_ber_choice(actx, tree, tvb, offset,
3190 Password_choice, hf_index, ett_p22_Password,
3191 NULL);
3193 return offset;
3197 static const ber_sequence_t Pass_Passwords_sequence_of[1] = {
3198 { &hf_p22_Pass_Passwords_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3201 static int
3202 dissect_p22_Pass_Passwords(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3203 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3204 Pass_Passwords_sequence_of, hf_index, ett_p22_Pass_Passwords);
3206 return offset;
3210 static const ber_sequence_t Access_Passwords_sequence[] = {
3211 { &hf_p22_read_password , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3212 { &hf_p22_insert_password , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3213 { &hf_p22_replace_password, BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3214 { &hf_p22_extend_password , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3215 { &hf_p22_erase_password , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3216 { &hf_p22_read_attribute_password, BER_CLASS_CON, 5, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3217 { &hf_p22_change_attribute_password, BER_CLASS_CON, 6, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3218 { &hf_p22_delete_password , BER_CLASS_CON, 7, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3219 { &hf_p22_pass_passwords , BER_CLASS_CON, 8, BER_FLAGS_IMPLTAG, dissect_p22_Pass_Passwords },
3220 { &hf_p22_link_password , BER_CLASS_CON, 9, BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Password },
3221 { NULL, 0, 0, 0, NULL }
3224 static int
3225 dissect_p22_Access_Passwords(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3226 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3227 Access_Passwords_sequence, hf_index, ett_p22_Access_Passwords);
3229 return offset;
3233 static const ber_sequence_t Application_Entity_Title_sequence[] = {
3234 { &hf_p22_ap_title , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AP_title },
3235 { &hf_p22_ae_qualifier , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_acse_AE_qualifier },
3236 { NULL, 0, 0, 0, NULL }
3239 static int
3240 dissect_p22_Application_Entity_Title(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3241 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3242 Application_Entity_Title_sequence, hf_index, ett_p22_Application_Entity_Title);
3244 return offset;
3248 static const ber_sequence_t Access_Control_Element_sequence[] = {
3249 { &hf_p22_action_list , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_Access_Request },
3250 { &hf_p22_concurrency_access, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Concurrency_Access },
3251 { &hf_p22_identity , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_User_Identity },
3252 { &hf_p22_passwords , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_Access_Passwords },
3253 { &hf_p22_location , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_Application_Entity_Title },
3254 { NULL, 0, 0, 0, NULL }
3257 static int
3258 dissect_p22_Access_Control_Element(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3259 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3260 Access_Control_Element_sequence, hf_index, ett_p22_Access_Control_Element);
3262 return offset;
3266 static const ber_sequence_t SET_OF_Access_Control_Element_set_of[1] = {
3267 { &hf_p22_actual_values_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p22_Access_Control_Element },
3270 static int
3271 dissect_p22_SET_OF_Access_Control_Element(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3272 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3273 SET_OF_Access_Control_Element_set_of, hf_index, ett_p22_SET_OF_Access_Control_Element);
3275 return offset;
3279 static const value_string p22_Access_Control_Attribute_vals[] = {
3280 { 0, "no-value-available" },
3281 { 1, "actual-values" },
3282 { 0, NULL }
3285 static const ber_choice_t Access_Control_Attribute_choice[] = {
3286 { 0, &hf_p22_no_value_available, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NULL },
3287 { 1, &hf_p22_actual_values , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_SET_OF_Access_Control_Element },
3288 { 0, NULL, 0, 0, 0, NULL }
3291 static int
3292 dissect_p22_Access_Control_Attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3293 offset = dissect_ber_choice(actx, tree, tvb, offset,
3294 Access_Control_Attribute_choice, hf_index, ett_p22_Access_Control_Attribute,
3295 NULL);
3297 return offset;
3301 static const ber_sequence_t FileAttributes_sequence[] = {
3302 { &hf_p22_pathname , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Pathname_Attribute },
3303 { &hf_p22_permitted_actions, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Permitted_Actions_Attribute },
3304 { &hf_p22_storage_account , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Account_Attribute },
3305 { &hf_p22_date_and_time_of_creation, BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3306 { &hf_p22_date_and_time_of_last_modification, BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3307 { &hf_p22_date_and_time_of_last_read_access, BER_CLASS_CON, 6, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3308 { &hf_p22_date_and_time_of_last_attribute_modification, BER_CLASS_CON, 7, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Date_and_Time_Attribute },
3309 { &hf_p22_identity_of_creator, BER_CLASS_CON, 8, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_User_Identity_Attribute },
3310 { &hf_p22_identity_of_last_modifier, BER_CLASS_CON, 9, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_User_Identity_Attribute },
3311 { &hf_p22_identity_of_last_reader, BER_CLASS_CON, 10, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_User_Identity_Attribute },
3312 { &hf_p22_identity_of_last_attribute_modifier, BER_CLASS_CON, 11, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_User_Identity_Attribute },
3313 { &hf_p22_object_availability, BER_CLASS_CON, 12, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Object_Availability_Attribute },
3314 { &hf_p22_object_size , BER_CLASS_CON, 13, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Object_Size_Attribute },
3315 { &hf_p22_future_object_size, BER_CLASS_CON, 14, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Object_Size_Attribute },
3316 { &hf_p22_access_control , BER_CLASS_CON, 15, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_Access_Control_Attribute },
3317 { &hf_p22_legal_qualifications, BER_CLASS_CON, 16, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Legal_Qualification_Attribute },
3318 { &hf_p22_private_use , BER_CLASS_CON, 17, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Private_Use_Attribute },
3319 { &hf_p22_attribute_extensions, BER_CLASS_CON, 22, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_ftam_Attribute_Extensions },
3320 { NULL, 0, 0, 0, NULL }
3323 static int
3324 dissect_p22_FileAttributes(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3325 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3326 FileAttributes_sequence, hf_index, ett_p22_FileAttributes);
3328 return offset;
3332 static const ber_sequence_t FileTransferParameters_sequence[] = {
3333 { &hf_p22_related_stored_file, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_RelatedStoredFile },
3334 { &hf_p22_contents_type , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_ContentsTypeParameter },
3335 { &hf_p22_environment , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_EnvironmentParameter },
3336 { &hf_p22_compression , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_CompressionParameter },
3337 { &hf_p22_file_attributes , BER_CLASS_CON, 4, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_FileAttributes },
3338 { &hf_p22_extensions , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_ExtensionsField },
3339 { NULL, 0, 0, 0, NULL }
3342 static int
3343 dissect_p22_FileTransferParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3344 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3345 FileTransferParameters_sequence, hf_index, ett_p22_FileTransferParameters);
3347 return offset;
3352 static int
3353 dissect_p22_EXTERNAL(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3354 offset = dissect_ber_external_type(implicit_tag, tree, tvb, offset, actx, hf_index, NULL);
3356 return offset;
3360 static const ber_sequence_t FileTransferData_sequence_of[1] = {
3361 { &hf_p22_FileTransferData_item, BER_CLASS_UNI, BER_UNI_TAG_EXTERNAL, BER_FLAGS_NOOWNTAG, dissect_p22_EXTERNAL },
3364 static int
3365 dissect_p22_FileTransferData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3366 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3367 FileTransferData_sequence_of, hf_index, ett_p22_FileTransferData);
3369 return offset;
3374 static int
3375 dissect_p22_IA5String(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3376 offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
3377 actx, tree, tvb, offset, hf_index,
3378 NULL);
3380 return offset;
3384 static const ber_sequence_t VoiceParameters_sequence[] = {
3385 { &hf_p22_voice_message_duration, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_INTEGER },
3386 { &hf_p22_voice_encoding_type, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_OBJECT_IDENTIFIER },
3387 { &hf_p22_supplementary_information, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_IA5String },
3388 { NULL, 0, 0, 0, NULL }
3391 static int
3392 dissect_p22_VoiceParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3393 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3394 VoiceParameters_sequence, hf_index, ett_p22_VoiceParameters);
3396 return offset;
3401 static int
3402 dissect_p22_VoiceData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3403 offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index,
3404 NULL);
3406 return offset;
3410 static const ber_sequence_t SubmissionProof_set[] = {
3411 { &hf_p22_proof_of_submission, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p1_ProofOfSubmission },
3412 { &hf_p22_originating_MTA_certificate, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p1_OriginatingMTACertificate },
3413 { &hf_p22_message_submission_envelope, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p1_MessageSubmissionEnvelope },
3414 { NULL, 0, 0, 0, NULL }
3417 static int
3418 dissect_p22_SubmissionProof(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3419 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3420 SubmissionProof_set, hf_index, ett_p22_SubmissionProof);
3422 return offset;
3426 static const ber_sequence_t ForwardedContentParameters_set[] = {
3427 { &hf_p22_delivery_time , BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_MessageDeliveryTime },
3428 { &hf_p22_delivery_envelope, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_OtherMessageDeliveryFields },
3429 { &hf_p22_mts_identifier , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_MessageDeliveryIdentifier },
3430 { &hf_p22_submission_proof, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_SubmissionProof },
3431 { NULL, 0, 0, 0, NULL }
3434 static int
3435 dissect_p22_ForwardedContentParameters(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3436 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3437 ForwardedContentParameters_set, hf_index, ett_p22_ForwardedContentParameters);
3439 return offset;
3443 static const value_string p22_IPMEntryType_vals[] = {
3444 { 0, "ipm" },
3445 { 1, "rn" },
3446 { 2, "nrn" },
3447 { 3, "on" },
3448 { 0, NULL }
3452 static int
3453 dissect_p22_IPMEntryType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3454 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3455 NULL);
3457 return offset;
3461 static const ber_sequence_t MessageBodyPartSynopsis_sequence[] = {
3462 { &hf_p22_number , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
3463 { &hf_p22_synopsis , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_IPMSynopsis },
3464 { NULL, 0, 0, 0, NULL }
3467 static int
3468 dissect_p22_MessageBodyPartSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3469 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3470 MessageBodyPartSynopsis_sequence, hf_index, ett_p22_MessageBodyPartSynopsis);
3472 return offset;
3476 static const ber_sequence_t NonMessageBodyPartSynopsis_sequence[] = {
3477 { &hf_p22_bp_type , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_OBJECT_IDENTIFIER },
3478 { &hf_p22_bp_parameters , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_INSTANCE_OF },
3479 { &hf_p22_size , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_p22_INTEGER },
3480 { &hf_p22_processed , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_BOOLEAN },
3481 { NULL, 0, 0, 0, NULL }
3484 static int
3485 dissect_p22_NonMessageBodyPartSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3486 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3487 NonMessageBodyPartSynopsis_sequence, hf_index, ett_p22_NonMessageBodyPartSynopsis);
3489 return offset;
3493 static const value_string p22_BodyPartSynopsis_vals[] = {
3494 { 0, "message" },
3495 { 1, "non-message" },
3496 { 0, NULL }
3499 static const ber_choice_t BodyPartSynopsis_choice[] = {
3500 { 0, &hf_p22_message_synopsis, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_MessageBodyPartSynopsis },
3501 { 1, &hf_p22_non_message , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_NonMessageBodyPartSynopsis },
3502 { 0, NULL, 0, 0, 0, NULL }
3505 static int
3506 dissect_p22_BodyPartSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3507 offset = dissect_ber_choice(actx, tree, tvb, offset,
3508 BodyPartSynopsis_choice, hf_index, ett_p22_BodyPartSynopsis,
3509 NULL);
3511 return offset;
3515 static const ber_sequence_t IPMSynopsis_sequence_of[1] = {
3516 { &hf_p22_IPMSynopsis_item, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_BodyPartSynopsis },
3519 static int
3520 dissect_p22_IPMSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3521 // IPMSynopsis -> BodyPartSynopsis -> MessageBodyPartSynopsis -> IPMSynopsis
3522 actx->pinfo->dissection_depth += 3;
3523 increment_dissection_depth(actx->pinfo);
3524 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3525 IPMSynopsis_sequence_of, hf_index, ett_p22_IPMSynopsis);
3527 actx->pinfo->dissection_depth -= 3;
3528 decrement_dissection_depth(actx->pinfo);
3529 return offset;
3533 static const ber_sequence_t BodyPartDescriptor_sequence[] = {
3534 { &hf_p22_data , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_OBJECT_IDENTIFIER },
3535 { &hf_p22_parameters , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_OBJECT_IDENTIFIER },
3536 { &hf_p22_this_child_entry, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p7_SequenceNumber },
3537 { &hf_p22_position , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_p22_INTEGER },
3538 { &hf_p22_size , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_p22_INTEGER },
3539 { &hf_p22_processed , BER_CLASS_CON, 5, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_BOOLEAN },
3540 { NULL, 0, 0, 0, NULL }
3543 static int
3544 dissect_p22_BodyPartDescriptor(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3545 offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
3546 BodyPartDescriptor_sequence, hf_index, ett_p22_BodyPartDescriptor);
3548 return offset;
3552 static const ber_sequence_t BodyPartSignatureVerification_item_set[] = {
3553 { &hf_p22_body_part_sequence_number, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_BodyPartNumber },
3554 { &hf_p22_body_part_signature_status, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p7_SignatureStatus },
3555 { NULL, 0, 0, 0, NULL }
3558 static int
3559 dissect_p22_BodyPartSignatureVerification_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3560 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3561 BodyPartSignatureVerification_item_set, hf_index, ett_p22_BodyPartSignatureVerification_item);
3563 return offset;
3567 static const ber_sequence_t BodyPartSignatureVerification_set_of[1] = {
3568 { &hf_p22_BodyPartSignatureVerification_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartSignatureVerification_item },
3571 static int
3572 dissect_p22_BodyPartSignatureVerification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3573 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3574 BodyPartSignatureVerification_set_of, hf_index, ett_p22_BodyPartSignatureVerification);
3576 return offset;
3580 static const ber_sequence_t SET_OF_SequenceNumber_set_of[1] = {
3581 { &hf_p22_stored_item , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p7_SequenceNumber },
3584 static int
3585 dissect_p22_SET_OF_SequenceNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3586 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3587 SET_OF_SequenceNumber_set_of, hf_index, ett_p22_SET_OF_SequenceNumber);
3589 return offset;
3593 static const value_string p22_IPMLocation_vals[] = {
3594 { 0, "stored" },
3595 { 1, "absent" },
3596 { 0, NULL }
3599 static const ber_choice_t IPMLocation_choice[] = {
3600 { 0, &hf_p22_stored , BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_SET_OF_SequenceNumber },
3601 { 1, &hf_p22_absent , BER_CLASS_UNI, BER_UNI_TAG_NULL, BER_FLAGS_NOOWNTAG, dissect_p22_NULL },
3602 { 0, NULL, 0, 0, 0, NULL }
3605 static int
3606 dissect_p22_IPMLocation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3607 offset = dissect_ber_choice(actx, tree, tvb, offset,
3608 IPMLocation_choice, hf_index, ett_p22_IPMLocation,
3609 NULL);
3611 return offset;
3615 static const value_string p22_DeliveredReplyStatus_vals[] = {
3616 { 0, "no-reply-requested" },
3617 { 1, "reply-outstanding" },
3618 { 2, "reply-received" },
3619 { 0, NULL }
3623 static int
3624 dissect_p22_DeliveredReplyStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3625 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3626 NULL);
3628 return offset;
3632 static const ber_sequence_t SEQUENCE_OF_SequenceNumber_sequence_of[1] = {
3633 { &hf_p22_received_replies_item, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p7_SequenceNumber },
3636 static int
3637 dissect_p22_SEQUENCE_OF_SequenceNumber(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3638 offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset,
3639 SEQUENCE_OF_SequenceNumber_sequence_of, hf_index, ett_p22_SEQUENCE_OF_SequenceNumber);
3641 return offset;
3645 static const value_string p22_CorrelatedDeliveredReplies_vals[] = {
3646 { 0, "no-reply-received" },
3647 { 1, "received-replies" },
3648 { 0, NULL }
3651 static const ber_choice_t CorrelatedDeliveredReplies_choice[] = {
3652 { 0, &hf_p22_no_reply_received, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NULL },
3653 { 1, &hf_p22_received_replies, BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_SEQUENCE_OF_SequenceNumber },
3654 { 0, NULL, 0, 0, 0, NULL }
3657 static int
3658 dissect_p22_CorrelatedDeliveredReplies(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3659 offset = dissect_ber_choice(actx, tree, tvb, offset,
3660 CorrelatedDeliveredReplies_choice, hf_index, ett_p22_CorrelatedDeliveredReplies,
3661 NULL);
3663 return offset;
3667 static const value_string p22_DeliveredIPNStatus_vals[] = {
3668 { 0, "no-ipn-requested" },
3669 { 3, "an-requested" },
3670 { 5, "nrn-requested" },
3671 { 10, "rn-requested" },
3672 { 13, "an-received" },
3673 { 15, "ipm-auto-forwarded" },
3674 { 20, "ipm-discarded" },
3675 { 25, "rn-received" },
3676 { 0, NULL }
3680 static int
3681 dissect_p22_DeliveredIPNStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3682 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3683 NULL);
3685 return offset;
3689 static const value_string p22_CorrelatedDeliveredIPNs_vals[] = {
3690 { 0, "no-ipn-received" },
3691 { 1, "ipns-received" },
3692 { 0, NULL }
3695 static const ber_choice_t CorrelatedDeliveredIPNs_choice[] = {
3696 { 0, &hf_p22_no_ipn_received , BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_NULL },
3697 { 1, &hf_p22_ipns_received , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_p22_SEQUENCE_OF_SequenceNumber },
3698 { 0, NULL, 0, 0, 0, NULL }
3701 static int
3702 dissect_p22_CorrelatedDeliveredIPNs(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3703 offset = dissect_ber_choice(actx, tree, tvb, offset,
3704 CorrelatedDeliveredIPNs_choice, hf_index, ett_p22_CorrelatedDeliveredIPNs,
3705 NULL);
3707 return offset;
3711 static const value_string p22_SubmittedReplyStatus_vals[] = {
3712 { 0, "no-reply-requested" },
3713 { 1, "no-reply-intended" },
3714 { 2, "reply-pending" },
3715 { 3, "reply-sent" },
3716 { 0, NULL }
3720 static int
3721 dissect_p22_SubmittedReplyStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3722 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3723 NULL);
3725 return offset;
3729 static const value_string p22_SubmittedIPNStatus_vals[] = {
3730 { 0, "no-ipn-requested" },
3731 { 5, "nrn-requested" },
3732 { 10, "nrn-with-ipm-return-requested" },
3733 { 15, "rn-requested" },
3734 { 20, "rn-with-ipm-return-requested" },
3735 { 25, "ipm-auto-forwarded" },
3736 { 30, "ipm-discarded" },
3737 { 35, "rn-sent" },
3738 { 0, NULL }
3742 static int
3743 dissect_p22_SubmittedIPNStatus(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3744 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3745 NULL);
3747 return offset;
3751 static const value_string p22_RecipientCategory_vals[] = {
3752 { 0, "primary-recipient" },
3753 { 1, "copy-recipient" },
3754 { 2, "blind-copy-recipient" },
3755 { 3, "category-unknown" },
3756 { 4, "circulation-list" },
3757 { 0, NULL }
3761 static int
3762 dissect_p22_RecipientCategory(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3763 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3764 NULL);
3766 return offset;
3770 static int * const RecipientSecurityRequest_bits[] = {
3771 &hf_p22_RecipientSecurityRequest_content_non_repudiation,
3772 &hf_p22_RecipientSecurityRequest_content_proof,
3773 &hf_p22_RecipientSecurityRequest_ipn_non_repudiation,
3774 &hf_p22_RecipientSecurityRequest_ipn_proof,
3775 NULL
3778 static int
3779 dissect_p22_RecipientSecurityRequest(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3780 offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset,
3781 RecipientSecurityRequest_bits, 4, hf_index, ett_p22_RecipientSecurityRequest,
3782 NULL);
3784 return offset;
3789 static int
3790 dissect_p22_OriginalContent(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3791 offset = dissect_p1_Content(implicit_tag, tvb, offset, actx, tree, hf_index);
3793 return offset;
3798 static int
3799 dissect_p22_OriginalContentIntegrityCheck(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3800 offset = dissect_p1_ContentIntegrityCheck(implicit_tag, tvb, offset, actx, tree, hf_index);
3802 return offset;
3807 static int
3808 dissect_p22_OriginalMessageOriginAuthenticationCheck(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3809 offset = dissect_p1_MessageOriginAuthenticationCheck(implicit_tag, tvb, offset, actx, tree, hf_index);
3811 return offset;
3816 static int
3817 dissect_p22_OriginalMessageToken(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3818 offset = dissect_p1_MessageToken(implicit_tag, tvb, offset, actx, tree, hf_index);
3820 return offset;
3824 static const ber_sequence_t T_original_security_arguments_set[] = {
3825 { &hf_p22_original_content_integrity_check, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_OriginalContentIntegrityCheck },
3826 { &hf_p22_original_message_origin_authentication_check, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_OriginalMessageOriginAuthenticationCheck },
3827 { &hf_p22_original_message_token, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p22_OriginalMessageToken },
3828 { NULL, 0, 0, 0, NULL }
3831 static int
3832 dissect_p22_T_original_security_arguments(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3833 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3834 T_original_security_arguments_set, hf_index, ett_p22_T_original_security_arguments);
3836 return offset;
3840 static const value_string p22_T_content_or_arguments_vals[] = {
3841 { 0, "original-content" },
3842 { 1, "original-security-arguments" },
3843 { 0, NULL }
3846 static const ber_choice_t T_content_or_arguments_choice[] = {
3847 { 0, &hf_p22_original_content, BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_p22_OriginalContent },
3848 { 1, &hf_p22_original_security_arguments, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_T_original_security_arguments },
3849 { 0, NULL, 0, 0, 0, NULL }
3852 static int
3853 dissect_p22_T_content_or_arguments(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3854 offset = dissect_ber_choice(actx, tree, tvb, offset,
3855 T_content_or_arguments_choice, hf_index, ett_p22_T_content_or_arguments,
3856 NULL);
3858 return offset;
3862 static const value_string p22_SecurityDiagnosticCode_vals[] = {
3863 { 0, "integrity-failure-on-subject-message" },
3864 { 1, "integrity-failure-on-forwarded-message" },
3865 { 2, "moac-failure-on-subject-message" },
3866 { 3, "unsupported-security-policy" },
3867 { 4, "unsupported-algorithm-identifier" },
3868 { 5, "decryption-failed" },
3869 { 6, "token-error" },
3870 { 7, "unable-to-sign-notification" },
3871 { 8, "unable-to-sign-message-receipt" },
3872 { 9, "authentication-failure-on-subject-message" },
3873 { 10, "security-context-failure-message" },
3874 { 11, "message-sequence-failure" },
3875 { 12, "message-security-labelling-failure" },
3876 { 13, "repudiation-failure-of-message" },
3877 { 14, "failure-of-proof-of-message" },
3878 { 15, "signature-key-unobtainable" },
3879 { 16, "decryption-key-unobtainable" },
3880 { 17, "key-failure" },
3881 { 18, "unsupported-request-for-security-service" },
3882 { 19, "inconsistent-request-for-security-service" },
3883 { 20, "ipn-non-repudiation-provided-instead-of-content-proof" },
3884 { 21, "token-decryption-failed" },
3885 { 22, "double-enveloping-message-restoring-failure" },
3886 { 23, "unauthorised-dl-member" },
3887 { 24, "reception-security-failure" },
3888 { 25, "unsuitable-alternate-recipient" },
3889 { 26, "security-services-refusal" },
3890 { 27, "unauthorised-recipient" },
3891 { 28, "unknown-certification-authority-name" },
3892 { 29, "unknown-dl-name" },
3893 { 30, "unknown-originator-name" },
3894 { 31, "unknown-recipient-name" },
3895 { 32, "security-policy-violation" },
3896 { 0, NULL }
3900 static int
3901 dissect_p22_SecurityDiagnosticCode(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3902 offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
3903 NULL);
3905 return offset;
3909 static const ber_sequence_t IpnSecurityResponse_set[] = {
3910 { &hf_p22_content_or_arguments, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_T_content_or_arguments },
3911 { &hf_p22_security_diagnostic_code, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_p22_SecurityDiagnosticCode },
3912 { NULL, 0, 0, 0, NULL }
3915 static int
3916 dissect_p22_IpnSecurityResponse(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3917 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3918 IpnSecurityResponse_set, hf_index, ett_p22_IpnSecurityResponse);
3920 return offset;
3924 static const ber_sequence_t EncryptionToken_set[] = {
3925 { &hf_p22_encryption_algorithm_identifier, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier },
3926 { &hf_p22_encrypted_key , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_p22_BIT_STRING },
3927 { &hf_p22_recipient_certificate_selector, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_CertificateAssertion },
3928 { &hf_p22_recipient_certificate, BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509af_Certificates },
3929 { &hf_p22_originator_certificate_selector, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_x509ce_CertificateAssertion },
3930 { &hf_p22_originator_certificates, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_p1_ExtendedCertificates },
3931 { NULL, 0, 0, 0, NULL }
3934 static int
3935 dissect_p22_EncryptionToken(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3936 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3937 EncryptionToken_set, hf_index, ett_p22_EncryptionToken);
3939 return offset;
3943 static const value_string p22_T_body_part_choice_vals[] = {
3944 { 0, "encryption-token" },
3945 { 1, "message-or-content-body-part" },
3946 { 0, NULL }
3949 static const ber_choice_t T_body_part_choice_choice[] = {
3950 { 0, &hf_p22_encryption_token, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_EncryptionToken },
3951 { 1, &hf_p22_message_or_content_body_part, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_p22_BodyPartTokens },
3952 { 0, NULL, 0, 0, 0, NULL }
3955 static int
3956 dissect_p22_T_body_part_choice(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3957 offset = dissect_ber_choice(actx, tree, tvb, offset,
3958 T_body_part_choice_choice, hf_index, ett_p22_T_body_part_choice,
3959 NULL);
3961 return offset;
3965 static const ber_sequence_t BodyPartTokens_item_set[] = {
3966 { &hf_p22_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartNumber },
3967 { &hf_p22_body_part_choice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_T_body_part_choice },
3968 { NULL, 0, 0, 0, NULL }
3971 static int
3972 dissect_p22_BodyPartTokens_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3973 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
3974 BodyPartTokens_item_set, hf_index, ett_p22_BodyPartTokens_item);
3976 return offset;
3980 static const ber_sequence_t BodyPartTokens_set_of[1] = {
3981 { &hf_p22_BodyPartTokens_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartTokens_item },
3984 static int
3985 dissect_p22_BodyPartTokens(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
3986 // BodyPartTokens -> BodyPartTokens/_item -> BodyPartTokens/_item/body-part-choice -> BodyPartTokens
3987 actx->pinfo->dissection_depth += 3;
3988 increment_dissection_depth(actx->pinfo);
3989 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
3990 BodyPartTokens_set_of, hf_index, ett_p22_BodyPartTokens);
3992 actx->pinfo->dissection_depth -= 3;
3993 decrement_dissection_depth(actx->pinfo);
3994 return offset;
3998 static const value_string p22_T_body_part_token_choice_vals[] = {
3999 { 0, "forwarding-token" },
4000 { 1, "message-or-content-body-part" },
4001 { 0, NULL }
4004 static const ber_choice_t T_body_part_token_choice_choice[] = {
4005 { 0, &hf_p22_forwarding_token, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_p1_MessageToken },
4006 { 1, &hf_p22_forwarded_content_token, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_ForwardedContentToken },
4007 { 0, NULL, 0, 0, 0, NULL }
4010 static int
4011 dissect_p22_T_body_part_token_choice(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4012 offset = dissect_ber_choice(actx, tree, tvb, offset,
4013 T_body_part_token_choice_choice, hf_index, ett_p22_T_body_part_token_choice,
4014 NULL);
4016 return offset;
4020 static const ber_sequence_t ForwardedContentToken_item_set[] = {
4021 { &hf_p22_body_part_number, BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_p22_BodyPartNumber },
4022 { &hf_p22_body_part_token_choice, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_p22_T_body_part_token_choice },
4023 { NULL, 0, 0, 0, NULL }
4026 static int
4027 dissect_p22_ForwardedContentToken_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4028 offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
4029 ForwardedContentToken_item_set, hf_index, ett_p22_ForwardedContentToken_item);
4031 return offset;
4035 static const ber_sequence_t ForwardedContentToken_set_of[1] = {
4036 { &hf_p22_ForwardedContentToken_item, BER_CLASS_UNI, BER_UNI_TAG_SET, BER_FLAGS_NOOWNTAG, dissect_p22_ForwardedContentToken_item },
4039 static int
4040 dissect_p22_ForwardedContentToken(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
4041 // ForwardedContentToken -> ForwardedContentToken/_item -> ForwardedContentToken/_item/body-part-choice -> ForwardedContentToken
4042 actx->pinfo->dissection_depth += 3;
4043 increment_dissection_depth(actx->pinfo);
4044 offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset,
4045 ForwardedContentToken_set_of, hf_index, ett_p22_ForwardedContentToken);
4047 actx->pinfo->dissection_depth -= 3;
4048 decrement_dissection_depth(actx->pinfo);
4049 return offset;
4052 /*--- PDUs ---*/
4054 static int dissect_InformationObject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4055 int offset = 0;
4056 asn1_ctx_t asn1_ctx;
4057 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4058 offset = dissect_p22_InformationObject(false, tvb, offset, &asn1_ctx, tree, hf_p22_InformationObject_PDU);
4059 return offset;
4061 static int dissect_Heading_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4062 int offset = 0;
4063 asn1_ctx_t asn1_ctx;
4064 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4065 offset = dissect_p22_Heading(false, tvb, offset, &asn1_ctx, tree, hf_p22_Heading_PDU);
4066 return offset;
4068 static int dissect_ORDescriptor_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4069 int offset = 0;
4070 asn1_ctx_t asn1_ctx;
4071 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4072 offset = dissect_p22_ORDescriptor(false, tvb, offset, &asn1_ctx, tree, hf_p22_ORDescriptor_PDU);
4073 return offset;
4075 static int dissect_ThisIPMField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4076 int offset = 0;
4077 asn1_ctx_t asn1_ctx;
4078 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4079 offset = dissect_p22_ThisIPMField(false, tvb, offset, &asn1_ctx, tree, hf_p22_ThisIPMField_PDU);
4080 return offset;
4082 static int dissect_OriginatorField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4083 int offset = 0;
4084 asn1_ctx_t asn1_ctx;
4085 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4086 offset = dissect_p22_OriginatorField(false, tvb, offset, &asn1_ctx, tree, hf_p22_OriginatorField_PDU);
4087 return offset;
4089 static int dissect_AuthorizingUsersSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4090 int offset = 0;
4091 asn1_ctx_t asn1_ctx;
4092 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4093 offset = dissect_p22_AuthorizingUsersSubfield(false, tvb, offset, &asn1_ctx, tree, hf_p22_AuthorizingUsersSubfield_PDU);
4094 return offset;
4096 static int dissect_PrimaryRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4097 int offset = 0;
4098 asn1_ctx_t asn1_ctx;
4099 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4100 offset = dissect_p22_PrimaryRecipientsSubfield(false, tvb, offset, &asn1_ctx, tree, hf_p22_PrimaryRecipientsSubfield_PDU);
4101 return offset;
4103 static int dissect_CopyRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4104 int offset = 0;
4105 asn1_ctx_t asn1_ctx;
4106 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4107 offset = dissect_p22_CopyRecipientsSubfield(false, tvb, offset, &asn1_ctx, tree, hf_p22_CopyRecipientsSubfield_PDU);
4108 return offset;
4110 static int dissect_BlindCopyRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4111 int offset = 0;
4112 asn1_ctx_t asn1_ctx;
4113 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4114 offset = dissect_p22_BlindCopyRecipientsSubfield(false, tvb, offset, &asn1_ctx, tree, hf_p22_BlindCopyRecipientsSubfield_PDU);
4115 return offset;
4117 static int dissect_RepliedToIPMField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4118 int offset = 0;
4119 asn1_ctx_t asn1_ctx;
4120 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4121 offset = dissect_p22_RepliedToIPMField(false, tvb, offset, &asn1_ctx, tree, hf_p22_RepliedToIPMField_PDU);
4122 return offset;
4124 static int dissect_ObsoletedIPMsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4125 int offset = 0;
4126 asn1_ctx_t asn1_ctx;
4127 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4128 offset = dissect_p22_ObsoletedIPMsSubfield(false, tvb, offset, &asn1_ctx, tree, hf_p22_ObsoletedIPMsSubfield_PDU);
4129 return offset;
4131 static int dissect_RelatedIPMsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4132 int offset = 0;
4133 asn1_ctx_t asn1_ctx;
4134 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4135 offset = dissect_p22_RelatedIPMsSubfield(false, tvb, offset, &asn1_ctx, tree, hf_p22_RelatedIPMsSubfield_PDU);
4136 return offset;
4138 static int dissect_SubjectField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4139 int offset = 0;
4140 asn1_ctx_t asn1_ctx;
4141 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4142 offset = dissect_p22_SubjectField(false, tvb, offset, &asn1_ctx, tree, hf_p22_SubjectField_PDU);
4143 return offset;
4145 static int dissect_ExpiryTimeField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4146 int offset = 0;
4147 asn1_ctx_t asn1_ctx;
4148 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4149 offset = dissect_p22_ExpiryTimeField(false, tvb, offset, &asn1_ctx, tree, hf_p22_ExpiryTimeField_PDU);
4150 return offset;
4152 static int dissect_ReplyTimeField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4153 int offset = 0;
4154 asn1_ctx_t asn1_ctx;
4155 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4156 offset = dissect_p22_ReplyTimeField(false, tvb, offset, &asn1_ctx, tree, hf_p22_ReplyTimeField_PDU);
4157 return offset;
4159 static int dissect_ReplyRecipientsSubfield_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4160 int offset = 0;
4161 asn1_ctx_t asn1_ctx;
4162 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4163 offset = dissect_p22_ReplyRecipientsSubfield(false, tvb, offset, &asn1_ctx, tree, hf_p22_ReplyRecipientsSubfield_PDU);
4164 return offset;
4166 static int dissect_ImportanceField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4167 int offset = 0;
4168 asn1_ctx_t asn1_ctx;
4169 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4170 offset = dissect_p22_ImportanceField(false, tvb, offset, &asn1_ctx, tree, hf_p22_ImportanceField_PDU);
4171 return offset;
4173 static int dissect_SensitivityField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4174 int offset = 0;
4175 asn1_ctx_t asn1_ctx;
4176 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4177 offset = dissect_p22_SensitivityField(false, tvb, offset, &asn1_ctx, tree, hf_p22_SensitivityField_PDU);
4178 return offset;
4180 static int dissect_AutoForwardedField_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4181 int offset = 0;
4182 asn1_ctx_t asn1_ctx;
4183 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4184 offset = dissect_p22_AutoForwardedField(false, tvb, offset, &asn1_ctx, tree, hf_p22_AutoForwardedField_PDU);
4185 return offset;
4187 static int dissect_Body_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4188 int offset = 0;
4189 asn1_ctx_t asn1_ctx;
4190 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4191 offset = dissect_p22_Body(false, tvb, offset, &asn1_ctx, tree, hf_p22_Body_PDU);
4192 return offset;
4194 static int dissect_IA5TextParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4195 int offset = 0;
4196 asn1_ctx_t asn1_ctx;
4197 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4198 offset = dissect_p22_IA5TextParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_IA5TextParameters_PDU);
4199 return offset;
4201 static int dissect_IA5TextData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4202 int offset = 0;
4203 asn1_ctx_t asn1_ctx;
4204 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4205 offset = dissect_p22_IA5TextData(false, tvb, offset, &asn1_ctx, tree, hf_p22_IA5TextData_PDU);
4206 return offset;
4208 static int dissect_G3FacsimileParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4209 int offset = 0;
4210 asn1_ctx_t asn1_ctx;
4211 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4212 offset = dissect_p22_G3FacsimileParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_G3FacsimileParameters_PDU);
4213 return offset;
4215 static int dissect_G3FacsimileData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4216 int offset = 0;
4217 asn1_ctx_t asn1_ctx;
4218 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4219 offset = dissect_p22_G3FacsimileData(false, tvb, offset, &asn1_ctx, tree, hf_p22_G3FacsimileData_PDU);
4220 return offset;
4222 static int dissect_G4Class1BodyPart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4223 int offset = 0;
4224 asn1_ctx_t asn1_ctx;
4225 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4226 offset = dissect_p22_G4Class1BodyPart(false, tvb, offset, &asn1_ctx, tree, hf_p22_G4Class1BodyPart_PDU);
4227 return offset;
4229 static int dissect_MixedModeBodyPart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4230 int offset = 0;
4231 asn1_ctx_t asn1_ctx;
4232 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4233 offset = dissect_p22_MixedModeBodyPart(false, tvb, offset, &asn1_ctx, tree, hf_p22_MixedModeBodyPart_PDU);
4234 return offset;
4236 static int dissect_TeletexParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4237 int offset = 0;
4238 asn1_ctx_t asn1_ctx;
4239 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4240 offset = dissect_p22_TeletexParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_TeletexParameters_PDU);
4241 return offset;
4243 static int dissect_TeletexData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4244 int offset = 0;
4245 asn1_ctx_t asn1_ctx;
4246 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4247 offset = dissect_p22_TeletexData(false, tvb, offset, &asn1_ctx, tree, hf_p22_TeletexData_PDU);
4248 return offset;
4250 static int dissect_VideotexParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4251 int offset = 0;
4252 asn1_ctx_t asn1_ctx;
4253 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4254 offset = dissect_p22_VideotexParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_VideotexParameters_PDU);
4255 return offset;
4257 static int dissect_VideotexData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4258 int offset = 0;
4259 asn1_ctx_t asn1_ctx;
4260 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4261 offset = dissect_p22_VideotexData(false, tvb, offset, &asn1_ctx, tree, hf_p22_VideotexData_PDU);
4262 return offset;
4264 static int dissect_EncryptedParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4265 int offset = 0;
4266 asn1_ctx_t asn1_ctx;
4267 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4268 offset = dissect_p22_EncryptedParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_EncryptedParameters_PDU);
4269 return offset;
4271 static int dissect_EncryptedData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4272 int offset = 0;
4273 asn1_ctx_t asn1_ctx;
4274 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4275 offset = dissect_p22_EncryptedData(false, tvb, offset, &asn1_ctx, tree, hf_p22_EncryptedData_PDU);
4276 return offset;
4278 static int dissect_MessageParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4279 int offset = 0;
4280 asn1_ctx_t asn1_ctx;
4281 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4282 offset = dissect_p22_MessageParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_MessageParameters_PDU);
4283 return offset;
4285 static int dissect_MessageData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4286 int offset = 0;
4287 asn1_ctx_t asn1_ctx;
4288 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4289 offset = dissect_p22_MessageData(false, tvb, offset, &asn1_ctx, tree, hf_p22_MessageData_PDU);
4290 return offset;
4292 static int dissect_BilaterallyDefinedBodyPart_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4293 int offset = 0;
4294 asn1_ctx_t asn1_ctx;
4295 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4296 offset = dissect_p22_BilaterallyDefinedBodyPart(false, tvb, offset, &asn1_ctx, tree, hf_p22_BilaterallyDefinedBodyPart_PDU);
4297 return offset;
4299 static int dissect_IPN_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4300 int offset = 0;
4301 asn1_ctx_t asn1_ctx;
4302 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4303 offset = dissect_p22_IPN(false, tvb, offset, &asn1_ctx, tree, hf_p22_IPN_PDU);
4304 return offset;
4306 static int dissect_AbsenceAdvice_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4307 int offset = 0;
4308 asn1_ctx_t asn1_ctx;
4309 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4310 offset = dissect_p22_AbsenceAdvice(false, tvb, offset, &asn1_ctx, tree, hf_p22_AbsenceAdvice_PDU);
4311 return offset;
4313 static int dissect_ChangeOfAddressAdvice_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4314 int offset = 0;
4315 asn1_ctx_t asn1_ctx;
4316 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4317 offset = dissect_p22_ChangeOfAddressAdvice(false, tvb, offset, &asn1_ctx, tree, hf_p22_ChangeOfAddressAdvice_PDU);
4318 return offset;
4320 static int dissect_IPMAssemblyInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4321 int offset = 0;
4322 asn1_ctx_t asn1_ctx;
4323 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4324 offset = dissect_p22_IPMAssemblyInstructions(false, tvb, offset, &asn1_ctx, tree, hf_p22_IPMAssemblyInstructions_PDU);
4325 return offset;
4327 static int dissect_IncompleteCopy_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4328 int offset = 0;
4329 asn1_ctx_t asn1_ctx;
4330 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4331 offset = dissect_p22_IncompleteCopy(false, tvb, offset, &asn1_ctx, tree, hf_p22_IncompleteCopy_PDU);
4332 return offset;
4334 static int dissect_Languages_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4335 int offset = 0;
4336 asn1_ctx_t asn1_ctx;
4337 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4338 offset = dissect_p22_Languages(false, tvb, offset, &asn1_ctx, tree, hf_p22_Languages_PDU);
4339 return offset;
4341 static int dissect_Language_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4342 int offset = 0;
4343 asn1_ctx_t asn1_ctx;
4344 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4345 offset = dissect_p22_Language(false, tvb, offset, &asn1_ctx, tree, hf_p22_Language_PDU);
4346 return offset;
4348 static int dissect_AutoSubmitted_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4349 int offset = 0;
4350 asn1_ctx_t asn1_ctx;
4351 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4352 offset = dissect_p22_AutoSubmitted(false, tvb, offset, &asn1_ctx, tree, hf_p22_AutoSubmitted_PDU);
4353 return offset;
4355 static int dissect_BodyPartSignatures_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4356 int offset = 0;
4357 asn1_ctx_t asn1_ctx;
4358 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4359 offset = dissect_p22_BodyPartSignatures(false, tvb, offset, &asn1_ctx, tree, hf_p22_BodyPartSignatures_PDU);
4360 return offset;
4362 static int dissect_IPMSecurityLabel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4363 int offset = 0;
4364 asn1_ctx_t asn1_ctx;
4365 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4366 offset = dissect_p22_IPMSecurityLabel(false, tvb, offset, &asn1_ctx, tree, hf_p22_IPMSecurityLabel_PDU);
4367 return offset;
4369 static int dissect_BodyPartSecurityLabel_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4370 int offset = 0;
4371 asn1_ctx_t asn1_ctx;
4372 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4373 offset = dissect_p22_BodyPartSecurityLabel(false, tvb, offset, &asn1_ctx, tree, hf_p22_BodyPartSecurityLabel_PDU);
4374 return offset;
4376 static int dissect_AuthorizationTime_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4377 int offset = 0;
4378 asn1_ctx_t asn1_ctx;
4379 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4380 offset = dissect_p22_AuthorizationTime(false, tvb, offset, &asn1_ctx, tree, hf_p22_AuthorizationTime_PDU);
4381 return offset;
4383 static int dissect_CirculationList_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4384 int offset = 0;
4385 asn1_ctx_t asn1_ctx;
4386 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4387 offset = dissect_p22_CirculationList(false, tvb, offset, &asn1_ctx, tree, hf_p22_CirculationList_PDU);
4388 return offset;
4390 static int dissect_CirculationMember_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4391 int offset = 0;
4392 asn1_ctx_t asn1_ctx;
4393 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4394 offset = dissect_p22_CirculationMember(false, tvb, offset, &asn1_ctx, tree, hf_p22_CirculationMember_PDU);
4395 return offset;
4397 static int dissect_CirculationListIndicator_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4398 int offset = 0;
4399 asn1_ctx_t asn1_ctx;
4400 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4401 offset = dissect_p22_CirculationListIndicator(false, tvb, offset, &asn1_ctx, tree, hf_p22_CirculationListIndicator_PDU);
4402 return offset;
4404 static int dissect_DistributionCodes_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4405 int offset = 0;
4406 asn1_ctx_t asn1_ctx;
4407 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4408 offset = dissect_p22_DistributionCodes(false, tvb, offset, &asn1_ctx, tree, hf_p22_DistributionCodes_PDU);
4409 return offset;
4411 static int dissect_DistributionCode_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4412 int offset = 0;
4413 asn1_ctx_t asn1_ctx;
4414 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4415 offset = dissect_p22_DistributionCode(false, tvb, offset, &asn1_ctx, tree, hf_p22_DistributionCode_PDU);
4416 return offset;
4418 static int dissect_ExtendedSubject_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4419 int offset = 0;
4420 asn1_ctx_t asn1_ctx;
4421 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4422 offset = dissect_p22_ExtendedSubject(false, tvb, offset, &asn1_ctx, tree, hf_p22_ExtendedSubject_PDU);
4423 return offset;
4425 static int dissect_InformationCategories_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4426 int offset = 0;
4427 asn1_ctx_t asn1_ctx;
4428 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4429 offset = dissect_p22_InformationCategories(false, tvb, offset, &asn1_ctx, tree, hf_p22_InformationCategories_PDU);
4430 return offset;
4432 static int dissect_InformationCategory_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4433 int offset = 0;
4434 asn1_ctx_t asn1_ctx;
4435 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4436 offset = dissect_p22_InformationCategory(false, tvb, offset, &asn1_ctx, tree, hf_p22_InformationCategory_PDU);
4437 return offset;
4439 static int dissect_ManualHandlingInstructions_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4440 int offset = 0;
4441 asn1_ctx_t asn1_ctx;
4442 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4443 offset = dissect_p22_ManualHandlingInstructions(false, tvb, offset, &asn1_ctx, tree, hf_p22_ManualHandlingInstructions_PDU);
4444 return offset;
4446 static int dissect_ManualHandlingInstruction_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4447 int offset = 0;
4448 asn1_ctx_t asn1_ctx;
4449 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4450 offset = dissect_p22_ManualHandlingInstruction(false, tvb, offset, &asn1_ctx, tree, hf_p22_ManualHandlingInstruction_PDU);
4451 return offset;
4453 static int dissect_OriginatorsReference_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4454 int offset = 0;
4455 asn1_ctx_t asn1_ctx;
4456 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4457 offset = dissect_p22_OriginatorsReference(false, tvb, offset, &asn1_ctx, tree, hf_p22_OriginatorsReference_PDU);
4458 return offset;
4460 static int dissect_PrecedencePolicyIdentifier_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4461 int offset = 0;
4462 asn1_ctx_t asn1_ctx;
4463 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4464 offset = dissect_p22_PrecedencePolicyIdentifier(false, tvb, offset, &asn1_ctx, tree, hf_p22_PrecedencePolicyIdentifier_PDU);
4465 return offset;
4467 static int dissect_Precedence_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4468 int offset = 0;
4469 asn1_ctx_t asn1_ctx;
4470 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4471 offset = dissect_p22_Precedence(false, tvb, offset, &asn1_ctx, tree, hf_p22_Precedence_PDU);
4472 return offset;
4474 static int dissect_GeneralTextParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4475 int offset = 0;
4476 asn1_ctx_t asn1_ctx;
4477 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4478 offset = dissect_p22_GeneralTextParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_GeneralTextParameters_PDU);
4479 return offset;
4481 static int dissect_GeneralTextData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4482 int offset = 0;
4483 asn1_ctx_t asn1_ctx;
4484 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4485 offset = dissect_p22_GeneralTextData(false, tvb, offset, &asn1_ctx, tree, hf_p22_GeneralTextData_PDU);
4486 return offset;
4488 static int dissect_FileTransferParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4489 int offset = 0;
4490 asn1_ctx_t asn1_ctx;
4491 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4492 offset = dissect_p22_FileTransferParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_FileTransferParameters_PDU);
4493 return offset;
4495 static int dissect_FileTransferData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4496 int offset = 0;
4497 asn1_ctx_t asn1_ctx;
4498 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4499 offset = dissect_p22_FileTransferData(false, tvb, offset, &asn1_ctx, tree, hf_p22_FileTransferData_PDU);
4500 return offset;
4502 static int dissect_VoiceParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4503 int offset = 0;
4504 asn1_ctx_t asn1_ctx;
4505 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4506 offset = dissect_p22_VoiceParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_VoiceParameters_PDU);
4507 return offset;
4509 static int dissect_VoiceData_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4510 int offset = 0;
4511 asn1_ctx_t asn1_ctx;
4512 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4513 offset = dissect_p22_VoiceData(false, tvb, offset, &asn1_ctx, tree, hf_p22_VoiceData_PDU);
4514 return offset;
4516 static int dissect_ForwardedContentParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4517 int offset = 0;
4518 asn1_ctx_t asn1_ctx;
4519 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4520 offset = dissect_p22_ForwardedContentParameters(false, tvb, offset, &asn1_ctx, tree, hf_p22_ForwardedContentParameters_PDU);
4521 return offset;
4523 static int dissect_IPMEntryType_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4524 int offset = 0;
4525 asn1_ctx_t asn1_ctx;
4526 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4527 offset = dissect_p22_IPMEntryType(false, tvb, offset, &asn1_ctx, tree, hf_p22_IPMEntryType_PDU);
4528 return offset;
4530 static int dissect_IPMSynopsis_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4531 int offset = 0;
4532 asn1_ctx_t asn1_ctx;
4533 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4534 offset = dissect_p22_IPMSynopsis(false, tvb, offset, &asn1_ctx, tree, hf_p22_IPMSynopsis_PDU);
4535 return offset;
4537 static int dissect_BodyPartDescriptor_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4538 int offset = 0;
4539 asn1_ctx_t asn1_ctx;
4540 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4541 offset = dissect_p22_BodyPartDescriptor(false, tvb, offset, &asn1_ctx, tree, hf_p22_BodyPartDescriptor_PDU);
4542 return offset;
4544 static int dissect_BodyPartSignatureVerification_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4545 int offset = 0;
4546 asn1_ctx_t asn1_ctx;
4547 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4548 offset = dissect_p22_BodyPartSignatureVerification(false, tvb, offset, &asn1_ctx, tree, hf_p22_BodyPartSignatureVerification_PDU);
4549 return offset;
4551 static int dissect_IPMLocation_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4552 int offset = 0;
4553 asn1_ctx_t asn1_ctx;
4554 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4555 offset = dissect_p22_IPMLocation(false, tvb, offset, &asn1_ctx, tree, hf_p22_IPMLocation_PDU);
4556 return offset;
4558 static int dissect_DeliveredReplyStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4559 int offset = 0;
4560 asn1_ctx_t asn1_ctx;
4561 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4562 offset = dissect_p22_DeliveredReplyStatus(false, tvb, offset, &asn1_ctx, tree, hf_p22_DeliveredReplyStatus_PDU);
4563 return offset;
4565 static int dissect_CorrelatedDeliveredReplies_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4566 int offset = 0;
4567 asn1_ctx_t asn1_ctx;
4568 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4569 offset = dissect_p22_CorrelatedDeliveredReplies(false, tvb, offset, &asn1_ctx, tree, hf_p22_CorrelatedDeliveredReplies_PDU);
4570 return offset;
4572 static int dissect_DeliveredIPNStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4573 int offset = 0;
4574 asn1_ctx_t asn1_ctx;
4575 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4576 offset = dissect_p22_DeliveredIPNStatus(false, tvb, offset, &asn1_ctx, tree, hf_p22_DeliveredIPNStatus_PDU);
4577 return offset;
4579 static int dissect_CorrelatedDeliveredIPNs_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4580 int offset = 0;
4581 asn1_ctx_t asn1_ctx;
4582 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4583 offset = dissect_p22_CorrelatedDeliveredIPNs(false, tvb, offset, &asn1_ctx, tree, hf_p22_CorrelatedDeliveredIPNs_PDU);
4584 return offset;
4586 static int dissect_SubmittedReplyStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4587 int offset = 0;
4588 asn1_ctx_t asn1_ctx;
4589 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4590 offset = dissect_p22_SubmittedReplyStatus(false, tvb, offset, &asn1_ctx, tree, hf_p22_SubmittedReplyStatus_PDU);
4591 return offset;
4593 static int dissect_SubmittedIPNStatus_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4594 int offset = 0;
4595 asn1_ctx_t asn1_ctx;
4596 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4597 offset = dissect_p22_SubmittedIPNStatus(false, tvb, offset, &asn1_ctx, tree, hf_p22_SubmittedIPNStatus_PDU);
4598 return offset;
4600 static int dissect_RecipientCategory_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4601 int offset = 0;
4602 asn1_ctx_t asn1_ctx;
4603 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4604 offset = dissect_p22_RecipientCategory(false, tvb, offset, &asn1_ctx, tree, hf_p22_RecipientCategory_PDU);
4605 return offset;
4607 static int dissect_RecipientSecurityRequest_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4608 int offset = 0;
4609 asn1_ctx_t asn1_ctx;
4610 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4611 offset = dissect_p22_RecipientSecurityRequest(false, tvb, offset, &asn1_ctx, tree, hf_p22_RecipientSecurityRequest_PDU);
4612 return offset;
4614 static int dissect_IpnSecurityResponse_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4615 int offset = 0;
4616 asn1_ctx_t asn1_ctx;
4617 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4618 offset = dissect_p22_IpnSecurityResponse(false, tvb, offset, &asn1_ctx, tree, hf_p22_IpnSecurityResponse_PDU);
4619 return offset;
4621 static int dissect_BodyPartTokens_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4622 int offset = 0;
4623 asn1_ctx_t asn1_ctx;
4624 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4625 offset = dissect_p22_BodyPartTokens(false, tvb, offset, &asn1_ctx, tree, hf_p22_BodyPartTokens_PDU);
4626 return offset;
4628 static int dissect_ForwardedContentToken_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
4629 int offset = 0;
4630 asn1_ctx_t asn1_ctx;
4631 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4632 offset = dissect_p22_ForwardedContentToken(false, tvb, offset, &asn1_ctx, tree, hf_p22_ForwardedContentToken_PDU);
4633 return offset;
4638 * Dissect P22 PDUs inside a PPDU.
4640 static int
4641 dissect_p22(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void* data _U_)
4643 int offset = 0;
4644 proto_item *item=NULL;
4645 proto_tree *tree=NULL;
4646 asn1_ctx_t asn1_ctx;
4647 asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, true, pinfo);
4649 if (parent_tree) {
4650 item = proto_tree_add_item(parent_tree, proto_p22, tvb, 0, -1, ENC_NA);
4651 tree = proto_item_add_subtree(item, ett_p22);
4654 col_set_str(pinfo->cinfo, COL_PROTOCOL, "P22");
4655 col_set_str(pinfo->cinfo, COL_INFO, "InterPersonal");
4657 dissect_p22_InformationObject(true, tvb, offset, &asn1_ctx , tree, -1);
4658 return tvb_captured_length(tvb);
4662 /*--- proto_register_p22 -------------------------------------------*/
4663 void proto_register_p22(void) {
4665 /* List of fields */
4666 static hf_register_info hf[] =
4668 { &hf_p22_InformationObject_PDU,
4669 { "InformationObject", "p22.InformationObject",
4670 FT_UINT32, BASE_DEC, VALS(p22_InformationObject_vals), 0,
4671 NULL, HFILL }},
4672 { &hf_p22_Heading_PDU,
4673 { "Heading", "p22.Heading_element",
4674 FT_NONE, BASE_NONE, NULL, 0,
4675 NULL, HFILL }},
4676 { &hf_p22_ORDescriptor_PDU,
4677 { "ORDescriptor", "p22.ORDescriptor_element",
4678 FT_NONE, BASE_NONE, NULL, 0,
4679 NULL, HFILL }},
4680 { &hf_p22_ThisIPMField_PDU,
4681 { "ThisIPMField", "p22.ThisIPMField_element",
4682 FT_NONE, BASE_NONE, NULL, 0,
4683 NULL, HFILL }},
4684 { &hf_p22_OriginatorField_PDU,
4685 { "OriginatorField", "p22.OriginatorField_element",
4686 FT_NONE, BASE_NONE, NULL, 0,
4687 NULL, HFILL }},
4688 { &hf_p22_AuthorizingUsersSubfield_PDU,
4689 { "AuthorizingUsersSubfield", "p22.AuthorizingUsersSubfield_element",
4690 FT_NONE, BASE_NONE, NULL, 0,
4691 NULL, HFILL }},
4692 { &hf_p22_PrimaryRecipientsSubfield_PDU,
4693 { "PrimaryRecipientsSubfield", "p22.PrimaryRecipientsSubfield_element",
4694 FT_NONE, BASE_NONE, NULL, 0,
4695 NULL, HFILL }},
4696 { &hf_p22_CopyRecipientsSubfield_PDU,
4697 { "CopyRecipientsSubfield", "p22.CopyRecipientsSubfield_element",
4698 FT_NONE, BASE_NONE, NULL, 0,
4699 NULL, HFILL }},
4700 { &hf_p22_BlindCopyRecipientsSubfield_PDU,
4701 { "BlindCopyRecipientsSubfield", "p22.BlindCopyRecipientsSubfield_element",
4702 FT_NONE, BASE_NONE, NULL, 0,
4703 NULL, HFILL }},
4704 { &hf_p22_RepliedToIPMField_PDU,
4705 { "RepliedToIPMField", "p22.RepliedToIPMField_element",
4706 FT_NONE, BASE_NONE, NULL, 0,
4707 NULL, HFILL }},
4708 { &hf_p22_ObsoletedIPMsSubfield_PDU,
4709 { "ObsoletedIPMsSubfield", "p22.ObsoletedIPMsSubfield_element",
4710 FT_NONE, BASE_NONE, NULL, 0,
4711 NULL, HFILL }},
4712 { &hf_p22_RelatedIPMsSubfield_PDU,
4713 { "RelatedIPMsSubfield", "p22.RelatedIPMsSubfield_element",
4714 FT_NONE, BASE_NONE, NULL, 0,
4715 NULL, HFILL }},
4716 { &hf_p22_SubjectField_PDU,
4717 { "SubjectField", "p22.SubjectField",
4718 FT_STRING, BASE_NONE, NULL, 0,
4719 NULL, HFILL }},
4720 { &hf_p22_ExpiryTimeField_PDU,
4721 { "ExpiryTimeField", "p22.ExpiryTimeField",
4722 FT_STRING, BASE_NONE, NULL, 0,
4723 NULL, HFILL }},
4724 { &hf_p22_ReplyTimeField_PDU,
4725 { "ReplyTimeField", "p22.ReplyTimeField",
4726 FT_STRING, BASE_NONE, NULL, 0,
4727 NULL, HFILL }},
4728 { &hf_p22_ReplyRecipientsSubfield_PDU,
4729 { "ReplyRecipientsSubfield", "p22.ReplyRecipientsSubfield_element",
4730 FT_NONE, BASE_NONE, NULL, 0,
4731 NULL, HFILL }},
4732 { &hf_p22_ImportanceField_PDU,
4733 { "ImportanceField", "p22.ImportanceField",
4734 FT_UINT32, BASE_DEC, VALS(p22_ImportanceField_vals), 0,
4735 NULL, HFILL }},
4736 { &hf_p22_SensitivityField_PDU,
4737 { "SensitivityField", "p22.SensitivityField",
4738 FT_UINT32, BASE_DEC, VALS(p22_SensitivityField_vals), 0,
4739 NULL, HFILL }},
4740 { &hf_p22_AutoForwardedField_PDU,
4741 { "AutoForwardedField", "p22.AutoForwardedField",
4742 FT_BOOLEAN, BASE_NONE, NULL, 0,
4743 NULL, HFILL }},
4744 { &hf_p22_Body_PDU,
4745 { "Body", "p22.Body",
4746 FT_UINT32, BASE_DEC, NULL, 0,
4747 NULL, HFILL }},
4748 { &hf_p22_IA5TextParameters_PDU,
4749 { "IA5TextParameters", "p22.IA5TextParameters_element",
4750 FT_NONE, BASE_NONE, NULL, 0,
4751 NULL, HFILL }},
4752 { &hf_p22_IA5TextData_PDU,
4753 { "IA5TextData", "p22.IA5TextData",
4754 FT_STRING, BASE_NONE, NULL, 0,
4755 NULL, HFILL }},
4756 { &hf_p22_G3FacsimileParameters_PDU,
4757 { "G3FacsimileParameters", "p22.G3FacsimileParameters_element",
4758 FT_NONE, BASE_NONE, NULL, 0,
4759 NULL, HFILL }},
4760 { &hf_p22_G3FacsimileData_PDU,
4761 { "G3FacsimileData", "p22.G3FacsimileData",
4762 FT_UINT32, BASE_DEC, NULL, 0,
4763 NULL, HFILL }},
4764 { &hf_p22_G4Class1BodyPart_PDU,
4765 { "G4Class1BodyPart", "p22.G4Class1BodyPart",
4766 FT_UINT32, BASE_DEC, NULL, 0,
4767 NULL, HFILL }},
4768 { &hf_p22_MixedModeBodyPart_PDU,
4769 { "MixedModeBodyPart", "p22.MixedModeBodyPart",
4770 FT_UINT32, BASE_DEC, NULL, 0,
4771 NULL, HFILL }},
4772 { &hf_p22_TeletexParameters_PDU,
4773 { "TeletexParameters", "p22.TeletexParameters_element",
4774 FT_NONE, BASE_NONE, NULL, 0,
4775 NULL, HFILL }},
4776 { &hf_p22_TeletexData_PDU,
4777 { "TeletexData", "p22.TeletexData",
4778 FT_UINT32, BASE_DEC, NULL, 0,
4779 NULL, HFILL }},
4780 { &hf_p22_VideotexParameters_PDU,
4781 { "VideotexParameters", "p22.VideotexParameters_element",
4782 FT_NONE, BASE_NONE, NULL, 0,
4783 NULL, HFILL }},
4784 { &hf_p22_VideotexData_PDU,
4785 { "VideotexData", "p22.VideotexData",
4786 FT_STRING, BASE_NONE, NULL, 0,
4787 NULL, HFILL }},
4788 { &hf_p22_EncryptedParameters_PDU,
4789 { "EncryptedParameters", "p22.EncryptedParameters_element",
4790 FT_NONE, BASE_NONE, NULL, 0,
4791 NULL, HFILL }},
4792 { &hf_p22_EncryptedData_PDU,
4793 { "EncryptedData", "p22.EncryptedData",
4794 FT_BYTES, BASE_NONE, NULL, 0,
4795 NULL, HFILL }},
4796 { &hf_p22_MessageParameters_PDU,
4797 { "MessageParameters", "p22.MessageParameters_element",
4798 FT_NONE, BASE_NONE, NULL, 0,
4799 NULL, HFILL }},
4800 { &hf_p22_MessageData_PDU,
4801 { "MessageData", "p22.MessageData_element",
4802 FT_NONE, BASE_NONE, NULL, 0,
4803 NULL, HFILL }},
4804 { &hf_p22_BilaterallyDefinedBodyPart_PDU,
4805 { "BilaterallyDefinedBodyPart", "p22.BilaterallyDefinedBodyPart",
4806 FT_BYTES, BASE_NONE, NULL, 0,
4807 NULL, HFILL }},
4808 { &hf_p22_IPN_PDU,
4809 { "IPN", "p22.IPN_element",
4810 FT_NONE, BASE_NONE, NULL, 0,
4811 NULL, HFILL }},
4812 { &hf_p22_AbsenceAdvice_PDU,
4813 { "AbsenceAdvice", "p22.AbsenceAdvice_element",
4814 FT_NONE, BASE_NONE, NULL, 0,
4815 NULL, HFILL }},
4816 { &hf_p22_ChangeOfAddressAdvice_PDU,
4817 { "ChangeOfAddressAdvice", "p22.ChangeOfAddressAdvice_element",
4818 FT_NONE, BASE_NONE, NULL, 0,
4819 NULL, HFILL }},
4820 { &hf_p22_IPMAssemblyInstructions_PDU,
4821 { "IPMAssemblyInstructions", "p22.IPMAssemblyInstructions_element",
4822 FT_NONE, BASE_NONE, NULL, 0,
4823 NULL, HFILL }},
4824 { &hf_p22_IncompleteCopy_PDU,
4825 { "IncompleteCopy", "p22.IncompleteCopy_element",
4826 FT_NONE, BASE_NONE, NULL, 0,
4827 NULL, HFILL }},
4828 { &hf_p22_Languages_PDU,
4829 { "Languages", "p22.Languages",
4830 FT_UINT32, BASE_DEC, NULL, 0,
4831 NULL, HFILL }},
4832 { &hf_p22_Language_PDU,
4833 { "Language", "p22.Language",
4834 FT_STRING, BASE_NONE, NULL, 0,
4835 NULL, HFILL }},
4836 { &hf_p22_AutoSubmitted_PDU,
4837 { "AutoSubmitted", "p22.AutoSubmitted",
4838 FT_UINT32, BASE_DEC, VALS(p22_AutoSubmitted_vals), 0,
4839 NULL, HFILL }},
4840 { &hf_p22_BodyPartSignatures_PDU,
4841 { "BodyPartSignatures", "p22.BodyPartSignatures",
4842 FT_UINT32, BASE_DEC, NULL, 0,
4843 NULL, HFILL }},
4844 { &hf_p22_IPMSecurityLabel_PDU,
4845 { "IPMSecurityLabel", "p22.IPMSecurityLabel_element",
4846 FT_NONE, BASE_NONE, NULL, 0,
4847 NULL, HFILL }},
4848 { &hf_p22_BodyPartSecurityLabel_PDU,
4849 { "BodyPartSecurityLabel", "p22.BodyPartSecurityLabel",
4850 FT_UINT32, BASE_DEC, VALS(p22_BodyPartSecurityLabel_vals), 0,
4851 NULL, HFILL }},
4852 { &hf_p22_AuthorizationTime_PDU,
4853 { "AuthorizationTime", "p22.AuthorizationTime",
4854 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
4855 NULL, HFILL }},
4856 { &hf_p22_CirculationList_PDU,
4857 { "CirculationList", "p22.CirculationList",
4858 FT_UINT32, BASE_DEC, NULL, 0,
4859 NULL, HFILL }},
4860 { &hf_p22_CirculationMember_PDU,
4861 { "CirculationMember", "p22.CirculationMember_element",
4862 FT_NONE, BASE_NONE, NULL, 0,
4863 NULL, HFILL }},
4864 { &hf_p22_CirculationListIndicator_PDU,
4865 { "CirculationListIndicator", "p22.CirculationListIndicator_element",
4866 FT_NONE, BASE_NONE, NULL, 0,
4867 NULL, HFILL }},
4868 { &hf_p22_DistributionCodes_PDU,
4869 { "DistributionCodes", "p22.DistributionCodes",
4870 FT_UINT32, BASE_DEC, NULL, 0,
4871 NULL, HFILL }},
4872 { &hf_p22_DistributionCode_PDU,
4873 { "DistributionCode", "p22.DistributionCode_element",
4874 FT_NONE, BASE_NONE, NULL, 0,
4875 NULL, HFILL }},
4876 { &hf_p22_ExtendedSubject_PDU,
4877 { "ExtendedSubject", "p22.ExtendedSubject_element",
4878 FT_NONE, BASE_NONE, NULL, 0,
4879 NULL, HFILL }},
4880 { &hf_p22_InformationCategories_PDU,
4881 { "InformationCategories", "p22.InformationCategories",
4882 FT_UINT32, BASE_DEC, NULL, 0,
4883 NULL, HFILL }},
4884 { &hf_p22_InformationCategory_PDU,
4885 { "InformationCategory", "p22.InformationCategory_element",
4886 FT_NONE, BASE_NONE, NULL, 0,
4887 NULL, HFILL }},
4888 { &hf_p22_ManualHandlingInstructions_PDU,
4889 { "ManualHandlingInstructions", "p22.ManualHandlingInstructions",
4890 FT_UINT32, BASE_DEC, NULL, 0,
4891 NULL, HFILL }},
4892 { &hf_p22_ManualHandlingInstruction_PDU,
4893 { "ManualHandlingInstruction", "p22.ManualHandlingInstruction_element",
4894 FT_NONE, BASE_NONE, NULL, 0,
4895 NULL, HFILL }},
4896 { &hf_p22_OriginatorsReference_PDU,
4897 { "OriginatorsReference", "p22.OriginatorsReference_element",
4898 FT_NONE, BASE_NONE, NULL, 0,
4899 NULL, HFILL }},
4900 { &hf_p22_PrecedencePolicyIdentifier_PDU,
4901 { "PrecedencePolicyIdentifier", "p22.PrecedencePolicyIdentifier",
4902 FT_OID, BASE_NONE, NULL, 0,
4903 NULL, HFILL }},
4904 { &hf_p22_Precedence_PDU,
4905 { "Precedence", "p22.Precedence",
4906 FT_UINT32, BASE_DEC, NULL, 0,
4907 NULL, HFILL }},
4908 { &hf_p22_GeneralTextParameters_PDU,
4909 { "GeneralTextParameters", "p22.GeneralTextParameters",
4910 FT_UINT32, BASE_DEC, NULL, 0,
4911 NULL, HFILL }},
4912 { &hf_p22_GeneralTextData_PDU,
4913 { "GeneralTextData", "p22.GeneralTextData",
4914 FT_STRING, BASE_NONE, NULL, 0,
4915 NULL, HFILL }},
4916 { &hf_p22_FileTransferParameters_PDU,
4917 { "FileTransferParameters", "p22.FileTransferParameters_element",
4918 FT_NONE, BASE_NONE, NULL, 0,
4919 NULL, HFILL }},
4920 { &hf_p22_FileTransferData_PDU,
4921 { "FileTransferData", "p22.FileTransferData",
4922 FT_UINT32, BASE_DEC, NULL, 0,
4923 NULL, HFILL }},
4924 { &hf_p22_VoiceParameters_PDU,
4925 { "VoiceParameters", "p22.VoiceParameters_element",
4926 FT_NONE, BASE_NONE, NULL, 0,
4927 NULL, HFILL }},
4928 { &hf_p22_VoiceData_PDU,
4929 { "VoiceData", "p22.VoiceData",
4930 FT_BYTES, BASE_NONE, NULL, 0,
4931 NULL, HFILL }},
4932 { &hf_p22_ForwardedContentParameters_PDU,
4933 { "ForwardedContentParameters", "p22.ForwardedContentParameters_element",
4934 FT_NONE, BASE_NONE, NULL, 0,
4935 NULL, HFILL }},
4936 { &hf_p22_IPMEntryType_PDU,
4937 { "IPMEntryType", "p22.IPMEntryType",
4938 FT_UINT32, BASE_DEC, VALS(p22_IPMEntryType_vals), 0,
4939 NULL, HFILL }},
4940 { &hf_p22_IPMSynopsis_PDU,
4941 { "IPMSynopsis", "p22.IPMSynopsis",
4942 FT_UINT32, BASE_DEC, NULL, 0,
4943 NULL, HFILL }},
4944 { &hf_p22_BodyPartDescriptor_PDU,
4945 { "BodyPartDescriptor", "p22.BodyPartDescriptor_element",
4946 FT_NONE, BASE_NONE, NULL, 0,
4947 NULL, HFILL }},
4948 { &hf_p22_BodyPartSignatureVerification_PDU,
4949 { "BodyPartSignatureVerification", "p22.BodyPartSignatureVerification",
4950 FT_UINT32, BASE_DEC, NULL, 0,
4951 NULL, HFILL }},
4952 { &hf_p22_IPMLocation_PDU,
4953 { "IPMLocation", "p22.IPMLocation",
4954 FT_UINT32, BASE_DEC, VALS(p22_IPMLocation_vals), 0,
4955 NULL, HFILL }},
4956 { &hf_p22_DeliveredReplyStatus_PDU,
4957 { "DeliveredReplyStatus", "p22.DeliveredReplyStatus",
4958 FT_INT32, BASE_DEC, VALS(p22_DeliveredReplyStatus_vals), 0,
4959 NULL, HFILL }},
4960 { &hf_p22_CorrelatedDeliveredReplies_PDU,
4961 { "CorrelatedDeliveredReplies", "p22.CorrelatedDeliveredReplies",
4962 FT_UINT32, BASE_DEC, VALS(p22_CorrelatedDeliveredReplies_vals), 0,
4963 NULL, HFILL }},
4964 { &hf_p22_DeliveredIPNStatus_PDU,
4965 { "DeliveredIPNStatus", "p22.DeliveredIPNStatus",
4966 FT_INT32, BASE_DEC, VALS(p22_DeliveredIPNStatus_vals), 0,
4967 NULL, HFILL }},
4968 { &hf_p22_CorrelatedDeliveredIPNs_PDU,
4969 { "CorrelatedDeliveredIPNs", "p22.CorrelatedDeliveredIPNs",
4970 FT_UINT32, BASE_DEC, VALS(p22_CorrelatedDeliveredIPNs_vals), 0,
4971 NULL, HFILL }},
4972 { &hf_p22_SubmittedReplyStatus_PDU,
4973 { "SubmittedReplyStatus", "p22.SubmittedReplyStatus",
4974 FT_INT32, BASE_DEC, VALS(p22_SubmittedReplyStatus_vals), 0,
4975 NULL, HFILL }},
4976 { &hf_p22_SubmittedIPNStatus_PDU,
4977 { "SubmittedIPNStatus", "p22.SubmittedIPNStatus",
4978 FT_INT32, BASE_DEC, VALS(p22_SubmittedIPNStatus_vals), 0,
4979 NULL, HFILL }},
4980 { &hf_p22_RecipientCategory_PDU,
4981 { "RecipientCategory", "p22.RecipientCategory",
4982 FT_INT32, BASE_DEC, VALS(p22_RecipientCategory_vals), 0,
4983 NULL, HFILL }},
4984 { &hf_p22_RecipientSecurityRequest_PDU,
4985 { "RecipientSecurityRequest", "p22.RecipientSecurityRequest",
4986 FT_BYTES, BASE_NONE, NULL, 0,
4987 NULL, HFILL }},
4988 { &hf_p22_IpnSecurityResponse_PDU,
4989 { "IpnSecurityResponse", "p22.IpnSecurityResponse_element",
4990 FT_NONE, BASE_NONE, NULL, 0,
4991 NULL, HFILL }},
4992 { &hf_p22_BodyPartTokens_PDU,
4993 { "BodyPartTokens", "p22.BodyPartTokens",
4994 FT_UINT32, BASE_DEC, NULL, 0,
4995 NULL, HFILL }},
4996 { &hf_p22_ForwardedContentToken_PDU,
4997 { "ForwardedContentToken", "p22.ForwardedContentToken",
4998 FT_UINT32, BASE_DEC, NULL, 0,
4999 NULL, HFILL }},
5000 { &hf_p22_ipm,
5001 { "ipm", "p22.ipm_element",
5002 FT_NONE, BASE_NONE, NULL, 0,
5003 NULL, HFILL }},
5004 { &hf_p22_ipn,
5005 { "ipn", "p22.ipn_element",
5006 FT_NONE, BASE_NONE, NULL, 0,
5007 NULL, HFILL }},
5008 { &hf_p22_heading,
5009 { "heading", "p22.heading_element",
5010 FT_NONE, BASE_NONE, NULL, 0,
5011 NULL, HFILL }},
5012 { &hf_p22_body,
5013 { "body", "p22.body",
5014 FT_UINT32, BASE_DEC, NULL, 0,
5015 NULL, HFILL }},
5016 { &hf_p22_type,
5017 { "type", "p22.type",
5018 FT_OID, BASE_NONE, NULL, 0,
5019 NULL, HFILL }},
5020 { &hf_p22_value,
5021 { "value", "p22.value_element",
5022 FT_NONE, BASE_NONE, NULL, 0,
5023 NULL, HFILL }},
5024 { &hf_p22_this_IPM,
5025 { "this-IPM", "p22.this_IPM_element",
5026 FT_NONE, BASE_NONE, NULL, 0,
5027 "ThisIPMField", HFILL }},
5028 { &hf_p22_originator,
5029 { "originator", "p22.originator_element",
5030 FT_NONE, BASE_NONE, NULL, 0,
5031 "OriginatorField", HFILL }},
5032 { &hf_p22_authorizing_users,
5033 { "authorizing-users", "p22.authorizing_users",
5034 FT_UINT32, BASE_DEC, NULL, 0,
5035 "AuthorizingUsersField", HFILL }},
5036 { &hf_p22_primary_recipients,
5037 { "primary-recipients", "p22.primary_recipients",
5038 FT_UINT32, BASE_DEC, NULL, 0,
5039 "PrimaryRecipientsField", HFILL }},
5040 { &hf_p22_copy_recipients,
5041 { "copy-recipients", "p22.copy_recipients",
5042 FT_UINT32, BASE_DEC, NULL, 0,
5043 "CopyRecipientsField", HFILL }},
5044 { &hf_p22_blind_copy_recipients,
5045 { "blind-copy-recipients", "p22.blind_copy_recipients",
5046 FT_UINT32, BASE_DEC, NULL, 0,
5047 "BlindCopyRecipientsField", HFILL }},
5048 { &hf_p22_replied_to_IPM,
5049 { "replied-to-IPM", "p22.replied_to_IPM_element",
5050 FT_NONE, BASE_NONE, NULL, 0,
5051 "RepliedToIPMField", HFILL }},
5052 { &hf_p22_obsoleted_IPMs,
5053 { "obsoleted-IPMs", "p22.obsoleted_IPMs",
5054 FT_UINT32, BASE_DEC, NULL, 0,
5055 "ObsoletedIPMsField", HFILL }},
5056 { &hf_p22_related_IPMs,
5057 { "related-IPMs", "p22.related_IPMs",
5058 FT_UINT32, BASE_DEC, NULL, 0,
5059 "RelatedIPMsField", HFILL }},
5060 { &hf_p22_subject,
5061 { "subject", "p22.subject",
5062 FT_STRING, BASE_NONE, NULL, 0,
5063 "SubjectField", HFILL }},
5064 { &hf_p22_expiry_time,
5065 { "expiry-time", "p22.expiry_time",
5066 FT_STRING, BASE_NONE, NULL, 0,
5067 "ExpiryTimeField", HFILL }},
5068 { &hf_p22_reply_time,
5069 { "reply-time", "p22.reply_time",
5070 FT_STRING, BASE_NONE, NULL, 0,
5071 "ReplyTimeField", HFILL }},
5072 { &hf_p22_reply_recipients,
5073 { "reply-recipients", "p22.reply_recipients",
5074 FT_UINT32, BASE_DEC, NULL, 0,
5075 "ReplyRecipientsField", HFILL }},
5076 { &hf_p22_importance,
5077 { "importance", "p22.importance",
5078 FT_UINT32, BASE_DEC, VALS(p22_ImportanceField_vals), 0,
5079 "ImportanceField", HFILL }},
5080 { &hf_p22_sensitivity,
5081 { "sensitivity", "p22.sensitivity",
5082 FT_UINT32, BASE_DEC, VALS(p22_SensitivityField_vals), 0,
5083 "SensitivityField", HFILL }},
5084 { &hf_p22_auto_forwarded,
5085 { "auto-forwarded", "p22.auto_forwarded",
5086 FT_BOOLEAN, BASE_NONE, NULL, 0,
5087 "AutoForwardedField", HFILL }},
5088 { &hf_p22_extensions,
5089 { "extensions", "p22.extensions",
5090 FT_UINT32, BASE_DEC, NULL, 0,
5091 "ExtensionsField", HFILL }},
5092 { &hf_p22_user,
5093 { "user", "p22.user_element",
5094 FT_NONE, BASE_NONE, NULL, 0,
5095 "ORName", HFILL }},
5096 { &hf_p22_user_relative_identifier,
5097 { "user-relative-identifier", "p22.user_relative_identifier",
5098 FT_STRING, BASE_NONE, NULL, 0,
5099 "LocalIPMIdentifier", HFILL }},
5100 { &hf_p22_recipient,
5101 { "recipient", "p22.recipient_element",
5102 FT_NONE, BASE_NONE, NULL, 0,
5103 "ORDescriptor", HFILL }},
5104 { &hf_p22_notification_requests,
5105 { "notification-requests", "p22.notification_requests",
5106 FT_BYTES, BASE_NONE, NULL, 0,
5107 "NotificationRequests", HFILL }},
5108 { &hf_p22_reply_requested,
5109 { "reply-requested", "p22.reply_requested",
5110 FT_BOOLEAN, BASE_NONE, NULL, 0,
5111 "BOOLEAN", HFILL }},
5112 { &hf_p22_recipient_extensions,
5113 { "recipient-extensions", "p22.recipient_extensions",
5114 FT_UINT32, BASE_DEC, NULL, 0,
5115 "RecipientExtensionsField", HFILL }},
5116 { &hf_p22_formal_name,
5117 { "formal-name", "p22.formal_name_element",
5118 FT_NONE, BASE_NONE, NULL, 0,
5119 "ORName", HFILL }},
5120 { &hf_p22_free_form_name,
5121 { "free-form-name", "p22.free_form_name",
5122 FT_STRING, BASE_NONE, NULL, 0,
5123 "FreeFormName", HFILL }},
5124 { &hf_p22_telephone_number,
5125 { "telephone-number", "p22.telephone_number",
5126 FT_STRING, BASE_NONE, NULL, 0,
5127 "TelephoneNumber", HFILL }},
5128 { &hf_p22_RecipientExtensionsField_item,
5129 { "IPMSExtension", "p22.IPMSExtension_element",
5130 FT_NONE, BASE_NONE, NULL, 0,
5131 NULL, HFILL }},
5132 { &hf_p22_AuthorizingUsersField_item,
5133 { "AuthorizingUsersSubfield", "p22.AuthorizingUsersSubfield_element",
5134 FT_NONE, BASE_NONE, NULL, 0,
5135 NULL, HFILL }},
5136 { &hf_p22_PrimaryRecipientsField_item,
5137 { "PrimaryRecipientsSubfield", "p22.PrimaryRecipientsSubfield_element",
5138 FT_NONE, BASE_NONE, NULL, 0,
5139 NULL, HFILL }},
5140 { &hf_p22_CopyRecipientsField_item,
5141 { "CopyRecipientsSubfield", "p22.CopyRecipientsSubfield_element",
5142 FT_NONE, BASE_NONE, NULL, 0,
5143 NULL, HFILL }},
5144 { &hf_p22_BlindCopyRecipientsField_item,
5145 { "BlindCopyRecipientsSubfield", "p22.BlindCopyRecipientsSubfield_element",
5146 FT_NONE, BASE_NONE, NULL, 0,
5147 NULL, HFILL }},
5148 { &hf_p22_ObsoletedIPMsField_item,
5149 { "ObsoletedIPMsSubfield", "p22.ObsoletedIPMsSubfield_element",
5150 FT_NONE, BASE_NONE, NULL, 0,
5151 NULL, HFILL }},
5152 { &hf_p22_RelatedIPMsField_item,
5153 { "RelatedIPMsSubfield", "p22.RelatedIPMsSubfield_element",
5154 FT_NONE, BASE_NONE, NULL, 0,
5155 NULL, HFILL }},
5156 { &hf_p22_ReplyRecipientsField_item,
5157 { "ReplyRecipientsSubfield", "p22.ReplyRecipientsSubfield_element",
5158 FT_NONE, BASE_NONE, NULL, 0,
5159 NULL, HFILL }},
5160 { &hf_p22_ExtensionsField_item,
5161 { "IPMSExtension", "p22.IPMSExtension_element",
5162 FT_NONE, BASE_NONE, NULL, 0,
5163 NULL, HFILL }},
5164 { &hf_p22_Body_item,
5165 { "BodyPart", "p22.BodyPart",
5166 FT_UINT32, BASE_DEC, VALS(p22_BodyPart_vals), 0,
5167 NULL, HFILL }},
5168 { &hf_p22_basic,
5169 { "basic", "p22.basic",
5170 FT_UINT32, BASE_DEC, VALS(p22_T_basic_vals), 0,
5171 NULL, HFILL }},
5172 { &hf_p22_ia5_text,
5173 { "ia5-text", "p22.ia5_text_element",
5174 FT_NONE, BASE_NONE, NULL, 0,
5175 "IA5TextBodyPart", HFILL }},
5176 { &hf_p22_g3_facsimile,
5177 { "g3-facsimile", "p22.g3_facsimile_element",
5178 FT_NONE, BASE_NONE, NULL, 0,
5179 "G3FacsimileBodyPart", HFILL }},
5180 { &hf_p22_g4_class1,
5181 { "g4-class1", "p22.g4_class1",
5182 FT_UINT32, BASE_DEC, NULL, 0,
5183 "G4Class1BodyPart", HFILL }},
5184 { &hf_p22_teletex,
5185 { "teletex", "p22.teletex_element",
5186 FT_NONE, BASE_NONE, NULL, 0,
5187 "TeletexBodyPart", HFILL }},
5188 { &hf_p22_videotex,
5189 { "videotex", "p22.videotex_element",
5190 FT_NONE, BASE_NONE, NULL, 0,
5191 "VideotexBodyPart", HFILL }},
5192 { &hf_p22_encrypted_bp,
5193 { "encrypted", "p22.encrypted_element",
5194 FT_NONE, BASE_NONE, NULL, 0,
5195 "EncryptedBodyPart", HFILL }},
5196 { &hf_p22_message,
5197 { "message", "p22.message_element",
5198 FT_NONE, BASE_NONE, NULL, 0,
5199 "MessageBodyPart", HFILL }},
5200 { &hf_p22_mixed_mode,
5201 { "mixed-mode", "p22.mixed_mode",
5202 FT_UINT32, BASE_DEC, NULL, 0,
5203 "MixedModeBodyPart", HFILL }},
5204 { &hf_p22_bilaterally_defined,
5205 { "bilaterally-defined", "p22.bilaterally_defined",
5206 FT_BYTES, BASE_NONE, NULL, 0,
5207 "BilaterallyDefinedBodyPart", HFILL }},
5208 { &hf_p22_nationally_defined,
5209 { "nationally-defined", "p22.nationally_defined_element",
5210 FT_NONE, BASE_NONE, NULL, 0,
5211 "NationallyDefinedBodyPart", HFILL }},
5212 { &hf_p22_extended,
5213 { "extended", "p22.extended_element",
5214 FT_NONE, BASE_NONE, NULL, 0,
5215 "ExtendedBodyPart", HFILL }},
5216 { &hf_p22_extended_parameters,
5217 { "parameters", "p22.parameters_element",
5218 FT_NONE, BASE_NONE, NULL, 0,
5219 "INSTANCE_OF", HFILL }},
5220 { &hf_p22_extended_data,
5221 { "data", "p22.extended.data_element",
5222 FT_NONE, BASE_NONE, NULL, 0,
5223 "INSTANCE_OF", HFILL }},
5224 { &hf_p22_ia5text_parameters,
5225 { "parameters", "p22.parameters_element",
5226 FT_NONE, BASE_NONE, NULL, 0,
5227 "IA5TextParameters", HFILL }},
5228 { &hf_p22_ia5text_data,
5229 { "data", "p22.ia5text.data",
5230 FT_STRING, BASE_NONE, NULL, 0,
5231 "IA5TextData", HFILL }},
5232 { &hf_p22_repertoire,
5233 { "repertoire", "p22.repertoire",
5234 FT_UINT32, BASE_DEC, VALS(p22_Repertoire_vals), 0,
5235 NULL, HFILL }},
5236 { &hf_p22_g3facsimile_parameters,
5237 { "parameters", "p22.parameters_element",
5238 FT_NONE, BASE_NONE, NULL, 0,
5239 "G3FacsimileParameters", HFILL }},
5240 { &hf_p22_g3facsimile_data,
5241 { "data", "p22.g3facsimile.data",
5242 FT_UINT32, BASE_DEC, NULL, 0,
5243 "G3FacsimileData", HFILL }},
5244 { &hf_p22_number_of_pages,
5245 { "number-of-pages", "p22.number_of_pages",
5246 FT_INT32, BASE_DEC, NULL, 0,
5247 "INTEGER", HFILL }},
5248 { &hf_p22_g3facsimile_non_basic_parameters,
5249 { "non-basic-parameters", "p22.non_basic_parameters",
5250 FT_BYTES, BASE_NONE, NULL, 0,
5251 "G3FacsimileNonBasicParameters", HFILL }},
5252 { &hf_p22_G3FacsimileData_item,
5253 { "G3FacsimileData item", "p22.G3FacsimileData_item",
5254 FT_BYTES, BASE_NONE, NULL, 0,
5255 "BIT_STRING", HFILL }},
5256 { &hf_p22_G4Class1BodyPart_item,
5257 { "Interchange-Data-Element", "p22.Interchange_Data_Element_element",
5258 FT_NONE, BASE_NONE, NULL, 0,
5259 NULL, HFILL }},
5260 { &hf_p22_MixedModeBodyPart_item,
5261 { "Interchange-Data-Element", "p22.Interchange_Data_Element_element",
5262 FT_NONE, BASE_NONE, NULL, 0,
5263 NULL, HFILL }},
5264 { &hf_p22_teletex_parameters,
5265 { "parameters", "p22.parameters_element",
5266 FT_NONE, BASE_NONE, NULL, 0,
5267 "TeletexParameters", HFILL }},
5268 { &hf_p22_teletex_data,
5269 { "data", "p22.teletex.data",
5270 FT_UINT32, BASE_DEC, NULL, 0,
5271 "TeletexData", HFILL }},
5272 { &hf_p22_telex_compatible,
5273 { "telex-compatible", "p22.telex_compatible",
5274 FT_BOOLEAN, BASE_NONE, NULL, 0,
5275 "BOOLEAN", HFILL }},
5276 { &hf_p22_teletex_non_basic_parameters,
5277 { "non-basic-parameters", "p22.non_basic_parameters_element",
5278 FT_NONE, BASE_NONE, NULL, 0,
5279 "TeletexNonBasicParameters", HFILL }},
5280 { &hf_p22_TeletexData_item,
5281 { "TeletexData item", "p22.TeletexData_item",
5282 FT_STRING, BASE_NONE, NULL, 0,
5283 "TeletexString", HFILL }},
5284 { &hf_p22_videotex_parameters,
5285 { "parameters", "p22.parameters_element",
5286 FT_NONE, BASE_NONE, NULL, 0,
5287 "VideotexParameters", HFILL }},
5288 { &hf_p22_videotex_data,
5289 { "data", "p22.videotex.data",
5290 FT_STRING, BASE_NONE, NULL, 0,
5291 "VideotexData", HFILL }},
5292 { &hf_p22_syntax,
5293 { "syntax", "p22.syntax",
5294 FT_INT32, BASE_DEC, VALS(p22_VideotexSyntax_vals), 0,
5295 "VideotexSyntax", HFILL }},
5296 { &hf_p22_encrypted_parameters,
5297 { "parameters", "p22.parameters_element",
5298 FT_NONE, BASE_NONE, NULL, 0,
5299 "EncryptedParameters", HFILL }},
5300 { &hf_p22_encrypted_data,
5301 { "data", "p22.encrypted.data",
5302 FT_BYTES, BASE_NONE, NULL, 0,
5303 "EncryptedData", HFILL }},
5304 { &hf_p22_algorithm_identifier,
5305 { "algorithm-identifier", "p22.algorithm_identifier_element",
5306 FT_NONE, BASE_NONE, NULL, 0,
5307 "AlgorithmIdentifier", HFILL }},
5308 { &hf_p22_originator_certificates,
5309 { "originator-certificates", "p22.originator_certificates",
5310 FT_UINT32, BASE_DEC, NULL, 0,
5311 "ExtendedCertificates", HFILL }},
5312 { &hf_p22_message_parameters,
5313 { "parameters", "p22.parameters_element",
5314 FT_NONE, BASE_NONE, NULL, 0,
5315 "MessageParameters", HFILL }},
5316 { &hf_p22_message_data,
5317 { "data", "p22.message.data_element",
5318 FT_NONE, BASE_NONE, NULL, 0,
5319 "MessageData", HFILL }},
5320 { &hf_p22_delivery_time,
5321 { "delivery-time", "p22.delivery_time",
5322 FT_STRING, BASE_NONE, NULL, 0,
5323 "MessageDeliveryTime", HFILL }},
5324 { &hf_p22_delivery_envelope,
5325 { "delivery-envelope", "p22.delivery_envelope_element",
5326 FT_NONE, BASE_NONE, NULL, 0,
5327 "OtherMessageDeliveryFields", HFILL }},
5328 { &hf_p22_subject_ipm,
5329 { "subject-ipm", "p22.subject_ipm_element",
5330 FT_NONE, BASE_NONE, NULL, 0,
5331 "SubjectIPMField", HFILL }},
5332 { &hf_p22_ipn_originator,
5333 { "ipn-originator", "p22.ipn_originator_element",
5334 FT_NONE, BASE_NONE, NULL, 0,
5335 "IPNOriginatorField", HFILL }},
5336 { &hf_p22_ipm_intended_recipient,
5337 { "ipm-intended-recipient", "p22.ipm_intended_recipient_element",
5338 FT_NONE, BASE_NONE, NULL, 0,
5339 "IPMIntendedRecipientField", HFILL }},
5340 { &hf_p22_conversion_eits,
5341 { "conversion-eits", "p22.conversion_eits_element",
5342 FT_NONE, BASE_NONE, NULL, 0,
5343 "ConversionEITsField", HFILL }},
5344 { &hf_p22_notification_extensions,
5345 { "notification-extensions", "p22.notification_extensions",
5346 FT_UINT32, BASE_DEC, NULL, 0,
5347 "NotificationExtensionsField", HFILL }},
5348 { &hf_p22_non_receipt_reason,
5349 { "non-receipt-reason", "p22.non_receipt_reason",
5350 FT_UINT32, BASE_DEC, VALS(p22_NonReceiptReasonField_vals), 0,
5351 "NonReceiptReasonField", HFILL }},
5352 { &hf_p22_discard_reason,
5353 { "discard-reason", "p22.discard_reason",
5354 FT_UINT32, BASE_DEC, VALS(p22_DiscardReasonField_vals), 0,
5355 "DiscardReasonField", HFILL }},
5356 { &hf_p22_auto_forward_comment,
5357 { "auto-forward-comment", "p22.auto_forward_comment",
5358 FT_STRING, BASE_NONE, NULL, 0,
5359 "AutoForwardCommentField", HFILL }},
5360 { &hf_p22_returned_ipm,
5361 { "returned-ipm", "p22.returned_ipm_element",
5362 FT_NONE, BASE_NONE, NULL, 0,
5363 "ReturnedIPMField", HFILL }},
5364 { &hf_p22_nrn_extensions,
5365 { "nrn-extensions", "p22.nrn_extensions",
5366 FT_UINT32, BASE_DEC, NULL, 0,
5367 "NRNExtensionsField", HFILL }},
5368 { &hf_p22_receipt_time,
5369 { "receipt-time", "p22.receipt_time",
5370 FT_STRING, BASE_NONE, NULL, 0,
5371 "ReceiptTimeField", HFILL }},
5372 { &hf_p22_acknowledgment_mode,
5373 { "acknowledgment-mode", "p22.acknowledgment_mode",
5374 FT_UINT32, BASE_DEC, VALS(p22_AcknowledgmentModeField_vals), 0,
5375 "AcknowledgmentModeField", HFILL }},
5376 { &hf_p22_suppl_receipt_info,
5377 { "suppl-receipt-info", "p22.suppl_receipt_info",
5378 FT_STRING, BASE_NONE, NULL, 0,
5379 "SupplReceiptInfoField", HFILL }},
5380 { &hf_p22_rn_extensions,
5381 { "rn-extensions", "p22.rn_extensions",
5382 FT_UINT32, BASE_DEC, NULL, 0,
5383 "RNExtensionsField", HFILL }},
5384 { &hf_p22_NotificationExtensionsField_item,
5385 { "IPMSExtension", "p22.IPMSExtension_element",
5386 FT_NONE, BASE_NONE, NULL, 0,
5387 NULL, HFILL }},
5388 { &hf_p22_NRNExtensionsField_item,
5389 { "IPMSExtension", "p22.IPMSExtension_element",
5390 FT_NONE, BASE_NONE, NULL, 0,
5391 NULL, HFILL }},
5392 { &hf_p22_RNExtensionsField_item,
5393 { "IPMSExtension", "p22.IPMSExtension_element",
5394 FT_NONE, BASE_NONE, NULL, 0,
5395 NULL, HFILL }},
5396 { &hf_p22_OtherNotificationTypeFields_item,
5397 { "IPMSExtension", "p22.IPMSExtension_element",
5398 FT_NONE, BASE_NONE, NULL, 0,
5399 NULL, HFILL }},
5400 { &hf_p22_advice,
5401 { "advice", "p22.advice",
5402 FT_UINT32, BASE_DEC, VALS(p22_BodyPart_vals), 0,
5403 "BodyPart", HFILL }},
5404 { &hf_p22_next_available,
5405 { "next-available", "p22.next_available",
5406 FT_STRING, BASE_NONE, NULL, 0,
5407 "Time", HFILL }},
5408 { &hf_p22_new_address,
5409 { "new-address", "p22.new_address_element",
5410 FT_NONE, BASE_NONE, NULL, 0,
5411 "ORDescriptor", HFILL }},
5412 { &hf_p22_effective_from,
5413 { "effective-from", "p22.effective_from",
5414 FT_STRING, BASE_NONE, NULL, 0,
5415 "Time", HFILL }},
5416 { &hf_p22_assembly_instructions,
5417 { "assembly-instructions", "p22.assembly_instructions",
5418 FT_UINT32, BASE_DEC, NULL, 0,
5419 "BodyPartReferences", HFILL }},
5420 { &hf_p22_BodyPartReferences_item,
5421 { "BodyPartReference", "p22.BodyPartReference",
5422 FT_UINT32, BASE_DEC, VALS(p22_BodyPartReference_vals), 0,
5423 NULL, HFILL }},
5424 { &hf_p22_stored_entry,
5425 { "stored-entry", "p22.stored_entry",
5426 FT_UINT32, BASE_DEC, NULL, 0,
5427 "SequenceNumber", HFILL }},
5428 { &hf_p22_stored_content,
5429 { "stored-content", "p22.stored_content",
5430 FT_UINT32, BASE_DEC, NULL, 0,
5431 "SequenceNumber", HFILL }},
5432 { &hf_p22_submitted_body_part,
5433 { "submitted-body-part", "p22.submitted_body_part",
5434 FT_UINT64, BASE_DEC, NULL, 0,
5435 "INTEGER_1_MAX", HFILL }},
5436 { &hf_p22_stored_body_part,
5437 { "stored-body-part", "p22.stored_body_part_element",
5438 FT_NONE, BASE_NONE, NULL, 0,
5439 NULL, HFILL }},
5440 { &hf_p22_message_entry,
5441 { "message-entry", "p22.message_entry",
5442 FT_UINT32, BASE_DEC, NULL, 0,
5443 "SequenceNumber", HFILL }},
5444 { &hf_p22_body_part_number,
5445 { "body-part-number", "p22.body_part_number",
5446 FT_UINT64, BASE_DEC, NULL, 0,
5447 "BodyPartNumber", HFILL }},
5448 { &hf_p22_Languages_item,
5449 { "Language", "p22.Language",
5450 FT_STRING, BASE_NONE, NULL, 0,
5451 NULL, HFILL }},
5452 { &hf_p22_BodyPartSignatures_item,
5453 { "BodyPartSignatures item", "p22.BodyPartSignatures_item_element",
5454 FT_NONE, BASE_NONE, NULL, 0,
5455 NULL, HFILL }},
5456 { &hf_p22_body_part_signature,
5457 { "body-part-signature", "p22.body_part_signature_element",
5458 FT_NONE, BASE_NONE, NULL, 0,
5459 "BodyPartSignature", HFILL }},
5460 { &hf_p22_originator_certificate_selector,
5461 { "originator-certificate-selector", "p22.originator_certificate_selector_element",
5462 FT_NONE, BASE_NONE, NULL, 0,
5463 "CertificateAssertion", HFILL }},
5464 { &hf_p22_algorithmIdentifier,
5465 { "algorithmIdentifier", "p22.algorithmIdentifier_element",
5466 FT_NONE, BASE_NONE, NULL, 0,
5467 NULL, HFILL }},
5468 { &hf_p22_encrypted,
5469 { "encrypted", "p22.encrypted",
5470 FT_BYTES, BASE_NONE, NULL, 0,
5471 "BIT_STRING", HFILL }},
5472 { &hf_p22_content_security_label,
5473 { "content-security-label", "p22.content_security_label_element",
5474 FT_NONE, BASE_NONE, NULL, 0,
5475 "SecurityLabel", HFILL }},
5476 { &hf_p22_heading_security_label,
5477 { "heading-security-label", "p22.heading_security_label_element",
5478 FT_NONE, BASE_NONE, NULL, 0,
5479 "SecurityLabel", HFILL }},
5480 { &hf_p22_body_part_security_labels,
5481 { "body-part-security-labels", "p22.body_part_security_labels",
5482 FT_UINT32, BASE_DEC, NULL, 0,
5483 "SEQUENCE_OF_BodyPartSecurityLabel", HFILL }},
5484 { &hf_p22_body_part_security_labels_item,
5485 { "BodyPartSecurityLabel", "p22.BodyPartSecurityLabel",
5486 FT_UINT32, BASE_DEC, VALS(p22_BodyPartSecurityLabel_vals), 0,
5487 NULL, HFILL }},
5488 { &hf_p22_body_part_unlabelled,
5489 { "body-part-unlabelled", "p22.body_part_unlabelled_element",
5490 FT_NONE, BASE_NONE, NULL, 0,
5491 NULL, HFILL }},
5492 { &hf_p22_body_part_security_label,
5493 { "body-part-security-label", "p22.body_part_security_label_element",
5494 FT_NONE, BASE_NONE, NULL, 0,
5495 "SecurityLabel", HFILL }},
5496 { &hf_p22_CirculationList_item,
5497 { "CirculationMember", "p22.CirculationMember_element",
5498 FT_NONE, BASE_NONE, NULL, 0,
5499 NULL, HFILL }},
5500 { &hf_p22_circulation_recipient,
5501 { "circulation-recipient", "p22.circulation_recipient_element",
5502 FT_NONE, BASE_NONE, NULL, 0,
5503 "RecipientSpecifier", HFILL }},
5504 { &hf_p22_checked,
5505 { "checked", "p22.checked",
5506 FT_UINT32, BASE_DEC, VALS(p22_Checkmark_vals), 0,
5507 "Checkmark", HFILL }},
5508 { &hf_p22_simple,
5509 { "simple", "p22.simple_element",
5510 FT_NONE, BASE_NONE, NULL, 0,
5511 NULL, HFILL }},
5512 { &hf_p22_timestamped,
5513 { "timestamped", "p22.timestamped",
5514 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
5515 "CirculationTime", HFILL }},
5516 { &hf_p22_signed,
5517 { "signed", "p22.signed_element",
5518 FT_NONE, BASE_NONE, NULL, 0,
5519 "CirculationSignature", HFILL }},
5520 { &hf_p22_circulation_signature_algorithm_identifier,
5521 { "algorithm-identifier", "p22.algorithm_identifier_element",
5522 FT_NONE, BASE_NONE, NULL, 0,
5523 "CirculationSignatureAlgorithmIdentifier", HFILL }},
5524 { &hf_p22_timestamp,
5525 { "timestamp", "p22.timestamp",
5526 FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0,
5527 "CirculationTime", HFILL }},
5528 { &hf_p22_circulation_signature_data,
5529 { "circulation-signature-data", "p22.circulation_signature_data_element",
5530 FT_NONE, BASE_NONE, NULL, 0,
5531 "CirculationSignatureData", HFILL }},
5532 { &hf_p22_DistributionCodes_item,
5533 { "DistributionCode", "p22.DistributionCode_element",
5534 FT_NONE, BASE_NONE, NULL, 0,
5535 NULL, HFILL }},
5536 { &hf_p22_oid_code,
5537 { "oid-code", "p22.oid_code",
5538 FT_OID, BASE_NONE, NULL, 0,
5539 "OBJECT_IDENTIFIER", HFILL }},
5540 { &hf_p22_alphanumeric_code,
5541 { "alphanumeric-code", "p22.alphanumeric_code_element",
5542 FT_NONE, BASE_NONE, NULL, 0,
5543 "AlphaCode", HFILL }},
5544 { &hf_p22_or_descriptor,
5545 { "or-descriptor", "p22.or_descriptor_element",
5546 FT_NONE, BASE_NONE, NULL, 0,
5547 "ORDescriptor", HFILL }},
5548 { &hf_p22_InformationCategories_item,
5549 { "InformationCategory", "p22.InformationCategory_element",
5550 FT_NONE, BASE_NONE, NULL, 0,
5551 NULL, HFILL }},
5552 { &hf_p22_reference,
5553 { "reference", "p22.reference",
5554 FT_OID, BASE_NONE, NULL, 0,
5555 "OBJECT_IDENTIFIER", HFILL }},
5556 { &hf_p22_description,
5557 { "description", "p22.description_element",
5558 FT_NONE, BASE_NONE, NULL, 0,
5559 "DescriptionString", HFILL }},
5560 { &hf_p22_ManualHandlingInstructions_item,
5561 { "ManualHandlingInstruction", "p22.ManualHandlingInstruction_element",
5562 FT_NONE, BASE_NONE, NULL, 0,
5563 NULL, HFILL }},
5564 { &hf_p22_GeneralTextParameters_item,
5565 { "CharacterSetRegistration", "p22.CharacterSetRegistration",
5566 FT_UINT32, BASE_DEC, NULL, 0,
5567 NULL, HFILL }},
5568 { &hf_p22_related_stored_file,
5569 { "related-stored-file", "p22.related_stored_file",
5570 FT_UINT32, BASE_DEC, NULL, 0,
5571 "RelatedStoredFile", HFILL }},
5572 { &hf_p22_contents_type,
5573 { "contents-type", "p22.contents_type",
5574 FT_UINT32, BASE_DEC, VALS(p22_Contents_Type_Attribute_vals), 0,
5575 "ContentsTypeParameter", HFILL }},
5576 { &hf_p22_environment,
5577 { "environment", "p22.environment_element",
5578 FT_NONE, BASE_NONE, NULL, 0,
5579 "EnvironmentParameter", HFILL }},
5580 { &hf_p22_compression,
5581 { "compression", "p22.compression_element",
5582 FT_NONE, BASE_NONE, NULL, 0,
5583 "CompressionParameter", HFILL }},
5584 { &hf_p22_file_attributes,
5585 { "file-attributes", "p22.file_attributes_element",
5586 FT_NONE, BASE_NONE, NULL, 0,
5587 "FileAttributes", HFILL }},
5588 { &hf_p22_FileTransferData_item,
5589 { "FileTransferData item", "p22.FileTransferData_item_element",
5590 FT_NONE, BASE_NONE, NULL, 0,
5591 "EXTERNAL", HFILL }},
5592 { &hf_p22_RelatedStoredFile_item,
5593 { "RelatedStoredFile item", "p22.RelatedStoredFile_item_element",
5594 FT_NONE, BASE_NONE, NULL, 0,
5595 NULL, HFILL }},
5596 { &hf_p22_file_identifier,
5597 { "file-identifier", "p22.file_identifier",
5598 FT_UINT32, BASE_DEC, VALS(p22_FileIdentifier_vals), 0,
5599 "FileIdentifier", HFILL }},
5600 { &hf_p22_relationship,
5601 { "relationship", "p22.relationship",
5602 FT_UINT32, BASE_DEC, VALS(p22_Relationship_vals), 0,
5603 NULL, HFILL }},
5604 { &hf_p22_pathname_and_version,
5605 { "pathname-and-version", "p22.pathname_and_version_element",
5606 FT_NONE, BASE_NONE, NULL, 0,
5607 "PathnameandVersion", HFILL }},
5608 { &hf_p22_cross_reference,
5609 { "cross-reference", "p22.cross_reference_element",
5610 FT_NONE, BASE_NONE, NULL, 0,
5611 "CrossReference", HFILL }},
5612 { &hf_p22_pathname,
5613 { "pathname", "p22.pathname",
5614 FT_UINT32, BASE_DEC, VALS(p22_Pathname_Attribute_vals), 0,
5615 "Pathname_Attribute", HFILL }},
5616 { &hf_p22_file_version,
5617 { "file-version", "p22.file_version",
5618 FT_STRING, BASE_NONE, NULL, 0,
5619 "GraphicString", HFILL }},
5620 { &hf_p22_application_cross_reference,
5621 { "application-cross-reference", "p22.application_cross_reference",
5622 FT_BYTES, BASE_NONE, NULL, 0,
5623 "OCTET_STRING", HFILL }},
5624 { &hf_p22_message_reference,
5625 { "message-reference", "p22.message_reference_element",
5626 FT_NONE, BASE_NONE, NULL, 0,
5627 "MessageReference", HFILL }},
5628 { &hf_p22_body_part_reference,
5629 { "body-part-reference", "p22.body_part_reference",
5630 FT_INT32, BASE_DEC, NULL, 0,
5631 "INTEGER", HFILL }},
5632 { &hf_p22_user_relative_identifier_ref,
5633 { "user-relative-identifier", "p22.user_relative_identifier",
5634 FT_STRING, BASE_NONE, NULL, 0,
5635 "PrintableString", HFILL }},
5636 { &hf_p22_explicit_relationship,
5637 { "explicit-relationship", "p22.explicit_relationship",
5638 FT_INT32, BASE_DEC, VALS(p22_ExplicitRelationship_vals), 0,
5639 "ExplicitRelationship", HFILL }},
5640 { &hf_p22_descriptive_relationship,
5641 { "descriptive-relationship", "p22.descriptive_relationship",
5642 FT_STRING, BASE_NONE, NULL, 0,
5643 "GraphicString", HFILL }},
5644 { &hf_p22_document_type,
5645 { "document-type", "p22.document_type_element",
5646 FT_NONE, BASE_NONE, NULL, 0,
5647 "T_document_type", HFILL }},
5648 { &hf_p22_document_type_name,
5649 { "document-type-name", "p22.document_type_name",
5650 FT_OID, BASE_NONE, NULL, 0,
5651 NULL, HFILL }},
5652 { &hf_p22_parameter,
5653 { "parameter", "p22.parameter_element",
5654 FT_NONE, BASE_NONE, NULL, 0,
5655 NULL, HFILL }},
5656 { &hf_p22_constraint_set_and_abstract_syntax,
5657 { "constraint-set-and-abstract-syntax", "p22.constraint_set_and_abstract_syntax_element",
5658 FT_NONE, BASE_NONE, NULL, 0,
5659 "T_constraint_set_and_abstract_syntax", HFILL }},
5660 { &hf_p22_constraint_set_name,
5661 { "constraint-set-name", "p22.constraint_set_name",
5662 FT_OID, BASE_NONE, NULL, 0,
5663 NULL, HFILL }},
5664 { &hf_p22_abstract_syntax_name,
5665 { "abstract-syntax-name", "p22.abstract_syntax_name",
5666 FT_OID, BASE_NONE, NULL, 0,
5667 NULL, HFILL }},
5668 { &hf_p22_application_reference,
5669 { "application-reference", "p22.application_reference",
5670 FT_UINT32, BASE_DEC, VALS(p22_GeneralIdentifier_vals), 0,
5671 "GeneralIdentifier", HFILL }},
5672 { &hf_p22_machine,
5673 { "machine", "p22.machine",
5674 FT_UINT32, BASE_DEC, VALS(p22_GeneralIdentifier_vals), 0,
5675 "GeneralIdentifier", HFILL }},
5676 { &hf_p22_operating_system,
5677 { "operating-system", "p22.operating_system",
5678 FT_OID, BASE_NONE, NULL, 0,
5679 "OBJECT_IDENTIFIER", HFILL }},
5680 { &hf_p22_user_visible_string,
5681 { "user-visible-string", "p22.user_visible_string",
5682 FT_UINT32, BASE_DEC, NULL, 0,
5683 NULL, HFILL }},
5684 { &hf_p22_user_visible_string_item,
5685 { "user-visible-string item", "p22.user_visible_string_item",
5686 FT_STRING, BASE_NONE, NULL, 0,
5687 "GraphicString", HFILL }},
5688 { &hf_p22_registered_identifier,
5689 { "registered-identifier", "p22.registered_identifier",
5690 FT_OID, BASE_NONE, NULL, 0,
5691 "OBJECT_IDENTIFIER", HFILL }},
5692 { &hf_p22_descriptive_identifier,
5693 { "descriptive-identifier", "p22.descriptive_identifier",
5694 FT_UINT32, BASE_DEC, NULL, 0,
5695 NULL, HFILL }},
5696 { &hf_p22_descriptive_identifier_item,
5697 { "descriptive-identifier item", "p22.descriptive_identifier_item",
5698 FT_STRING, BASE_NONE, NULL, 0,
5699 "GraphicString", HFILL }},
5700 { &hf_p22_compression_algorithm_id,
5701 { "compression-algorithm-id", "p22.compression_algorithm_id",
5702 FT_OID, BASE_NONE, NULL, 0,
5703 NULL, HFILL }},
5704 { &hf_p22_compression_algorithm_param,
5705 { "compression-algorithm-param", "p22.compression_algorithm_param_element",
5706 FT_NONE, BASE_NONE, NULL, 0,
5707 NULL, HFILL }},
5708 { &hf_p22_permitted_actions,
5709 { "permitted-actions", "p22.permitted_actions",
5710 FT_BYTES, BASE_NONE, NULL, 0,
5711 "Permitted_Actions_Attribute", HFILL }},
5712 { &hf_p22_storage_account,
5713 { "storage-account", "p22.storage_account",
5714 FT_UINT32, BASE_DEC, VALS(p22_Account_Attribute_vals), 0,
5715 "Account_Attribute", HFILL }},
5716 { &hf_p22_date_and_time_of_creation,
5717 { "date-and-time-of-creation", "p22.date_and_time_of_creation",
5718 FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5719 "Date_and_Time_Attribute", HFILL }},
5720 { &hf_p22_date_and_time_of_last_modification,
5721 { "date-and-time-of-last-modification", "p22.date_and_time_of_last_modification",
5722 FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5723 "Date_and_Time_Attribute", HFILL }},
5724 { &hf_p22_date_and_time_of_last_read_access,
5725 { "date-and-time-of-last-read-access", "p22.date_and_time_of_last_read_access",
5726 FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5727 "Date_and_Time_Attribute", HFILL }},
5728 { &hf_p22_date_and_time_of_last_attribute_modification,
5729 { "date-and-time-of-last-attribute-modification", "p22.date_and_time_of_last_attribute_modification",
5730 FT_UINT32, BASE_DEC, VALS(ftam_Date_and_Time_Attribute_vals), 0,
5731 "Date_and_Time_Attribute", HFILL }},
5732 { &hf_p22_identity_of_creator,
5733 { "identity-of-creator", "p22.identity_of_creator",
5734 FT_UINT32, BASE_DEC, VALS(p22_User_Identity_Attribute_vals), 0,
5735 "User_Identity_Attribute", HFILL }},
5736 { &hf_p22_identity_of_last_modifier,
5737 { "identity-of-last-modifier", "p22.identity_of_last_modifier",
5738 FT_UINT32, BASE_DEC, VALS(p22_User_Identity_Attribute_vals), 0,
5739 "User_Identity_Attribute", HFILL }},
5740 { &hf_p22_identity_of_last_reader,
5741 { "identity-of-last-reader", "p22.identity_of_last_reader",
5742 FT_UINT32, BASE_DEC, VALS(p22_User_Identity_Attribute_vals), 0,
5743 "User_Identity_Attribute", HFILL }},
5744 { &hf_p22_identity_of_last_attribute_modifier,
5745 { "identity-of-last-attribute-modifier", "p22.identity_of_last_attribute_modifier",
5746 FT_UINT32, BASE_DEC, VALS(p22_User_Identity_Attribute_vals), 0,
5747 "User_Identity_Attribute", HFILL }},
5748 { &hf_p22_object_availability,
5749 { "object-availability", "p22.object_availability",
5750 FT_UINT32, BASE_DEC, VALS(ftam_Object_Availability_Attribute_vals), 0,
5751 "Object_Availability_Attribute", HFILL }},
5752 { &hf_p22_object_size,
5753 { "object-size", "p22.object_size",
5754 FT_UINT32, BASE_DEC, VALS(ftam_Object_Size_Attribute_vals), 0,
5755 "Object_Size_Attribute", HFILL }},
5756 { &hf_p22_future_object_size,
5757 { "future-object-size", "p22.future_object_size",
5758 FT_UINT32, BASE_DEC, VALS(ftam_Object_Size_Attribute_vals), 0,
5759 "Object_Size_Attribute", HFILL }},
5760 { &hf_p22_access_control,
5761 { "access-control", "p22.access_control",
5762 FT_UINT32, BASE_DEC, VALS(p22_Access_Control_Attribute_vals), 0,
5763 "Access_Control_Attribute", HFILL }},
5764 { &hf_p22_legal_qualifications,
5765 { "legal-qualifications", "p22.legal_qualifications",
5766 FT_UINT32, BASE_DEC, VALS(ftam_Legal_Qualification_Attribute_vals), 0,
5767 "Legal_Qualification_Attribute", HFILL }},
5768 { &hf_p22_private_use,
5769 { "private-use", "p22.private_use",
5770 FT_UINT32, BASE_DEC, VALS(ftam_Private_Use_Attribute_vals), 0,
5771 "Private_Use_Attribute", HFILL }},
5772 { &hf_p22_attribute_extensions,
5773 { "attribute-extensions", "p22.attribute_extensions",
5774 FT_UINT32, BASE_DEC, NULL, 0,
5775 NULL, HFILL }},
5776 { &hf_p22_incomplete_pathname,
5777 { "incomplete-pathname", "p22.incomplete_pathname",
5778 FT_UINT32, BASE_DEC, NULL, 0,
5779 "Pathname", HFILL }},
5780 { &hf_p22_complete_pathname,
5781 { "complete-pathname", "p22.complete_pathname",
5782 FT_UINT32, BASE_DEC, NULL, 0,
5783 "Pathname", HFILL }},
5784 { &hf_p22_no_value_available,
5785 { "no-value-available", "p22.no_value_available_element",
5786 FT_NONE, BASE_NONE, NULL, 0,
5787 NULL, HFILL }},
5788 { &hf_p22_account_actual_values,
5789 { "actual-values", "p22.account.actual-values",
5790 FT_STRING, BASE_NONE, NULL, 0,
5791 "Account", HFILL }},
5792 { &hf_p22_identity_actual_values,
5793 { "actual-values", "p22.identity.actual-values",
5794 FT_STRING, BASE_NONE, NULL, 0,
5795 "User_Identity", HFILL }},
5796 { &hf_p22_actual_values,
5797 { "actual-values", "p22.actual_values",
5798 FT_UINT32, BASE_DEC, NULL, 0,
5799 "SET_OF_Access_Control_Element", HFILL }},
5800 { &hf_p22_actual_values_item,
5801 { "Access-Control-Element", "p22.Access_Control_Element_element",
5802 FT_NONE, BASE_NONE, NULL, 0,
5803 NULL, HFILL }},
5804 { &hf_p22_action_list,
5805 { "action-list", "p22.action_list",
5806 FT_BYTES, BASE_NONE, NULL, 0,
5807 "Access_Request", HFILL }},
5808 { &hf_p22_concurrency_access,
5809 { "concurrency-access", "p22.concurrency_access_element",
5810 FT_NONE, BASE_NONE, NULL, 0,
5811 NULL, HFILL }},
5812 { &hf_p22_identity,
5813 { "identity", "p22.identity",
5814 FT_STRING, BASE_NONE, NULL, 0,
5815 "User_Identity", HFILL }},
5816 { &hf_p22_passwords,
5817 { "passwords", "p22.passwords_element",
5818 FT_NONE, BASE_NONE, NULL, 0,
5819 "Access_Passwords", HFILL }},
5820 { &hf_p22_location,
5821 { "location", "p22.location_element",
5822 FT_NONE, BASE_NONE, NULL, 0,
5823 "Application_Entity_Title", HFILL }},
5824 { &hf_p22_read_password,
5825 { "read-password", "p22.read_password",
5826 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5827 "Password", HFILL }},
5828 { &hf_p22_insert_password,
5829 { "insert-password", "p22.insert_password",
5830 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5831 "Password", HFILL }},
5832 { &hf_p22_replace_password,
5833 { "replace-password", "p22.replace_password",
5834 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5835 "Password", HFILL }},
5836 { &hf_p22_extend_password,
5837 { "extend-password", "p22.extend_password",
5838 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5839 "Password", HFILL }},
5840 { &hf_p22_erase_password,
5841 { "erase-password", "p22.erase_password",
5842 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5843 "Password", HFILL }},
5844 { &hf_p22_read_attribute_password,
5845 { "read-attribute-password", "p22.read_attribute_password",
5846 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5847 "Password", HFILL }},
5848 { &hf_p22_change_attribute_password,
5849 { "change-attribute-password", "p22.change_attribute_password",
5850 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5851 "Password", HFILL }},
5852 { &hf_p22_delete_password,
5853 { "delete-password", "p22.delete_password",
5854 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5855 "Password", HFILL }},
5856 { &hf_p22_pass_passwords,
5857 { "pass-passwords", "p22.pass_passwords",
5858 FT_UINT32, BASE_DEC, NULL, 0,
5859 NULL, HFILL }},
5860 { &hf_p22_link_password,
5861 { "link-password", "p22.link_password",
5862 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5863 "Password", HFILL }},
5864 { &hf_p22_graphic_string,
5865 { "graphic-string", "p22.graphic_string",
5866 FT_STRING, BASE_NONE, NULL, 0,
5867 "GraphicString", HFILL }},
5868 { &hf_p22_octet_string,
5869 { "octet-string", "p22.octet_string",
5870 FT_BYTES, BASE_NONE, NULL, 0,
5871 NULL, HFILL }},
5872 { &hf_p22_Pass_Passwords_item,
5873 { "Password", "p22.Password",
5874 FT_UINT32, BASE_DEC, VALS(p22_Password_vals), 0,
5875 NULL, HFILL }},
5876 { &hf_p22_ap_title,
5877 { "ap-title", "p22.ap_title",
5878 FT_UINT32, BASE_DEC, VALS(acse_AP_title_vals), 0,
5879 NULL, HFILL }},
5880 { &hf_p22_ae_qualifier,
5881 { "ae-qualifier", "p22.ae_qualifier",
5882 FT_UINT32, BASE_DEC, VALS(acse_ASO_qualifier_vals), 0,
5883 NULL, HFILL }},
5884 { &hf_p22_voice_message_duration,
5885 { "voice-message-duration", "p22.voice_message_duration",
5886 FT_INT32, BASE_DEC, NULL, 0,
5887 "INTEGER", HFILL }},
5888 { &hf_p22_voice_encoding_type,
5889 { "voice-encoding-type", "p22.voice_encoding_type",
5890 FT_OID, BASE_NONE, NULL, 0,
5891 "OBJECT_IDENTIFIER", HFILL }},
5892 { &hf_p22_supplementary_information,
5893 { "supplementary-information", "p22.supplementary_information",
5894 FT_STRING, BASE_NONE, NULL, 0,
5895 "IA5String", HFILL }},
5896 { &hf_p22_mts_identifier,
5897 { "mts-identifier", "p22.mts_identifier_element",
5898 FT_NONE, BASE_NONE, NULL, 0,
5899 "MessageDeliveryIdentifier", HFILL }},
5900 { &hf_p22_submission_proof,
5901 { "submission-proof", "p22.submission_proof_element",
5902 FT_NONE, BASE_NONE, NULL, 0,
5903 "SubmissionProof", HFILL }},
5904 { &hf_p22_proof_of_submission,
5905 { "proof-of-submission", "p22.proof_of_submission_element",
5906 FT_NONE, BASE_NONE, NULL, 0,
5907 "ProofOfSubmission", HFILL }},
5908 { &hf_p22_originating_MTA_certificate,
5909 { "originating-MTA-certificate", "p22.originating_MTA_certificate_element",
5910 FT_NONE, BASE_NONE, NULL, 0,
5911 "OriginatingMTACertificate", HFILL }},
5912 { &hf_p22_message_submission_envelope,
5913 { "message-submission-envelope", "p22.message_submission_envelope_element",
5914 FT_NONE, BASE_NONE, NULL, 0,
5915 "MessageSubmissionEnvelope", HFILL }},
5916 { &hf_p22_IPMSynopsis_item,
5917 { "BodyPartSynopsis", "p22.BodyPartSynopsis",
5918 FT_UINT32, BASE_DEC, VALS(p22_BodyPartSynopsis_vals), 0,
5919 NULL, HFILL }},
5920 { &hf_p22_message_synopsis,
5921 { "message", "p22.message_element",
5922 FT_NONE, BASE_NONE, NULL, 0,
5923 "MessageBodyPartSynopsis", HFILL }},
5924 { &hf_p22_non_message,
5925 { "non-message", "p22.non_message_element",
5926 FT_NONE, BASE_NONE, NULL, 0,
5927 "NonMessageBodyPartSynopsis", HFILL }},
5928 { &hf_p22_number,
5929 { "number", "p22.number",
5930 FT_UINT32, BASE_DEC, NULL, 0,
5931 "SequenceNumber", HFILL }},
5932 { &hf_p22_synopsis,
5933 { "synopsis", "p22.synopsis",
5934 FT_UINT32, BASE_DEC, NULL, 0,
5935 "IPMSynopsis", HFILL }},
5936 { &hf_p22_bp_type,
5937 { "type", "p22.type",
5938 FT_OID, BASE_NONE, NULL, 0,
5939 "OBJECT_IDENTIFIER", HFILL }},
5940 { &hf_p22_bp_parameters,
5941 { "parameters", "p22.parameters_element",
5942 FT_NONE, BASE_NONE, NULL, 0,
5943 "INSTANCE_OF", HFILL }},
5944 { &hf_p22_size,
5945 { "size", "p22.size",
5946 FT_INT32, BASE_DEC, NULL, 0,
5947 "INTEGER", HFILL }},
5948 { &hf_p22_processed,
5949 { "processed", "p22.processed",
5950 FT_BOOLEAN, BASE_NONE, NULL, 0,
5951 "BOOLEAN", HFILL }},
5952 { &hf_p22_data,
5953 { "data", "p22.data",
5954 FT_OID, BASE_NONE, NULL, 0,
5955 "OBJECT_IDENTIFIER", HFILL }},
5956 { &hf_p22_parameters,
5957 { "parameters", "p22.parameters",
5958 FT_OID, BASE_NONE, NULL, 0,
5959 "OBJECT_IDENTIFIER", HFILL }},
5960 { &hf_p22_this_child_entry,
5961 { "this-child-entry", "p22.this_child_entry",
5962 FT_UINT32, BASE_DEC, NULL, 0,
5963 "SequenceNumber", HFILL }},
5964 { &hf_p22_position,
5965 { "position", "p22.position",
5966 FT_INT32, BASE_DEC, NULL, 0,
5967 "INTEGER", HFILL }},
5968 { &hf_p22_BodyPartSignatureVerification_item,
5969 { "BodyPartSignatureVerification item", "p22.BodyPartSignatureVerification_item_element",
5970 FT_NONE, BASE_NONE, NULL, 0,
5971 NULL, HFILL }},
5972 { &hf_p22_body_part_sequence_number,
5973 { "body-part-sequence-number", "p22.body_part_sequence_number",
5974 FT_UINT64, BASE_DEC, NULL, 0,
5975 "BodyPartNumber", HFILL }},
5976 { &hf_p22_body_part_signature_status,
5977 { "body-part-signature", "p22.body_part_signature",
5978 FT_INT32, BASE_DEC, VALS(p7_SignatureStatus_vals), 0,
5979 "SignatureStatus", HFILL }},
5980 { &hf_p22_stored,
5981 { "stored", "p22.stored",
5982 FT_UINT32, BASE_DEC, NULL, 0,
5983 "SET_OF_SequenceNumber", HFILL }},
5984 { &hf_p22_stored_item,
5985 { "SequenceNumber", "p22.SequenceNumber",
5986 FT_UINT32, BASE_DEC, NULL, 0,
5987 NULL, HFILL }},
5988 { &hf_p22_absent,
5989 { "absent", "p22.absent_element",
5990 FT_NONE, BASE_NONE, NULL, 0,
5991 NULL, HFILL }},
5992 { &hf_p22_no_reply_received,
5993 { "no-reply-received", "p22.no_reply_received_element",
5994 FT_NONE, BASE_NONE, NULL, 0,
5995 NULL, HFILL }},
5996 { &hf_p22_received_replies,
5997 { "received-replies", "p22.received_replies",
5998 FT_UINT32, BASE_DEC, NULL, 0,
5999 "SEQUENCE_OF_SequenceNumber", HFILL }},
6000 { &hf_p22_received_replies_item,
6001 { "SequenceNumber", "p22.SequenceNumber",
6002 FT_UINT32, BASE_DEC, NULL, 0,
6003 NULL, HFILL }},
6004 { &hf_p22_no_ipn_received,
6005 { "no-ipn-received", "p22.no_ipn_received_element",
6006 FT_NONE, BASE_NONE, NULL, 0,
6007 NULL, HFILL }},
6008 { &hf_p22_ipns_received,
6009 { "ipns-received", "p22.ipns_received",
6010 FT_UINT32, BASE_DEC, NULL, 0,
6011 "SEQUENCE_OF_SequenceNumber", HFILL }},
6012 { &hf_p22_ipns_received_item,
6013 { "SequenceNumber", "p22.SequenceNumber",
6014 FT_UINT32, BASE_DEC, NULL, 0,
6015 NULL, HFILL }},
6016 { &hf_p22_content_or_arguments,
6017 { "content-or-arguments", "p22.content_or_arguments",
6018 FT_UINT32, BASE_DEC, VALS(p22_T_content_or_arguments_vals), 0,
6019 "T_content_or_arguments", HFILL }},
6020 { &hf_p22_original_content,
6021 { "original-content", "p22.original_content",
6022 FT_BYTES, BASE_NONE, NULL, 0,
6023 "OriginalContent", HFILL }},
6024 { &hf_p22_original_security_arguments,
6025 { "original-security-arguments", "p22.original_security_arguments_element",
6026 FT_NONE, BASE_NONE, NULL, 0,
6027 NULL, HFILL }},
6028 { &hf_p22_original_content_integrity_check,
6029 { "original-content-integrity-check", "p22.original_content_integrity_check_element",
6030 FT_NONE, BASE_NONE, NULL, 0,
6031 "OriginalContentIntegrityCheck", HFILL }},
6032 { &hf_p22_original_message_origin_authentication_check,
6033 { "original-message-origin-authentication-check", "p22.original_message_origin_authentication_check_element",
6034 FT_NONE, BASE_NONE, NULL, 0,
6035 "OriginalMessageOriginAuthenticationCheck", HFILL }},
6036 { &hf_p22_original_message_token,
6037 { "original-message-token", "p22.original_message_token_element",
6038 FT_NONE, BASE_NONE, NULL, 0,
6039 "OriginalMessageToken", HFILL }},
6040 { &hf_p22_security_diagnostic_code,
6041 { "security-diagnostic-code", "p22.security_diagnostic_code",
6042 FT_INT32, BASE_DEC, VALS(p22_SecurityDiagnosticCode_vals), 0,
6043 "SecurityDiagnosticCode", HFILL }},
6044 { &hf_p22_BodyPartTokens_item,
6045 { "BodyPartTokens item", "p22.BodyPartTokens_item_element",
6046 FT_NONE, BASE_NONE, NULL, 0,
6047 NULL, HFILL }},
6048 { &hf_p22_body_part_choice,
6049 { "body-part-choice", "p22.body_part_choice",
6050 FT_UINT32, BASE_DEC, VALS(p22_T_body_part_choice_vals), 0,
6051 "T_body_part_choice", HFILL }},
6052 { &hf_p22_encryption_token,
6053 { "encryption-token", "p22.encryption_token_element",
6054 FT_NONE, BASE_NONE, NULL, 0,
6055 "EncryptionToken", HFILL }},
6056 { &hf_p22_message_or_content_body_part,
6057 { "message-or-content-body-part", "p22.message_or_content_body_part",
6058 FT_UINT32, BASE_DEC, NULL, 0,
6059 "BodyPartTokens", HFILL }},
6060 { &hf_p22_encryption_algorithm_identifier,
6061 { "encryption-algorithm-identifier", "p22.encryption_algorithm_identifier_element",
6062 FT_NONE, BASE_NONE, NULL, 0,
6063 "AlgorithmIdentifier", HFILL }},
6064 { &hf_p22_encrypted_key,
6065 { "encrypted-key", "p22.encrypted_key",
6066 FT_BYTES, BASE_NONE, NULL, 0,
6067 "BIT_STRING", HFILL }},
6068 { &hf_p22_recipient_certificate_selector,
6069 { "recipient-certificate-selector", "p22.recipient_certificate_selector_element",
6070 FT_NONE, BASE_NONE, NULL, 0,
6071 "CertificateAssertion", HFILL }},
6072 { &hf_p22_recipient_certificate,
6073 { "recipient-certificate", "p22.recipient_certificate_element",
6074 FT_NONE, BASE_NONE, NULL, 0,
6075 "Certificates", HFILL }},
6076 { &hf_p22_ForwardedContentToken_item,
6077 { "ForwardedContentToken item", "p22.ForwardedContentToken_item_element",
6078 FT_NONE, BASE_NONE, NULL, 0,
6079 NULL, HFILL }},
6080 { &hf_p22_body_part_token_choice,
6081 { "body-part-choice", "p22.body_part_choice",
6082 FT_UINT32, BASE_DEC, VALS(p22_T_body_part_token_choice_vals), 0,
6083 "T_body_part_token_choice", HFILL }},
6084 { &hf_p22_forwarding_token,
6085 { "forwarding-token", "p22.forwarding_token_element",
6086 FT_NONE, BASE_NONE, NULL, 0,
6087 "MessageToken", HFILL }},
6088 { &hf_p22_forwarded_content_token,
6089 { "message-or-content-body-part", "p22.message_or_content_body_part",
6090 FT_UINT32, BASE_DEC, NULL, 0,
6091 "ForwardedContentToken", HFILL }},
6092 { &hf_p22_choice,
6093 { "choice", "p22.choice",
6094 FT_UINT32, BASE_DEC, VALS(p22_T_choice_vals), 0,
6095 NULL, HFILL }},
6096 { &hf_p22_non_receipt_fields,
6097 { "non-receipt-fields", "p22.non_receipt_fields_element",
6098 FT_NONE, BASE_NONE, NULL, 0,
6099 "NonReceiptFields", HFILL }},
6100 { &hf_p22_receipt_fields,
6101 { "receipt-fields", "p22.receipt_fields_element",
6102 FT_NONE, BASE_NONE, NULL, 0,
6103 "ReceiptFields", HFILL }},
6104 { &hf_p22_other_notification_type_fields,
6105 { "other-notification-type-fields", "p22.other_notification_type_fields",
6106 FT_UINT32, BASE_DEC, NULL, 0,
6107 "OtherNotificationTypeFields", HFILL }},
6108 { &hf_p22_NotificationRequests_rn,
6109 { "rn", "p22.NotificationRequests.rn",
6110 FT_BOOLEAN, 8, NULL, 0x80,
6111 NULL, HFILL }},
6112 { &hf_p22_NotificationRequests_nrn,
6113 { "nrn", "p22.NotificationRequests.nrn",
6114 FT_BOOLEAN, 8, NULL, 0x40,
6115 NULL, HFILL }},
6116 { &hf_p22_NotificationRequests_ipm_return,
6117 { "ipm-return", "p22.NotificationRequests.ipm.return",
6118 FT_BOOLEAN, 8, NULL, 0x20,
6119 NULL, HFILL }},
6120 { &hf_p22_NotificationRequests_an_supported,
6121 { "an-supported", "p22.NotificationRequests.an.supported",
6122 FT_BOOLEAN, 8, NULL, 0x10,
6123 NULL, HFILL }},
6124 { &hf_p22_NotificationRequests_suppress_an,
6125 { "suppress-an", "p22.NotificationRequests.suppress.an",
6126 FT_BOOLEAN, 8, NULL, 0x08,
6127 NULL, HFILL }},
6128 { &hf_p22_Access_Request_read,
6129 { "read", "p22.Access.Request.read",
6130 FT_BOOLEAN, 8, NULL, 0x80,
6131 NULL, HFILL }},
6132 { &hf_p22_Access_Request_insert,
6133 { "insert", "p22.Access.Request.insert",
6134 FT_BOOLEAN, 8, NULL, 0x40,
6135 NULL, HFILL }},
6136 { &hf_p22_Access_Request_replace,
6137 { "replace", "p22.Access.Request.replace",
6138 FT_BOOLEAN, 8, NULL, 0x20,
6139 NULL, HFILL }},
6140 { &hf_p22_Access_Request_extend,
6141 { "extend", "p22.Access.Request.extend",
6142 FT_BOOLEAN, 8, NULL, 0x10,
6143 NULL, HFILL }},
6144 { &hf_p22_Access_Request_erase,
6145 { "erase", "p22.Access.Request.erase",
6146 FT_BOOLEAN, 8, NULL, 0x08,
6147 NULL, HFILL }},
6148 { &hf_p22_Access_Request_read_attribute,
6149 { "read-attribute", "p22.Access.Request.read.attribute",
6150 FT_BOOLEAN, 8, NULL, 0x04,
6151 NULL, HFILL }},
6152 { &hf_p22_Access_Request_change_attribute,
6153 { "change-attribute", "p22.Access.Request.change.attribute",
6154 FT_BOOLEAN, 8, NULL, 0x02,
6155 NULL, HFILL }},
6156 { &hf_p22_Access_Request_delete_object,
6157 { "delete-object", "p22.Access.Request.delete.object",
6158 FT_BOOLEAN, 8, NULL, 0x01,
6159 NULL, HFILL }},
6160 { &hf_p22_RecipientSecurityRequest_content_non_repudiation,
6161 { "content-non-repudiation", "p22.RecipientSecurityRequest.content.non.repudiation",
6162 FT_BOOLEAN, 8, NULL, 0x80,
6163 NULL, HFILL }},
6164 { &hf_p22_RecipientSecurityRequest_content_proof,
6165 { "content-proof", "p22.RecipientSecurityRequest.content.proof",
6166 FT_BOOLEAN, 8, NULL, 0x40,
6167 NULL, HFILL }},
6168 { &hf_p22_RecipientSecurityRequest_ipn_non_repudiation,
6169 { "ipn-non-repudiation", "p22.RecipientSecurityRequest.ipn.non.repudiation",
6170 FT_BOOLEAN, 8, NULL, 0x20,
6171 NULL, HFILL }},
6172 { &hf_p22_RecipientSecurityRequest_ipn_proof,
6173 { "ipn-proof", "p22.RecipientSecurityRequest.ipn.proof",
6174 FT_BOOLEAN, 8, NULL, 0x10,
6175 NULL, HFILL }},
6178 /* List of subtrees */
6179 static int *ett[] = {
6180 &ett_p22,
6181 &ett_p22_InformationObject,
6182 &ett_p22_IPM,
6183 &ett_p22_IPMSExtension,
6184 &ett_p22_Heading,
6185 &ett_p22_IPMIdentifier_U,
6186 &ett_p22_RecipientSpecifier,
6187 &ett_p22_ORDescriptor,
6188 &ett_p22_NotificationRequests,
6189 &ett_p22_RecipientExtensionsField,
6190 &ett_p22_AuthorizingUsersField,
6191 &ett_p22_PrimaryRecipientsField,
6192 &ett_p22_CopyRecipientsField,
6193 &ett_p22_BlindCopyRecipientsField,
6194 &ett_p22_ObsoletedIPMsField,
6195 &ett_p22_RelatedIPMsField,
6196 &ett_p22_ReplyRecipientsField,
6197 &ett_p22_ExtensionsField,
6198 &ett_p22_Body,
6199 &ett_p22_BodyPart,
6200 &ett_p22_T_basic,
6201 &ett_p22_ExtendedBodyPart,
6202 &ett_p22_IA5TextBodyPart,
6203 &ett_p22_IA5TextParameters,
6204 &ett_p22_G3FacsimileBodyPart,
6205 &ett_p22_G3FacsimileParameters,
6206 &ett_p22_G3FacsimileData,
6207 &ett_p22_G4Class1BodyPart,
6208 &ett_p22_MixedModeBodyPart,
6209 &ett_p22_TeletexBodyPart,
6210 &ett_p22_TeletexParameters,
6211 &ett_p22_TeletexData,
6212 &ett_p22_VideotexBodyPart,
6213 &ett_p22_VideotexParameters,
6214 &ett_p22_EncryptedBodyPart,
6215 &ett_p22_EncryptedParameters,
6216 &ett_p22_MessageBodyPart,
6217 &ett_p22_MessageParameters,
6218 &ett_p22_IPN,
6219 &ett_p22_CommonFields,
6220 &ett_p22_NonReceiptFields,
6221 &ett_p22_ReceiptFields,
6222 &ett_p22_NotificationExtensionsField,
6223 &ett_p22_NRNExtensionsField,
6224 &ett_p22_RNExtensionsField,
6225 &ett_p22_OtherNotificationTypeFields,
6226 &ett_p22_AbsenceAdvice,
6227 &ett_p22_ChangeOfAddressAdvice,
6228 &ett_p22_IPMAssemblyInstructions,
6229 &ett_p22_BodyPartReferences,
6230 &ett_p22_BodyPartReference,
6231 &ett_p22_T_stored_body_part,
6232 &ett_p22_Languages,
6233 &ett_p22_BodyPartSignatures,
6234 &ett_p22_BodyPartSignatures_item,
6235 &ett_p22_Signature,
6236 &ett_p22_IPMSecurityLabel,
6237 &ett_p22_SEQUENCE_OF_BodyPartSecurityLabel,
6238 &ett_p22_BodyPartSecurityLabel,
6239 &ett_p22_CirculationList,
6240 &ett_p22_CirculationMember,
6241 &ett_p22_Checkmark,
6242 &ett_p22_CirculationSignatureData,
6243 &ett_p22_CirculationSignature,
6244 &ett_p22_DistributionCodes,
6245 &ett_p22_DistributionCode,
6246 &ett_p22_InformationCategories,
6247 &ett_p22_InformationCategory,
6248 &ett_p22_ManualHandlingInstructions,
6249 &ett_p22_GeneralTextParameters,
6250 &ett_p22_FileTransferParameters,
6251 &ett_p22_FileTransferData,
6252 &ett_p22_RelatedStoredFile,
6253 &ett_p22_RelatedStoredFile_item,
6254 &ett_p22_FileIdentifier,
6255 &ett_p22_PathnameandVersion,
6256 &ett_p22_CrossReference,
6257 &ett_p22_MessageReference,
6258 &ett_p22_Relationship,
6259 &ett_p22_Contents_Type_Attribute,
6260 &ett_p22_T_document_type,
6261 &ett_p22_T_constraint_set_and_abstract_syntax,
6262 &ett_p22_EnvironmentParameter,
6263 &ett_p22_T_user_visible_string,
6264 &ett_p22_GeneralIdentifier,
6265 &ett_p22_T_descriptive_identifier,
6266 &ett_p22_CompressionParameter,
6267 &ett_p22_FileAttributes,
6268 &ett_p22_Pathname_Attribute,
6269 &ett_p22_Account_Attribute,
6270 &ett_p22_User_Identity_Attribute,
6271 &ett_p22_Access_Control_Attribute,
6272 &ett_p22_SET_OF_Access_Control_Element,
6273 &ett_p22_Access_Control_Element,
6274 &ett_p22_Access_Request,
6275 &ett_p22_Access_Passwords,
6276 &ett_p22_Password,
6277 &ett_p22_Pass_Passwords,
6278 &ett_p22_Application_Entity_Title,
6279 &ett_p22_VoiceParameters,
6280 &ett_p22_ForwardedContentParameters,
6281 &ett_p22_SubmissionProof,
6282 &ett_p22_IPMSynopsis,
6283 &ett_p22_BodyPartSynopsis,
6284 &ett_p22_MessageBodyPartSynopsis,
6285 &ett_p22_NonMessageBodyPartSynopsis,
6286 &ett_p22_BodyPartDescriptor,
6287 &ett_p22_BodyPartSignatureVerification,
6288 &ett_p22_BodyPartSignatureVerification_item,
6289 &ett_p22_IPMLocation,
6290 &ett_p22_SET_OF_SequenceNumber,
6291 &ett_p22_CorrelatedDeliveredReplies,
6292 &ett_p22_SEQUENCE_OF_SequenceNumber,
6293 &ett_p22_CorrelatedDeliveredIPNs,
6294 &ett_p22_RecipientSecurityRequest,
6295 &ett_p22_IpnSecurityResponse,
6296 &ett_p22_T_content_or_arguments,
6297 &ett_p22_T_original_security_arguments,
6298 &ett_p22_BodyPartTokens,
6299 &ett_p22_BodyPartTokens_item,
6300 &ett_p22_T_body_part_choice,
6301 &ett_p22_EncryptionToken,
6302 &ett_p22_ForwardedContentToken,
6303 &ett_p22_ForwardedContentToken_item,
6304 &ett_p22_T_body_part_token_choice,
6305 &ett_p22_T_choice,
6308 /* Register protocol */
6309 proto_p22 = proto_register_protocol(PNAME, PSNAME, PFNAME);
6310 register_dissector("p22", dissect_p22, proto_p22);
6311 /* Register fields and subtrees */
6312 proto_register_field_array(proto_p22, hf, array_length(hf));
6313 proto_register_subtree_array(ett, array_length(ett));
6318 /*--- proto_reg_handoff_p22 --- */
6319 void proto_reg_handoff_p22(void) {
6321 register_ber_oid_dissector("2.6.1.19.0", dissect_AbsenceAdvice_PDU, proto_p22, "id-on-absence-advice");
6322 register_ber_oid_dissector("2.6.1.19.1", dissect_ChangeOfAddressAdvice_PDU, proto_p22, "id-on-change-of-address-advice");
6323 register_ber_oid_dissector("2.6.1.17.2", dissect_IPMAssemblyInstructions_PDU, proto_p22, "id-mst-assembly-instructions");
6324 register_ber_oid_dissector("2.6.1.5.0", dissect_IncompleteCopy_PDU, proto_p22, "id-hex-incomplete-copy");
6325 register_ber_oid_dissector("2.6.1.5.1", dissect_Languages_PDU, proto_p22, "id-hex-languages");
6326 register_ber_oid_dissector("2.6.1.5.2", dissect_AutoSubmitted_PDU, proto_p22, "id-hex-auto-submitted");
6327 register_ber_oid_dissector("2.6.1.5.3", dissect_BodyPartSignatures_PDU, proto_p22, "id-hex-body-part-signatures");
6328 register_ber_oid_dissector("2.6.1.5.4", dissect_IPMSecurityLabel_PDU, proto_p22, "id-hex-ipm-security-label");
6329 register_ber_oid_dissector("2.6.1.5.5", dissect_AuthorizationTime_PDU, proto_p22, "id-hex-authorization-time");
6330 register_ber_oid_dissector("2.6.1.5.6", dissect_CirculationList_PDU, proto_p22, "id-hex-circulation-list-recipients");
6331 register_ber_oid_dissector("2.6.1.20.0", dissect_CirculationListIndicator_PDU, proto_p22, "id-rex-circulation-list-indicator");
6332 register_ber_oid_dissector("2.6.1.5.7", dissect_DistributionCodes_PDU, proto_p22, "id-hex-distribution-codes");
6333 register_ber_oid_dissector("2.6.1.5.8", dissect_ExtendedSubject_PDU, proto_p22, "id-hex-extended-subject");
6334 register_ber_oid_dissector("2.6.1.5.9", dissect_InformationCategories_PDU, proto_p22, "id-hex-information-categories");
6335 register_ber_oid_dissector("2.6.1.5.10", dissect_ManualHandlingInstructions_PDU, proto_p22, "id-hex-manual-handling-instructions");
6336 register_ber_oid_dissector("2.6.1.5.11", dissect_OriginatorsReference_PDU, proto_p22, "id-hex-originators-reference");
6337 register_ber_oid_dissector("2.6.1.5.12", dissect_PrecedencePolicyIdentifier_PDU, proto_p22, "id-hex-precedence-policy-id");
6338 register_ber_oid_dissector("2.6.1.20.1", dissect_Precedence_PDU, proto_p22, "id-rex-precedence");
6339 register_ber_oid_dissector("2.6.1.4.0", dissect_IA5TextData_PDU, proto_p22, "id-et-ia5-text");
6340 register_ber_oid_dissector("2.6.1.11.0", dissect_IA5TextParameters_PDU, proto_p22, "id-ep-ia5-text");
6341 register_ber_oid_dissector("2.6.1.4.2", dissect_G3FacsimileData_PDU, proto_p22, "id-et-g3-facsimile");
6342 register_ber_oid_dissector("2.6.1.11.2", dissect_G3FacsimileParameters_PDU, proto_p22, "id-ep-g3-facsimile");
6343 register_ber_oid_dissector("2.6.1.4.3", dissect_G4Class1BodyPart_PDU, proto_p22, "id-et-g4-class1");
6344 register_ber_oid_dissector("2.6.1.4.4", dissect_TeletexData_PDU, proto_p22, "id-et-teletex");
6345 register_ber_oid_dissector("2.6.1.11.4", dissect_TeletexParameters_PDU, proto_p22, "id-ep-teletex");
6346 register_ber_oid_dissector("2.6.1.4.5", dissect_VideotexData_PDU, proto_p22, "id-et-videotex");
6347 register_ber_oid_dissector("2.6.1.11.5", dissect_VideotexParameters_PDU, proto_p22, "id-ep-videotex");
6348 register_ber_oid_dissector("2.6.1.4.6", dissect_EncryptedData_PDU, proto_p22, "id-et-encrypted");
6349 register_ber_oid_dissector("2.6.1.11.6", dissect_EncryptedParameters_PDU, proto_p22, "id-ep-encrypted");
6350 register_ber_oid_dissector("2.6.1.4.7", dissect_MessageData_PDU, proto_p22, "id-et-message");
6351 register_ber_oid_dissector("2.6.1.11.7", dissect_MessageParameters_PDU, proto_p22, "id-ep-message");
6352 register_ber_oid_dissector("2.6.1.4.8", dissect_MixedModeBodyPart_PDU, proto_p22, "id-et-mixed-mode");
6353 register_ber_oid_dissector("2.6.1.4.9", dissect_BilaterallyDefinedBodyPart_PDU, proto_p22, "id-et-bilaterally-defined");
6354 register_ber_oid_dissector("2.6.1.11.11", dissect_GeneralTextParameters_PDU, proto_p22, "id-ep-general-text");
6355 register_ber_oid_dissector("2.6.1.4.11", dissect_GeneralTextData_PDU, proto_p22, "id-et-general-text");
6356 register_ber_oid_dissector("2.6.1.11.12", dissect_FileTransferParameters_PDU, proto_p22, "id-ep-file-transfer");
6357 register_ber_oid_dissector("2.6.1.4.12", dissect_FileTransferData_PDU, proto_p22, "id-et-file-transfer");
6358 register_ber_oid_dissector("2.6.1.11.15", dissect_MessageParameters_PDU, proto_p22, "id-ep-notification");
6359 register_ber_oid_dissector("2.6.1.4.15", dissect_IPN_PDU, proto_p22, "id-et-notification");
6360 register_ber_oid_dissector("2.6.1.11.16", dissect_VoiceParameters_PDU, proto_p22, "id-ep-voice");
6361 register_ber_oid_dissector("2.6.1.4.16", dissect_VoiceData_PDU, proto_p22, "id-et-voice");
6362 register_ber_oid_dissector("2.6.1.11.17.2.6.1.10.1", dissect_ForwardedContentParameters_PDU, proto_p22, "id-ep-content-p22");
6363 register_ber_oid_dissector("2.6.1.4.17.2.6.1.10.1", dissect_InformationObject_PDU, proto_p22, "id-et-content-p22");
6364 register_ber_oid_dissector("2.6.1.11.17.2.6.1.10.0", dissect_ForwardedContentParameters_PDU, proto_p22, "id-ep-content-p2");
6365 register_ber_oid_dissector("2.6.1.4.17.2.6.1.10.0", dissect_InformationObject_PDU, proto_p22, "id-et-content-p2");
6366 register_ber_oid_dissector("2.6.1.11.17.1.3.26.0.4406.0.4.1", dissect_ForwardedContentParameters_PDU, proto_p22, "id-ep-content-p772");
6367 register_ber_oid_dissector("2.6.1.6.0", dissect_IPMEntryType_PDU, proto_p22, "id-sat-ipm-entry-type");
6368 register_ber_oid_dissector("2.6.1.6.1", dissect_IPMSynopsis_PDU, proto_p22, "id-sat-ipm-synopsis");
6369 register_ber_oid_dissector("2.6.1.6.2", dissect_BodyPartDescriptor_PDU, proto_p22, "id-sat-body-parts-summary");
6370 register_ber_oid_dissector("2.6.1.7.0", dissect_Heading_PDU, proto_p22, "id-hat-heading");
6371 register_ber_oid_dissector("2.6.1.7.1", dissect_ThisIPMField_PDU, proto_p22, "id-hat-this-ipm");
6372 register_ber_oid_dissector("2.6.1.7.2", dissect_OriginatorField_PDU, proto_p22, "id-hat-originator");
6373 register_ber_oid_dissector("2.6.1.7.3", dissect_RepliedToIPMField_PDU, proto_p22, "id-hat-replied-to-IPM");
6374 register_ber_oid_dissector("2.6.1.7.4", dissect_SubjectField_PDU, proto_p22, "id-hat-subject");
6375 register_ber_oid_dissector("2.6.1.7.5", dissect_ExpiryTimeField_PDU, proto_p22, "id-hat-expiry-time");
6376 register_ber_oid_dissector("2.6.1.7.6", dissect_ReplyTimeField_PDU, proto_p22, "id-hat-reply-time");
6377 register_ber_oid_dissector("2.6.1.7.7", dissect_ImportanceField_PDU, proto_p22, "id-hat-importance");
6378 register_ber_oid_dissector("2.6.1.7.8", dissect_SensitivityField_PDU, proto_p22, "id-hat-sensitivity");
6379 register_ber_oid_dissector("2.6.1.7.9", dissect_AutoForwardedField_PDU, proto_p22, "id-hat-auto-forwarded");
6380 register_ber_oid_dissector("2.6.1.7.10", dissect_AuthorizingUsersSubfield_PDU, proto_p22, "id-hat-authorizing-users");
6381 register_ber_oid_dissector("2.6.1.7.11", dissect_PrimaryRecipientsSubfield_PDU, proto_p22, "id-hat-primary-recipients");
6382 register_ber_oid_dissector("2.6.1.7.12", dissect_CopyRecipientsSubfield_PDU, proto_p22, "id-hat-copy-recipients");
6383 register_ber_oid_dissector("2.6.1.7.13", dissect_BlindCopyRecipientsSubfield_PDU, proto_p22, "id-hat-blind-copy-recipients");
6384 register_ber_oid_dissector("2.6.1.7.14", dissect_ObsoletedIPMsSubfield_PDU, proto_p22, "id-hat-obsoleted-IPMs");
6385 register_ber_oid_dissector("2.6.1.7.15", dissect_RelatedIPMsSubfield_PDU, proto_p22, "id-hat-related-IPMs");
6386 register_ber_oid_dissector("2.6.1.7.16", dissect_ReplyRecipientsSubfield_PDU, proto_p22, "id-hat-reply-recipients");
6387 register_ber_oid_dissector("2.6.1.7.17", dissect_IncompleteCopy_PDU, proto_p22, "id-hat-incomplete-copy");
6388 register_ber_oid_dissector("2.6.1.7.18", dissect_Language_PDU, proto_p22, "id-hat-languages");
6389 register_ber_oid_dissector("2.6.1.7.19", dissect_ORDescriptor_PDU, proto_p22, "id-hat-rn-requestors");
6390 register_ber_oid_dissector("2.6.1.7.20", dissect_ORDescriptor_PDU, proto_p22, "id-hat-nrn-requestors");
6391 register_ber_oid_dissector("2.6.1.7.21", dissect_ORDescriptor_PDU, proto_p22, "id-hat-reply-requestors");
6392 register_ber_oid_dissector("2.6.1.7.22", dissect_AutoSubmitted_PDU, proto_p22, "id-hat-auto-submitted");
6393 register_ber_oid_dissector("2.6.1.7.23", dissect_BodyPartSignatures_PDU, proto_p22, "id-hat-body-part-signatures");
6394 register_ber_oid_dissector("2.6.1.7.24", dissect_IPMSecurityLabel_PDU, proto_p22, "id-hat-ipm-security-label");
6395 register_ber_oid_dissector("2.6.1.7.25", dissect_BodyPartSecurityLabel_PDU, proto_p22, "id-hat-body-part-security-label");
6396 register_ber_oid_dissector("2.6.1.7.26", dissect_BodyPartTokens_PDU, proto_p22, "id-hat-body-part-encryption-token");
6397 register_ber_oid_dissector("2.6.1.7.27", dissect_AuthorizationTime_PDU, proto_p22, "id-hat-authorization-time");
6398 register_ber_oid_dissector("2.6.1.7.28", dissect_CirculationMember_PDU, proto_p22, "id-hat-circulation-list-recipients");
6399 register_ber_oid_dissector("2.6.1.7.29", dissect_DistributionCode_PDU, proto_p22, "id-hat-distribution-codes");
6400 register_ber_oid_dissector("2.6.1.7.30", dissect_ExtendedSubject_PDU, proto_p22, "id-hat-extended-subject");
6401 register_ber_oid_dissector("2.6.1.7.31", dissect_InformationCategory_PDU, proto_p22, "id-hat-information-category");
6402 register_ber_oid_dissector("2.6.1.7.32", dissect_ManualHandlingInstruction_PDU, proto_p22, "id-hat-manual-handling-instructions");
6403 register_ber_oid_dissector("2.6.1.7.33", dissect_OriginatorsReference_PDU, proto_p22, "id-hat-originators-reference");
6404 register_ber_oid_dissector("2.6.1.7.34", dissect_PrecedencePolicyIdentifier_PDU, proto_p22, "id-hat-precedence-policy-id");
6405 register_ber_oid_dissector("2.6.1.7.35", dissect_ForwardedContentToken_PDU, proto_p22, "id-hat-forwarded-content-token");
6406 register_ber_oid_dissector("2.6.1.7.37", dissect_Precedence_PDU, proto_p22, "id-hat-precedence");
6407 register_ber_oid_dissector("2.6.1.7.38", dissect_BodyPartSignatureVerification_PDU, proto_p22, "id-hat-body-part-signature-verification-status");
6408 register_ber_oid_dissector("2.6.1.8.0", dissect_Body_PDU, proto_p22, "id-bat-body");
6409 register_ber_oid_dissector("2.6.1.13.0", dissect_CorrelatedDeliveredIPNs_PDU, proto_p22, "id-cat-correlated-delivered-ipns");
6410 register_ber_oid_dissector("2.6.1.13.1", dissect_CorrelatedDeliveredReplies_PDU, proto_p22, "id-cat-correlated-delivered-replies");
6411 register_ber_oid_dissector("2.6.1.13.2", dissect_DeliveredIPNStatus_PDU, proto_p22, "id-cat-delivered-ipn-summary");
6412 register_ber_oid_dissector("2.6.1.13.3", dissect_DeliveredReplyStatus_PDU, proto_p22, "id-cat-delivered-replies-summary");
6413 register_ber_oid_dissector("2.6.1.13.7", dissect_IPMLocation_PDU, proto_p22, "id-cat-obsoleted-ipms");
6414 register_ber_oid_dissector("2.6.1.13.14", dissect_SubmittedIPNStatus_PDU, proto_p22, "id-cat-submitted-ipn-status");
6415 register_ber_oid_dissector("2.6.1.13.16", dissect_SubmittedReplyStatus_PDU, proto_p22, "id-cat-submitted-reply-status");
6416 register_ber_oid_dissector("2.6.1.13.18", dissect_RecipientCategory_PDU, proto_p22, "id-cat-recipient-category");
6417 register_ber_oid_dissector("2.6.1.18.0", dissect_RecipientSecurityRequest_PDU, proto_p22, "id-sec-ipm-security-request");
6418 register_ber_oid_dissector("2.6.1.18.1", dissect_IpnSecurityResponse_PDU, proto_p22, "id-sec-security-common-fields");
6421 register_ber_oid_dissector("2.6.1.10.0", dissect_p22, proto_p22, "InterPersonal Message (1984)");
6422 register_ber_oid_dissector("2.6.1.10.1", dissect_p22, proto_p22, "InterPersonal Message (1988)");