Ensure we always have a valid top_tree for p1.content. This fixes a problem

with other dissectors using p1.content, such as p7.

Reset global content_type_id so this will be correct in more cases.
This is still not a good solution, because ContentType and Content are
generic objects which may occur individual in P7.

Indicate when to report invalid content-type.

svn path=/trunk/; revision=36025
This commit is contained in:
Stig Bjørlykke 2011-02-22 10:23:44 +00:00
parent 4dd920a9aa
commit d9ef8f9ad1
7 changed files with 162 additions and 80 deletions

View File

@ -659,7 +659,7 @@ MessageToken B "2.6.1.7.36" "id-hat-forwarded-token"
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 {
} else if (report_unknown_content_type) {
proto_item *item = NULL;
proto_tree *next_tree = NULL;
@ -669,6 +669,8 @@ MessageToken B "2.6.1.7.36" "id-hat-forwarded-token"
next_tree=proto_item_add_subtree(item, ett_p1_content_unknown);
}
dissect_unknown_ber(actx->pinfo, next_tvb, 0, next_tree);
} else {
proto_item_append_text (actx->created_item, " (unknown content-type)");
}
}
@ -1290,5 +1292,20 @@ MessageToken B "2.6.1.7.36" "id-hat-forwarded-token"
}
}
#.FN_BODY MessageSubmissionArgument
p1_initialize_content_globals(tree, TRUE);
%(DEFAULT_BODY)s
p1_initialize_content_globals(NULL, FALSE);
#.FN_BODY MessageDeliveryArgument
p1_initialize_content_globals(tree, TRUE);
%(DEFAULT_BODY)s
p1_initialize_content_globals(NULL, FALSE);
#.FN_BODY ReportDeliveryArgument
p1_initialize_content_globals(tree, TRUE);
%(DEFAULT_BODY)s
p1_initialize_content_globals(NULL, FALSE);
#.END

View File

@ -63,6 +63,7 @@ static struct SESSION_DATA_STRUCTURE* session = NULL;
static int extension_id = -1; /* integer extension id */
static const char *object_identifier_id = NULL; /* extensions identifier */
static const char *content_type_id = NULL; /* content type identifier */
static gboolean report_unknown_content_type = FALSE;
#define MAX_ORA_STR_LEN 256
static char *oraddress = NULL;
@ -113,6 +114,12 @@ static const ros_info_t p3_ros_info = {
p3_err_tab
};
void p1_initialize_content_globals (proto_tree *tree, gboolean report_unknown_cont_type)
{
top_tree = tree;
content_type_id = NULL;
report_unknown_content_type = report_unknown_cont_type;
}
char* p1_get_last_oraddress() { return oraddress; }
@ -128,7 +135,7 @@ dissect_p1_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
/* save parent_tree so subdissectors can create new top nodes */
top_tree=parent_tree;
p1_initialize_content_globals (parent_tree, TRUE);
if(parent_tree){
item = proto_tree_add_item(parent_tree, proto_p1, tvb, 0, -1, FALSE);
@ -139,6 +146,7 @@ dissect_p1_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
col_set_str(pinfo->cinfo, COL_INFO, "Transfer");
dissect_p1_MTS_APDU (FALSE, tvb, 0, &asn1_ctx, tree, hf_p1_MTS_APDU_PDU);
p1_initialize_content_globals (NULL, FALSE);
}
/*
@ -158,7 +166,7 @@ dissect_p1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
/* save parent_tree so subdissectors can create new top nodes */
top_tree=parent_tree;
p1_initialize_content_globals (parent_tree, TRUE);
/* do we have operation information from the ROS dissector? */
if( !pinfo->private_data ){
@ -216,6 +224,7 @@ dissect_p1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
break;
}
}
p1_initialize_content_globals (NULL, FALSE);
}

View File

@ -28,6 +28,7 @@
#include "packet-p1-val.h"
void p1_initialize_content_globals (proto_tree *tree, gboolean report_unknown_cont_type);
char* p1_get_last_oraddress(void);
void dissect_p1_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree);
#include "packet-p1-exp.h"

View File

