aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-drda.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-11-30 12:51:30 -0500
committerAnders Broman <a.broman58@gmail.com>2014-12-01 08:52:03 +0000
commit4f9af8608cc4279b3f559db3d2f3bc6224ad58a5 (patch)
treedc87094a132b0fe6284bedb7573714038d017627 /epan/dissectors/packet-drda.c
parent86c659c2721a659641aded94ec59d1a863cc86db (diff)
Use proto_tree_add_bitmask for groups of proto_tree_add_boolean.
Part 2 of many Change-Id: I50815e7738b011382392f3078a7107d3d9eec4ec Reviewed-on: https://code.wireshark.org/review/5542 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-drda.c')
-rw-r--r--epan/dissectors/packet-drda.c45
1 files changed, 19 insertions, 26 deletions
diff --git a/epan/dissectors/packet-drda.c b/epan/dissectors/packet-drda.c
index 17d366be1b..b0dedae4fe 100644
--- a/epan/dissectors/packet-drda.c
+++ b/epan/dissectors/packet-drda.c
@@ -270,10 +270,10 @@ static gboolean drda_desegment = TRUE;
#define DRDA_CP_SRVLST 0x244E
#define DRDA_CP_SQLATTR 0x2450
-#define DRDA_DSSFMT_SAME_CORR 0x01
-#define DRDA_DSSFMT_CONTINUE 0x02
-#define DRDA_DSSFMT_CHAINED 0x04
-#define DRDA_DSSFMT_RESERVED 0x08
+#define DRDA_DSSFMT_SAME_CORR 0x10
+#define DRDA_DSSFMT_CONTINUE 0x20
+#define DRDA_DSSFMT_CHAINED 0x40
+#define DRDA_DSSFMT_RESERVED 0x80
#define DRDA_DSSFMT_RQSDSS 0x01
#define DRDA_DSSFMT_RPYDSS 0x02
@@ -678,13 +678,18 @@ dissect_drda(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
guint16 iLength;
guint16 iCommandEnd = 0;
- guint8 iFormatFlags;
- guint8 iDSSType;
- guint8 iDSSFlags;
-
guint16 iParameterCP;
gint iLengthParam;
+ static const int * format_flags[] = {
+ &hf_drda_ddm_fmt_reserved,
+ &hf_drda_ddm_fmt_chained,
+ &hf_drda_ddm_fmt_errcont,
+ &hf_drda_ddm_fmt_samecorr,
+ &hf_drda_ddm_fmt_dsstyp,
+ NULL
+ };
+
col_set_str(pinfo->cinfo, COL_PROTOCOL, "DRDA");
/* This is a trick to know whether this is the first PDU in this packet or not */
if (iPreviousFrameNumber != pinfo->fd->num)
@@ -726,19 +731,7 @@ dissect_drda(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_
proto_tree_add_item(drda_tree, hf_drda_ddm_length, tvb, offset + 0, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(drda_tree, hf_drda_ddm_magic, tvb, offset + 2, 1, ENC_BIG_ENDIAN);
- iFormatFlags = tvb_get_guint8(tvb, offset + 3);
- iDSSType = iFormatFlags & 0x0F;
- iDSSFlags = iFormatFlags >> 4;
-
- ti = proto_tree_add_item(drda_tree, hf_drda_ddm_format, tvb, offset + 3, 1, ENC_BIG_ENDIAN);
- drda_tree_sub = proto_item_add_subtree(ti, ett_drda_ddm_format);
-
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_reserved, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_chained, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_errcont, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_boolean(drda_tree_sub, hf_drda_ddm_fmt_samecorr, tvb, offset + 3, 1, iDSSFlags);
- proto_tree_add_uint(drda_tree_sub, hf_drda_ddm_fmt_dsstyp, tvb, offset + 3, 1, iDSSType);
-
+ proto_tree_add_bitmask(drda_tree, tvb, offset + 3, hf_drda_ddm_format, ett_drda_ddm_format, format_flags, ENC_BIG_ENDIAN);
proto_tree_add_item(drda_tree, hf_drda_ddm_rc, tvb, offset + 4, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(drda_tree, hf_drda_ddm_length2, tvb, offset + 6, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(drda_tree, hf_drda_ddm_codepoint, tvb, offset + 8, 2, ENC_BIG_ENDIAN);
@@ -851,27 +844,27 @@ proto_register_drda(void)
{ &hf_drda_ddm_fmt_reserved,
{ "Reserved", "drda.ddm.fmt.bit0",
- FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_RESERVED,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), DRDA_DSSFMT_RESERVED,
"DSSFMT reserved", HFILL }},
{ &hf_drda_ddm_fmt_chained,
{ "Chained", "drda.ddm.fmt.bit1",
- FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_CHAINED,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), DRDA_DSSFMT_CHAINED,
"DSSFMT chained", HFILL }},
{ &hf_drda_ddm_fmt_errcont,
{ "Continue", "drda.ddm.fmt.bit2",
- FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_CONTINUE,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), DRDA_DSSFMT_CONTINUE,
"DSSFMT continue on error", HFILL }},
{ &hf_drda_ddm_fmt_samecorr,
{ "Same correlation", "drda.ddm.fmt.bit3",
- FT_BOOLEAN, 4, TFS(&tfs_set_notset), DRDA_DSSFMT_SAME_CORR,
+ FT_BOOLEAN, 8, TFS(&tfs_set_notset), DRDA_DSSFMT_SAME_CORR,
"DSSFMT same correlation", HFILL }},
{ &hf_drda_ddm_fmt_dsstyp,
{ "DSS type", "drda.ddm.fmt.dsstyp",
- FT_UINT8, BASE_DEC, VALS(drda_dsstyp_abbr), 0x0,
+ FT_UINT8, BASE_DEC, VALS(drda_dsstyp_abbr), 0x0F,
"DSSFMT type", HFILL }},
{ &hf_drda_ddm_rc,