diff options
author | Michael Mann <mmann78@netscape.net> | 2014-12-01 00:18:41 -0500 |
---|---|---|
committer | Anders Broman <a.broman58@gmail.com> | 2014-12-01 12:18:44 +0000 |
commit | e77507b0eac903e74389ef1bf2dfa51d4cf00aad (patch) | |
tree | d9a99ae5315842fd1d3cc957c8adac50a779e5ed /epan/dissectors/packet-wsp.c | |
parent | 542439e64aef746512a5a8d3835e49805087c706 (diff) |
Use proto_tree_add_bitmask for groups of proto_tree_add_boolean.
Part 3 of many, but this concludes the strict conversion to proto_tree_add_bitmask. Patches to follow with use proto_tree_add_bitmask_xxx (some functions still need to be written)
Change-Id: Ic2435667c6a7f1d40602124e5044954d2a296180
Reviewed-on: https://code.wireshark.org/review/5553
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-wsp.c')
-rw-r--r-- | epan/dissectors/packet-wsp.c | 65 |
1 files changed, 21 insertions, 44 deletions
diff --git a/epan/dissectors/packet-wsp.c b/epan/dissectors/packet-wsp.c index bdcb838ee2..a8295a8658 100644 --- a/epan/dissectors/packet-wsp.c +++ b/epan/dissectors/packet-wsp.c @@ -4287,6 +4287,12 @@ parameter_value_q (proto_tree *tree, proto_item *ti, tvbuff_t *tvb, int start) return offset; } +static const int * address_length_flags[] = { + &hf_address_flags_length_bearer_type_included, + &hf_address_flags_length_port_number_included, + &hf_address_flags_length_address_len, + NULL +}; /* Code to actually dissect the packets */ @@ -4302,15 +4308,12 @@ static void dissect_redirect(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, dissector_handle_t dissector_handle) { - guint8 flags; proto_item *ti; proto_tree *addresses_tree = NULL; proto_tree *addr_tree = NULL; - proto_tree *flags_tree; guint8 bearer_type; guint8 address_flags_len; int address_len; - proto_tree *address_flags_tree; guint16 port_num; guint32 address_ipv4; struct e_in6_addr address_ipv6; @@ -4318,20 +4321,17 @@ dissect_redirect(tvbuff_t *tvb, int offset, packet_info *pinfo, conversation_t *conv; guint32 idx = 0; /* Address index */ guint32 address_record_len; /* Length of the entire address record */ + static const int * flags[] = { + &hf_wsp_redirect_permanent, + &hf_wsp_redirect_reuse_security_session, + NULL + }; + /* * Redirect flags. */ - flags = tvb_get_guint8 (tvb, offset); - if (tree) { - ti = proto_tree_add_uint (tree, hf_wsp_redirect_flags, - tvb, offset, 1, flags); - flags_tree = proto_item_add_subtree (ti, ett_redirect_flags); - proto_tree_add_boolean (flags_tree, hf_wsp_redirect_permanent, - tvb, offset, 1, flags); - proto_tree_add_boolean (flags_tree, hf_wsp_redirect_reuse_security_session, - tvb, offset, 1, flags); - } + proto_tree_add_bitmask(tree, tvb, offset, hf_wsp_redirect_flags, ett_redirect_flags, flags, ENC_NA); offset++; /* @@ -4355,38 +4355,24 @@ dissect_redirect(tvbuff_t *tvb, int offset, packet_info *pinfo, + (address_flags_len & PORT_NUMBER_INCLUDED ? 2 : 0) ; - if (tree) { - ti = proto_tree_add_uint(addresses_tree, hf_address_entry, - tvb, offset, 1 + address_record_len, idx); - addr_tree = proto_item_add_subtree(ti, ett_address); - - ti = proto_tree_add_uint (addr_tree, hf_address_flags_length, - tvb, offset, 1, address_flags_len); - address_flags_tree = proto_item_add_subtree (ti, ett_address_flags); - proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_bearer_type_included, - tvb, offset, 1, address_flags_len); - proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_port_number_included, - tvb, offset, 1, address_flags_len); - proto_tree_add_uint (address_flags_tree, hf_address_flags_length_address_len, - tvb, offset, 1, address_flags_len); - } + ti = proto_tree_add_uint(addresses_tree, hf_address_entry, + tvb, offset, 1 + address_record_len, idx); + addr_tree = proto_item_add_subtree(ti, ett_address); + + proto_tree_add_bitmask(addr_tree, tvb, offset, hf_address_flags_length, ett_address_flags, address_length_flags, ENC_NA); offset++; if (address_flags_len & BEARER_TYPE_INCLUDED) { bearer_type = tvb_get_guint8 (tvb, offset); - if (tree) { - proto_tree_add_uint (addr_tree, hf_address_bearer_type, + proto_tree_add_uint (addr_tree, hf_address_bearer_type, tvb, offset, 1, bearer_type); - } offset++; } else { bearer_type = 0x00; /* XXX */ } if (address_flags_len & PORT_NUMBER_INCLUDED) { port_num = tvb_get_ntohs (tvb, offset); - if (tree) { - proto_tree_add_uint (addr_tree, hf_address_port_num, + proto_tree_add_uint (addr_tree, hf_address_port_num, tvb, offset, 2, port_num); - } offset += 2; } else { /* @@ -4523,7 +4509,6 @@ add_addresses(proto_tree *tree, tvbuff_t *tvb, int hf) guint8 bearer_type; guint8 address_flags_len; int address_len; - proto_tree *address_flags_tree; guint32 tvb_len = tvb_length(tvb); guint32 offset = 0; guint32 idx = 0; /* Address index */ @@ -4558,15 +4543,7 @@ add_addresses(proto_tree *tree, tvbuff_t *tvb, int hf) tvb, offset, 1 + address_record_len, idx); addr_tree = proto_item_add_subtree(ti, ett_address); - ti = proto_tree_add_uint (addr_tree, hf_address_flags_length, - tvb, offset, 1, address_flags_len); - address_flags_tree = proto_item_add_subtree (ti, ett_address_flags); - proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_bearer_type_included, - tvb, offset, 1, address_flags_len); - proto_tree_add_boolean (address_flags_tree, hf_address_flags_length_port_number_included, - tvb, offset, 1, address_flags_len); - proto_tree_add_uint (address_flags_tree, hf_address_flags_length_address_len, - tvb, offset, 1, address_flags_len); + proto_tree_add_bitmask(addr_tree, tvb, offset, hf_address_flags_length, ett_address_flags, address_length_flags, ENC_NA); offset++; if (address_flags_len & BEARER_TYPE_INCLUDED) { bearer_type = tvb_get_guint8 (tvb, offset); |