#.TYPE_ATTR CountryName TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(x411_CountryName_vals) BITMASK = 0 Time TYPE = FT_STRING DISPLAY = BASE_NONE STRING = NULL BITMASK = 0 #.INCLUDE ../acse/acse-exp.cnf #.INCLUDE ../x509ce/x509ce-exp.cnf #.INCLUDE ../x509if/x509if-exp.cnf #.INCLUDE ../x509sat/x509sat-exp.cnf #.INCLUDE ../x509af/x509af-exp.cnf #.EXPORTS ContentLength EncodedInformationTypes EncodedInformationTypesConstraints ExtendedCertificates ExtendedContentType G3FacsimileNonBasicParameters MessageDeliveryIdentifier MessageDeliveryTime MessageSubmissionEnvelope ORAddress ORName OriginatingMTACertificate OtherMessageDeliveryFields ProofOfSubmission RequestedDeliveryMethod SecurityContext SecurityLabel SupplementaryInformation TeletexNonBasicParameters UniversalOrBMPString NonDeliveryReasonCode NonDeliveryDiagnosticCode #.TYPE_RENAME MTABindArgument/authenticated AuthenticatedArgument MTABindResult/authenticated AuthenticatedResult ExtensionField/value ExtensionValue SecurityCategory/value CategoryValue #.FIELD_RENAME CountryName/iso-3166-alpha2-code printable-country-name CountryName/x121-dcc-code numeric-country-name AdministrationDomainName/printable printable-administration-domain-name AdministrationDomainName/numeric numeric-administration-domain-name 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 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 MTABindArgument MTABindResult MTABindError MTS-APDU #.REGISTER RecipientReassignmentProhibited N x411.extension 1 MTSOriginatorRequestedAlternateRecipient N x411.extension 2 DLExpansionProhibited N x411.extension 3 ConversionWithLossProhibited N x411.extension 4 LatestDeliveryTime N x411.extension 5 RequestedDeliveryMethod N x411.extension 6 PhysicalForwardingProhibited N x411.extension 7 PhysicalForwardingAddressRequest N x411.extension 8 PhysicalDeliveryModes N x411.extension 9 RegisteredMailType N x411.extension 10 RecipientNumberForAdvice N x411.extension 11 PhysicalRenditionAttributes N x411.extension 12 OriginatorReturnAddress N x411.extension 13 PhysicalDeliveryReportRequest N x411.extension 14 OriginatorCertificate N x411.extension 15 MessageToken N x411.extension 16 ContentConfidentialityAlgorithmIdentifier N x411.extension 17 ContentIntegrityCheck N x411.extension 18 MessageOriginAuthenticationCheck N x411.extension 19 MessageSecurityLabel N x411.extension 20 ProofOfSubmissionRequest N x411.extension 21 ProofOfDeliveryRequest N x411.extension 22 ContentCorrelator N x411.extension 23 ProbeOriginAuthenticationCheck N x411.extension 24 RedirectionHistory N x411.extension 25 DLExpansionHistory N x411.extension 26 PhysicalForwardingAddress N x411.extension 27 RecipientCertificate N x411.extension 28 ProofOfDelivery N x411.extension 29 OriginatorAndDLExpansionHistory N x411.extension 30 ReportingDLName N x411.extension 31 ReportingMTACertificate N x411.extension 32 ReportOriginAuthenticationCheck N x411.extension 33 ProofOfSubmission N x411.extension 35 TraceInformation N x411.extension 37 InternalTraceInformation N x411.extension 38 ReportingMTAName N x411.extension 39 ExtendedCertificates N x411.extension 40 DLExemptedRecipients N x411.extension 42 CertificateSelectors N x411.extension 45 CommonName N x411.extension-attribute 1 TeletexCommonName N x411.extension-attribute 2 TeletexOrganizationName N x411.extension-attribute 3 TeletexPersonalName N x411.extension-attribute 4 TeletexOrganizationalUnitNames N x411.extension-attribute 5 PDSName N x411.extension-attribute 7 PhysicalDeliveryCountryName N x411.extension-attribute 8 PostalCode N x411.extension-attribute 9 PhysicalDeliveryOfficeName N x411.extension-attribute 10 UniversalCommonName N x411.extension-attribute 24 UniversalOrganizationName N x411.extension-attribute 25 UniversalPersonalName N x411.extension-attribute 26 UniversalOrganizationalUnitNames N x411.extension-attribute 27 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 x411.tokendata 1 MessageTokenSignedData N x411.tokendata 2 # the next two are unlikely to ever be seen (unless in a bad encoding) MessageTokenEncryptedData N x411.tokendata 3 BindTokenEncryptedData N x411.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" #.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_x411_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, x411_StandardExtension_vals, "standard-extension %%d")); if (dissector_try_port(x411_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_x411_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) { call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); name = get_oid_str_name(object_identifier_id); proto_item_append_text(tree, " (%%s)", name ? name : object_identifier_id); } #.FN_BODY SecurityCategory/value 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, x411_ExtensionAttributeType_vals, "extension-attribute-type %%d")); if (dissector_try_port(x411_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_x411_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 gint8 class; gboolean pc, ind_field; gint32 tag; guint32 len1; if(!implicit_tag){ /* XXX asn2wrs can not yet handle tagged assignment yes so this * XXX is some conformance file magic to work around that bug */ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag); offset = get_ber_length(tvb, offset, &len1, &ind_field); } if(doing_address) g_strlcat(oraddress, "/C=", MAX_ORA_STR_LEN); offset = dissect_ber_old_choice(actx, tree, tvb, offset, CountryName_choice, hf_index, ett_x411_CountryName, NULL); #.FN_BODY AdministrationDomainName gint8 class; gboolean pc, ind_field; gint32 tag; guint32 len1; if(!implicit_tag){ /* XXX asn2wrs can not yet handle tagged assignment yes so this * XXX is some conformance file magic to work around that bug */ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag); offset = get_ber_length(tvb, offset, &len1, &ind_field); } if(doing_address) g_strlcat(oraddress, "/A=", MAX_ORA_STR_LEN); offset = dissect_ber_old_choice(actx, tree, tvb, offset, AdministrationDomainName_choice, hf_index, ett_x411_AdministrationDomainName, NULL); #.FN_BODY ContentIdentifier gint8 class; gboolean pc, ind_field; gint32 tag; guint32 len1; if(!implicit_tag){ /* XXX asn2wrs can not yet handle tagged assignment yes so this * XXX is some conformance file magic to work around that bug */ offset = get_ber_identifier(tvb, offset, &class, &pc, &tag); offset = get_ber_length(tvb, offset, &len1, &ind_field); } /* this is magic I haven't seen used before - I've stripped the tag - but now I'm going to say it is IMPLICIT! */ offset = dissect_ber_restricted_string(TRUE, BER_UNI_TAG_PrintableString, actx, tree, tvb, offset, hf_index, NULL); #.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 = get_oid_str_name(content_type_id); if(!name) name = content_type_id; proto_item_append_text(tree, " (%%s)", name); } #.FN_PARS BuiltInContentType VAL_PTR = &ict #.FN_BODY BuiltInContentType 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, NULL, tvb, offset, hf_index, &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), "X.411 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_x411_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 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 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); } #.VIRTUAL_ASSGN AddrPrintableString CountryName/iso-3166-alpha2-code AdministrationDomainName/printable PrivateDomainName/printable PrivateDomainIdentifier/printable #.FN_BODY AddrPrintableString 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); #.VIRTUAL_ASSGN AddrNumericString UserAddress/x121/x121-address CountryName/x121-dcc-code AdministrationDomainName/numeric PrivateDomainName/numeric PrivateDomainIdentifier/numeric PhysicalDeliveryCountryName/x121-dcc-code PostalCode/numeric-code #.FN_BODY AddrNumericString 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); #.VIRTUAL_ASSGN AddrTeletexString TeletexPersonalName/surname TeletexPersonalName/given-name TeletexPersonalName/initials TeletexPersonalName/generation-qualifier TeletexDomainDefinedAttribute/type TeletexDomainDefinedAttribute/value #.FN_BODY AddrTeletexString VAL_PTR=&tstring tvbuff_t *tstring = NULL; %(DEFAULT_BODY)s if(doing_address && tstring) g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); #.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, "/GQ=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), 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); } #.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); } #.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_x411_subject_identifier) doing_subjectid = TRUE; %(DEFAULT_BODY)s doing_address = FALSE; if(hf_index == hf_x411_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, x411_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, x411_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 guint32 credentials; %(DEFAULT_BODY)s if (check_col(actx->pinfo->cinfo, COL_INFO)) { if(credentials == -1) credentials = 0; col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", val_to_str(credentials, x411_Credentials_vals, "Credentials(%%d)")); } #.FN_PARS TokenDataType VAL_PTR = &extension_id #.FN_BODY TokenData/value proto_item_append_text(tree, " (%%s)", val_to_str(extension_id, x411_TokenDataType_vals, "tokendata-type %%d")); if (dissector_try_port(x411_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_x411_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_x411_bilateral_information); offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); #.FN_PARS MTS-APDU VAL_PTR = &apdu #.FN_BODY MTS-APDU int apdu = -1; %(DEFAULT_BODY)s 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", val_to_str(apdu, x411_MTS_APDU_vals, "MTS-APDU(%%d)")); } #.FN_PARS ReportType VAL_PTR = &report #.FN_BODY ReportType int report = -1; %(DEFAULT_BODY)s if(check_col(actx->pinfo->cinfo, COL_INFO)) { col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", val_to_str(report, x411_ReportType_vals, "report-type(%%d)")); } #.END