diff options
author | Michael Mann <mmann78@netscape.net> | 2013-09-09 03:43:45 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2013-09-09 03:43:45 +0000 |
commit | e4025f4aba7a20dc3003b6dd65f6116786aa6304 (patch) | |
tree | 7d3d84f33e625ea59289bd6ea552b7933cd45dec /doc/packet-PROTOABBREV.c | |
parent | 25bb947bdbbd1405a5a9b20c7c7bea222f4d358b (diff) |
Add an example of filterable expert info.
Also cleanup references to README.developer that are now README.dissector.
svn path=/trunk/; revision=51858
Diffstat (limited to 'doc/packet-PROTOABBREV.c')
-rw-r--r-- | doc/packet-PROTOABBREV.c | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/doc/packet-PROTOABBREV.c b/doc/packet-PROTOABBREV.c index b72989c7d1..30add0e4a0 100644 --- a/doc/packet-PROTOABBREV.c +++ b/doc/packet-PROTOABBREV.c @@ -35,6 +35,7 @@ #include <glib.h> #include <epan/packet.h> +#include <epan/expert.h> #include <epan/prefs.h> #if 0 @@ -54,6 +55,7 @@ void proto_reg_handoff_PROTOABBREV(void); /* Initialize the protocol and registered fields */ static int proto_PROTOABBREV = -1; static int hf_PROTOABBREV_FIELDABBREV = -1; +static expert_field ei_PROTOABBREV_EXPERTABBREV = EI_INIT; /* Global sample preference ("controls" display of numbers) */ static gboolean gPREF_HEX = FALSE; @@ -76,7 +78,7 @@ dissect_PROTOABBREV(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) { /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *ti; + proto_item *ti, *expert_ti; proto_tree *PROTOABBREV_tree; /* Other misc. local variables. */ guint offset = 0; @@ -126,7 +128,7 @@ dissect_PROTOABBREV(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, * string of "%s" - just use "col_add_str()" or "col_set_str()", as it's * more efficient than "col_add_fstr()". * - * For full details see section 1.5 of README.developer. + * For full details see section 1.4 of README.dissector. */ /* Set the Protocol column to the constant string of PROTOABBREV */ @@ -161,16 +163,20 @@ dissect_PROTOABBREV(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, PROTOABBREV_tree = proto_item_add_subtree(ti, ett_PROTOABBREV); - /* Add an item to the subtree, see section 1.6 of README.developer for more + /* Add an item to the subtree, see section 1.5 of README.dissector for more * information. */ - proto_tree_add_item(PROTOABBREV_tree, hf_PROTOABBREV_FIELDABBREV, tvb, + expert_ti = proto_tree_add_item(PROTOABBREV_tree, hf_PROTOABBREV_FIELDABBREV, tvb, offset, len, ENC_xxx); offset += len; + /* Some fields or situations may require "expert" analysis that can be + * specifically highlighted. */ + if ( /* value of hf_PROTOABBREV_FIELDABBREV isn't what's expected */ ) + expert_add_info(pinfo, expert_ti, &ei_PROTOABBREV_EXPERTABBREV); /* Continue adding tree items to process the packet here... */ /* If this protocol has a sub-dissector call it here, see section 1.8 of - * README.developer for more information. */ + * README.dissector for more information. */ /* Return the amount of data this dissector was able to dissect (which may * or may not be the entire packet as we return here). */ @@ -186,8 +192,9 @@ void proto_register_PROTOABBREV(void) { module_t *PROTOABBREV_module; + expert_module_t* expert_PROTOABBREV; - /* Setup list of header fields See Section 1.6.1 of README.developer for + /* Setup list of header fields See Section 1.5 of README.dissector for * details. */ static hf_register_info hf[] = { { &hf_PROTOABBREV_FIELDABBREV, @@ -202,6 +209,11 @@ proto_register_PROTOABBREV(void) &ett_PROTOABBREV }; + /* Setup protocol expert items */ + static ei_register_info ei[] = { + { &ei_PROTOABBREV_EXPERTABBREV, { "PROTOABBREV.EXPERTABBREV", PI_SEVERITY, PI_GROUP, "EXPERTDESCR", EXPFILL }}, + }; + /* Register the protocol name and description */ proto_PROTOABBREV = proto_register_protocol("PROTONAME", "PROTOSHORTNAME", "PROTOABBREV"); @@ -209,8 +221,11 @@ proto_register_PROTOABBREV(void) /* Required function calls to register the header fields and subtrees */ proto_register_field_array(proto_PROTOABBREV, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + /* Required function calls to register expert items */ + expert_PROTOABBREV = expert_register_protocol(proto_PROTOABBREV); + expert_register_field_array(expert_PROTOABBREV, ei, array_length(ei)); - /* Register a preferences module (see section 2.6 of README.developer + /* Register a preferences module (see section 2.6 of README.dissector * for more details). Registration of a prefs callback is not required * if there are no preferences that affect protocol registration (an example * of a preference that would affect registration is a port preference). |