diff options
Diffstat (limited to 'asn1/p1/p1.cnf')
-rw-r--r-- | asn1/p1/p1.cnf | 1294 |
1 files changed, 1294 insertions, 0 deletions
diff --git a/asn1/p1/p1.cnf b/asn1/p1/p1.cnf new file mode 100644 index 0000000000..9d5502f500 --- /dev/null +++ b/asn1/p1/p1.cnf @@ -0,0 +1,1294 @@ +# p1.cnf +# X.411 (MTA Access and Transfer) conformance file +# $Id$ + +#.TYPE_ATTR +CountryName TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(p1_CountryName_U_vals) BITMASK = 0 +Time TYPE = FT_STRING DISPLAY = BASE_NONE STRING = NULL BITMASK = 0 + +#.IMPORT ../x509ce/x509ce-exp.cnf +#.IMPORT ../x509if/x509if-exp.cnf +#.IMPORT ../x509sat/x509sat-exp.cnf +#.IMPORT ../x509af/x509af-exp.cnf +#.IMPORT ../ros/ros-exp.cnf +#.IMPORT ../rtse/rtse-exp.cnf + +#.OMIT_ASSIGNMENT +# These gives unused code warnings +MTAOriginatorRequestedAlternateRecipient + +#The following are only referenced through the SIGNATURE MACRO +#and so have no representation on the wire. +ProofOfDeliveryAlgorithmIdentifier +ContentIntegrityAlgorithmIdentifier +MessageOriginAuthenticationAlgorithmIdentifier +ProbeOriginAuthenticationAlgorithmIdentifier +ReportOriginAuthenticationAlgorithmIdentifier +ProofOfSubmissionAlgorithmIdentifier + +BilateralDomain +DeliveryControls +RTSE-apdus +MTSInvokeIds +ID +RTTPapdu +RTTRapdu +RTABapdu +AbortReason +#.END + +#.NO_EMIT +# These fields are only used through COMPONENTS OF, +# and consequently generate unused code warnings +PerMessageTransferFields +PerProbeTransferFields +PerReportTransferFields +PerMessageSubmissionFields +PerProbeSubmissionFields +PerReportDeliveryFields +PerRecipientReportFields +#PerRecipientReportFields/report-type +InternalAdditionalActions +AdditionalActions +NonBasicParameters +#.END + +#.EXPORTS +EXTENSION +Content +ContentIdentifier +ContentIntegrityCheck +ContentLength +ContentType +Credentials +EncodedInformationTypes +EncodedInformationTypesConstraints +ExtendedCertificates +ExtendedContentType +ExtensionField +G3FacsimileNonBasicParameters +ImproperlySpecifiedRecipients +InitiatorCredentials +MessageDeliveryIdentifier +MessageDeliveryTime +MessageOriginAuthenticationCheck +MessageSecurityLabel +MessageSubmissionEnvelope +MessageSubmissionIdentifier +MessageSubmissionTime +MessageToken +ORAddress +ORAddressAndOrDirectoryName +OriginatorName +ORName +OriginalEncodedInformationTypes +OriginatingMTACertificate +OtherMessageDeliveryFields +PerMessageIndicators +PerRecipientProbeSubmissionFields +ProbeSubmissionEnvelope +ProbeSubmissionIdentifier +ProbeSubmissionTime +ProofOfSubmission +RequestedDeliveryMethod +ResponderCredentials +SecurityContext +SecurityLabel +SecurityProblem +SupplementaryInformation +TeletexNonBasicParameters +UniversalOrBMPString +NonDeliveryReasonCode +NonDeliveryDiagnosticCode + +# Forward declaration of Classes +# CONNECTION-PACKAGE CONTRACT from ROS +#.CLASS CONNECTION-PACKAGE +&bind ClassReference OPERATION +&unbind ClassReference OPERATION +&responderCanUnbind BooleanType +&unbindCanFail BooleanType +&id ObjectIdentifierType +#.END + +#.CLASS APPLICATION-CONTEXT +&associationContract ClassReference CONTRACT +&associationRealization +&transferRealization +&AbstractSyntaxes ClassReference ABSTRACT-SYNTAX +&applicationContextName ObjectIdentifierType +#.END + + +#.CLASS CONTRACT +&connection ClassReference CONNECTION-PACKAGE +&OperationsOf ClassReference OPERATION-PACKAGE +&InitiatorConsumerOf ClassReference OPERATION-PACKAGE +&InitiatorSupplierOf ClassReference OPERATION-PACKAGE +&id ObjectIdentifierType +#.END + +#.CLASS MHS-OBJECT +&Is ClassReference MHS-OBJECT +&Initiates ClassReference CONTRACT +&Responds ClassReference CONTRACT +&InitiatesAndResponds ClassReference CONTRACT +&id ObjectIdentifierType +#.END + +# Ros OPERATION +#.CLASS ABSTRACT-OPERATION +&ArgumentType +&argumentTypeOptional BooleanType +&returnResult BooleanType +&ResultType +&resultTypeOptional BooleanType +&Errors ClassReference ERROR +&Linked ClassReference OPERATION +&synchronous BooleanType +&alwaysReturns BooleanType +&InvokePriority _FixedTypeValueSetFieldSpec +&ResultPriority _FixedTypeValueSetFieldSpec +&operationCode TypeReference Code +#.END + +# ros ERROR +#.CLASS ABSTRACT-ERROR +&ParameterType +¶meterTypeOptional BooleanType +&ErrorPriority _FixedTypeValueSetFieldSpec +&errorCode TypeReference Code +#.END + +#.CLASS EXTENSION +&id TypeReference ExtensionType +&Type +&absent _VariableTypeValueSetFieldSpec +&recommended TypeReference Criticality +#.END + +#.CLASS EXTENSION-ATTRIBUTE +&id IntegerType +&Type +#.END + +#.CLASS TOKEN-DATA +&id IntegerType +&Type +#.END + + +#.TYPE_RENAME +MTABindArgument/authenticated AuthenticatedArgument +MTABindResult/authenticated AuthenticatedResult + +ExtensionField/value ExtensionValue +SecurityCategory/value CategoryValue + +#.FIELD_RENAME +PrivateDomainName/printable printable-private-domain-name +PrivateDomainName/numeric numeric-private-domain-name +PrivateDomainIdentifier/printable printable-private-domain-identifier +PrivateDomainIdentifier/numeric numeric-private-domain-identifier + +TeletexPersonalName/surname teletex-surname +PersonalName/surname printable-surname +UniversalPersonalName/surname universal-surname + +TeletexPersonalName/given-name teletex-given-name +PersonalName/given-name printable-given-name +UniversalPersonalName/given-name universal-given-name + +TeletexPersonalName/initials teletex-initials +PersonalName/initials printable-initials +UniversalPersonalName/initials universal-initials + +TeletexPersonalName/generation-qualifier teletex-generation-qualifier +PersonalName/generation-qualifier printable-generation-qualifier +UniversalPersonalName/generation-qualifier universal-generation-qualifier + +BuiltInDomainDefinedAttribute/type printable-type +UniversalDomainDefinedAttribute/type universal-type +SecurityCategory/type category-type +ExtensionField/type extension-type + +TeletexDomainDefinedAttribute/value teletex-value +BuiltInDomainDefinedAttribute/value printable-value +UniversalDomainDefinedAttribute/value universal-value +SecurityCategory/value category-value +ExtensionField/value extension-value + +LastTraceInformation/report-type trace-report-type +PerRecipientReportDeliveryFields/report-type delivery-report-type +PerRecipientReportFields/report-type/delivery report-type-delivery + +PerRecipientMessageSubmissionFields/recipient-name submission-recipient-name +PerRecipientProbeSubmissionFields/recipient-name probe-recipient-name + +PerRecipientReportTransferFields/actual-recipient-name mta-actual-recipient-name + +MessageClass/priority class-priority +DeliveryQueue/octets delivery-queue-octets +PerRecipientReportFields/report-type/non-delivery non-delivery-report + +MTABindResult/authenticated authenticated-result +MTABindArgument/authenticated authenticated-argument + +MTABindResult/authenticated/responder-name authenticated-responder-name +MTABindArgument/authenticated/initiator-name authenticated-initiator-name + +RegistrationTypes/extensions type-extensions +RegistrationTypes/extensions/_item type-extensions-item + +MessageSubmissionArgument/envelope message-submission-envelope + +OtherMessageDeliveryFields/content-type delivered-content-type +Report/content report-content + +ReportDeliveryResult/extensions max-extensions + +OtherMessageDeliveryFields/originator-name delivered-originator-name + +PDSParameter/teletex-string pds-teletex-string + +PerDomainBilateralInformation/domain bilateral-domain + +Report/envelope report-envelope +Message/envelope message-envelope + +PerRecipientReportTransferFields/originally-intended-recipient-name report-originally-intended-recipient-name + +MessageSubmissionEnvelope/originator-name mts-originator-name +ProbeSubmissionEnvelope/originator-name mts-originator-name + +MessageTransferEnvelope/originator-name mta-originator-name +ProbeTransferEnvelope/originator-name mta-originator-name + +MessageSubmissionEnvelope/per-recipient-fields per-recipient-message-submission-fields +ProbeTransferEnvelope/per-recipient-fields per-recipient-probe-transfer-fields +ProbeSubmissionEnvelope/per-recipient-fields per-recipient-probe-submission-fields +ReportDeliveryArgument/per-recipient-fields per-recipient-report-delivery-fields +ReportDeliveryEnvelope/per-recipient-fields per-recipient-report-delivery-fields + +MessageSubmissionEnvelope/per-recipient-fields/_item per-recipient-message-submission-fields-item +ProbeTransferEnvelope/per-recipient-fields/_item per-recipient-probe-transfer-fields-item +ProbeSubmissionEnvelope/per-recipient-fields/_item per-recipient-probe-submission-fields-item +ReportDeliveryArgument/per-recipient-fields/_item per-recipient-report-delivery-fields-item +ReportDeliveryEnvelope/per-recipient-fields/_item per-recipient-report-delivery-fields-item + +MessageTransferEnvelope/per-recipient-fields/_item per-recipient-message-fields-item + +MessageTransferEnvelope/per-recipient-fields per-recipient-message-fields +ReportTransferContent/per-recipient-fields per-recipient-report-fields + +AsymmetricTokenData/name/mta token-mta +AsymmetricTokenData/name/recipient-name token-recipient-name + +TokenData/type token-data-type +CertificateSelectors/content-integrity-check selectors-content-integrity-check + +#.PDU + +# This table creates the value_sting to name P3 operation codes and errors +# in file packet-p3-table.c which is included in the template file +# +#.TABLE_HDR +/* P3 ABSTRACT-OPERATIONS */ +const value_string p3_opr_code_string_vals[] = { +#.TABLE_BODY OPERATION + { %(&operationCode)s, "%(_ident)s" }, +#.TABLE_FTR + { 0, NULL } +}; +#.END + +#.TABLE_HDR +/* P3 ERRORS */ +static const value_string p3_err_code_string_vals[] = { +#.TABLE_BODY ERROR + { %(&errorCode)s, "%(_ident)s" }, +#.TABLE_FTR + { 0, NULL } +}; +#.END + +# Create a table of opcode and corresponding args and res +#.TABLE11_HDR +static const ros_opr_t p3_opr_tab[] = { +#.TABLE11_BODY OPERATION + /* %(_name)s */ + { %(&operationCode)-25s, %(_argument_pdu)s, %(_result_pdu)s }, +#.TABLE11_FTR + { 0, (new_dissector_t)(-1), (new_dissector_t)(-1) }, +}; +#.END + +#.TABLE21_HDR +static const ros_err_t p3_err_tab[] = { +#.TABLE21_BODY ERROR + /* %(_name)s*/ + { %(&errorCode)s, %(_parameter_pdu)s }, +#.TABLE21_FTR + { 0, (new_dissector_t)(-1) }, +}; +#.END + +#.PDU_NEW +ERROR.&ParameterType +OPERATION.&ArgumentType +OPERATION.&ResultType +#.END + + +#.REGISTER +RecipientReassignmentProhibited N p1.extension 1 +OriginatorRequestedAlternateRecipient N p1.extension 2 +DLExpansionProhibited N p1.extension 3 +ConversionWithLossProhibited N p1.extension 4 +LatestDeliveryTime N p1.extension 5 +RequestedDeliveryMethod N p1.extension 6 +PhysicalForwardingProhibited N p1.extension 7 +PhysicalForwardingAddressRequest N p1.extension 8 +PhysicalDeliveryModes N p1.extension 9 +RegisteredMailType N p1.extension 10 +RecipientNumberForAdvice N p1.extension 11 +PhysicalRenditionAttributes N p1.extension 12 +OriginatorReturnAddress N p1.extension 13 +PhysicalDeliveryReportRequest N p1.extension 14 +OriginatorCertificate N p1.extension 15 +MessageToken N p1.extension 16 +ContentConfidentialityAlgorithmIdentifier N p1.extension 17 +ContentIntegrityCheck N p1.extension 18 +MessageOriginAuthenticationCheck N p1.extension 19 +MessageSecurityLabel N p1.extension 20 +ProofOfSubmissionRequest N p1.extension 21 +ProofOfDeliveryRequest N p1.extension 22 +ContentCorrelator N p1.extension 23 +ProbeOriginAuthenticationCheck N p1.extension 24 +RedirectionHistory N p1.extension 25 +DLExpansionHistory N p1.extension 26 +PhysicalForwardingAddress N p1.extension 27 +RecipientCertificate N p1.extension 28 +ProofOfDelivery N p1.extension 29 +OriginatorAndDLExpansionHistory N p1.extension 30 +ReportingDLName N p1.extension 31 +ReportingMTACertificate N p1.extension 32 +ReportOriginAuthenticationCheck N p1.extension 33 +ProofOfSubmission N p1.extension 35 + +TraceInformation N p1.extension 37 +InternalTraceInformation N p1.extension 38 +ReportingMTAName N p1.extension 39 +ExtendedCertificates N p1.extension 40 + +DLExemptedRecipients N p1.extension 42 + +CertificateSelectors N p1.extension 45 + +CommonName N p1.extension-attribute 1 +TeletexCommonName N p1.extension-attribute 2 +TeletexOrganizationName N p1.extension-attribute 3 +TeletexPersonalName N p1.extension-attribute 4 +TeletexOrganizationalUnitNames N p1.extension-attribute 5 +TeletexDomainDefinedAttributes N p1.extension-attribute 6 +PDSName N p1.extension-attribute 7 +PhysicalDeliveryCountryName N p1.extension-attribute 8 +PostalCode N p1.extension-attribute 9 +PhysicalDeliveryOfficeName N p1.extension-attribute 10 +PhysicalDeliveryOfficeNumber N p1.extension-attribute 11 +ExtensionORAddressComponents N p1.extension-attribute 12 +PhysicalDeliveryPersonalName N p1.extension-attribute 13 +PhysicalDeliveryOrganizationName N p1.extension-attribute 14 +ExtensionPhysicalDeliveryAddressComponents N p1.extension-attribute 15 +UnformattedPostalAddress N p1.extension-attribute 16 +StreetAddress N p1.extension-attribute 17 +PostOfficeBoxAddress N p1.extension-attribute 18 +PosteRestanteAddress N p1.extension-attribute 19 +UniquePostalName N p1.extension-attribute 20 +LocalPostalAttributes N p1.extension-attribute 21 +ExtendedNetworkAddress N p1.extension-attribute 22 +TerminalType N p1.extension-attribute 23 +UniversalCommonName N p1.extension-attribute 24 +UniversalOrganizationName N p1.extension-attribute 25 +UniversalPersonalName N p1.extension-attribute 26 +UniversalOrganizationalUnitNames N p1.extension-attribute 27 +UniversalDomainDefinedAttributes N p1.extension-attribute 28 +UniversalPhysicalDeliveryOfficeName N p1.extension-attribute 29 +UniversalPhysicalDeliveryOfficeNumber N p1.extension-attribute 30 +UniversalExtensionORAddressComponents N p1.extension-attribute 31 +UniversalPhysicalDeliveryPersonalName N p1.extension-attribute 32 +UniversalPhysicalDeliveryOrganizationName N p1.extension-attribute 33 +UniversalExtensionPhysicalDeliveryAddressComponents N p1.extension-attribute 34 +UniversalUnformattedPostalAddress N p1.extension-attribute 35 +UniversalStreetAddress N p1.extension-attribute 36 +UniversalPostOfficeBoxAddress N p1.extension-attribute 37 +UniversalPosteRestanteAddress N p1.extension-attribute 38 +UniversalUniquePostalName N p1.extension-attribute 39 +UniversalLocalPostalAttributes N p1.extension-attribute 40 + +#ReportDeliveryArgument B "2.6.1.4.14" "id-et-report" + +AsymmetricToken B "2.6.3.6.0" "id-tok-asymmetricToken" +MTANameAndOptionalGDI B "2.6.5.6.0" "id-on-mtaName" + +BindTokenSignedData N p1.tokendata 1 +MessageTokenSignedData N p1.tokendata 2 +# the next two are unlikely to ever be seen (unless in a bad encoding) +MessageTokenEncryptedData N p1.tokendata 3 +BindTokenEncryptedData N p1.tokendata 4 + +# X402 - see master list in acp133.cnf + +ContentLength B "2.6.5.2.0" "id-at-mhs-maximum-content-length" +ExtendedContentType B "2.6.5.2.1" "id-at-mhs-deliverable-content-types" +ExtendedEncodedInformationType B "2.6.5.2.2" "id-at-mhs-exclusively-acceptable-eits" +ORName B "2.6.5.2.3" "id-at-mhs-dl-members" +ORAddress B "2.6.5.2.6" "id-at-mhs-or-addresses" +ExtendedContentType B "2.6.5.2.9" "id-at-mhs-supported-content-types" +ORName B "2.6.5.2.12" "id-at-mhs-dl-archive-service" +ORName B "2.6.5.2.15" "id-at-mhs-dl-subscription-service" +ExtendedEncodedInformationType B "2.6.5.2.17" "id-at-mhs-acceptable-eits" +ExtendedEncodedInformationType B "2.6.5.2.18" "id-at-mhs-unacceptable-eits" + + +# ACP133 - see master list in acp133.cnf +ORName B "2.16.840.1.101.2.1.5.47" "id-at-aLExemptedAddressProcessor" +ORAddress B "2.16.840.1.101.2.2.1.134.1" "id-at-collective-mhs-or-addresses" + +# MSGeneralAttributeTypes - see master list in p7.cnf +CertificateSelectors B "2.6.4.3.80" "id-att-certificate-selectors" +Content B "2.6.4.3.1" "id-att-content" +ContentCorrelator B "2.6.4.3.3" "id-att-content-correlator" +ContentIdentifier B "2.6.4.3.4" "id-att-content-identifier" +ContentIntegrityCheck B "2.6.4.3.5" "id-att-content-inetgrity-check" +ContentLength B "2.6.4.3.6" "id-att-content-length" +ExtendedContentType B "2.6.4.3.8" "id-att-content-type" +ConversionWithLossProhibited B "2.6.4.3.9" "id-att-conversion-with-loss-prohibited" +DeferredDeliveryTime B "2.6.4.3.51" "id-att-deferred-delivery-time" +DeliveryFlags B "2.6.4.3.13" "id-att-delivery-flags" +ORName B "2.6.4.3.78" "id-att-dl-exempted-recipients" +DLExpansion B "2.6.4.3.14" "id-att-dl-expansion-history" +DLExpansionProhibited B "2.6.4.3.53" "id-att-dl-expansion-prohibited" +InternalTraceInformationElement B "2.6.4.3.54" "id-att-internal-trace-information" +LatestDeliveryTime B "2.6.4.3.55" "id-att-latest-delivery-time" +MessageDeliveryEnvelope B "2.6.4.3.18" "id-att-message-delivery-envelope" +MessageDeliveryTime B "2.6.4.3.20" "id-att-message-delivery-time" +MTSIdentifier B "2.6.4.3.19" "id-att-message-identifier" +MessageOriginAuthenticationCheck B "2.6.4.3.21" "id-at-message-orgin-authentication-check" +MessageSecurityLabel B "2.6.4.3.22" "id-att-message-security-label" +MessageSubmissionEnvelope B "2.6.4.3.59" "id-att-message-submission-envelope" +MessageSubmissionTime B "2.6.4.3.23" "id-att-message-submission-time" +MessageToken B "2.6.4.3.24" "id-att-message-token" +ExtendedCertificates B "2.6.4.3.81" "id-att-multiple-originator-certificates" +ORName B "2.6.4.3.17" "id-att-originally-intended-recipient-name" +OriginatingMTACertificate B "2.6.4.3.62" "id-att-originating-MTA-certificate" +OriginatorCertificate B "2.6.4.3.26" "id-att-originator-certificate" +ORName B "2.6.4.3.27" "id-att-originator-name" +OriginatorReportRequest B "2.6.4.3.63" "id-att-originator-report-request" +OriginatorReturnAddress B "2.6.4.3.64" "id-att-originator-return-address" +ORName B "2.6.4.3.28" "id-att-other-recipient-names" +PerMessageIndicators B "2.6.4.3.65" "id-att-per-message-indicators" +PerRecipientMessageSubmissionFields B "2.6.4.3.66" "id-att-per-recipient-message-submission-fields" +PerRecipientProbeSubmissionFields B "2.6.4.3.67" "id-att-per-recipient-probe-submission-fields" +PerRecipientReportDeliveryFields B "2.6.4.3.30" "id-att-per-recipient-report-delivery-fields" +Priority B "2.6.4.3.31" "id-att-priority" +ProbeOriginAuthenticationCheck B "2.6.4.3.68" "id-att-probe-origin-authentication-check" +ProbeSubmissionEnvelope B "2.6.4.3.69" "id-att-probe-submission-envelope" +ProofOfDeliveryRequest B "2.6.4.3.32" "id-att-proof-of-delivery-request" +ProofOfSubmission B "2.6.4.3.70" "id-att-proof-of-submission" +ExtendedCertificates B "2.6.4.3.82" "id-att-recipient-certificate" +ORName B "2.6.4.3.71" "id-att-recipient-names" +RecipientReassignmentProhibited B "2.6.4.3.72" "id-att-recipient-reassignment-prohibited" +Redirection B "2.6.4.3.33" "id-at-redirection-history" +ReportDeliveryEnvelope B "2.6.4.3.34" "id-att-report-delivery-envelope" +ReportingDLName B "2.6.4.3.35" "id-att-reporting-DL-name" +ReportingMTACertificate B "2.6.4.3.36" "id-att-reporting-MTA-certificate" +ReportOriginAuthenticationCheck B "2.6.4.3.37" "id-att-report-origin-authentication-check" +SecurityClassification B "2.6.4.3.38" "id-att-security-classification" +SubjectSubmissionIdentifier B "2.6.4.3.40" "id-att-subject-submission-identifier" +ORName B "2.6.4.3.41" "id-att-this-recipient-name" +TraceInformationElement B "2.6.4.3.75" "id-att-trace-information" + +# IPMSMessageStoreAttributes - see master list in p22.cnf +MessageToken B "2.6.1.7.36" "id-hat-forwarded-token" + +#.FN_BODY AdditionalInformation + proto_item *item = NULL; + int loffset = 0; + guint32 len = 0; + + /* work out the length */ + loffset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, NULL, NULL, NULL); + (void) dissect_ber_length(actx->pinfo, tree, tvb, loffset, &len, NULL); + + item = proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE); + tree = proto_item_add_subtree(item, ett_p1_additional_information); + proto_item_append_text(tree, " (The use of this field is \"strongly deprecated\".)"); + + offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); + +#.FN_BODY RegistrationTypes/extensions/_item +/*XXX not implemented yet */ + +#.FN_BODY ExtensionField/value + const char *name; + + if(extension_id != -1) { + proto_item_append_text(tree, " (%%s)", val_to_str(extension_id, p1_StandardExtension_vals, "standard-extension %%d")); + if (dissector_try_uint(p1_extension_dissector_table, extension_id, tvb, actx->pinfo, tree)) { + offset = tvb_length(tvb); + } else { + proto_item *item = NULL; + proto_tree *next_tree = NULL; + + item = proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), + "Dissector for standard-extension %%d not implemented. Contact Wireshark developers if you want this supported", extension_id); + next_tree = proto_item_add_subtree(item, ett_p1_unknown_standard_extension); + offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree); + expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown standard-extension"); + } + } else if (object_identifier_id) { + offset = call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); + name = oid_resolved_from_string(object_identifier_id); + proto_item_append_text(tree, " (%%s)", name ? name : object_identifier_id); + } + + +#.FN_PARS SecurityCategoryIdentifier + FN_VARIANT = _str VAL_PTR = &object_identifier_id + +#.FN_BODY SecurityCategoryValue + const char *name; + + if (object_identifier_id) { + offset = call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); + name = oid_resolved_from_string(object_identifier_id); + proto_item_append_text(tree, " (%%s)", name ? name : object_identifier_id); + } else { + offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); + } + +#.FN_PARS ExtensionAttributeType + VAL_PTR = &extension_id + +#.FN_BODY ExtensionAttribute/extension-attribute-value + + proto_item_append_text(tree, " (%%s)", val_to_str(extension_id, p1_ExtensionAttributeType_vals, "extension-attribute-type %%d")); + if (dissector_try_uint(p1_extension_attribute_dissector_table, extension_id, tvb, actx->pinfo, tree)) { + offset =tvb_length(tvb); + } else { + proto_item *item = NULL; + proto_tree *next_tree = NULL; + + item = proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), + "Dissector for extension-attribute-type %%d not implemented. Contact Wireshark developers if you want this supported", extension_id); + next_tree = proto_item_add_subtree(item, ett_p1_unknown_extension_attribute_type); + offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree); + expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown extension-attribute-type"); + } + + +#.FN_BODY RefusedOperation/refused-argument/refused-extension +/*XXX not implemented yet */ + +#.FN_BODY CountryName + if(doing_address) + g_strlcat(oraddress, "/C=", MAX_ORA_STR_LEN); + + %(DEFAULT_BODY)s + + +#.FN_BODY AdministrationDomainName + if(doing_address) + g_strlcat(oraddress, "/A=", MAX_ORA_STR_LEN); + + %(DEFAULT_BODY)s + + +#.FN_PARS StandardExtension + VAL_PTR = &extension_id + +#.FN_BODY ExtensionType/private-extension FN_VARIANT = _str VAL_PTR = &object_identifier_id + + %(DEFAULT_BODY)s + extension_id = -1; + +#.FN_PARS ExtendedContentType + FN_VARIANT = _str VAL_PTR = &content_type_id + +#.FN_BODY ExtendedContentType + const char *name = NULL; + + %(DEFAULT_BODY)s + + if(content_type_id) { + name = oid_resolved_from_string(content_type_id); + + if(!name) name = content_type_id; + + proto_item_append_text(tree, " (%%s)", name); + } + +#.FN_PARS BuiltInContentType/_untag VAL_PTR = &ict + +#.FN_BODY BuiltInContentType/_untag + static guint32 ict = -1; + + %(DEFAULT_BODY)s + + /* convert integer content type to oid for dispatch when the content is found */ + switch(ict) { + case 2: + content_type_id = ep_strdup("2.6.1.10.0"); + break; + case 22: + content_type_id = ep_strdup("2.6.1.10.1"); + break; + default: + content_type_id = NULL; + break; + } + +#.FN_BODY Content + tvbuff_t *next_tvb; + + /* we can do this now constructed octet strings are supported */ + offset = dissect_ber_octet_string(FALSE, actx, tree, tvb, offset, hf_index, &next_tvb); + proto_item_set_text(actx->created_item, "content (%%u bytes)", tvb_length (next_tvb)); + + if (next_tvb) { + if (content_type_id) { + (void) call_ber_oid_callback(content_type_id, next_tvb, 0, actx->pinfo, top_tree ? top_tree : tree); + } else { + proto_item *item = NULL; + proto_tree *next_tree = NULL; + + item = proto_tree_add_text(top_tree ? top_tree : tree, next_tvb, 0, tvb_length_remaining(tvb, offset), "P1 Unknown Content (unknown built-in content-type)"); + expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown built-in content-type"); + if (item) { + next_tree=proto_item_add_subtree(item, ett_p1_content_unknown); + } + dissect_unknown_ber(actx->pinfo, next_tvb, 0, next_tree); + } + } + +#.FN_PARS MTAName + VAL_PTR = &mtaname + +#.FN_BODY MTAName + tvbuff_t *mtaname = NULL; + + %(DEFAULT_BODY)s + + if(doing_address) { + + proto_item_append_text(address_item, " %%s", tvb_format_text(mtaname, 0, tvb_length(mtaname))); + + } else { + + if (check_col(actx->pinfo->cinfo, COL_INFO) && mtaname) { + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", tvb_format_text(mtaname, 0, tvb_length(mtaname))); + } + + } + +#.FN_PARS X121Address + VAL_PTR=&string + +#.FN_BODY X121Address + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/X121=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + + +#.FN_PARS TerminalIdentifier + VAL_PTR=&string + +#.FN_BODY TerminalIdentifier + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/UA-ID=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + +#.FN_BODY PrivateDomainName + + if(doing_address) + g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); + + %(DEFAULT_BODY)s + +#.FN_BODY PrivateDomainIdentifier + + if(doing_address) + g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); + + %(DEFAULT_BODY)s + +#.FN_PARS OrganizationName + VAL_PTR=&string + +#.FN_BODY OrganizationName + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/O=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + +#.FN_PARS TeletexOrganizationName + VAL_PTR=&string + +#.FN_BODY TeletexOrganizationName + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/O=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + +#.FN_PARS OrganizationalUnitName + VAL_PTR=&string + +#.FN_BODY OrganizationalUnitName + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/OU=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + +#.FN_PARS TeletexOrganizationalUnitName + VAL_PTR=&string + +#.FN_BODY TeletexOrganizationalUnitName + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/OU=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + +#.FN_PARS CommonName + VAL_PTR=&string + +#.FN_BODY CommonName + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/CN=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + +#.FN_PARS TeletexCommonName + VAL_PTR=&string + +#.FN_BODY TeletexCommonName + tvbuff_t *string = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && string) { + g_strlcat(oraddress, "/CN=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); + } + +#.FN_BODY CountryName/_untag/iso-3166-alpha2-code VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY AdministrationDomainName/_untag/printable VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY PrivateDomainName/printable VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY PrivateDomainIdentifier/printable VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY PhysicalDeliveryCountryName/iso-3166-alpha2-code VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY UserAddress/x121/x121-address VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY CountryName/_untag/x121-dcc-code VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY AdministrationDomainName/_untag/numeric VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY PrivateDomainName/numeric VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY PrivateDomainIdentifier/numeric VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY PhysicalDeliveryCountryName/x121-dcc-code VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + +#.FN_BODY PostalCode/numeric-code VAL_PTR=&nstring + tvbuff_t *nstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && nstring) + g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); + + +#.FN_BODY TeletexDomainDefinedAttribute/type VAL_PTR=&tstring + tvbuff_t *tstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && tstring) { + g_strlcat(oraddress, "/DD.", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); + g_strlcat(ddatype, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); + } + + +#.FN_BODY TeletexDomainDefinedAttribute/value VAL_PTR=&tstring + tvbuff_t *tstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && tstring) { + g_strlcat(oraddress, "=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); + if (*ddatype) { + proto_item_append_text (tree, " (%%s=%%s)", ddatype, tvb_format_text(tstring, 0, tvb_length(tstring))); + } + } + + +#.FN_BODY TeletexDomainDefinedAttribute + ddatype = ep_alloc(MAX_ORA_STR_LEN); ddatype[0] = '\0'; + + %(DEFAULT_BODY)s + +#.FN_BODY PersonalName/surname VAL_PTR=&pstring + tvbuff_t *pstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && pstring) { + g_strlcat(oraddress, "/S=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY PersonalName/given-name VAL_PTR=&pstring + tvbuff_t *pstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && pstring) { + g_strlcat(oraddress, "/G=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY PersonalName/initials VAL_PTR=&pstring + tvbuff_t *pstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && pstring) { + g_strlcat(oraddress, "/I=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY PersonalName/generation-qualifier VAL_PTR=&pstring + tvbuff_t *pstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && pstring) { + g_strlcat(oraddress, "/Q=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY TeletexPersonalName/surname VAL_PTR=&tstring + tvbuff_t *tstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && tstring) { + g_strlcat(oraddress, "/S=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY TeletexPersonalName/given-name VAL_PTR=&tstring + tvbuff_t *tstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && tstring) { + g_strlcat(oraddress, "/G=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY TeletexPersonalName/initials VAL_PTR=&tstring + tvbuff_t *tstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && tstring) { + g_strlcat(oraddress, "/I=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY TeletexPersonalName/generation-qualifier VAL_PTR=&tstring + tvbuff_t *tstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && tstring) { + g_strlcat(oraddress, "/Q=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY BuiltInDomainDefinedAttribute/type VAL_PTR=&pstring + tvbuff_t *pstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && pstring) { + g_strlcat(oraddress, "/DD.", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); + g_strlcat(ddatype, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); + } + +#.FN_BODY BuiltInDomainDefinedAttribute/value VAL_PTR=&pstring + tvbuff_t *pstring = NULL; + + %(DEFAULT_BODY)s + + if(doing_address && pstring) { + g_strlcat(oraddress, "=", MAX_ORA_STR_LEN); + g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); + if (*ddatype) { + proto_item_append_text (tree, " (%%s=%%s)", ddatype, tvb_format_text(pstring, 0, tvb_length(pstring))); + } + } + +#.FN_BODY BuiltInDomainDefinedAttribute + ddatype = ep_alloc(MAX_ORA_STR_LEN); ddatype[0] = '\0'; + + %(DEFAULT_BODY)s + +#.FN_BODY ORAddress + + oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; + doing_address = TRUE; + address_item = NULL; + + %(DEFAULT_BODY)s + + if(*oraddress && address_item) + proto_item_append_text(address_item, " %%s/", oraddress); + + doing_address = FALSE; + +#.FN_BODY ORName + + oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; + address_item = NULL; + doing_address = TRUE; + + %(DEFAULT_BODY)s + + if(*oraddress && address_item) + proto_item_append_text(address_item, " (%%s/)", oraddress); + + doing_address = FALSE; + +#.FN_BODY MessageIdentifier + + address_item = NULL; + + %(DEFAULT_BODY)s + +#.FN_BODY GlobalDomainIdentifier + + oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; + address_item = tree; + + %(DEFAULT_BODY)s + + if(*oraddress) { + proto_item_append_text(address_item, " (%%s/", oraddress); + + if(doing_subjectid && check_col(actx->pinfo->cinfo, COL_INFO)) { + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s/", oraddress); + } + } + + +#.FN_PARS LocalIdentifier + VAL_PTR=&id + +#.FN_BODY LocalIdentifier + tvbuff_t *id = NULL; + + %(DEFAULT_BODY)s + + if(id) { + if(doing_address) + proto_item_append_text(address_item, " $ %%s)", tvb_format_text(id, 0, tvb_length(id))); + + if(doing_subjectid && check_col(actx->pinfo->cinfo, COL_INFO)) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " $ %%s)", tvb_format_text(id, 0, tvb_length(id))); + } + +#.FN_BODY MTSIdentifier + + doing_address = TRUE; + + if(hf_index == hf_p1_subject_identifier) + doing_subjectid = TRUE; + + %(DEFAULT_BODY)s + + doing_address = FALSE; + + if(hf_index == hf_p1_subject_identifier) + doing_subjectid = FALSE; + + +#.FN_BODY MTANameAndOptionalGDI + + doing_address = TRUE; + + %(DEFAULT_BODY)s + + doing_address = FALSE; + proto_item_append_text(tree, ")"); + +#.FN_BODY BuiltInStandardAttributes + + address_item = tree; + + %(DEFAULT_BODY)s + +#.FN_BODY TraceInformationElement + + doing_address = TRUE; + + %(DEFAULT_BODY)s + + doing_address = FALSE; + +#.FN_BODY InternalTraceInformationElement + + doing_address = TRUE; + + %(DEFAULT_BODY)s + + doing_address = FALSE; + +#.FN_BODY DomainSuppliedInformation + + doing_address = FALSE; + + %(DEFAULT_BODY)s + + doing_address = TRUE; + proto_item_append_text(tree, ")"); + +#.FN_BODY MTASuppliedInformation + + doing_address = FALSE; + + %(DEFAULT_BODY)s + + doing_address = TRUE; + proto_item_append_text(tree, ")"); + +#.FN_PARS Time + VAL_PTR = &arrival + +#.FN_BODY Time + tvbuff_t *arrival = NULL; + + %(DEFAULT_BODY)s + + if(arrival && doing_address) + proto_item_append_text(address_item, " %%s", tvb_format_text(arrival, 0, tvb_length(arrival))); + +#.FN_PARS RoutingAction + VAL_PTR = &action + +#.FN_BODY RoutingAction + int action = 0; + + %(DEFAULT_BODY)s + + proto_item_append_text(address_item, " %%s", val_to_str(action, p1_RoutingAction_vals, "action(%%d)")); + +#.FN_PARS MTABindError + VAL_PTR=&error + +#.FN_BODY MTABindError + int error = -1; + %(DEFAULT_BODY)s + if((error != -1) && check_col(actx->pinfo->cinfo, COL_INFO)) + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(error, p1_MTABindError_vals, "error(%%d)")); + +#.FN_PARS TokenTypeIdentifier + FN_VARIANT = _str VAL_PTR = &object_identifier_id + +#.FN_BODY TokenTypeData + + if(object_identifier_id) + call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); + +#.FN_PARS Credentials + VAL_PTR = &credentials + +#.FN_BODY Credentials + gint credentials = -1; + + %(DEFAULT_BODY)s + + if( (credentials!=-1) && p1_Credentials_vals[credentials].strptr ){ + if (check_col(actx->pinfo->cinfo, COL_INFO)) { + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", p1_Credentials_vals[credentials].strptr); + } + } + +#.FN_PARS TokenDataType + VAL_PTR = &extension_id + +#.FN_BODY TokenData/value + + proto_item_append_text(tree, " (%%s)", val_to_str(extension_id, p1_TokenDataType_vals, "tokendata-type %%d")); + if (dissector_try_uint(p1_tokendata_dissector_table, extension_id, tvb, actx->pinfo, tree)) { + offset = tvb_length(tvb); + } else { + proto_item *item = NULL; + proto_tree *next_tree = NULL; + + item = proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), + "Dissector for tokendata-type %%d not implemented. Contact Wireshark developers if you want this supported", extension_id); + next_tree = proto_item_add_subtree(item, ett_p1_unknown_tokendata_type); + offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree); + expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown tokendata-type"); + } + +#.FN_BODY PerDomainBilateralInformation/bilateral-information + proto_item *item = NULL; + int loffset = 0; + guint32 len = 0; + + /* work out the length */ + loffset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, NULL, NULL, NULL); + (void) dissect_ber_length(actx->pinfo, tree, tvb, loffset, &len, NULL); + + /* create some structure so we can tell what this unknown ASN.1 represents */ + item = proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE); + tree = proto_item_add_subtree(item, ett_p1_bilateral_information); + + offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); + +#.FN_PARS MTS-APDU + VAL_PTR = &apdu + +#.FN_BODY MTS-APDU + gint apdu = -1; + + %(DEFAULT_BODY)s + + if( (apdu!=-1) && p1_MTS_APDU_vals[apdu].strptr ){ + if(check_col(actx->pinfo->cinfo, COL_INFO) && (apdu != 0)) { /* we don't show "message" - sub-dissectors have better idea */ + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", p1_MTS_APDU_vals[apdu].strptr); + } + } + +#.FN_PARS ReportType + VAL_PTR = &report + +#.FN_BODY ReportType + gint report = -1; + + %(DEFAULT_BODY)s + + if( (report!=-1) && p1_ReportType_vals[report].strptr ){ + if(check_col(actx->pinfo->cinfo, COL_INFO)) { + col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", p1_ReportType_vals[report].strptr); + } + } + +#.END + |