2 # X.411 (MTA Access and Transfer) conformance file
5 CountryName TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(p1_CountryName_U_vals) BITMASK = 0
6 Time TYPE = FT_STRING DISPLAY = BASE_NONE STRING = NULL BITMASK = 0
8 #.IMPORT ../x509ce/x509ce-exp.cnf
9 #.IMPORT ../x509if/x509if-exp.cnf
10 #.IMPORT ../x509sat/x509sat-exp.cnf
11 #.IMPORT ../x509af/x509af-exp.cnf
12 #.IMPORT ../ros/ros-exp.cnf
13 #.IMPORT ../rtse/rtse-exp.cnf
16 # These gives unused code warnings
17 MTAOriginatorRequestedAlternateRecipient
19 #The following are only referenced through the SIGNATURE MACRO
20 #and so have no representation on the wire.
21 ProofOfDeliveryAlgorithmIdentifier
22 ContentIntegrityAlgorithmIdentifier
23 MessageOriginAuthenticationAlgorithmIdentifier
24 ProbeOriginAuthenticationAlgorithmIdentifier
25 ReportOriginAuthenticationAlgorithmIdentifier
26 ProofOfSubmissionAlgorithmIdentifier
40 # These fields are only used through COMPONENTS OF,
41 # and consequently generate unused code warnings
42 PerMessageTransferFields
43 PerProbeTransferFields
44 PerReportTransferFields
45 PerMessageSubmissionFields
46 PerProbeSubmissionFields
47 PerReportDeliveryFields
48 PerRecipientReportFields
49 #PerRecipientReportFields/report-type
50 InternalAdditionalActions
63 EncodedInformationTypes
64 EncodedInformationTypesConstraints
68 G3FacsimileNonBasicParameters
69 ImproperlySpecifiedRecipients
71 MessageDeliveryIdentifier
73 MessageOriginAuthenticationCheck
75 MessageSecurityLabel_PDU
76 MessageSubmissionEnvelope
77 MessageSubmissionIdentifier
81 ORAddressAndOrDirectoryName
84 OriginalEncodedInformationTypes
85 OriginatingMTACertificate
86 OtherMessageDeliveryFields
88 PerRecipientProbeSubmissionFields
89 ProbeSubmissionEnvelope
90 ProbeSubmissionIdentifier
93 RequestedDeliveryMethod
98 SupplementaryInformation
99 TeletexNonBasicParameters
101 NonDeliveryReasonCode
102 NonDeliveryDiagnosticCode
108 # Forward declaration of Classes
109 # CONNECTION-PACKAGE CONTRACT from ROS
110 #.CLASS CONNECTION-PACKAGE
111 &bind ClassReference OPERATION
112 &unbind ClassReference OPERATION
113 &responderCanUnbind BooleanType
114 &unbindCanFail BooleanType
115 &id ObjectIdentifierType
118 #.CLASS APPLICATION-CONTEXT
119 &associationContract ClassReference CONTRACT
120 &associationRealization
122 &AbstractSyntaxes ClassReference ABSTRACT-SYNTAX
123 &applicationContextName ObjectIdentifierType
128 &connection ClassReference CONNECTION-PACKAGE
129 &OperationsOf ClassReference OPERATION-PACKAGE
130 &InitiatorConsumerOf ClassReference OPERATION-PACKAGE
131 &InitiatorSupplierOf ClassReference OPERATION-PACKAGE
132 &id ObjectIdentifierType
136 &Is ClassReference MHS-OBJECT
137 &Initiates ClassReference CONTRACT
138 &Responds ClassReference CONTRACT
139 &InitiatesAndResponds ClassReference CONTRACT
140 &id ObjectIdentifierType
144 #.CLASS ABSTRACT-OPERATION
146 &argumentTypeOptional BooleanType
147 &returnResult BooleanType
149 &resultTypeOptional BooleanType
150 &Errors ClassReference ERROR
151 &Linked ClassReference OPERATION
152 &synchronous BooleanType
153 &alwaysReturns BooleanType
154 &InvokePriority _FixedTypeValueSetFieldSpec
155 &ResultPriority _FixedTypeValueSetFieldSpec
156 &operationCode TypeReference Code
160 #.CLASS ABSTRACT-ERROR
162 ¶meterTypeOptional BooleanType
163 &ErrorPriority _FixedTypeValueSetFieldSpec
164 &errorCode TypeReference Code
168 &id TypeReference ExtensionType
170 &absent _VariableTypeValueSetFieldSpec
171 &recommended TypeReference Criticality
174 #.CLASS EXTENSION-ATTRIBUTE
186 MTABindArgument/authenticated AuthenticatedArgument
187 MTABindResult/authenticated AuthenticatedResult
189 ExtensionField/value ExtensionValue
190 SecurityCategory/value CategoryValue
193 PrivateDomainName/printable printable-private-domain-name
194 PrivateDomainName/numeric numeric-private-domain-name
195 PrivateDomainIdentifier/printable printable-private-domain-identifier
196 PrivateDomainIdentifier/numeric numeric-private-domain-identifier
198 TeletexPersonalName/surname teletex-surname
199 PersonalName/surname printable-surname
200 UniversalPersonalName/surname universal-surname
202 TeletexPersonalName/given-name teletex-given-name
203 PersonalName/given-name printable-given-name
204 UniversalPersonalName/given-name universal-given-name
206 TeletexPersonalName/initials teletex-initials
207 PersonalName/initials printable-initials
208 UniversalPersonalName/initials universal-initials
210 TeletexPersonalName/generation-qualifier teletex-generation-qualifier
211 PersonalName/generation-qualifier printable-generation-qualifier
212 UniversalPersonalName/generation-qualifier universal-generation-qualifier
214 BuiltInDomainDefinedAttribute/type printable-type
215 UniversalDomainDefinedAttribute/type universal-type
216 SecurityCategory/type category-type
217 ExtensionField/type extension-type
219 TeletexDomainDefinedAttribute/value teletex-value
220 BuiltInDomainDefinedAttribute/value printable-value
221 UniversalDomainDefinedAttribute/value universal-value
222 SecurityCategory/value category-value
223 ExtensionField/value extension-value
225 LastTraceInformation/report-type trace-report-type
226 PerRecipientReportDeliveryFields/report-type delivery-report-type
227 PerRecipientReportFields/report-type/delivery report-type-delivery
229 PerRecipientMessageSubmissionFields/recipient-name submission-recipient-name
230 PerRecipientProbeSubmissionFields/recipient-name probe-recipient-name
232 PerRecipientReportTransferFields/actual-recipient-name mta-actual-recipient-name
234 MessageClass/priority class-priority
235 DeliveryQueue/octets delivery-queue-octets
236 PerRecipientReportFields/report-type/non-delivery non-delivery-report
238 MTABindResult/authenticated authenticated-result
239 MTABindArgument/authenticated authenticated-argument
241 MTABindResult/authenticated/responder-name authenticated-responder-name
242 MTABindArgument/authenticated/initiator-name authenticated-initiator-name
244 RegistrationTypes/extensions type-extensions
245 RegistrationTypes/extensions/_item type-extensions-item
247 MessageSubmissionArgument/envelope message-submission-envelope
249 OtherMessageDeliveryFields/content-type delivered-content-type
250 Report/content report-content
252 ReportDeliveryResult/extensions max-extensions
254 OtherMessageDeliveryFields/originator-name delivered-originator-name
256 PDSParameter/teletex-string pds-teletex-string
258 PerDomainBilateralInformation/domain bilateral-domain
260 Report/envelope report-envelope
261 Message/envelope message-envelope
263 PerRecipientReportTransferFields/originally-intended-recipient-name report-originally-intended-recipient-name
265 MessageSubmissionEnvelope/originator-name mts-originator-name
266 ProbeSubmissionEnvelope/originator-name mts-originator-name
268 MessageTransferEnvelope/originator-name mta-originator-name
269 ProbeTransferEnvelope/originator-name mta-originator-name
271 MessageSubmissionEnvelope/per-recipient-fields per-recipient-message-submission-fields
272 ProbeTransferEnvelope/per-recipient-fields per-recipient-probe-transfer-fields
273 ProbeSubmissionEnvelope/per-recipient-fields per-recipient-probe-submission-fields
274 ReportDeliveryArgument/per-recipient-fields per-recipient-report-delivery-fields
275 ReportDeliveryEnvelope/per-recipient-fields per-recipient-report-delivery-fields
277 MessageSubmissionEnvelope/per-recipient-fields/_item per-recipient-message-submission-fields-item
278 ProbeTransferEnvelope/per-recipient-fields/_item per-recipient-probe-transfer-fields-item
279 ProbeSubmissionEnvelope/per-recipient-fields/_item per-recipient-probe-submission-fields-item
280 ReportDeliveryArgument/per-recipient-fields/_item per-recipient-report-delivery-fields-item
281 ReportDeliveryEnvelope/per-recipient-fields/_item per-recipient-report-delivery-fields-item
283 MessageTransferEnvelope/per-recipient-fields/_item per-recipient-message-fields-item
285 MessageTransferEnvelope/per-recipient-fields per-recipient-message-fields
286 ReportTransferContent/per-recipient-fields per-recipient-report-fields
288 AsymmetricTokenData/name/mta token-mta
289 AsymmetricTokenData/name/recipient-name token-recipient-name
291 TokenData/type token-data-type
292 CertificateSelectors/content-integrity-check selectors-content-integrity-check
294 # This table creates the value_sting to name P3 operation codes and errors
295 # in file packet-p3-table.c which is included in the template file
298 /* P3 ABSTRACT-OPERATIONS */
299 const value_string p3_opr_code_string_vals[] = {
300 #.TABLE_BODY OPERATION
301 { %(&operationCode)s, "%(_ident)s" },
309 static const value_string p3_err_code_string_vals[] = {
311 { %(&errorCode)s, "%(_ident)s" },
317 # Create a table of opcode and corresponding args and res
319 static const ros_opr_t p3_opr_tab[] = {
320 #.TABLE11_BODY OPERATION
322 { %(&operationCode)-25s, %(_argument_pdu)s, %(_result_pdu)s },
324 { 0, (new_dissector_t)(-1), (new_dissector_t)(-1) },
329 static const ros_err_t p3_err_tab[] = {
332 { %(&errorCode)s, %(_parameter_pdu)s },
334 { 0, (new_dissector_t)(-1) },
340 OPERATION.&ArgumentType
341 OPERATION.&ResultType
346 RecipientReassignmentProhibited N p1.extension 1
347 OriginatorRequestedAlternateRecipient N p1.extension 2
348 DLExpansionProhibited N p1.extension 3
349 ConversionWithLossProhibited N p1.extension 4
350 LatestDeliveryTime N p1.extension 5
351 RequestedDeliveryMethod N p1.extension 6
352 PhysicalForwardingProhibited N p1.extension 7
353 PhysicalForwardingAddressRequest N p1.extension 8
354 PhysicalDeliveryModes N p1.extension 9
355 RegisteredMailType N p1.extension 10
356 RecipientNumberForAdvice N p1.extension 11
357 PhysicalRenditionAttributes N p1.extension 12
358 OriginatorReturnAddress N p1.extension 13
359 PhysicalDeliveryReportRequest N p1.extension 14
360 OriginatorCertificate N p1.extension 15
361 MessageToken N p1.extension 16
362 ContentConfidentialityAlgorithmIdentifier N p1.extension 17
363 ContentIntegrityCheck N p1.extension 18
364 MessageOriginAuthenticationCheck N p1.extension 19
365 MessageSecurityLabel N p1.extension 20
366 ProofOfSubmissionRequest N p1.extension 21
367 ProofOfDeliveryRequest N p1.extension 22
368 ContentCorrelator N p1.extension 23
369 ProbeOriginAuthenticationCheck N p1.extension 24
370 RedirectionHistory N p1.extension 25
371 DLExpansionHistory N p1.extension 26
372 PhysicalForwardingAddress N p1.extension 27
373 RecipientCertificate N p1.extension 28
374 ProofOfDelivery N p1.extension 29
375 OriginatorAndDLExpansionHistory N p1.extension 30
376 ReportingDLName N p1.extension 31
377 ReportingMTACertificate N p1.extension 32
378 ReportOriginAuthenticationCheck N p1.extension 33
379 OriginatingMTACertificate N p1.extension 34
380 ProofOfSubmission N p1.extension 35
382 TraceInformation N p1.extension 37
383 InternalTraceInformation N p1.extension 38
384 ReportingMTAName N p1.extension 39
385 ExtendedCertificates N p1.extension 40
387 DLExemptedRecipients N p1.extension 42
389 CertificateSelectors N p1.extension 45
391 CommonName N p1.extension-attribute 1
392 TeletexCommonName N p1.extension-attribute 2
393 TeletexOrganizationName N p1.extension-attribute 3
394 TeletexPersonalName N p1.extension-attribute 4
395 TeletexOrganizationalUnitNames N p1.extension-attribute 5
396 TeletexDomainDefinedAttributes N p1.extension-attribute 6
397 PDSName N p1.extension-attribute 7
398 PhysicalDeliveryCountryName N p1.extension-attribute 8
399 PostalCode N p1.extension-attribute 9
400 PhysicalDeliveryOfficeName N p1.extension-attribute 10
401 PhysicalDeliveryOfficeNumber N p1.extension-attribute 11
402 ExtensionORAddressComponents N p1.extension-attribute 12
403 PhysicalDeliveryPersonalName N p1.extension-attribute 13
404 PhysicalDeliveryOrganizationName N p1.extension-attribute 14
405 ExtensionPhysicalDeliveryAddressComponents N p1.extension-attribute 15
406 UnformattedPostalAddress N p1.extension-attribute 16
407 StreetAddress N p1.extension-attribute 17
408 PostOfficeBoxAddress N p1.extension-attribute 18
409 PosteRestanteAddress N p1.extension-attribute 19
410 UniquePostalName N p1.extension-attribute 20
411 LocalPostalAttributes N p1.extension-attribute 21
412 ExtendedNetworkAddress N p1.extension-attribute 22
413 TerminalType N p1.extension-attribute 23
414 UniversalCommonName N p1.extension-attribute 24
415 UniversalOrganizationName N p1.extension-attribute 25
416 UniversalPersonalName N p1.extension-attribute 26
417 UniversalOrganizationalUnitNames N p1.extension-attribute 27
418 UniversalDomainDefinedAttributes N p1.extension-attribute 28
419 UniversalPhysicalDeliveryOfficeName N p1.extension-attribute 29
420 UniversalPhysicalDeliveryOfficeNumber N p1.extension-attribute 30
421 UniversalExtensionORAddressComponents N p1.extension-attribute 31
422 UniversalPhysicalDeliveryPersonalName N p1.extension-attribute 32
423 UniversalPhysicalDeliveryOrganizationName N p1.extension-attribute 33
424 UniversalExtensionPhysicalDeliveryAddressComponents N p1.extension-attribute 34
425 UniversalUnformattedPostalAddress N p1.extension-attribute 35
426 UniversalStreetAddress N p1.extension-attribute 36
427 UniversalPostOfficeBoxAddress N p1.extension-attribute 37
428 UniversalPosteRestanteAddress N p1.extension-attribute 38
429 UniversalUniquePostalName N p1.extension-attribute 39
430 UniversalLocalPostalAttributes N p1.extension-attribute 40
432 #ReportDeliveryArgument B "2.6.1.4.14" "id-et-report"
434 AsymmetricToken B "2.6.3.6.0" "id-tok-asymmetricToken"
435 MTANameAndOptionalGDI B "2.6.5.6.0" "id-on-mtaName"
437 BindTokenSignedData N p1.tokendata 1
438 MessageTokenSignedData N p1.tokendata 2
439 # the next two are unlikely to ever be seen (unless in a bad encoding)
440 MessageTokenEncryptedData N p1.tokendata 3
441 BindTokenEncryptedData N p1.tokendata 4
443 # X402 - see master list in acp133.cnf
445 ContentLength B "2.6.5.2.0" "id-at-mhs-maximum-content-length"
446 ExtendedContentType B "2.6.5.2.1" "id-at-mhs-deliverable-content-types"
447 ExtendedEncodedInformationType B "2.6.5.2.2" "id-at-mhs-exclusively-acceptable-eits"
448 ORName B "2.6.5.2.3" "id-at-mhs-dl-members"
449 ORAddress B "2.6.5.2.6" "id-at-mhs-or-addresses"
450 ExtendedContentType B "2.6.5.2.9" "id-at-mhs-supported-content-types"
451 ORName B "2.6.5.2.12" "id-at-mhs-dl-archive-service"
452 ORName B "2.6.5.2.15" "id-at-mhs-dl-subscription-service"
453 ExtendedEncodedInformationType B "2.6.5.2.17" "id-at-mhs-acceptable-eits"
454 ExtendedEncodedInformationType B "2.6.5.2.18" "id-at-mhs-unacceptable-eits"
457 # ACP133 - see master list in acp133.cnf
458 ORName B "2.16.840.1.101.2.1.5.47" "id-at-aLExemptedAddressProcessor"
459 ORAddress B "2.16.840.1.101.2.2.1.134.1" "id-at-collective-mhs-or-addresses"
461 # MSGeneralAttributeTypes - see master list in p7.cnf
462 CertificateSelectors B "2.6.4.3.80" "id-att-certificate-selectors"
463 Content B "2.6.4.3.1" "id-att-content"
464 ContentCorrelator B "2.6.4.3.3" "id-att-content-correlator"
465 ContentIdentifier B "2.6.4.3.4" "id-att-content-identifier"
466 ContentIntegrityCheck B "2.6.4.3.5" "id-att-content-inetgrity-check"
467 ContentLength B "2.6.4.3.6" "id-att-content-length"
468 ExtendedContentType B "2.6.4.3.8" "id-att-content-type"
469 ConversionWithLossProhibited B "2.6.4.3.9" "id-att-conversion-with-loss-prohibited"
470 DeferredDeliveryTime B "2.6.4.3.51" "id-att-deferred-delivery-time"
471 DeliveryFlags B "2.6.4.3.13" "id-att-delivery-flags"
472 ORName B "2.6.4.3.78" "id-att-dl-exempted-recipients"
473 DLExpansion B "2.6.4.3.14" "id-att-dl-expansion-history"
474 DLExpansionProhibited B "2.6.4.3.53" "id-att-dl-expansion-prohibited"
475 InternalTraceInformationElement B "2.6.4.3.54" "id-att-internal-trace-information"
476 LatestDeliveryTime B "2.6.4.3.55" "id-att-latest-delivery-time"
477 MessageDeliveryEnvelope B "2.6.4.3.18" "id-att-message-delivery-envelope"
478 MessageDeliveryTime B "2.6.4.3.20" "id-att-message-delivery-time"
479 MTSIdentifier B "2.6.4.3.19" "id-att-message-identifier"
480 MessageOriginAuthenticationCheck B "2.6.4.3.21" "id-at-message-orgin-authentication-check"
481 MessageSecurityLabel B "2.6.4.3.22" "id-att-message-security-label"
482 MessageSubmissionEnvelope B "2.6.4.3.59" "id-att-message-submission-envelope"
483 MessageSubmissionTime B "2.6.4.3.23" "id-att-message-submission-time"
484 MessageToken B "2.6.4.3.24" "id-att-message-token"
485 ExtendedCertificates B "2.6.4.3.81" "id-att-multiple-originator-certificates"
486 ORName B "2.6.4.3.17" "id-att-originally-intended-recipient-name"
487 OriginatingMTACertificate B "2.6.4.3.62" "id-att-originating-MTA-certificate"
488 OriginatorCertificate B "2.6.4.3.26" "id-att-originator-certificate"
489 ORName B "2.6.4.3.27" "id-att-originator-name"
490 OriginatorReportRequest B "2.6.4.3.63" "id-att-originator-report-request"
491 OriginatorReturnAddress B "2.6.4.3.64" "id-att-originator-return-address"
492 ORName B "2.6.4.3.28" "id-att-other-recipient-names"
493 PerMessageIndicators B "2.6.4.3.65" "id-att-per-message-indicators"
494 PerRecipientMessageSubmissionFields B "2.6.4.3.66" "id-att-per-recipient-message-submission-fields"
495 PerRecipientProbeSubmissionFields B "2.6.4.3.67" "id-att-per-recipient-probe-submission-fields"
496 PerRecipientReportDeliveryFields B "2.6.4.3.30" "id-att-per-recipient-report-delivery-fields"
497 Priority B "2.6.4.3.31" "id-att-priority"
498 ProbeOriginAuthenticationCheck B "2.6.4.3.68" "id-att-probe-origin-authentication-check"
499 ProbeSubmissionEnvelope B "2.6.4.3.69" "id-att-probe-submission-envelope"
500 ProofOfDeliveryRequest B "2.6.4.3.32" "id-att-proof-of-delivery-request"
501 ProofOfSubmission B "2.6.4.3.70" "id-att-proof-of-submission"
502 ExtendedCertificates B "2.6.4.3.82" "id-att-recipient-certificate"
503 ORName B "2.6.4.3.71" "id-att-recipient-names"
504 RecipientReassignmentProhibited B "2.6.4.3.72" "id-att-recipient-reassignment-prohibited"
505 Redirection B "2.6.4.3.33" "id-at-redirection-history"
506 ReportDeliveryEnvelope B "2.6.4.3.34" "id-att-report-delivery-envelope"
507 ReportingDLName B "2.6.4.3.35" "id-att-reporting-DL-name"
508 ReportingMTACertificate B "2.6.4.3.36" "id-att-reporting-MTA-certificate"
509 ReportOriginAuthenticationCheck B "2.6.4.3.37" "id-att-report-origin-authentication-check"
510 SecurityClassification B "2.6.4.3.38" "id-att-security-classification"
511 SubjectSubmissionIdentifier B "2.6.4.3.40" "id-att-subject-submission-identifier"
512 ORName B "2.6.4.3.41" "id-att-this-recipient-name"
513 TraceInformationElement B "2.6.4.3.75" "id-att-trace-information"
515 # IPMSMessageStoreAttributes - see master list in p22.cnf
516 MessageToken B "2.6.1.7.36" "id-hat-forwarded-token"
518 #.FN_BODY AdditionalInformation
519 proto_item *item = NULL;
523 /* work out the length */
524 loffset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, NULL, NULL, NULL);
525 (void) dissect_ber_length(actx->pinfo, tree, tvb, loffset, &len, NULL);
527 item = proto_tree_add_item(tree, hf_index, tvb, offset, len, ENC_BIG_ENDIAN);
528 tree = proto_item_add_subtree(item, ett_p1_additional_information);
529 proto_item_append_text(tree, " (The use of this field is \"strongly deprecated\".)");
531 offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
533 #.FN_BODY RegistrationTypes/extensions/_item
534 /*XXX not implemented yet */
536 #.FN_BODY ExtensionField/value
539 if(actx->external.indirect_ref_present) {
540 proto_item_append_text(tree, " (%%s)", val_to_str(actx->external.indirect_reference, p1_StandardExtension_vals, "standard-extension %%d"));
541 if (dissector_try_uint(p1_extension_dissector_table, actx->external.indirect_reference, tvb, actx->pinfo, tree)) {
542 offset = tvb_reported_length(tvb);
545 proto_tree *next_tree;
547 next_tree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_p1_unknown_standard_extension, &item,
548 "Dissector for standard-extension %%d not implemented. Contact Wireshark developers if you want this supported", actx->external.indirect_reference);
549 offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree);
550 expert_add_info(actx->pinfo, item, &ei_p1_unknown_standard_extension);
552 } else if (actx->external.direct_ref_present) {
553 offset = call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
554 name = oid_resolved_from_string(wmem_packet_scope(), actx->external.direct_reference);
555 proto_item_append_text(tree, " (%%s)", name ? name : actx->external.direct_reference);
559 #.FN_PARS SecurityCategoryIdentifier
560 FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
562 #.FN_BODY SecurityCategoryValue
565 if (actx->external.direct_reference) {
566 offset = call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
567 name = oid_resolved_from_string(wmem_packet_scope(), actx->external.direct_reference);
568 proto_item_append_text(tree, " (%%s)", name ? name : actx->external.direct_reference);
570 offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
573 #.FN_PARS ExtensionAttributeType
574 VAL_PTR = &actx->external.indirect_reference
576 #.FN_BODY ExtensionAttribute/extension-attribute-value
578 proto_item_append_text(tree, " (%%s)", val_to_str(actx->external.indirect_reference, p1_ExtensionAttributeType_vals, "extension-attribute-type %%d"));
579 if (dissector_try_uint(p1_extension_attribute_dissector_table, actx->external.indirect_reference, tvb, actx->pinfo, tree)) {
580 offset =tvb_reported_length(tvb);
583 proto_tree *next_tree;
585 next_tree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_p1_unknown_extension_attribute_type, &item,
586 "Dissector for extension-attribute-type %%d not implemented. Contact Wireshark developers if you want this supported", actx->external.indirect_reference);
587 offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree);
588 expert_add_info(actx->pinfo, item, &ei_p1_unknown_extension_attribute_type);
592 #.FN_BODY RefusedOperation/refused-argument/refused-extension
593 /*XXX not implemented yet */
595 #.FN_BODY CountryName
596 do_address("/C=", NULL, actx);
600 #.FN_BODY AdministrationDomainName
601 do_address("/A=", NULL, actx);
605 #.FN_PARS StandardExtension VAL_PTR = &actx->external.indirect_reference
607 #.FN_BODY StandardExtension
608 actx->external.indirect_ref_present = TRUE;
609 actx->external.direct_ref_present = FALSE;
612 #.FN_BODY ExtensionType/private-extension FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
613 actx->external.indirect_ref_present = FALSE;
614 actx->external.direct_reference = NULL;
616 actx->external.direct_ref_present = (actx->external.direct_reference != NULL) ? TRUE : FALSE;
618 #.FN_PARS ExtendedContentType
619 FN_VARIANT = _str VAL_PTR = &ctx->content_type_id
621 #.FN_BODY ExtendedContentType
622 const char *name = NULL;
623 p1_address_ctx_t* ctx;
625 if (actx->subtree.tree_ctx == NULL)
626 actx->subtree.tree_ctx = wmem_new0(wmem_packet_scope(), p1_address_ctx_t);
628 ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
632 if(ctx->content_type_id) {
633 name = oid_resolved_from_string(wmem_packet_scope(), ctx->content_type_id);
635 if(!name) name = ctx->content_type_id;
637 proto_item_append_text(tree, " (%%s)", name);
640 #.FN_PARS BuiltInContentType/_untag VAL_PTR = &ict
642 #.FN_BODY BuiltInContentType/_untag
643 static guint32 ict = -1;
644 p1_address_ctx_t* ctx;
646 if (actx->subtree.tree_ctx == NULL)
647 actx->subtree.tree_ctx = wmem_new0(wmem_packet_scope(), p1_address_ctx_t);
649 ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
653 /* convert integer content type to oid for dispatch when the content is found */
656 ctx->content_type_id = wmem_strdup(wmem_packet_scope(), "2.6.1.10.0");
659 ctx->content_type_id = wmem_strdup(wmem_packet_scope(), "2.6.1.10.1");
662 ctx->content_type_id = NULL;
668 p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
670 /* we can do this now constructed octet strings are supported */
671 offset = dissect_ber_octet_string(FALSE, actx, tree, tvb, offset, hf_index, &next_tvb);
672 proto_item_set_text(actx->created_item, "content (%%u bytes)", tvb_reported_length (next_tvb));
675 if (ctx && ctx->content_type_id) {
676 (void) call_ber_oid_callback(ctx->content_type_id, next_tvb, 0, actx->pinfo, actx->subtree.top_tree ? actx->subtree.top_tree : tree, actx->private_data);
677 } else if (ctx && ctx->report_unknown_content_type) {
679 proto_tree *next_tree;
681 item = proto_tree_add_expert(actx->subtree.top_tree ? actx->subtree.top_tree : tree, actx->pinfo, &ei_p1_unknown_built_in_content_type,
682 next_tvb, 0, tvb_reported_length_remaining(tvb, offset));
683 next_tree=proto_item_add_subtree(item, ett_p1_content_unknown);
685 dissect_unknown_ber(actx->pinfo, next_tvb, 0, next_tree);
687 proto_item_append_text (actx->created_item, " (unknown content-type)");
695 tvbuff_t *mtaname = NULL;
696 p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
700 if (ctx && ctx->do_address) {
701 proto_item_append_text(actx->subtree.tree, " %%s", tvb_format_text(mtaname, 0, tvb_reported_length(mtaname)));
704 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", tvb_format_text(mtaname, 0, tvb_reported_length(mtaname)));
708 #.FN_PARS X121Address
711 #.FN_BODY X121Address
712 tvbuff_t *string = NULL;
716 do_address("/PX121=", string, actx);
718 #.FN_PARS TerminalIdentifier
721 #.FN_BODY TerminalIdentifier
722 tvbuff_t *string = NULL;
726 do_address("/UA-ID=", string, actx);
728 #.FN_BODY PrivateDomainName
730 do_address("/P=", NULL, actx);
734 #.FN_BODY PrivateDomainIdentifier
736 do_address("/P=", NULL, actx);
740 #.FN_PARS OrganizationName
743 #.FN_BODY OrganizationName
744 tvbuff_t *string = NULL;
748 do_address("/O=", string, actx);
750 #.FN_PARS TeletexOrganizationName
753 #.FN_BODY TeletexOrganizationName
754 tvbuff_t *string = NULL;
758 do_address("/O=", string, actx);
760 #.FN_PARS OrganizationalUnitName
763 #.FN_BODY OrganizationalUnitName
764 tvbuff_t *string = NULL;
766 do_address("/OU=", string, actx);
768 #.FN_PARS TeletexOrganizationalUnitName
771 #.FN_BODY TeletexOrganizationalUnitName
772 tvbuff_t *string = NULL;
776 do_address("/OU=", string, actx);
782 tvbuff_t *string = NULL;
786 do_address("/CN=", string, actx);
788 #.FN_PARS TeletexCommonName
791 #.FN_BODY TeletexCommonName
792 tvbuff_t *string = NULL;
796 do_address("/CN=", string, actx);
798 #.FN_BODY CountryName/_untag/iso-3166-alpha2-code VAL_PTR=&nstring
799 tvbuff_t *nstring = NULL;
803 do_address(NULL, nstring, actx);
805 #.FN_BODY AdministrationDomainName/_untag/printable VAL_PTR=&nstring
806 tvbuff_t *nstring = NULL;
810 do_address(NULL, nstring, actx);
812 #.FN_BODY PrivateDomainName/printable VAL_PTR=&nstring
813 tvbuff_t *nstring = NULL;
817 do_address(NULL, nstring, actx);
819 #.FN_BODY PrivateDomainIdentifier/printable VAL_PTR=&nstring
820 tvbuff_t *nstring = NULL;
824 do_address(NULL, nstring, actx);
826 #.FN_BODY PhysicalDeliveryCountryName/iso-3166-alpha2-code VAL_PTR=&nstring
827 tvbuff_t *nstring = NULL;
831 do_address(NULL, nstring, actx);
833 #.FN_BODY UserAddress/x121/x121-address VAL_PTR=&nstring
834 tvbuff_t *nstring = NULL;
838 do_address(NULL, nstring, actx);
840 #.FN_BODY CountryName/_untag/x121-dcc-code VAL_PTR=&nstring
841 tvbuff_t *nstring = NULL;
845 do_address(NULL, nstring, actx);
847 #.FN_BODY AdministrationDomainName/_untag/numeric VAL_PTR=&nstring
848 tvbuff_t *nstring = NULL;
852 do_address(NULL, nstring, actx);
854 #.FN_BODY PrivateDomainName/numeric VAL_PTR=&nstring
855 tvbuff_t *nstring = NULL;
859 do_address(NULL, nstring, actx);
861 #.FN_BODY PrivateDomainIdentifier/numeric VAL_PTR=&nstring
862 tvbuff_t *nstring = NULL;
866 do_address(NULL, nstring, actx);
868 #.FN_BODY PhysicalDeliveryCountryName/x121-dcc-code VAL_PTR=&nstring
869 tvbuff_t *nstring = NULL;
873 do_address(NULL, nstring, actx);
875 #.FN_BODY PostalCode/numeric-code VAL_PTR=&nstring
876 tvbuff_t *nstring = NULL;
880 do_address(NULL, nstring, actx);
883 #.FN_BODY TeletexDomainDefinedAttribute/type VAL_PTR=&tstring
884 tvbuff_t *tstring = NULL;
888 do_address_str("/DD.", tstring, actx);
890 #.FN_BODY TeletexDomainDefinedAttribute/value VAL_PTR=&tstring
891 tvbuff_t *tstring = NULL;
895 do_address_str_tree("=", tstring, actx, tree);
897 #.FN_BODY TeletexDomainDefinedAttribute
898 actx->value_ptr = wmem_strbuf_new(wmem_packet_scope(), "");
902 #.FN_BODY PersonalName/surname VAL_PTR=&pstring
903 tvbuff_t *pstring = NULL;
907 do_address("/S=", pstring, actx);
909 #.FN_BODY PersonalName/given-name VAL_PTR=&pstring
910 tvbuff_t *pstring = NULL;
914 do_address("/G=", pstring, actx);
916 #.FN_BODY PersonalName/initials VAL_PTR=&pstring
917 tvbuff_t *pstring = NULL;
921 do_address("/I=", pstring, actx);
923 #.FN_BODY PersonalName/generation-qualifier VAL_PTR=&pstring
924 tvbuff_t *pstring = NULL;
928 do_address("/Q=", pstring, actx);
930 #.FN_BODY TeletexPersonalName/surname VAL_PTR=&tstring
931 tvbuff_t *tstring = NULL;
935 do_address("/S=", tstring, actx);
937 #.FN_BODY TeletexPersonalName/given-name VAL_PTR=&tstring
938 tvbuff_t *tstring = NULL;
942 do_address("/G=", tstring, actx);
944 #.FN_BODY TeletexPersonalName/initials VAL_PTR=&tstring
945 tvbuff_t *tstring = NULL;
949 do_address("/I=", tstring, actx);
951 #.FN_BODY TeletexPersonalName/generation-qualifier VAL_PTR=&tstring
952 tvbuff_t *tstring = NULL;
956 do_address("/Q=", tstring, actx);
958 #.FN_BODY BuiltInDomainDefinedAttribute/type VAL_PTR=&pstring
959 tvbuff_t *pstring = NULL;
963 do_address_str("/DD.", pstring, actx);
965 #.FN_BODY BuiltInDomainDefinedAttribute/value VAL_PTR=&pstring
966 tvbuff_t *pstring = NULL;
970 do_address_str_tree("=", pstring, actx, tree);
972 #.FN_BODY BuiltInDomainDefinedAttribute
973 actx->value_ptr = wmem_strbuf_new(wmem_packet_scope(), "");
978 p1_address_ctx_t* ctx;
980 if (actx->subtree.tree_ctx == NULL) {
981 actx->subtree.tree_ctx = wmem_new0(wmem_packet_scope(), p1_address_ctx_t);
984 ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
985 ctx->oraddress = wmem_strbuf_new(wmem_packet_scope(), "");
987 actx->subtree.tree = NULL;
988 set_do_address(actx, TRUE);
993 if (ctx->oraddress && (wmem_strbuf_get_len(ctx->oraddress) > 0) && actx->subtree.tree)
994 proto_item_append_text(actx->subtree.tree, " (%%s/)", wmem_strbuf_get_str(ctx->oraddress));
996 set_do_address(actx, FALSE);
999 p1_address_ctx_t* ctx;
1001 if (actx->subtree.tree_ctx == NULL) {
1002 actx->subtree.tree_ctx = wmem_new0(wmem_packet_scope(), p1_address_ctx_t);
1005 ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
1006 ctx->oraddress = wmem_strbuf_new(wmem_packet_scope(), "");
1008 actx->subtree.tree = NULL;
1009 set_do_address(actx, TRUE);
1013 if (ctx->oraddress && (wmem_strbuf_get_len(ctx->oraddress) > 0) && actx->subtree.tree)
1014 proto_item_append_text(actx->subtree.tree, " (%%s/)", wmem_strbuf_get_str(ctx->oraddress));
1016 set_do_address(actx, FALSE);
1017 #.FN_BODY MessageIdentifier
1018 actx->subtree.tree = NULL;
1022 #.FN_BODY GlobalDomainIdentifier
1023 p1_address_ctx_t* ctx;
1025 if (actx->subtree.tree_ctx == NULL) {
1026 actx->subtree.tree_ctx = wmem_new0(wmem_packet_scope(), p1_address_ctx_t);
1029 ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
1030 ctx->oraddress = wmem_strbuf_new(wmem_packet_scope(), "");
1032 actx->subtree.tree = tree;
1036 if (ctx->oraddress && (wmem_strbuf_get_len(ctx->oraddress) > 0)) {
1037 proto_item_append_text(actx->subtree.tree, " (%%s/", wmem_strbuf_get_str(ctx->oraddress));
1039 if (hf_index == hf_p1_subject_identifier) {
1040 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s/", wmem_strbuf_get_str(ctx->oraddress));
1045 #.FN_PARS LocalIdentifier
1048 #.FN_BODY LocalIdentifier
1049 tvbuff_t *id = NULL;
1050 p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
1055 if (ctx && ctx->do_address)
1056 proto_item_append_text(actx->subtree.tree, " $ %%s)", tvb_format_text(id, 0, tvb_reported_length(id)));
1058 if (hf_index == hf_p1_subject_identifier)
1059 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " $ %%s)", tvb_format_text(id, 0, tvb_reported_length(id)));
1062 #.FN_BODY MTSIdentifier
1064 set_do_address(actx, TRUE);
1068 set_do_address(actx, FALSE);
1070 #.FN_BODY MTANameAndOptionalGDI
1072 set_do_address(actx, TRUE);
1076 set_do_address(actx, FALSE);
1077 proto_item_append_text(tree, ")");
1079 #.FN_BODY BuiltInStandardAttributes
1080 actx->subtree.tree = tree;
1084 #.FN_BODY TraceInformationElement
1086 set_do_address(actx, TRUE);
1090 set_do_address(actx, FALSE);
1092 #.FN_BODY InternalTraceInformationElement
1094 set_do_address(actx, TRUE);
1098 set_do_address(actx, FALSE);
1100 #.FN_BODY DomainSuppliedInformation
1102 set_do_address(actx, FALSE);
1106 set_do_address(actx, TRUE);
1107 proto_item_append_text(tree, ")");
1109 #.FN_BODY MTASuppliedInformation
1111 set_do_address(actx, FALSE);
1115 set_do_address(actx, TRUE);
1116 proto_item_append_text(tree, ")");
1122 tvbuff_t *arrival = NULL;
1123 p1_address_ctx_t* ctx = (p1_address_ctx_t*)actx->subtree.tree_ctx;
1127 if(arrival && ctx && ctx->do_address)
1128 proto_item_append_text(actx->subtree.tree, " %%s", tvb_format_text(arrival, 0, tvb_reported_length(arrival)));
1130 #.FN_PARS RoutingAction
1133 #.FN_BODY RoutingAction
1138 proto_item_append_text(actx->subtree.tree, " %%s", val_to_str(action, p1_RoutingAction_vals, "action(%%d)"));
1140 #.FN_PARS MTABindError
1143 #.FN_BODY MTABindError
1147 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(error, p1_MTABindError_vals, "error(%%d)"));
1149 #.FN_PARS TokenTypeIdentifier
1150 FN_VARIANT = _str VAL_PTR = &actx->external.direct_reference
1152 #.FN_BODY TokenTypeData
1154 if(actx->external.direct_reference)
1155 call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data);
1157 #.FN_PARS Credentials
1158 VAL_PTR = &credentials
1160 #.FN_BODY Credentials
1161 gint credentials = -1;
1165 if( (credentials!=-1) && p1_Credentials_vals[credentials].strptr ){
1166 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", p1_Credentials_vals[credentials].strptr);
1169 #.FN_PARS TokenDataType
1170 VAL_PTR = &actx->external.indirect_reference
1172 #.FN_BODY TokenData/value
1174 proto_item_append_text(tree, " (%%s)", val_to_str(actx->external.indirect_reference, p1_TokenDataType_vals, "tokendata-type %%d"));
1175 if (dissector_try_uint(p1_tokendata_dissector_table, actx->external.indirect_reference, tvb, actx->pinfo, tree)) {
1176 offset = tvb_reported_length(tvb);
1179 proto_tree *next_tree;
1181 next_tree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_p1_unknown_tokendata_type, &item,
1182 "Dissector for tokendata-type %%d not implemented. Contact Wireshark developers if you want this supported", actx->external.indirect_reference);
1183 offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree);
1184 expert_add_info(actx->pinfo, item, &ei_p1_unknown_tokendata_type);
1187 #.FN_BODY PerDomainBilateralInformation/bilateral-information
1188 proto_item *item = NULL;
1192 /* work out the length */
1193 loffset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, NULL, NULL, NULL);
1194 (void) dissect_ber_length(actx->pinfo, tree, tvb, loffset, &len, NULL);
1196 /* create some structure so we can tell what this unknown ASN.1 represents */
1197 item = proto_tree_add_item(tree, hf_index, tvb, offset, len, ENC_BIG_ENDIAN);
1198 tree = proto_item_add_subtree(item, ett_p1_bilateral_information);
1200 offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree);
1210 if( (apdu!=-1) && p1_MTS_APDU_vals[apdu].strptr ){
1211 if(apdu != 0) { /* we don't show "message" - sub-dissectors have better idea */
1212 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", p1_MTS_APDU_vals[apdu].strptr);
1216 #.FN_PARS ReportType
1219 #.FN_BODY ReportType
1224 if( (report!=-1) && p1_ReportType_vals[report].strptr ){
1225 col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", p1_ReportType_vals[report].strptr);
1228 #.FN_BODY MessageSubmissionArgument
1229 p1_initialize_content_globals(actx, tree, TRUE);
1231 p1_initialize_content_globals(actx, NULL, FALSE);
1233 #.FN_BODY MessageDeliveryArgument
1234 p1_initialize_content_globals(actx, tree, TRUE);
1236 p1_initialize_content_globals(actx, NULL, FALSE);
1238 #.FN_BODY ReportDeliveryArgument
1239 p1_initialize_content_globals(actx, tree, TRUE);
1241 p1_initialize_content_globals(actx, NULL, FALSE);
1243 #.FN_HDR MTSBindResult
1244 /* TODO: there may be other entry points where this global should be initialized... */
1245 actx->subtree.tree = NULL;