aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMustBeArt <paul@mustbeart.com>2017-01-13 16:43:54 -0800
committerMichael Mann <mmann78@netscape.net>2017-01-14 04:14:36 +0000
commit990d2a9a4ab0a31536abdb5d625051b79b273225 (patch)
tree9056094847c9991df05414e4399033a1de4aef0e
parent298085def885f4dc1a8edc1dff15fa6c8ba081d5 (diff)
DVB-S2-BB: Use proto_tree_add_bitmask()
Change-Id: I1a4b50873a183c0f6051dc0db3fecf5e62c92cbb Reviewed-on: https://code.wireshark.org/review/19633 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--epan/dissectors/packet-dvb-s2-bb.c74
1 files changed, 36 insertions, 38 deletions
diff --git a/epan/dissectors/packet-dvb-s2-bb.c b/epan/dissectors/packet-dvb-s2-bb.c
index 890cea890f..6fc0ad16a8 100644
--- a/epan/dissectors/packet-dvb-s2-bb.c
+++ b/epan/dissectors/packet-dvb-s2-bb.c
@@ -566,11 +566,19 @@ static int dissect_dvb_s2_gse(tvbuff_t *tvb, int cur_off, proto_tree *tree, pack
int frag_len;
guint16 gse_hdr, data_len, padding_len, gse_proto = 0;
- proto_item *ti, *tf;
- proto_tree *dvb_s2_gse_tree, *dvb_s2_gse_hdr_tree;
+ proto_item *ti;
+ proto_tree *dvb_s2_gse_tree;
tvbuff_t *next_tvb;
+ static const int * gse_header_bitfields[] = {
+ &hf_dvb_s2_gse_hdr_start,
+ &hf_dvb_s2_gse_hdr_stop,
+ &hf_dvb_s2_gse_hdr_labeltype,
+ &hf_dvb_s2_gse_hdr_length,
+ NULL
+ };
+
col_append_str(pinfo->cinfo, COL_INFO, " GSE");
/* get the GSE header */
@@ -595,14 +603,8 @@ static int dissect_dvb_s2_gse(tvbuff_t *tvb, int cur_off, proto_tree *tree, pack
ti = proto_tree_add_item(tree, proto_dvb_s2_gse, tvb, cur_off, frag_len, ENC_NA);
dvb_s2_gse_tree = proto_item_add_subtree(ti, ett_dvb_s2_gse);
- tf = proto_tree_add_item(dvb_s2_gse_tree, hf_dvb_s2_gse_hdr, tvb, cur_off + DVB_S2_GSE_OFFS_HDR, 2, gse_hdr);
-
- dvb_s2_gse_hdr_tree = proto_item_add_subtree(tf, ett_dvb_s2_gse_hdr);
- proto_tree_add_item(dvb_s2_gse_hdr_tree, hf_dvb_s2_gse_hdr_start, tvb, cur_off + DVB_S2_GSE_OFFS_HDR, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_gse_hdr_tree, hf_dvb_s2_gse_hdr_stop, tvb, cur_off + DVB_S2_GSE_OFFS_HDR, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_gse_hdr_tree, hf_dvb_s2_gse_hdr_labeltype, tvb,
- cur_off + DVB_S2_GSE_OFFS_HDR, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_gse_hdr_tree, hf_dvb_s2_gse_hdr_length, tvb, cur_off + DVB_S2_GSE_OFFS_HDR, 2, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask_with_flags(dvb_s2_gse_tree, tvb, cur_off + DVB_S2_GSE_OFFS_HDR, hf_dvb_s2_gse_hdr,
+ ett_dvb_s2_gse_hdr, gse_header_bitfields, ENC_BIG_ENDIAN, BMT_NO_TFS);
if (BIT_IS_CLEAR(gse_hdr, DVB_S2_GSE_HDR_START_POS) || BIT_IS_CLEAR(gse_hdr, DVB_S2_GSE_HDR_STOP_POS)) {
@@ -726,14 +728,24 @@ static gboolean test_dvb_s2_crc(tvbuff_t *tvb, guint offset) {
static int dissect_dvb_s2_bb(tvbuff_t *tvb, int cur_off, proto_tree *tree, packet_info *pinfo)
{
- proto_item *ti, *tf;
- proto_tree *dvb_s2_bb_tree, *dvb_s2_bb_matype1_tree;
+ proto_item *ti;
+ proto_tree *dvb_s2_bb_tree;
guint8 input8;
guint16 input16, bb_data_len = 0;
int sub_dissected = 0, flag_is_ms = 0, new_off = 0;
+ static const int * bb_header_bitfields[] = {
+ &hf_dvb_s2_bb_matype1_gs,
+ &hf_dvb_s2_bb_matype1_mis,
+ &hf_dvb_s2_bb_matype1_acm,
+ &hf_dvb_s2_bb_matype1_issyi,
+ &hf_dvb_s2_bb_matype1_npd,
+ &hf_dvb_s2_bb_matype1_ro,
+ NULL
+ };
+
col_append_str(pinfo->cinfo, COL_PROTOCOL, "BB ");
col_append_str(pinfo->cinfo, COL_INFO, "Baseband ");
@@ -747,20 +759,8 @@ static int dissect_dvb_s2_bb(tvbuff_t *tvb, int cur_off, proto_tree *tree, packe
if (BIT_IS_CLEAR(input8, DVB_S2_BB_MIS_POS))
flag_is_ms = 1;
- tf = proto_tree_add_item(dvb_s2_bb_tree, hf_dvb_s2_bb_matype1, tvb, cur_off + DVB_S2_BB_OFFS_MATYPE1, 1, input8);
- dvb_s2_bb_matype1_tree = proto_item_add_subtree(tf, ett_dvb_s2_bb_matype1);
- proto_tree_add_item(dvb_s2_bb_matype1_tree, hf_dvb_s2_bb_matype1_gs, tvb,
- cur_off + DVB_S2_BB_OFFS_MATYPE1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_bb_matype1_tree, hf_dvb_s2_bb_matype1_mis, tvb,
- cur_off + DVB_S2_BB_OFFS_MATYPE1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_bb_matype1_tree, hf_dvb_s2_bb_matype1_acm, tvb,
- cur_off + DVB_S2_BB_OFFS_MATYPE1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_bb_matype1_tree, hf_dvb_s2_bb_matype1_issyi, tvb,
- cur_off + DVB_S2_BB_OFFS_MATYPE1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_bb_matype1_tree, hf_dvb_s2_bb_matype1_npd, tvb,
- cur_off + DVB_S2_BB_OFFS_MATYPE1, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_bb_matype1_tree, hf_dvb_s2_bb_matype1_ro, tvb,
- cur_off + DVB_S2_BB_OFFS_MATYPE1, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask_with_flags(dvb_s2_bb_tree, tvb, cur_off + DVB_S2_BB_OFFS_MATYPE1, hf_dvb_s2_bb_matype1,
+ ett_dvb_s2_bb_matype1, bb_header_bitfields, ENC_BIG_ENDIAN, BMT_NO_FLAGS);
input8 = tvb_get_guint8(tvb, cur_off + DVB_S2_BB_OFFS_MATYPE2);
new_off += 1;
@@ -817,12 +817,18 @@ static int dissect_dvb_s2_modeadapt(tvbuff_t *tvb, packet_info *pinfo, proto_tre
{
int cur_off = 0, dvb_s2_modeadapt_len = -1;
- proto_item *ti, *tf;
+ proto_item *ti;
proto_tree *dvb_s2_modeadapt_tree;
- proto_tree *dvb_s2_modeadapt_acm_tree;
guint8 byte;
+ static const int * modeadapt_acm_bitfields[] = {
+ &hf_dvb_s2_modeadapt_acm_fecframe,
+ &hf_dvb_s2_modeadapt_acm_pilot,
+ &hf_dvb_s2_modeadapt_acm_modcod,
+ NULL
+ };
+
/* Check that there's enough data */
if (tvb_captured_length(tvb) < 1)
return 0;
@@ -853,17 +859,9 @@ static int dissect_dvb_s2_modeadapt(tvbuff_t *tvb, packet_info *pinfo, proto_tre
proto_tree_add_item(dvb_s2_modeadapt_tree, hf_dvb_s2_modeadapt_sync, tvb, DVB_S2_MODEADAPT_OFFS_SYNCBYTE, 1, ENC_BIG_ENDIAN);
cur_off++;
- tf = proto_tree_add_item(dvb_s2_modeadapt_tree, hf_dvb_s2_modeadapt_acm, tvb,
- DVB_S2_MODEADAPT_OFFS_ACMBYTE, 1, ENC_BIG_ENDIAN);
-
- dvb_s2_modeadapt_acm_tree = proto_item_add_subtree(tf, ett_dvb_s2_modeadapt_acm);
- proto_tree_add_item(dvb_s2_modeadapt_acm_tree, hf_dvb_s2_modeadapt_acm_fecframe, tvb,
- DVB_S2_MODEADAPT_OFFS_ACMBYTE, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_modeadapt_acm_tree, hf_dvb_s2_modeadapt_acm_pilot, tvb,
- DVB_S2_MODEADAPT_OFFS_ACMBYTE, 1, ENC_BIG_ENDIAN);
- proto_tree_add_item(dvb_s2_modeadapt_acm_tree, hf_dvb_s2_modeadapt_acm_modcod, tvb,
- DVB_S2_MODEADAPT_OFFS_ACMBYTE, 1, ENC_BIG_ENDIAN);
+ proto_tree_add_bitmask_with_flags(dvb_s2_modeadapt_tree, tvb, DVB_S2_MODEADAPT_OFFS_ACMBYTE, hf_dvb_s2_modeadapt_acm,
+ ett_dvb_s2_modeadapt_acm, modeadapt_acm_bitfields, ENC_BIG_ENDIAN, BMT_NO_FLAGS);
if (dvb_s2_modeadapt_len > 2) {
cur_off++;