summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndersBroman <anders.broman@ericsson.com>2015-02-16 15:13:25 +0100
committerAnders Broman <a.broman58@gmail.com>2015-02-16 14:17:04 +0000
commit7fee7df2c0e486df8cb31d81b2151b473810318e (patch)
tree833e89d5921bb487e70cdca3bd8e3718628f0e87
parentb2c81bb9e80aed27c32f29cc36f181149c57f18f (diff)
downloadwireshark-7fee7df2c0e486df8cb31d81b2151b473810318e.tar.gz
[Diameter] Use proto_tree_add_bitmask() to add the diameter flags.
Change-Id: I9cb6e46551b0a25a458311a53365469552d5c195 Reviewed-on: https://code.wireshark.org/review/7177 Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--epan/dissectors/packet-diameter.c30
1 files changed, 14 insertions, 16 deletions
diff --git a/epan/dissectors/packet-diameter.c b/epan/dissectors/packet-diameter.c
index d43f4829f6..1e910fea78 100644
--- a/epan/dissectors/packet-diameter.c
+++ b/epan/dissectors/packet-diameter.c
@@ -1056,6 +1056,18 @@ static const char *msgflags_str[] = {
"RP--", "RP-T", "RPE-", "RPET"
};
+static const int *diameter_flags_fields[] = {
+ &hf_diameter_flags_request,
+ &hf_diameter_flags_proxyable,
+ &hf_diameter_flags_error,
+ &hf_diameter_flags_T,
+ &hf_diameter_flags_reserved4,
+ &hf_diameter_flags_reserved5,
+ &hf_diameter_flags_reserved6,
+ &hf_diameter_flags_reserved7,
+ NULL
+};
+
static int
dissect_diameter_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
@@ -1093,22 +1105,8 @@ dissect_diameter_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
version_item = proto_tree_add_item(diam_tree,hf_diameter_version,tvb,0,1,ENC_BIG_ENDIAN);
proto_tree_add_item(diam_tree,hf_diameter_length,tvb,1,3,ENC_BIG_ENDIAN);
- pi = proto_tree_add_item(diam_tree,hf_diameter_flags,tvb,4,1,ENC_BIG_ENDIAN);
- {
- proto_tree *pt = proto_item_add_subtree(pi,ett_diameter_flags);
- proto_tree_add_item(pt,hf_diameter_flags_request,tvb,4,1,ENC_BIG_ENDIAN);
- proto_tree_add_item(pt,hf_diameter_flags_proxyable,tvb,4,1,ENC_BIG_ENDIAN);
- proto_tree_add_item(pt,hf_diameter_flags_error,tvb,4,1,ENC_BIG_ENDIAN);
- proto_tree_add_item(pt,hf_diameter_flags_T,tvb,4,1,ENC_BIG_ENDIAN);
- proto_tree_add_item(pt,hf_diameter_flags_reserved4,tvb,4,1,ENC_BIG_ENDIAN);
- if (flags_bits & 0x08) expert_add_info(c->pinfo, pi, &ei_diameter_reserved_bit_set);
- pi = proto_tree_add_item(pt,hf_diameter_flags_reserved5,tvb,4,1,ENC_BIG_ENDIAN);
- if (flags_bits & 0x04) expert_add_info(c->pinfo, pi, &ei_diameter_reserved_bit_set);
- pi = proto_tree_add_item(pt,hf_diameter_flags_reserved6,tvb,4,1,ENC_BIG_ENDIAN);
- if (flags_bits & 0x02) expert_add_info(c->pinfo, pi, &ei_diameter_reserved_bit_set);
- pi = proto_tree_add_item(pt,hf_diameter_flags_reserved7,tvb,4,1,ENC_BIG_ENDIAN);
- if (flags_bits & 0x01) expert_add_info(c->pinfo, pi, &ei_diameter_reserved_bit_set);
- }
+ pi = proto_tree_add_bitmask(diam_tree, tvb, 4, hf_diameter_flags, ett_diameter_flags, diameter_flags_fields, ENC_BIG_ENDIAN);
+ if (flags_bits & 0x0f) expert_add_info(c->pinfo, pi, &ei_diameter_reserved_bit_set);
cmd_item = proto_tree_add_item(diam_tree,hf_diameter_code,tvb,5,3,ENC_BIG_ENDIAN);