From 551b82484f5844544b2847f19697f67d1cf5853e Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Mon, 13 Jun 2016 15:34:16 -0400 Subject: 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 Petri-Dish: Michael Mann Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman --- epan/proto.c | 10 ++++++++++ epan/proto.h | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'epan') 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. -- cgit v1.2.3