aboutsummaryrefslogtreecommitdiffstats
path: root/asn1
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2015-04-22 07:57:37 -0400
committerMichael Mann <mmann78@netscape.net>2015-04-22 23:24:45 +0000
commit8d6324f759639c7d3c0cab839ca1d3c42c93f895 (patch)
treee2a36618d1c6892347c03bf479fc3eb15f5d9571 /asn1
parent825aa502e7a1730141a3bfbf463f23167fb0b975 (diff)
Convert proto_tree_add_boolean to proto_tree_add_bitmask_[value|value_with_flags|list]
Part 2 of a few Change-Id: Ic1f1aafe2ed02dce95b15c03a91cbd68807a5cf4 Reviewed-on: https://code.wireshark.org/review/8165 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'asn1')
-rw-r--r--asn1/ldap/ldap.cnf28
-rw-r--r--asn1/ldap/packet-ldap-template.c127
2 files changed, 44 insertions, 111 deletions
diff --git a/asn1/ldap/ldap.cnf b/asn1/ldap/ldap.cnf
index d0aab8b523..2dfaa53058 100644
--- a/asn1/ldap/ldap.cnf
+++ b/asn1/ldap/ldap.cnf
@@ -765,7 +765,6 @@ offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, &v
gint32 tag;
guint32 len;
gint32 val;
- header_field_info *hfinfo;
int otheroffset = offset;
if(!implicit_tag){
@@ -778,25 +777,16 @@ offset = dissect_ber_boolean(implicit_tag, actx, tree, tvb, offset, hf_index, &v
offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, -1, &val);
- hfinfo = proto_registrar_get_nth(hf_index);
-
if (val >0) {
- proto_tree *subtree;
- subtree = proto_tree_add_subtree_format(tree, tvb, otheroffset+1, len,
- ett_ldap_DirSyncFlagsSubEntry, NULL, "%s: 0x%08x", hfinfo->name, val);
-
- if (val & 0x1) {
- proto_tree_add_boolean(subtree, hf_ldap_object_security_flag, tvb, otheroffset+1, len, TRUE);
- }
- if (val & 0x800) {
- proto_tree_add_boolean(subtree, hf_ldap_ancestor_first_flag, tvb, otheroffset+1, len, TRUE);
- }
- if (val & 0x2000) {
- proto_tree_add_boolean(subtree, hf_ldap_public_data_only_flag, tvb, otheroffset+1, len, TRUE);
- }
- if (val & 0x80000000) {
- proto_tree_add_boolean(subtree, hf_ldap_incremental_value_flag, tvb, otheroffset+1, len, TRUE);
- }
+ const int * flags[] = {
+ &hf_ldap_object_security_flag,
+ &hf_ldap_ancestor_first_flag,
+ &hf_ldap_public_data_only_flag,
+ &hf_ldap_incremental_value_flag,
+ };
+
+ proto_tree_add_bitmask_value_with_flags(tree, tvb, otheroffset+1, hf_index,
+ ett_ldap_DirSyncFlagsSubEntry, flags, val, BMT_NO_APPEND);
} else {
proto_tree_add_uint(tree, hf_index, tvb, otheroffset+len, len, 0);
}
diff --git a/asn1/ldap/packet-ldap-template.c b/asn1/ldap/packet-ldap-template.c
index c168f93839..df5b5db347 100644
--- a/asn1/ldap/packet-ldap-template.c
+++ b/asn1/ldap/packet-ldap-template.c
@@ -529,52 +529,22 @@ attribute_types_initialize_cb(void)
/* MS-ADTS specification, section 7.3.1.1, NETLOGON_NT_VERSION Options Bits */
static int dissect_mscldap_ntver_flags(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
{
- guint32 flags;
- proto_item *item;
- proto_tree *tree=NULL;
- guint *field;
- header_field_info *hfi;
- gboolean one_bit_set = FALSE;
- guint fields[11];
- fields[0] = hf_mscldap_ntver_flags_v1;
- fields[1] = hf_mscldap_ntver_flags_v5;
- fields[2] = hf_mscldap_ntver_flags_v5ex;
- fields[3] = hf_mscldap_ntver_flags_v5ep;
- fields[4] = hf_mscldap_ntver_flags_vcs;
- fields[5] = hf_mscldap_ntver_flags_vnt4;
- fields[6] = hf_mscldap_ntver_flags_vpdc;
- fields[7] = hf_mscldap_ntver_flags_vip;
- fields[8] = hf_mscldap_ntver_flags_vl;
- fields[9] = hf_mscldap_ntver_flags_vgc;
- fields[10] = 0;
-
-
- flags=tvb_get_letohl(tvb, offset);
- item=proto_tree_add_item(parent_tree, hf_mscldap_ntver_flags, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- if(parent_tree){
- tree = proto_item_add_subtree(item, ett_mscldap_ntver_flags);
- }
-
- proto_item_append_text(item, " (");
-
- for(field = fields; *field; field++) {
- proto_tree_add_boolean(tree, *field, tvb, offset, 4, flags);
- hfi = proto_registrar_get_nth(*field);
-
- if(flags & hfi->bitmask) {
-
- if(one_bit_set)
- proto_item_append_text(item, ", ");
- else
- one_bit_set = TRUE;
-
- proto_item_append_text(item, "%s", hfi->name);
-
- }
- }
-
- proto_item_append_text(item, ")");
+ static const int * flags[] = {
+ &hf_mscldap_ntver_flags_v1,
+ &hf_mscldap_ntver_flags_v5,
+ &hf_mscldap_ntver_flags_v5ex,
+ &hf_mscldap_ntver_flags_v5ep,
+ &hf_mscldap_ntver_flags_vcs,
+ &hf_mscldap_ntver_flags_vnt4,
+ &hf_mscldap_ntver_flags_vpdc,
+ &hf_mscldap_ntver_flags_vip,
+ &hf_mscldap_ntver_flags_vl,
+ &hf_mscldap_ntver_flags_vgc,
+ NULL
+ };
+ proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_mscldap_ntver_flags,
+ ett_mscldap_ntver_flags, flags, ENC_LITTLE_ENDIAN, BMT_NO_FALSE);
offset += 4;
return offset;
@@ -1359,54 +1329,27 @@ static const true_false_string tfs_ads_fnc = {
};
static int dissect_mscldap_netlogon_flags(proto_tree *parent_tree, tvbuff_t *tvb, int offset)
{
- guint32 flags;
- proto_item *item;
- proto_tree *tree;
- guint *field;
- header_field_info *hfi;
- gboolean one_bit_set = FALSE;
- guint fields[16];
- fields[0] = hf_mscldap_netlogon_flags_fnc;
- fields[1] = hf_mscldap_netlogon_flags_dnc;
- fields[2] = hf_mscldap_netlogon_flags_dns;
- fields[3] = hf_mscldap_netlogon_flags_wdc;
- fields[4] = hf_mscldap_netlogon_flags_rodc;
- fields[5] = hf_mscldap_netlogon_flags_ndnc;
- fields[6] = hf_mscldap_netlogon_flags_good_timeserv;
- fields[7] = hf_mscldap_netlogon_flags_writable;
- fields[8] = hf_mscldap_netlogon_flags_closest;
- fields[9] = hf_mscldap_netlogon_flags_timeserv;
- fields[10] = hf_mscldap_netlogon_flags_kdc;
- fields[11] = hf_mscldap_netlogon_flags_ds;
- fields[12] = hf_mscldap_netlogon_flags_ldap;
- fields[13] = hf_mscldap_netlogon_flags_gc;
- fields[14] = hf_mscldap_netlogon_flags_pdc;
- fields[15] = 0;
-
- flags=tvb_get_letohl(tvb, offset);
- item=proto_tree_add_item(parent_tree, hf_mscldap_netlogon_flags, tvb, offset, 4, ENC_LITTLE_ENDIAN);
- tree = proto_item_add_subtree(item, ett_mscldap_netlogon_flags);
-
- proto_item_append_text(item, " (");
-
- for(field = fields; *field; field++) {
- proto_tree_add_boolean(tree, *field, tvb, offset, 4, flags);
- hfi = proto_registrar_get_nth(*field);
-
- if(flags & hfi->bitmask) {
-
- if(one_bit_set)
- proto_item_append_text(item, ", ");
- else
- one_bit_set = TRUE;
-
- proto_item_append_text(item, "%s", hfi->name);
-
- }
- }
-
- proto_item_append_text(item, ")");
+ static const int * flags[] = {
+ &hf_mscldap_netlogon_flags_fnc,
+ &hf_mscldap_netlogon_flags_dnc,
+ &hf_mscldap_netlogon_flags_dns,
+ &hf_mscldap_netlogon_flags_wdc,
+ &hf_mscldap_netlogon_flags_rodc,
+ &hf_mscldap_netlogon_flags_ndnc,
+ &hf_mscldap_netlogon_flags_good_timeserv,
+ &hf_mscldap_netlogon_flags_writable,
+ &hf_mscldap_netlogon_flags_closest,
+ &hf_mscldap_netlogon_flags_timeserv,
+ &hf_mscldap_netlogon_flags_kdc,
+ &hf_mscldap_netlogon_flags_ds,
+ &hf_mscldap_netlogon_flags_ldap,
+ &hf_mscldap_netlogon_flags_gc,
+ &hf_mscldap_netlogon_flags_pdc,
+ NULL
+ };
+ proto_tree_add_bitmask_with_flags(parent_tree, tvb, offset, hf_mscldap_netlogon_flags,
+ ett_mscldap_netlogon_flags, flags, ENC_LITTLE_ENDIAN, BMT_NO_FALSE);
offset += 4;
return offset;