diff options
author | Michael Mann <mmann78@netscape.net> | 2015-04-22 07:57:37 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-04-22 23:24:45 +0000 |
commit | 8d6324f759639c7d3c0cab839ca1d3c42c93f895 (patch) | |
tree | e2a36618d1c6892347c03bf479fc3eb15f5d9571 /asn1/ldap | |
parent | 825aa502e7a1730141a3bfbf463f23167fb0b975 (diff) | |
download | wireshark-8d6324f759639c7d3c0cab839ca1d3c42c93f895.tar.gz wireshark-8d6324f759639c7d3c0cab839ca1d3c42c93f895.tar.bz2 wireshark-8d6324f759639c7d3c0cab839ca1d3c42c93f895.zip |
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/ldap')
-rw-r--r-- | asn1/ldap/ldap.cnf | 28 | ||||
-rw-r--r-- | asn1/ldap/packet-ldap-template.c | 127 |
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; |