diff options
author | Michael Mann <mmann78@netscape.net> | 2014-09-11 16:43:00 -0400 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2014-09-12 05:51:11 +0000 |
commit | 3df42e79a54af411d3b197f461e8f98913cce59e (patch) | |
tree | 3313b9bf2326667ac80f1c3302c4ed90c25293e7 /epan/dissectors/packet-ses.c | |
parent | 47c592938ba9f0caeacc4c2ccadb370e72f293a2 (diff) |
proto_tree_add_text cleanup
Create filters (expert and hf_) that have the "most bang for the buck" (ie have many instances for a single filter)
Change-Id: I61995e41c5b298df77e084e65cdf30ebe95da1e6
Reviewed-on: https://code.wireshark.org/review/4086
Reviewed-by: Michael Mann <mmann78@netscape.net>
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-ses.c')
-rw-r--r-- | epan/dissectors/packet-ses.c | 70 |
1 files changed, 36 insertions, 34 deletions
diff --git a/epan/dissectors/packet-ses.c b/epan/dissectors/packet-ses.c index e39fb1abb1..64aceaa182 100644 --- a/epan/dissectors/packet-ses.c +++ b/epan/dissectors/packet-ses.c @@ -29,6 +29,7 @@ #include <epan/wmem/wmem.h> #include <epan/packet.h> +#include <epan/expert.h> #include <epan/prefs.h> #include <epan/asn1.h> #include <epan/conversation.h> @@ -179,6 +180,8 @@ static int hf_large_second_initial_serial_number = -1; /* clses header fields */ static int proto_clses = -1; +static expert_field ei_ses_bad_length = EI_INIT; + #define PROTO_STRING_CLSES "ISO 9548-1 OSI Connectionless Session Protocol" static dissector_handle_t pres_handle = NULL; @@ -366,7 +369,7 @@ get_item_len(tvbuff_t *tvb, int offset, int *len_len) static gboolean dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, proto_tree *param_tree, packet_info *pinfo, guint8 param_type, - guint16 param_len, guint8 *enclosure_item_flags, + guint16 param_len, proto_item *param_len_item, guint8 *enclosure_item_flags, struct SESSION_DATA_STRUCTURE *session) { gboolean has_user_information = TRUE; @@ -425,9 +428,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case Token_Item: if (param_len != 1) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 1", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 1", param_len); break; } if (tree) @@ -452,9 +454,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case Transport_Disconnect: if (param_len != 1) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 1", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 1", param_len); break; } if (tree) @@ -507,9 +508,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case Protocol_Options: if (param_len != 1) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 1", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 1", param_len); break; } if (tree) @@ -529,9 +529,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case Session_Requirement: if (param_len != 2) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 2", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 2", param_len); break; } if (tree) @@ -585,9 +584,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case TSDU_Maximum_Size: if (param_len != 4) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 4", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 4", param_len); break; } if (tree) @@ -604,9 +602,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case Version_Number: if (param_len != 1) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 1", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 1", param_len); break; } if (tree) @@ -638,9 +635,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case EnclosureItem: if (param_len != 1) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 1", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 1", param_len); break; } flags = tvb_get_guint8(tvb, offset); @@ -684,9 +680,8 @@ dissect_parameter(tvbuff_t *tvb, int offset, proto_tree *tree, case Token_Setting_Item: if (param_len != 1) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be 1", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be 1", param_len); break; } if (tree) @@ -748,9 +743,8 @@ does not exceed 65 539 octets if Protocol Version 2 has been selected. PICS. */ if (param_len < 1) { - proto_tree_add_text(param_tree, tvb, offset, - param_len, "Length is %u, should be >= 1", - param_len); + expert_add_info_format(pinfo, param_len_item, &ei_ses_bad_length, + "Length is %u, should be >= 1", param_len); break; } if (tree) @@ -849,7 +843,7 @@ dissect_parameter_group(tvbuff_t *tvb, int offset, proto_tree *tree, guint8 *enclosure_item_flags, struct SESSION_DATA_STRUCTURE *session) { gboolean has_user_information = TRUE; - proto_item *ti; + proto_item *ti, *param_len_item; proto_tree *param_tree; guint8 param_type; const char *param_str; @@ -883,7 +877,7 @@ dissect_parameter_group(tvbuff_t *tvb, int offset, proto_tree *tree, return has_user_information; } proto_item_set_len(ti, 1 + len_len + param_len); - proto_tree_add_text(param_tree, tvb, offset, len_len, + param_len_item = proto_tree_add_text(param_tree, tvb, offset, len_len, "Parameter length: %u", param_len); offset += len_len; @@ -904,7 +898,7 @@ dissect_parameter_group(tvbuff_t *tvb, int offset, proto_tree *tree, default: if (!dissect_parameter(tvb, offset, tree, - param_tree, pinfo, param_type, param_len, + param_tree, pinfo, param_type, param_len, param_len_item, enclosure_item_flags, session)) has_user_information = FALSE; break; @@ -926,7 +920,7 @@ dissect_parameters(tvbuff_t *tvb, int offset, guint16 len, proto_tree *tree, guint8 *enclosure_item_flags, struct SESSION_DATA_STRUCTURE *session) { gboolean has_user_information = TRUE; - proto_item *ti; + proto_item *ti, *param_len_item; proto_tree *param_tree; guint8 param_type; const char *param_str; @@ -960,7 +954,7 @@ dissect_parameters(tvbuff_t *tvb, int offset, guint16 len, proto_tree *tree, return has_user_information; } proto_item_set_len(ti, 1 + len_len + param_len); - proto_tree_add_text(param_tree, tvb, offset, len_len, + param_len_item = proto_tree_add_text(param_tree, tvb, offset, len_len, "Parameter length: %u", param_len); offset += len_len; @@ -991,7 +985,7 @@ dissect_parameters(tvbuff_t *tvb, int offset, guint16 len, proto_tree *tree, /* everything else is a PI */ default: if (!dissect_parameter(tvb, offset, tree, - param_tree, pinfo, param_type, param_len, + param_tree, pinfo, param_type, param_len, param_len_item, enclosure_item_flags, session)) has_user_information = FALSE; break; @@ -1903,11 +1897,19 @@ proto_register_ses(void) &ett_ses_segment, &ett_ses_segments }; + + static ei_register_info ei[] = { + { &ei_ses_bad_length, { "ses.bad_length", PI_MALFORMED, PI_ERROR, "Bad length", EXPFILL }}, + }; + module_t *ses_module; + expert_module_t* expert_ses; proto_ses = proto_register_protocol(PROTO_STRING_SES, "SES", "ses"); proto_register_field_array(proto_ses, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + expert_ses = expert_register_protocol(proto_ses); + expert_register_field_array(expert_ses, ei, array_length(ei)); register_init_routine (&ses_reassemble_init); |