diff options
author | MustBeArt <paul@mustbeart.com> | 2017-01-13 16:43:54 -0800 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-01-14 04:14:36 +0000 |
commit | 990d2a9a4ab0a31536abdb5d625051b79b273225 (patch) | |
tree | 9056094847c9991df05414e4399033a1de4aef0e | |
parent | 298085def885f4dc1a8edc1dff15fa6c8ba081d5 (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.c | 74 |
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++; |