aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-brdwlk.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-brdwlk.c')
-rw-r--r--epan/dissectors/packet-brdwlk.c68
1 files changed, 12 insertions, 56 deletions
diff --git a/epan/dissectors/packet-brdwlk.c b/epan/dissectors/packet-brdwlk.c
index e7175e54a4..78e6120d1d 100644
--- a/epan/dissectors/packet-brdwlk.c
+++ b/epan/dissectors/packet-brdwlk.c
@@ -140,63 +140,19 @@ static const true_false_string tfs_error_ctrl = {
static void
dissect_brdwlk_err(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
{
- proto_item *item;
- proto_tree *tree;
- guint8 flags;
-
- flags = tvb_get_guint8(tvb, offset);
- item = proto_tree_add_uint(parent_tree, hf_brdwlk_error,
- tvb, offset, 1, flags);
- tree = proto_item_add_subtree(item, ett_brdwlk_error);
-
-
- proto_tree_add_boolean(tree, hf_brdwlk_error_plp, tvb, offset, 1, flags);
- if (flags & 0x01) {
- proto_item_append_text(item, " Packet Length Present");
- }
- flags &= (~( 0x01 ));
-
- proto_tree_add_boolean(tree, hf_brdwlk_error_ef, tvb, offset, 1, flags);
- if (flags & 0x02) {
- proto_item_append_text(item, " Empty Frame");
- }
- flags &= (~( 0x02 ));
-
- proto_tree_add_boolean(tree, hf_brdwlk_error_nd, tvb, offset, 1, flags);
- if (flags & 0x04) {
- proto_item_append_text(item, " No Data");
- }
- flags &= (~( 0x04 ));
-
- proto_tree_add_boolean(tree, hf_brdwlk_error_tr, tvb, offset, 1, flags);
- if (flags & 0x08) {
- proto_item_append_text(item, " Truncated");
- }
- flags &= (~( 0x08 ));
-
- proto_tree_add_boolean(tree, hf_brdwlk_error_badcrc, tvb, offset, 1, flags);
- if (flags & 0x10) {
- proto_item_append_text(item, " Bad FC CRC");
- }
- flags &= (~( 0x10 ));
-
- proto_tree_add_boolean(tree, hf_brdwlk_error_ff, tvb, offset, 1, flags);
- if (flags & 0x20) {
- proto_item_append_text(item, " Fifo Full");
- }
- flags &= (~( 0x20 ));
-
- proto_tree_add_boolean(tree, hf_brdwlk_error_jumbo, tvb, offset, 1, flags);
- if (flags & 0x40) {
- proto_item_append_text(item, " Jumbo FC Frame");
- }
- flags &= (~( 0x40 ));
+ static const int * flags[] = {
+ &hf_brdwlk_error_plp,
+ &hf_brdwlk_error_ef,
+ &hf_brdwlk_error_nd,
+ &hf_brdwlk_error_tr,
+ &hf_brdwlk_error_badcrc,
+ &hf_brdwlk_error_ff,
+ &hf_brdwlk_error_jumbo,
+ &hf_brdwlk_error_ctrl,
+ NULL
+ };
- proto_tree_add_boolean(tree, hf_brdwlk_error_ctrl, tvb, offset, 1, flags);
- if (flags & 0x80) {
- proto_item_append_text(item, " Ctrl Char Inside Frame");
- }
- /*flags &= (~( 0x80 ));*/
+ proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_brdwlk_error, ett_brdwlk_error, flags, ENC_NA, BMT_NO_FALSE|BMT_NO_TFS);
}
/* Code to actually dissect the packets */