diff options
author | Michael Mann <mmann78@netscape.net> | 2013-05-27 17:30:43 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-05-27 17:30:43 +0000 |
commit | ea177a2575dc4900c7ef2aa78bfe9b2a1173f7fb (patch) | |
tree | 626615fdfd431d78baefe2e59fb28f6b774959aa /epan/dissectors/packet-meta.c | |
parent | c6af00a977cf7c7a3c914c79009eaa87bd19c56f (diff) |
Batch of filterable expert infos
svn path=/trunk/; revision=49596
Diffstat (limited to 'epan/dissectors/packet-meta.c')
-rw-r--r-- | epan/dissectors/packet-meta.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/epan/dissectors/packet-meta.c b/epan/dissectors/packet-meta.c index cd7b11d8e8..1f82f1b38a 100644 --- a/epan/dissectors/packet-meta.c +++ b/epan/dissectors/packet-meta.c @@ -89,7 +89,6 @@ enum meta_direction { static int proto_meta = -1; extern int proto_sscop; -extern int proto_malformed; /* fields */ static int hf_meta_schema = -1; @@ -131,6 +130,9 @@ static gint ett_meta_cell = -1; static gint ett_meta_imsi = -1; static gint ett_meta_imei = -1; +static expert_field ei_meta_malformed = EI_INIT; +static expert_field ei_meta_invalid_header = EI_INIT; + /* default handle */ static dissector_handle_t data_handle; static dissector_handle_t atm_untrunc_handle; @@ -496,11 +498,8 @@ static gint32 evaluate_meta_items(guint16 schema, tvbuff_t *tvb, packet_info *pi item_len = skip_item(meta_tree, tvb, pinfo, offs + total_len); } if (item_len < 4) { /* 4 is the minimum length of an item: id + type + length field */ - proto_item *malformed; - malformed = proto_tree_add_protocol_format(meta_tree, - proto_malformed, tvb, offs, -1, "[Malformed Packet: %s]", pinfo->current_proto); - expert_add_info_format(pinfo, malformed, PI_MALFORMED, PI_ERROR, - "Malformed Packet (wrong item encoding)"); + expert_add_info_format_text(pinfo, meta_tree, &ei_meta_malformed, + "Malformed Packet %s (wrong item encoding)", pinfo->current_proto); return -1; } total_len += item_len; @@ -543,8 +542,7 @@ dissect_meta(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) } if (hdrlen != item_len) { - expert_add_info_format(pinfo, ti, PI_MALFORMED, PI_ERROR, "Invalid Header Length"); - proto_tree_add_text(tree, tvb, hdrlen+4, -1, "[Malformed Packet]"); + expert_add_info(pinfo, ti, &ei_meta_invalid_header); return; } @@ -775,11 +773,20 @@ proto_register_meta(void) &ett_meta_imei }; + static ei_register_info ei[] = { + { &ei_meta_malformed, { "meta.malformed", PI_MALFORMED, PI_ERROR, "Malformed data", EXPFILL }}, + { &ei_meta_invalid_header, { "meta.invalid_header_length", PI_MALFORMED, PI_ERROR, "Invalid Header Length", EXPFILL }}, + }; + + expert_module_t* expert_meta; + proto_meta = proto_register_protocol("Metadata", "META", "meta"); register_dissector("meta", dissect_meta, proto_meta); proto_register_field_array(proto_meta, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + expert_meta = expert_register_protocol(proto_meta); + expert_register_field_array(expert_meta, ei, array_length(ei)); meta_dissector_table = register_dissector_table("meta.proto", "META protocol", FT_UINT16, BASE_DEC); |