aboutsummaryrefslogtreecommitdiffstats
path: root/doc/packet-PROTOABBREV.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2013-09-09 03:43:45 +0000
committerMichael Mann <mmann78@netscape.net>2013-09-09 03:43:45 +0000
commite4025f4aba7a20dc3003b6dd65f6116786aa6304 (patch)
tree7d3d84f33e625ea59289bd6ea552b7933cd45dec /doc/packet-PROTOABBREV.c
parent25bb947bdbbd1405a5a9b20c7c7bea222f4d358b (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.c29
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).