aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-meta.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-05-27 17:30:43 +0000
committerMichael Mann <mmann78@netscape.net>2013-05-27 17:30:43 +0000
commitea177a2575dc4900c7ef2aa78bfe9b2a1173f7fb (patch)
tree626615fdfd431d78baefe2e59fb28f6b774959aa /epan/dissectors/packet-meta.c
parentc6af00a977cf7c7a3c914c79009eaa87bd19c56f (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.c23
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);