@ -402,3 +402,17 @@ RTSE-apdus B "2.6.0.2.10""id-as-ms-rtse"
col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (count=%%d)", count);
}
#.FN_BODY MSMessageSubmissionArgument
p1_initialize_content_globals (tree, TRUE);
%(DEFAULT_BODY)s
p1_initialize_content_globals (NULL, FALSE);
#.FN_BODY EntryInformation
p1_initialize_content_globals (NULL, FALSE);
%(DEFAULT_BODY)s
p1_initialize_content_globals (NULL, FALSE);
#.FN_BODY EntryModification
p1_initialize_content_globals (NULL, FALSE);
%(DEFAULT_BODY)s
p1_initialize_content_globals (NULL, FALSE);

View File

@ -71,6 +71,7 @@ static struct SESSION_DATA_STRUCTURE* session = NULL;
static int extension_id = -1; /* integer extension id */
static const char *object_identifier_id = NULL; /* extensions identifier */
static const char *content_type_id = NULL; /* content type identifier */
static gboolean report_unknown_content_type = FALSE;
#define MAX_ORA_STR_LEN 256
static char *oraddress = NULL;
@ -656,7 +657,7 @@ static int hf_p1_G3FacsimileNonBasicParameters_jpeg = -1;
static int hf_p1_G3FacsimileNonBasicParameters_processable_mode_26 = -1;
/*--- End of included file: packet-p1-hf.c ---*/
#line 82 "packet-p1-template.c"
#line 83 "packet-p1-template.c"
/* Initialize the subtree pointers */
static gint ett_p1 = -1;
@ -853,7 +854,7 @@ static gint ett_p1_SEQUENCE_SIZE_1_ub_recipients_OF_PerRecipientMessageSubmissio
static gint ett_p1_SEQUENCE_SIZE_1_ub_recipients_OF_PerRecipientProbeSubmissionFields = -1;
/*--- End of included file: packet-p1-ett.c ---*/
#line 93 "packet-p1-template.c"
#line 94 "packet-p1-template.c"
/* Dissector tables */
static dissector_table_t p1_extension_dissector_table;
@ -904,7 +905,7 @@ static const value_string p3_err_code_string_vals[] = {
/*--- End of included file: packet-p1-table.c ---*/
#line 100 "packet-p1-template.c"
#line 101 "packet-p1-template.c"
/*--- Included file: packet-p1-fn.c ---*/
@ -922,7 +923,7 @@ dissect_p1_NULL(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, as
static int
dissect_p1_MTAName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 679 "p1.cnf"
#line 681 "p1.cnf"
tvbuff_t *mtaname = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
@ -1003,7 +1004,7 @@ dissect_p1_TokenTypeIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_TokenTypeData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1213 "p1.cnf"
#line 1215 "p1.cnf"
if(object_identifier_id)
call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
@ -1114,7 +1115,7 @@ static const ber_choice_t Credentials_choice[] = {
int
dissect_p1_Credentials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1221 "p1.cnf"
#line 1223 "p1.cnf"
gint credentials = -1;
offset = dissect_ber_choice(actx, tree, tvb, offset,
@ -1375,7 +1376,7 @@ static const value_string p1_MTABindError_vals[] = {
static int
dissect_p1_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1204 "p1.cnf"
#line 1206 "p1.cnf"
int error = -1;
offset = dissect_ber_constrained_integer(implicit_tag, actx, tree, tvb, offset,
0U, ub_integer_options, hf_index, &error);
@ -1392,7 +1393,7 @@ dissect_p1_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_T_x121_dcc_code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 863 "p1.cnf"
#line 865 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -1412,7 +1413,7 @@ dissect_p1_T_x121_dcc_code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_p1_T_iso_3166_alpha2_code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 815 "p1.cnf"
#line 817 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1472,7 +1473,7 @@ dissect_p1_CountryName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_T_numeric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 871 "p1.cnf"
#line 873 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -1492,7 +1493,7 @@ dissect_p1_T_numeric(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U
static int
dissect_p1_T_printable(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 823 "p1.cnf"
#line 825 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1552,7 +1553,7 @@ dissect_p1_AdministrationDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_p1_T_numeric_private_domain_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 887 "p1.cnf"
#line 889 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -1572,7 +1573,7 @@ dissect_p1_T_numeric_private_domain_identifier(gboolean implicit_tag _U_, tvbuff
static int
dissect_p1_T_printable_private_domain_identifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 839 "p1.cnf"
#line 841 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1603,7 +1604,7 @@ static const ber_choice_t PrivateDomainIdentifier_choice[] = {
static int
dissect_p1_PrivateDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 730 "p1.cnf"
#line 732 "p1.cnf"
if(doing_address)
g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN);
@ -1638,7 +1639,7 @@ dissect_p1_GlobalDomainIdentifier_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_
static int
dissect_p1_GlobalDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1084 "p1.cnf"
#line 1086 "p1.cnf"
oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0';
address_item = tree;
@ -1665,7 +1666,7 @@ dissect_p1_GlobalDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_p1_LocalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1103 "p1.cnf"
#line 1105 "p1.cnf"
tvbuff_t *id = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_IA5String,
@ -1705,7 +1706,7 @@ dissect_p1_MTSIdentifier_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int off
static int
dissect_p1_MTSIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1116 "p1.cnf"
#line 1118 "p1.cnf"
doing_address = TRUE;
@ -1731,7 +1732,7 @@ dissect_p1_MTSIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_p1_MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1078 "p1.cnf"
#line 1080 "p1.cnf"
address_item = NULL;
@ -1747,7 +1748,7 @@ dissect_p1_MessageIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_p1_X121Address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 699 "p1.cnf"
#line 701 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -1779,7 +1780,7 @@ dissect_p1_NetworkAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offs
static int
dissect_p1_TerminalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 713 "p1.cnf"
#line 715 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1801,7 +1802,7 @@ dissect_p1_TerminalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_numeric_private_domain_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 879 "p1.cnf"
#line 881 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -1821,7 +1822,7 @@ dissect_p1_T_numeric_private_domain_name(gboolean implicit_tag _U_, tvbuff_t *tv
static int
dissect_p1_T_printable_private_domain_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 831 "p1.cnf"
#line 833 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1852,7 +1853,7 @@ static const ber_choice_t PrivateDomainName_choice[] = {
static int
dissect_p1_PrivateDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 723 "p1.cnf"
#line 725 "p1.cnf"
if(doing_address)
g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN);
@ -1871,7 +1872,7 @@ dissect_p1_PrivateDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_p1_OrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 740 "p1.cnf"
#line 742 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1904,7 +1905,7 @@ dissect_p1_NumericUserIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_p1_T_printable_surname(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 943 "p1.cnf"
#line 945 "p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1926,7 +1927,7 @@ dissect_p1_T_printable_surname(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_printable_given_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 953 "p1.cnf"
#line 955 "p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1948,7 +1949,7 @@ dissect_p1_T_printable_given_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_,
static int
dissect_p1_T_printable_initials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 963 "p1.cnf"
#line 965 "p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -1970,7 +1971,7 @@ dissect_p1_T_printable_initials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_T_printable_generation_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 973 "p1.cnf"
#line 975 "p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -2009,7 +2010,7 @@ dissect_p1_PersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_OrganizationalUnitName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 766 "p1.cnf"
#line 768 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -2056,7 +2057,7 @@ static const ber_sequence_t BuiltInStandardAttributes_sequence[] = {
static int
dissect_p1_BuiltInStandardAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1140 "p1.cnf"
#line 1142 "p1.cnf"
address_item = tree;
@ -2073,7 +2074,7 @@ dissect_p1_BuiltInStandardAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U
static int
dissect_p1_T_printable_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1023 "p1.cnf"
#line 1025 "p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -2096,7 +2097,7 @@ dissect_p1_T_printable_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of
static int
dissect_p1_T_printable_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1034 "p1.cnf"
#line 1036 "p1.cnf"
tvbuff_t *pstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -2126,7 +2127,7 @@ static const ber_sequence_t BuiltInDomainDefinedAttribute_sequence[] = {
static int
dissect_p1_BuiltInDomainDefinedAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1047 "p1.cnf"
#line 1049 "p1.cnf"
ddatype = ep_alloc(MAX_ORA_STR_LEN); ddatype[0] = '\0';
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@ -2280,7 +2281,7 @@ dissect_p1_ORName_U(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
int
dissect_p1_ORName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1065 "p1.cnf"
#line 1067 "p1.cnf"
oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0';
address_item = NULL;
@ -2654,7 +2655,7 @@ dissect_p1_PerMessageIndicators(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_Time(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1183 "p1.cnf"
#line 1185 "p1.cnf"
tvbuff_t *arrival = NULL;
offset = dissect_ber_UTCTime(implicit_tag, actx, tree, tvb, offset, hf_index);
@ -2718,7 +2719,7 @@ dissect_p1_T_bilateral_domain(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_bilateral_information(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1251 "p1.cnf"
#line 1253 "p1.cnf"
proto_item *item = NULL;
int loffset = 0;
guint32 len = 0;
@ -2786,7 +2787,7 @@ static const value_string p1_RoutingAction_vals[] = {
static int
dissect_p1_RoutingAction(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1194 "p1.cnf"
#line 1196 "p1.cnf"
int action = 0;
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index,
@ -2847,7 +2848,7 @@ static const ber_sequence_t DomainSuppliedInformation_set[] = {
static int
dissect_p1_DomainSuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1162 "p1.cnf"
#line 1164 "p1.cnf"
doing_address = FALSE;
@ -2872,7 +2873,7 @@ static const ber_sequence_t TraceInformationElement_sequence[] = {
static int
dissect_p1_TraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1146 "p1.cnf"
#line 1148 "p1.cnf"
doing_address = TRUE;
@ -3220,7 +3221,7 @@ dissect_p1_Content(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
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 {
} else if (report_unknown_content_type) {
proto_item *item = NULL;
proto_tree *next_tree = NULL;
@ -3230,6 +3231,8 @@ dissect_p1_Content(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
next_tree=proto_item_add_subtree(item, ett_p1_content_unknown);
}
dissect_unknown_ber(actx->pinfo, next_tvb, 0, next_tree);
} else {
proto_item_append_text (actx->created_item, " (unknown content-type)");
}
}
@ -3622,7 +3625,7 @@ static const ber_choice_t ReportType_choice[] = {
static int
dissect_p1_ReportType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1283 "p1.cnf"
#line 1285 "p1.cnf"
gint report = -1;
offset = dissect_ber_choice(actx, tree, tvb, offset,
@ -3764,7 +3767,7 @@ static const ber_choice_t MTS_APDU_choice[] = {
static int
dissect_p1_MTS_APDU(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1269 "p1.cnf"
#line 1271 "p1.cnf"
gint apdu = -1;
offset = dissect_ber_choice(actx, tree, tvb, offset,
@ -3821,7 +3824,7 @@ static const ber_sequence_t MTASuppliedInformation_set[] = {
static int
dissect_p1_MTASuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1171 "p1.cnf"
#line 1173 "p1.cnf"
doing_address = FALSE;
@ -3847,7 +3850,7 @@ static const ber_sequence_t InternalTraceInformationElement_sequence[] = {
static int
dissect_p1_InternalTraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1154 "p1.cnf"
#line 1156 "p1.cnf"
doing_address = TRUE;
@ -4110,9 +4113,15 @@ static const ber_sequence_t MessageSubmissionArgument_sequence[] = {
static int
dissect_p1_MessageSubmissionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
#line 1296 "p1.cnf"
p1_initialize_content_globals(tree, TRUE);
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
MessageSubmissionArgument_sequence, hf_index, ett_p1_MessageSubmissionArgument);
p1_initialize_content_globals(NULL, FALSE);
return offset;
}
@ -4678,9 +4687,15 @@ static const ber_sequence_t MessageDeliveryArgument_sequence[] = {
static int
dissect_p1_MessageDeliveryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
#line 1301 "p1.cnf"
p1_initialize_content_globals(tree, TRUE);
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
MessageDeliveryArgument_sequence, hf_index, ett_p1_MessageDeliveryArgument);
p1_initialize_content_globals(NULL, FALSE);
return offset;
}
@ -4782,9 +4797,15 @@ static const ber_sequence_t ReportDeliveryArgument_set[] = {
static int
dissect_p1_ReportDeliveryArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
#line 1306 "p1.cnf"
p1_initialize_content_globals(tree, TRUE);
offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
ReportDeliveryArgument_set, hf_index, ett_p1_ReportDeliveryArgument);
p1_initialize_content_globals(NULL, FALSE);
return offset;
}
@ -4989,7 +5010,7 @@ dissect_p1_UserName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_
static int
dissect_p1_T_x121_address(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 855 "p1.cnf"
#line 857 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -5695,7 +5716,7 @@ static const ber_sequence_t ORAddress_sequence[] = {
int
dissect_p1_ORAddress(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1052 "p1.cnf"
#line 1054 "p1.cnf"
oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0';
doing_address = TRUE;
@ -6183,7 +6204,7 @@ dissect_p1_CertificateSelectors(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_CommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 792 "p1.cnf"
#line 794 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -6205,7 +6226,7 @@ dissect_p1_CommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _
static int
dissect_p1_TeletexCommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 805 "p1.cnf"
#line 807 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -6306,7 +6327,7 @@ dissect_p1_UniversalCommonName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_TeletexOrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 753 "p1.cnf"
#line 755 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -6337,7 +6358,7 @@ dissect_p1_UniversalOrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb _U
static int
dissect_p1_T_teletex_surname(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 983 "p1.cnf"
#line 985 "p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -6359,7 +6380,7 @@ dissect_p1_T_teletex_surname(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o
static int
dissect_p1_T_teletex_given_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 993 "p1.cnf"
#line 995 "p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -6381,7 +6402,7 @@ dissect_p1_T_teletex_given_name(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in
static int
dissect_p1_T_teletex_initials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1003 "p1.cnf"
#line 1005 "p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -6403,7 +6424,7 @@ dissect_p1_T_teletex_initials(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_teletex_generation_qualifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1013 "p1.cnf"
#line 1015 "p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -6459,7 +6480,7 @@ dissect_p1_UniversalPersonalName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, i
static int
dissect_p1_TeletexOrganizationalUnitName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 779 "p1.cnf"
#line 781 "p1.cnf"
tvbuff_t *string = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -6527,7 +6548,7 @@ dissect_p1_PDSName(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_p1_T_x121_dcc_code_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 895 "p1.cnf"
#line 897 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -6547,7 +6568,7 @@ dissect_p1_T_x121_dcc_code_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int
static int
dissect_p1_T_iso_3166_alpha2_code_01(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 847 "p1.cnf"
#line 849 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString,
@ -6589,7 +6610,7 @@ dissect_p1_PhysicalDeliveryCountryName(gboolean implicit_tag _U_, tvbuff_t *tvb
static int
dissect_p1_T_numeric_code(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 903 "p1.cnf"
#line 905 "p1.cnf"
tvbuff_t *nstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_NumericString,
@ -7014,7 +7035,7 @@ dissect_p1_TerminalType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
static int
dissect_p1_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 912 "p1.cnf"
#line 914 "p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -7038,7 +7059,7 @@ dissect_p1_T_type(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_,
static int
dissect_p1_T_teletex_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 924 "p1.cnf"
#line 926 "p1.cnf"
tvbuff_t *tstring = NULL;
offset = dissect_ber_constrained_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString,
@ -7069,7 +7090,7 @@ static const ber_sequence_t TeletexDomainDefinedAttribute_sequence[] = {
static int
dissect_p1_TeletexDomainDefinedAttribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 938 "p1.cnf"
#line 940 "p1.cnf"
ddatype = ep_alloc(MAX_ORA_STR_LEN); ddatype[0] = '\0';
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
@ -7132,7 +7153,7 @@ static const ber_sequence_t MTANameAndOptionalGDI_sequence[] = {
static int
dissect_p1_MTANameAndOptionalGDI(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1131 "p1.cnf"
#line 1133 "p1.cnf"
doing_address = TRUE;
@ -7192,7 +7213,7 @@ dissect_p1_TokenDataType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse
static int
dissect_p1_T_value(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
#line 1235 "p1.cnf"
#line 1237 "p1.cnf"
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)) {
@ -8188,7 +8209,7 @@ static void dissect_SecurityClassification_PDU(tvbuff_t *tvb _U_, packet_info *p
/*--- End of included file: packet-p1-fn.c ---*/
#line 102 "packet-p1-template.c"
#line 103 "packet-p1-template.c"
/*--- Included file: packet-p1-table11.c ---*/
@ -8220,7 +8241,7 @@ static const ros_opr_t p3_opr_tab[] = {
/*--- End of included file: packet-p1-table11.c ---*/
#line 104 "packet-p1-template.c"
#line 105 "packet-p1-template.c"
/*--- Included file: packet-p1-table21.c ---*/
#line 1 "packet-p1-table21.c"
@ -8265,7 +8286,7 @@ static const ros_err_t p3_err_tab[] = {
/*--- End of included file: packet-p1-table21.c ---*/
#line 105 "packet-p1-template.c"
#line 106 "packet-p1-template.c"
static const ros_info_t p3_ros_info = {
"P3",
@ -8277,6 +8298,12 @@ static const ros_info_t p3_ros_info = {
p3_err_tab
};
void p1_initialize_content_globals (proto_tree *tree, gboolean report_unknown_cont_type)
{
top_tree = tree;
content_type_id = NULL;
report_unknown_content_type = report_unknown_cont_type;
}
char* p1_get_last_oraddress() { return oraddress; }
@ -8292,7 +8319,7 @@ dissect_p1_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
/* save parent_tree so subdissectors can create new top nodes */
top_tree=parent_tree;
p1_initialize_content_globals (parent_tree, TRUE);
if(parent_tree){
item = proto_tree_add_item(parent_tree, proto_p1, tvb, 0, -1, FALSE);
@ -8303,6 +8330,7 @@ dissect_p1_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
col_set_str(pinfo->cinfo, COL_INFO, "Transfer");
dissect_p1_MTS_APDU (FALSE, tvb, 0, &asn1_ctx, tree, hf_p1_MTS_APDU_PDU);
p1_initialize_content_globals (NULL, FALSE);
}
/*
@ -8322,7 +8350,7 @@ dissect_p1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
/* save parent_tree so subdissectors can create new top nodes */
top_tree=parent_tree;
p1_initialize_content_globals (parent_tree, TRUE);
/* do we have operation information from the ROS dissector? */
if( !pinfo->private_data ){
@ -8380,6 +8408,7 @@ dissect_p1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree)
break;
}
}
p1_initialize_content_globals (NULL, FALSE);
}
@ -10668,7 +10697,7 @@ void proto_register_p1(void) {
NULL, HFILL }},
/*--- End of included file: packet-p1-hfarr.c ---*/
#line 247 "packet-p1-template.c"
#line 256 "packet-p1-template.c"
};
/* List of subtrees */
@ -10867,7 +10896,7 @@ void proto_register_p1(void) {
&ett_p1_SEQUENCE_SIZE_1_ub_recipients_OF_PerRecipientProbeSubmissionFields,
/*--- End of included file: packet-p1-ettarr.c ---*/
#line 260 "packet-p1-template.c"
#line 269 "packet-p1-template.c"
};
module_t *p1_module;
@ -11060,7 +11089,7 @@ void proto_reg_handoff_p1(void) {
/*--- End of included file: packet-p1-dis-tab.c ---*/
#line 296 "packet-p1-template.c"
#line 305 "packet-p1-template.c"
/* APPLICATION CONTEXT */

View File

@ -174,6 +174,7 @@
/*--- End of included file: packet-p1-val.h ---*/
#line 30 "packet-p1-template.h"
void p1_initialize_content_globals (proto_tree *tree, gboolean report_unknown_cont_type);
char* p1_get_last_oraddress(void);
void dissect_p1_mts_apdu (tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree);
@ -231,7 +232,7 @@ int dissect_p1_TeletexNonBasicParameters(gboolean implicit_tag _U_, tvbuff_t *tv
int dissect_p1_SecurityLabel(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);
/*--- End of included file: packet-p1-exp.h ---*/
#line 34 "packet-p1-template.h"
#line 35 "packet-p1-template.h"
void proto_reg_handoff_p1(void);
void proto_register_p1(void);

View File

@ -1762,9 +1762,13 @@ static const ber_sequence_t EntryInformation_sequence[] = {
static int
dissect_p7_EntryInformation(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
p1_initialize_content_globals (NULL, FALSE);
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
EntryInformation_sequence, hf_index, ett_p7_EntryInformation);
p1_initialize_content_globals (NULL, FALSE);
return offset;
}
@ -2691,9 +2695,12 @@ static const ber_sequence_t EntryModification_set[] = {
static int
dissect_p7_EntryModification(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
p1_initialize_content_globals (NULL, FALSE);
offset = dissect_ber_set(implicit_tag, actx, tree, tvb, offset,
EntryModification_set, hf_index, ett_p7_EntryModification);
p1_initialize_content_globals (NULL, FALSE);
return offset;
}
@ -2752,9 +2759,13 @@ static const ber_sequence_t MSMessageSubmissionArgument_sequence[] = {
static int
dissect_p7_MSMessageSubmissionArgument(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
p1_initialize_content_globals (tree, TRUE);
offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset,
MSMessageSubmissionArgument_sequence, hf_index, ett_p7_MSMessageSubmissionArgument);
p1_initialize_content_globals (NULL, FALSE);
return offset;
}