diff options
author | Ulf Lamping <ulf.lamping@web.de> | 2005-09-11 16:55:34 +0000 |
---|---|---|
committer | Ulf Lamping <ulf.lamping@web.de> | 2005-09-11 16:55:34 +0000 |
commit | 642467ad5ce08b28314cc2cb777b9d66a944d4ba (patch) | |
tree | fbc55d80c6f51c2fbac4a9350f4f14859eaf928f /epan/dissectors/packet-frame.c | |
parent | 266e1a3491de1ff790c326bbffe0d4827af0f24b (diff) |
I'm adding the "Expert Info" prototype now, as it seems to be in a state where others might have a look and probably already find it useful :-). Anyway, we can easily disable it at one or two places in the code if it get's in our way of a new release.
Please see: http://wiki.ethereal.com/Development/ExpertInfo for a complete overview of the intended feature and it's current state of implementation.
While I'm working on this, I've also added some more status result codes to the DCE/RPC and DCOM dissectors.
svn path=/trunk/; revision=15754
Diffstat (limited to 'epan/dissectors/packet-frame.c')
-rw-r--r-- | epan/dissectors/packet-frame.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/epan/dissectors/packet-frame.c b/epan/dissectors/packet-frame.c index 9b581d8913..b7d35cad25 100644 --- a/epan/dissectors/packet-frame.c +++ b/epan/dissectors/packet-frame.c @@ -34,6 +34,7 @@ #include "packet-frame.h" #include <epan/prefs.h> #include <epan/tap.h> +#include <epan/expert.h> int proto_frame = -1; int hf_frame_arrival_time = -1; @@ -264,14 +265,18 @@ show_exception(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, { static const char dissector_error_nomsg[] = "Dissector writer didn't bother saying what the error was"; + proto_item *item; + switch (exception) { case BoundsError: if (check_col(pinfo->cinfo, COL_INFO)) col_append_str(pinfo->cinfo, COL_INFO, "[Short Frame]"); - proto_tree_add_protocol_format(tree, proto_short, tvb, 0, 0, + item = proto_tree_add_protocol_format(tree, proto_short, tvb, 0, 0, "[Short Frame: %s]", pinfo->current_proto); + expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + "Short Frame"); break; case ReportedBoundsError: @@ -285,7 +290,7 @@ show_exception(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, pinfo->current_proto, exception_message == NULL ? dissector_error_nomsg : exception_message); - proto_tree_add_protocol_format(tree, proto_malformed, tvb, 0, 0, + item = proto_tree_add_protocol_format(tree, proto_malformed, tvb, 0, 0, "[Dissector bug, protocol %s: %s]", pinfo->current_proto, exception_message == NULL ? @@ -294,6 +299,9 @@ show_exception(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, pinfo->current_proto, pinfo->fd->num, exception_message == NULL ? dissector_error_nomsg : exception_message); + expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, + exception_message == NULL ? + dissector_error_nomsg : exception_message); if (exception_message != NULL) g_free(exception_message); break; @@ -307,6 +315,8 @@ show_exception(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void show_reported_bounds_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + proto_item *item; + if (pinfo->fragmented) { /* * We were dissecting an unreassembled fragmented @@ -320,15 +330,17 @@ show_reported_bounds_error(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_append_fstr(pinfo->cinfo, COL_INFO, "[Unreassembled Packet%s]", pinfo->noreassembly_reason); - proto_tree_add_protocol_format(tree, proto_unreassembled, + item = proto_tree_add_protocol_format(tree, proto_unreassembled, tvb, 0, 0, "[Unreassembled Packet%s: %s]", pinfo->noreassembly_reason, pinfo->current_proto); + expert_add_info_format(pinfo, item, PI_REASSEMBLE, PI_WARN, "Unreassembled Packet (Exception occured)"); } else { if (check_col(pinfo->cinfo, COL_INFO)) col_append_str(pinfo->cinfo, COL_INFO, "[Malformed Packet]"); - proto_tree_add_protocol_format(tree, proto_malformed, + item = proto_tree_add_protocol_format(tree, proto_malformed, tvb, 0, 0, "[Malformed Packet: %s]", pinfo->current_proto); + expert_add_info_format(pinfo, item, PI_MALFORMED, PI_ERROR, "Malformed Packet (Exception occured)"); } } |