aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2016-06-13 15:34:16 -0400
committerAnders Broman <a.broman58@gmail.com>2016-06-13 22:20:57 +0000
commit551b82484f5844544b2847f19697f67d1cf5853e (patch)
tree5fe5fb6017c771895410936a960a55ae16025715 /epan
parent720b47fe63d0b7971a64d02fe43e32856265b333 (diff)
Add proto_tree_add_bitmask_list_value.
Ran across enough situations that proto_tree_add_bitmask_list couldn't solve that it seemed necessary. Change-Id: I6a540ac6efca76cae7c4571a84bb400538652784 Reviewed-on: https://code.wireshark.org/review/15880 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/proto.c10
-rw-r--r--epan/proto.h18
2 files changed, 28 insertions, 0 deletions
diff --git a/epan/proto.c b/epan/proto.c
index 1b8cae449b..7cb8039e93 100644
--- a/epan/proto.c
+++ b/epan/proto.c
@@ -9138,6 +9138,16 @@ proto_tree_add_bitmask_list(proto_tree *tree, tvbuff_t *tvb, const guint offset,
}
}
+WS_DLL_PUBLIC void
+proto_tree_add_bitmask_list_value(proto_tree *tree, tvbuff_t *tvb, const guint offset,
+ const int len, const int **fields, const guint64 value)
+{
+ if (tree) {
+ proto_item_add_bitmask_tree(NULL, tvb, offset, len, -1, fields,
+ BMT_NO_APPEND, FALSE, TRUE, tree, value);
+ }
+}
+
/* The same as proto_tree_add_bitmask(), but using a caller-supplied length.
* This is intended to support bitmask fields whose lengths can vary, perhaps
diff --git a/epan/proto.h b/epan/proto.h
index 30dc4af28c..019012d7ca 100644
--- a/epan/proto.h
+++ b/epan/proto.h
@@ -2579,6 +2579,24 @@ WS_DLL_PUBLIC void
proto_tree_add_bitmask_list(proto_tree *tree, tvbuff_t *tvb, const guint offset,
const int len, const int **fields, const guint encoding);
+/** This function will dissect a value that describe a bitmask. Similar to proto_tree_add_bitmask_list(),
+ but with a passed in value (presumably because it can't be retrieved directly from tvb)
+ @param tree the tree to append this item to
+ @param tvb the tv buffer of the current data
+ @param offset start of data in tvb
+ @param len number of bytes of data
+ @param fields an array of pointers to int that lists all the fields of the
+ bitmask. These fields can be either of the type FT_BOOLEAN for flags
+ or another integer of the same type/size as hf_hdr with a mask specified.
+ This array is terminated by a NULL entry.
+ FT_BOOLEAN bits that are set to 1 will have the name added to the expansion.
+ FT_integer fields that have a value_string attached will have the
+ matched string displayed on the expansion line.
+ @param value bitmask value
+ @return the newly created item */
+WS_DLL_PUBLIC void
+proto_tree_add_bitmask_list_value(proto_tree *tree, tvbuff_t *tvb, const guint offset,
+ const int len, const int **fields, const guint64 value);
/** This function will dissect a sequence of bytes that describe a bitmask.