diff options
author | Michael Mann <mmann78@netscape.net> | 2016-07-03 11:34:37 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-07-04 20:44:48 +0000 |
commit | 7490ad4480b1882a8f78fab5005d9ce1a1346002 (patch) | |
tree | c1d5896a420162b4e1f2ef34259a6768f56ab834 | |
parent | de905654520d47288fbc891cb09c73346bd8b1cf (diff) |
packet-packetbb.c cleanup
Change-Id: I2f6ab0bffca5aa4b021b46b930b55455e76b8a9f
Reviewed-on: https://code.wireshark.org/review/16284
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-packetbb.c | 86 |
1 files changed, 37 insertions, 49 deletions
diff --git a/epan/dissectors/packet-packetbb.c b/epan/dissectors/packet-packetbb.c index a7e9978990..6de5857243 100644 --- a/epan/dissectors/packet-packetbb.c +++ b/epan/dissectors/packet-packetbb.c @@ -180,22 +180,24 @@ static int dissect_pbb_tlvblock(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t guint16 tlvblockLength; guint tlvblockEnd; - proto_tree *tlvblock_tree = NULL; - proto_tree *tlv_tree = NULL; - proto_tree *tlv_flags_tree = NULL; - proto_tree *tlvValue_tree = NULL; - - proto_item *tlvBlock_item = NULL; - proto_item *tlv_item = NULL; - proto_item *tlvFlags_item = NULL; - proto_item *tlvValue_item = NULL; - proto_item *ti = NULL; + proto_tree *tlvblock_tree, *tlv_tree, *tlvValue_tree; + proto_item *tlvBlock_item, *tlv_item, *tlvValue_item; int tlvCount = 0; int hf_packetbb_tlv_type = 0; const value_string* tlv_type_vals = NULL; + static const int *flags[] = { + &hf_packetbb_tlv_flags_hastypext, + &hf_packetbb_tlv_flags_hassingleindex, + &hf_packetbb_tlv_flags_hasmultiindex, + &hf_packetbb_tlv_flags_hasvalue, + &hf_packetbb_tlv_flags_hasextlen, + &hf_packetbb_tlv_flags_hasmultivalue, + NULL + }; + if (maxoffset < offset + 2) { proto_tree_add_expert_format(tree, pinfo, &ei_packetbb_error, tvb, offset, maxoffset - offset, "Not enough octets for minimal tlvblock"); @@ -285,15 +287,7 @@ static int dissect_pbb_tlvblock(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t proto_tree_add_item(tlv_tree, hf_packetbb_tlv_type, tvb, offset++, 1, ENC_BIG_ENDIAN); /* add flags */ - tlvFlags_item = proto_tree_add_item(tlv_tree, hf_packetbb_tlv_flags, tvb, offset, 1, ENC_BIG_ENDIAN); - tlv_flags_tree = proto_item_add_subtree(tlvFlags_item, ett_packetbb_tlv_flags); - - proto_tree_add_item(tlv_flags_tree, hf_packetbb_tlv_flags_hastypext, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(tlv_flags_tree, hf_packetbb_tlv_flags_hassingleindex, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(tlv_flags_tree, hf_packetbb_tlv_flags_hasmultiindex, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(tlv_flags_tree, hf_packetbb_tlv_flags_hasvalue, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(tlv_flags_tree, hf_packetbb_tlv_flags_hasextlen, tvb, offset, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(tlv_flags_tree, hf_packetbb_tlv_flags_hasmultivalue, tvb, offset, 1, ENC_BIG_ENDIAN); + proto_tree_add_bitmask(tlv_tree, tvb, offset, hf_packetbb_tlv_flags, ett_packetbb_tlv_flags, flags, ENC_BIG_ENDIAN); offset++; if ((tlvFlags & TLV_HAS_TYPEEXT) != 0) { @@ -306,19 +300,15 @@ static int dissect_pbb_tlvblock(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t if ((tlvFlags & TLV_HAS_SINGLEINDEX) != 0) { proto_tree_add_uint(tlv_tree, hf_packetbb_tlv_indexstart, tvb, offset++, 1, indexStart); - ti = proto_tree_add_uint(tlv_tree, hf_packetbb_tlv_indexend, tvb, offset, 0, indexEnd); - proto_item_append_text(ti, " (implicit)"); + proto_tree_add_uint_format_value(tlv_tree, hf_packetbb_tlv_indexend, tvb, offset, 0, indexEnd, "%d (implicit)", indexEnd); } else if ((tlvFlags & TLV_HAS_MULTIINDEX) != 0) { proto_tree_add_uint(tlv_tree, hf_packetbb_tlv_indexstart, tvb, offset++, 1, indexStart); proto_tree_add_uint(tlv_tree, hf_packetbb_tlv_indexend, tvb, offset++, 1, indexEnd); } else { - ti = proto_tree_add_uint(tlv_tree, hf_packetbb_tlv_indexstart, tvb, offset, 0, indexStart); - proto_item_append_text(ti, " (implicit)"); - - ti = proto_tree_add_uint(tlv_tree, hf_packetbb_tlv_indexend, tvb, offset, 0, indexEnd); - proto_item_append_text(ti, " (implicit)"); + proto_tree_add_uint_format_value(tlv_tree, hf_packetbb_tlv_indexstart, tvb, offset, 0, indexStart, "%d (implicit)", indexStart); + proto_tree_add_uint_format_value(tlv_tree, hf_packetbb_tlv_indexend, tvb, offset, 0, indexEnd, "%d (implicit)", indexEnd); } } @@ -333,8 +323,7 @@ static int dissect_pbb_tlvblock(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t } } else { - ti = proto_tree_add_uint(tlv_tree, hf_packetbb_tlv_length, tvb, offset, 0, 0); - proto_item_append_text(ti, " (implicit)"); + proto_tree_add_uint_format_value(tlv_tree, hf_packetbb_tlv_length, tvb, offset, 0, 0, "0 (implicit)"); } if (length > 0) { @@ -376,15 +365,22 @@ static int dissect_pbb_addressblock(tvbuff_t *tvb, packet_info *pinfo, proto_tre guint block_index = 0, head_index = 0, tail_index = 0, mid_index = 0, prefix_index = 0; proto_tree *addr_tree = NULL; - proto_tree *addrFlags_tree = NULL; proto_tree *addrValue_tree = NULL; proto_item *addr_item = NULL; - proto_item *addrFlags_item = NULL; proto_item *addrValue_item = NULL; int i = 0; + static const int *flags[] = { + &hf_packetbb_addr_flags_hashead, + &hf_packetbb_addr_flags_hasfulltail, + &hf_packetbb_addr_flags_haszerotail, + &hf_packetbb_addr_flags_hassingleprelen, + &hf_packetbb_addr_flags_hasmultiprelen, + NULL + }; + if (maxoffset - offset < 2) { proto_tree_add_expert_format(tree, pinfo, &ei_packetbb_error, tvb, offset, maxoffset - offset, "Not enough octets for minimal addressblock header"); @@ -500,14 +496,7 @@ static int dissect_pbb_addressblock(tvbuff_t *tvb, packet_info *pinfo, proto_tre proto_tree_add_item(addr_tree, hf_packetbb_addr_num, tvb, block_index, 1, ENC_BIG_ENDIAN); /* add flags */ - addrFlags_item = proto_tree_add_item(addr_tree, hf_packetbb_addr_flags, tvb, block_index+1, 1, ENC_BIG_ENDIAN); - addrFlags_tree = proto_item_add_subtree(addrFlags_item, ett_packetbb_addr_flags); - - proto_tree_add_item(addrFlags_tree, hf_packetbb_addr_flags_hashead, tvb, block_index+1, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(addrFlags_tree, hf_packetbb_addr_flags_hasfulltail, tvb, block_index+1, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(addrFlags_tree, hf_packetbb_addr_flags_haszerotail, tvb, block_index+1, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(addrFlags_tree, hf_packetbb_addr_flags_hassingleprelen, tvb, block_index+1, 1, ENC_BIG_ENDIAN); - proto_tree_add_item(addrFlags_tree, hf_packetbb_addr_flags_hasmultiprelen, tvb, block_index+1, 1, ENC_BIG_ENDIAN); + proto_tree_add_bitmask(addr_tree, tvb, block_index+1, hf_packetbb_addr_flags, ett_packetbb_addr_flags, flags, ENC_BIG_ENDIAN); if ((address_flags & ADDR_HASHEAD) != 0) { /* add head */ @@ -570,11 +559,11 @@ static int dissect_pbb_addressblock(tvbuff_t *tvb, packet_info *pinfo, proto_tre } static int dissect_pbb_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) { - proto_tree *message_tree = NULL; + proto_tree *message_tree; proto_tree *header_tree = NULL; proto_tree *headerFlags_tree = NULL; - proto_item *message_item = NULL; + proto_item *message_item; proto_item *header_item = NULL; proto_item *headerFlags_item = NULL; @@ -723,25 +712,24 @@ static int dissect_pbb_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr static int dissect_pbb_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint headerLength, guint tlvIndex) { proto_tree *header_tree; - proto_tree *headerFlags_tree; - proto_item *header_item; - proto_item *headerFlags_item; guint8 packet_flags = tvb_get_guint8(tvb, 0); + static const int *flags[] = { + &hf_packetbb_header_flags_phasseqnum, + &hf_packetbb_header_flags_phastlv, + NULL + }; + header_item = proto_tree_add_item(tree, hf_packetbb_header, tvb, 0, headerLength, ENC_NA); header_tree = proto_item_add_subtree(header_item, ett_packetbb_header); /* version */ - proto_tree_add_uint(header_tree, hf_packetbb_version, tvb, 0, 1, packet_flags >> 4); + proto_tree_add_item(header_tree, hf_packetbb_version, tvb, 0, 1, ENC_BIG_ENDIAN); /* flags */ - headerFlags_item = proto_tree_add_item(header_tree, hf_packetbb_header_flags, tvb, 0, 1, ENC_BIG_ENDIAN); - - headerFlags_tree = proto_item_add_subtree(headerFlags_item, ett_packetbb_header_flags); - proto_tree_add_item(headerFlags_tree, hf_packetbb_header_flags_phasseqnum, tvb, 0, 1, ENC_NA); - proto_tree_add_item(headerFlags_tree, hf_packetbb_header_flags_phastlv, tvb, 0, 1, ENC_NA); + proto_tree_add_bitmask(header_tree, tvb, 0, hf_packetbb_header_flags, ett_packetbb_header_flags, flags, ENC_BIG_ENDIAN); /* sequence number */ if ((packet_flags & PACKET_HEADER_HASSEQNR) != 0) { |