diff options
34 files changed, 604 insertions, 956 deletions
diff --git a/epan/dissectors/packet-afp.c b/epan/dissectors/packet-afp.c index 3bb4202062..926eb2674c 100644 --- a/epan/dissectors/packet-afp.c +++ b/epan/dissectors/packet-afp.c @@ -1344,17 +1344,15 @@ decode_file_bitmap (proto_tree *tree, tvbuff_t *tvb, gint offset) static guint16 decode_file_attribute(proto_tree *tree, tvbuff_t *tvb, gint offset, int shared) { - proto_tree *sub_tree = NULL; - proto_item *item; + proto_tree *sub_tree; guint16 attribute; attribute = tvb_get_ntohs(tvb, offset); if (!tree) { return attribute; } - item = proto_tree_add_text(tree, tvb, offset, 2, + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2, ett_afp_file_attribute, NULL, "File Attributes: 0x%04x", attribute); - sub_tree = proto_item_add_subtree(item, ett_afp_file_attribute); proto_tree_add_item(sub_tree, hf_afp_file_attribute_Invisible , tvb, offset, 2, ENC_BIG_ENDIAN); if (!shared) proto_tree_add_item(sub_tree, hf_afp_file_attribute_MultiUser , tvb, offset, 2, ENC_BIG_ENDIAN); @@ -1414,12 +1412,10 @@ static void decode_unix_privs (proto_tree *tree, tvbuff_t *tvb, gint offset) { proto_tree *sub_tree; - proto_item *item; if (tree) { - item = proto_tree_add_text(tree, tvb, offset, 16, + sub_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_afp_unix_privs, NULL, "UNIX privileges"); - sub_tree = proto_item_add_subtree(item, ett_afp_unix_privs); proto_tree_add_item(sub_tree, hf_afp_unix_privs_uid, tvb, offset, 4, ENC_BIG_ENDIAN); proto_tree_add_item(sub_tree, hf_afp_unix_privs_gid, tvb, offset+4, 4, ENC_BIG_ENDIAN); @@ -1624,15 +1620,13 @@ decode_dir_bitmap (proto_tree *tree, tvbuff_t *tvb, gint offset) static guint16 decode_dir_attribute(proto_tree *tree, tvbuff_t *tvb, gint offset) { - proto_tree *sub_tree = NULL; - proto_item *item; + proto_tree *sub_tree; guint16 attribute; attribute = tvb_get_ntohs(tvb, offset); if (tree) { - item = proto_tree_add_text(tree, tvb, offset, 2, - "Directory Attributes: 0x%04x", attribute); - sub_tree = proto_item_add_subtree(item, ett_afp_dir_attribute); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 2, + ett_afp_dir_attribute, NULL, "Directory Attributes: 0x%04x", attribute); proto_tree_add_item(sub_tree, hf_afp_dir_attribute_Invisible , tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(sub_tree, hf_afp_dir_attribute_IsExpFolder , tvb, offset, 2, ENC_BIG_ENDIAN); @@ -1914,7 +1908,6 @@ decode_name_label (proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint off const gchar *name; guint8 type; proto_tree *sub_tree = NULL; - proto_item *item; type = tvb_get_guint8(tvb, offset); if (type == 3) { @@ -1935,8 +1928,8 @@ decode_name_label (proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, gint off } if (tree) { - item = proto_tree_add_text(tree, tvb, offset, len +header, label, name); - sub_tree = proto_item_add_subtree(item, ett_afp_path_name); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, len +header, + ett_afp_path_name, NULL, label, name); proto_tree_add_item( sub_tree, hf_afp_path_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; @@ -2043,10 +2036,9 @@ dissect_reply_afp_get_server_param(tvbuff_t *tvb, packet_info *pinfo _U_, proto_ guint8 len; guint8 flag; guint8 i; - proto_tree *sub_tree = NULL; + proto_tree *sub_tree; proto_tree *flag_tree; proto_item *item; - proto_item *ti; if (!tree) return offset; @@ -2055,20 +2047,20 @@ dissect_reply_afp_get_server_param(tvbuff_t *tvb, packet_info *pinfo _U_, proto_ offset += 4; num = tvb_get_guint8(tvb, offset); - item = proto_tree_add_text(tree, tvb, offset, 1, "Volumes : %d", num); - sub_tree = proto_item_add_subtree(item, ett_afp_server_vol); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_server_vol, NULL, "Volumes : %d", num); offset++; for (i = 0; i < num; i++) { const gchar *rep; - item = proto_tree_add_text(sub_tree, tvb, offset, -1,"Volume"); - tree = proto_item_add_subtree(item, ett_afp_vol_list); + tree = proto_tree_add_subtree(sub_tree, tvb, offset, -1, + ett_afp_vol_list, NULL, "Volume"); flag = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset , 1,"Flags : 0x%02x", flag); - flag_tree = proto_item_add_subtree(ti, ett_afp_vol_flag); + flag_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_vol_flag, &item, "Flags : 0x%02x", flag); proto_tree_add_item(flag_tree, hf_afp_vol_flag_passwd, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(flag_tree, hf_afp_vol_flag_has_config, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; @@ -2204,7 +2196,6 @@ loop_record(tvbuff_t *tvb, proto_tree *ptree, gint offset, int count, guint16 d_bitmap, guint16 f_bitmap, int add, int ext) { proto_tree *tree = NULL; - proto_item *item; guint8 *name; guint8 flags; guint size; @@ -2236,12 +2227,13 @@ loop_record(tvbuff_t *tvb, proto_tree *ptree, gint offset, name = name_in_fbitmap(tvb, offset +decal, f_bitmap); } if (name) { - item = proto_tree_add_text(ptree, tvb, offset, size, "%s", name); + tree = proto_tree_add_subtree(ptree, tvb, offset, size, + ett_afp_enumerate_line, NULL, name); } else { - item = proto_tree_add_text(ptree, tvb, offset, size, "line %d", i+1); + tree = proto_tree_add_subtree_format(ptree, tvb, offset, size, + ett_afp_enumerate_line, NULL, "line %d", i+1); } - tree = proto_item_add_subtree(item, ett_afp_enumerate_line); } if (ext) { proto_tree_add_item(tree, hf_afp_struct_size16, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -2313,8 +2305,7 @@ dissect_reply_afp_enumerate_ext(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre static gint catsearch_spec(tvbuff_t *tvb, proto_tree *ptree, gint offset, int ext, guint32 bitmap, const gchar *label) { - proto_tree *tree = NULL; - proto_item *item; + proto_tree *tree; guint16 size; gint org; @@ -2327,8 +2318,7 @@ catsearch_spec(tvbuff_t *tvb, proto_tree *ptree, gint offset, int ext, guint32 b size = tvb_get_guint8(tvb, offset) +2; } - item = proto_tree_add_text(ptree, tvb, offset, size, "%s", label); - tree = proto_item_add_subtree(item, ett_afp_cat_spec); + tree = proto_tree_add_subtree(ptree, tvb, offset, size, ett_afp_cat_spec, NULL, label); if (ext) { proto_tree_add_item(tree, hf_afp_struct_size16, tvb, offset, 2, ENC_BIG_ENDIAN); @@ -3083,20 +3073,15 @@ dissect_query_afp_exchange_file(tvbuff_t *tvb, packet_info *pinfo, proto_tree *t static gint dissect_query_afp_copy_file(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) { - proto_tree *sub_tree = NULL; - proto_item *item; + proto_tree *sub_tree; PAD(1); - if (tree) { - item = proto_tree_add_text(tree, tvb, offset, 6,"Source volume"); - sub_tree = proto_item_add_subtree(item, ett_afp_vol_did); - } + sub_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_afp_vol_did, NULL, "Source volume"); + offset = decode_vol_did(sub_tree, tvb, offset); - if (tree) { - item = proto_tree_add_text(tree, tvb, offset, 6,"Dest volume"); - sub_tree = proto_item_add_subtree(item, ett_afp_vol_did); - } + sub_tree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_afp_vol_did, NULL, "Dest volume"); + offset = decode_vol_did(sub_tree, tvb, offset); offset = decode_name_label(tree, pinfo, tvb, offset, "Source path: %s"); @@ -3124,15 +3109,12 @@ dissect_query_afp_rename(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi static gint dissect_query_afp_byte_lock(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset) { - proto_tree *sub_tree = NULL; - proto_item *item; + proto_tree *sub_tree; guint8 flag; flag = tvb_get_guint8(tvb, offset); - if (tree) { - item = proto_tree_add_text(tree, tvb, offset, 1, "Flags: 0x%02x", flag); - sub_tree = proto_item_add_subtree(item, ett_afp_lock_flags); - } + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_lock_flags, NULL, "Flags: 0x%02x", flag); proto_tree_add_item(sub_tree, hf_afp_lock_op, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(sub_tree, hf_afp_lock_from, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -3163,15 +3145,12 @@ dissect_reply_afp_byte_lock(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t static gint dissect_query_afp_byte_lock_ext(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset) { - proto_tree *sub_tree = NULL; - proto_item *item; + proto_tree *sub_tree; guint8 flag; flag = tvb_get_guint8(tvb, offset); - if (tree) { - item = proto_tree_add_text(tree, tvb, offset, 1, "Flags: 0x%02x", flag); - sub_tree = proto_item_add_subtree(item, ett_afp_lock_flags); - } + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_lock_flags, NULL, "Flags: 0x%02x", flag); proto_tree_add_item(sub_tree, hf_afp_lock_op, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(sub_tree, hf_afp_lock_from, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -3812,11 +3791,10 @@ decode_attr_name (proto_tree *tree, packet_info *pinfo _U_, tvbuff_t *tvb, gint if (tree) { gchar *name; proto_tree *sub_tree; - proto_item *item; name = tvb_format_text(tvb,offset+2, len); - item = proto_tree_add_text(tree, tvb, offset, len + 2, label, name); - sub_tree = proto_item_add_subtree(item, ett_afp_extattr_names); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, len + 2, + ett_afp_extattr_names, NULL, label, name); proto_tree_add_item(sub_tree, hf_afp_extattr_namelen, tvb, offset, 2, ENC_BIG_ENDIAN); proto_tree_add_item(sub_tree, hf_afp_extattr_name, tvb, offset +2, len, ENC_UTF_8|ENC_NA); @@ -3955,7 +3933,6 @@ dissect_query_afp_list_ext_attrs(tvbuff_t *tvb, packet_info *pinfo, proto_tree * static gint dissect_reply_afp_list_ext_attrs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset) { - proto_item *item; proto_tree *sub_tree; gint length = 0, orig_offset = offset; int remain; @@ -3971,8 +3948,8 @@ dissect_reply_afp_list_ext_attrs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr remain = tvb_reported_length_remaining(tvb, offset); if (remain >= length) { - item = proto_tree_add_text(tree, tvb, offset, remain , "Attributes"); - sub_tree = proto_item_add_subtree(item, ett_afp_extattr_names); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, remain, + ett_afp_extattr_names, NULL, "Attributes"); while ( remain > 0) { length = tvb_strsize(tvb, offset); proto_tree_add_item(sub_tree, hf_afp_extattr_name, tvb, offset, length, ENC_UTF_8|ENC_NA); @@ -4300,7 +4277,8 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree case SQ_CPX_TYPE_ARRAY: case SQ_CPX_TYPE_DICT: subquery_count = (gint)(query_data64 >> 32); - item_query = proto_tree_add_text(tree, tvb, offset, query_length, + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, query_length, + ett_afp_spotlight_query_line, NULL, "%s, toc index: %u, children: %u", spotlight_get_cpx_qtype_string(complex_query_type), toc_index + 1, @@ -4310,7 +4288,8 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree subquery_count = 1; query_data64 = spotlight_ntoh64(tvb, offset + 8, encoding); query_length = ((gint)query_data64 & 0xffff) * 8; - item_query = proto_tree_add_text(tree, tvb, offset, query_length + 8, + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, query_length + 8, + ett_afp_spotlight_query_line, NULL, "%s, toc index: %u, string: '%s'", spotlight_get_cpx_qtype_string(complex_query_type), toc_index + 1, @@ -4336,7 +4315,8 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree } else mark_exists = TRUE; - item_query = proto_tree_add_text(tree, tvb, offset, query_length + 8, + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, query_length + 8, + ett_afp_spotlight_query_line, NULL, "%s, toc index: %u, utf-16 string: '%s'", spotlight_get_cpx_qtype_string(complex_query_type), toc_index + 1, @@ -4345,7 +4325,8 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree break; default: subquery_count = 1; - item_query = proto_tree_add_text(tree, tvb, offset, query_length, + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, query_length, + ett_afp_spotlight_query_line, NULL, "type: %s (%s), toc index: %u, children: %u", spotlight_get_qtype_string(query_type), spotlight_get_cpx_qtype_string(complex_query_type), @@ -4354,7 +4335,6 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree break; } - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); offset += 8; offset = spotlight_dissect_query_loop(tvb, pinfo, sub_tree, offset, complex_query_type, subquery_count, toc_offset, encoding); count--; @@ -4384,22 +4364,19 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree offset += query_length; break; case SQ_TYPE_INT64: - item_query = proto_tree_add_text(tree, tvb, offset, 8, "int64"); - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_afp_spotlight_query_line, NULL, "int64"); j = spotlight_int64(tvb, sub_tree, offset, encoding); count -= j; offset += query_length; break; case SQ_TYPE_UUID: - item_query = proto_tree_add_text(tree, tvb, offset, 8, "UUID"); - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_afp_spotlight_query_line, NULL, "UUID"); j = spotlight_uuid(tvb, sub_tree, offset, encoding); count -= j; offset += query_length; break; case SQ_TYPE_FLOAT: - item_query = proto_tree_add_text(tree, tvb, offset, 8, "float"); - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_afp_spotlight_query_line, NULL, "float"); j = spotlight_float(tvb, sub_tree, offset, encoding); count -= j; offset += query_length; @@ -4428,8 +4405,8 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree if (query_length <= 8) { /* item_query = */ proto_tree_add_text(tree, tvb, offset, query_length, "filemeta (empty)"); } else { - item_query = proto_tree_add_text(tree, tvb, offset, query_length, "filemeta"); - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); + sub_tree = proto_tree_add_subtree(tree, tvb, offset, query_length, + ett_afp_spotlight_query_line, NULL, "filemeta"); spotlight_tvb = tvb_new_subset_length(tvb, offset+8, query_length); call_dissector(spotlight_handle, spotlight_tvb, pinfo, sub_tree); } @@ -4439,11 +4416,11 @@ spotlight_dissect_query_loop(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree offset += query_length; break; case SQ_TYPE_CNIDS: + sub_tree = proto_tree_add_subtree(tree, tvb, offset, query_length, + ett_afp_spotlight_query_line, &item_query, "CNID Array"); if (query_length <= 8) { - /* item_query = */ proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array (empty)"); + proto_item_append_text(item_query, " (empty)"); } else { - item_query = proto_tree_add_text(tree, tvb, offset, query_length, "CNID Array"); - sub_tree = proto_item_add_subtree(item_query, ett_afp_spotlight_query_line); spotlight_CNID_array(tvb, sub_tree, offset + 8, encoding); } count--; @@ -4478,9 +4455,7 @@ dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat gint toc_entries; guint64 toc_entry; - proto_item *item_queries_data; proto_tree *sub_tree_queries; - proto_item *item_toc; proto_tree *sub_tree_toc; if (strncmp(tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 8, ENC_UTF_8|ENC_NA), "md031234", 8) == 0) @@ -4551,12 +4526,9 @@ dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat toc_entries = (gint)(spotlight_ntoh64(tvb, offset + (gint)toc_offset, encoding) & 0xffff); - item_queries_data = proto_tree_add_text(tree, - tvb, - offset, - (gint)toc_offset, + sub_tree_queries = proto_tree_add_subtree(tree, tvb, offset, (gint)toc_offset, + ett_afp_spotlight_queries, NULL, "Spotlight RPC data"); - sub_tree_queries = proto_item_add_subtree(item_queries_data, ett_afp_spotlight_queries); /* Queries */ offset = spotlight_dissect_query_loop(tvb, pinfo, sub_tree_queries, offset, SQ_CPX_TYPE_ARRAY, INT_MAX, offset + (gint)toc_offset + 8, encoding); @@ -4572,13 +4544,11 @@ dissect_spotlight(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat return tvb_captured_length(tvb); } toc_entries -= 1; - item_toc = proto_tree_add_text(tree, - tvb, - offset, + sub_tree_toc = proto_tree_add_subtree_format(tree, tvb, offset, (gint)querylen - (gint)toc_offset, + ett_afp_spotlight_toc, NULL, "Complex types ToC (%u entries)", toc_entries); - sub_tree_toc = proto_item_add_subtree(item_toc, ett_afp_spotlight_toc); proto_tree_add_text(sub_tree_toc, tvb, offset, 2, "Number of entries (%u)", toc_entries); proto_tree_add_text(sub_tree_toc, tvb, offset + 2, 2, "unknown"); proto_tree_add_text(sub_tree_toc, tvb, offset + 4, 4, "unknown"); @@ -4935,8 +4905,7 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre guint len; guint i; - ti = proto_tree_add_text(tree, tvb, offset, -1, "Get Status"); - tree = proto_item_add_subtree(ti, ett_afp_status); + tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_afp_status, NULL, "Get Status"); ofs = tvb_get_ntohs(tvb, AFPSTATUS_MACHOFF); proto_tree_add_text(tree, tvb, AFPSTATUS_MACHOFF, 2, "Machine offset: %u", ofs); @@ -5025,9 +4994,9 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre if (offset) { if (offset >= variable_data_offset) { nbe = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, 1, "Version list: %u", nbe); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_vers, NULL, "Version list: %u", nbe); offset++; - sub_tree = proto_item_add_subtree(ti, ett_afp_vers); for (i = 0; i < nbe; i++) { len = tvb_get_guint8(tvb, offset); proto_tree_add_item(sub_tree, hf_afp_server_vers, tvb, offset, 1, ENC_ASCII|ENC_NA); @@ -5040,9 +5009,9 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre if (offset) { if (offset >= variable_data_offset) { nbe = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, 1, "UAMS list: %u", nbe); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_uams, NULL, "UAMS list: %u", nbe); offset++; - sub_tree = proto_item_add_subtree(ti, ett_afp_uams); for (i = 0; i < nbe; i++) { len = tvb_get_guint8(tvb, offset); proto_tree_add_item(sub_tree, hf_afp_server_uams, tvb, offset, 1, ENC_ASCII|ENC_NA); @@ -5072,9 +5041,9 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre offset = adr_ofs; nbe = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, 1, "Address list: %d", nbe); + adr_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_server_addr, NULL, "Address list: %d", nbe); offset++; - adr_tree = proto_item_add_subtree(ti, ett_afp_server_addr); for (i = 0; i < nbe; i++) { guint8 type; @@ -5083,17 +5052,21 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre switch (type) { case 1: /* IP */ ti = proto_tree_add_text(adr_tree, tvb, offset, len, "IP: %s", tvb_ip_to_str(tvb, offset+2)); + sub_tree = proto_item_add_subtree(ti,ett_afp_server_addr_line); break; case 2: /* IP + port */ port = tvb_get_ntohs(tvb, offset+6); - ti = proto_tree_add_text(adr_tree, tvb, offset, len, "IP: %s:%d", tvb_ip_to_str(tvb, offset+2), port); + sub_tree = proto_tree_add_subtree_format(adr_tree, tvb, offset, len, + ett_afp_server_addr_line, NULL, + "IP: %s:%d", tvb_ip_to_str(tvb, offset+2), port); break; case 3: /* DDP, atalk_addr_to_str want host order not network */ net = tvb_get_ntohs(tvb, offset+2); node = tvb_get_guint8(tvb, offset +4); port = tvb_get_guint8(tvb, offset +5); - ti = proto_tree_add_text(adr_tree, tvb, offset, len, "DDP: %u.%u:%u", - net, node, port); + sub_tree = proto_tree_add_subtree_format(adr_tree, tvb, offset, len, + ett_afp_server_addr_line, NULL, + "DDP: %u.%u:%u", net, node, port); break; case 4: /* DNS */ case 5: /* SSH tunnel */ @@ -5127,27 +5100,31 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre tmp = tvb_get_string_enc(wmem_packet_scope(), tvb, offset +2, len -2, ENC_ASCII|ENC_NA); ti = proto_tree_add_text(adr_tree, tvb, offset, len, "%s: %s", (type==4)?"DNS":"IP (SSH tunnel)", tmp); + sub_tree = proto_item_add_subtree(ti,ett_afp_server_addr_line); break; } else { - ti = proto_tree_add_text(adr_tree, tvb, offset, len, "Malformed DNS address"); + sub_tree = proto_tree_add_subtree(adr_tree, tvb, offset, len, + ett_afp_server_addr_line, NULL, "Malformed DNS address"); } break; case 6: /* IP6 */ ti = proto_tree_add_text(adr_tree, tvb, offset, len, "IPv6: %s", tvb_ip6_to_str(tvb, offset+2)); + sub_tree = proto_item_add_subtree(ti,ett_afp_server_addr_line); break; case 7: /* IP6 + 2bytes port */ port = tvb_get_ntohs(tvb, offset+ 2+INET6_ADDRLEN); - ti = proto_tree_add_text(adr_tree, tvb, offset, len, "IPv6: %s:%d", - tvb_ip6_to_str(tvb, offset+2), port); + sub_tree = proto_tree_add_subtree_format(adr_tree, tvb, offset, len, + ett_afp_server_addr_line, NULL, + "IPv6: %s:%d", tvb_ip6_to_str(tvb, offset+2), port); break; default: ti = proto_tree_add_text(adr_tree, tvb, offset, len,"Unknown type: %u", type); + sub_tree = proto_item_add_subtree(ti,ett_afp_server_addr_line); break; } len -= 2; - sub_tree = proto_item_add_subtree(ti,ett_afp_server_addr_line); proto_tree_add_item(sub_tree, hf_afp_server_addr_len, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; proto_tree_add_item(sub_tree, hf_afp_server_addr_type, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -5162,9 +5139,9 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre if (dir_ofs >= variable_data_offset) { offset = dir_ofs; nbe = tvb_get_guint8(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, 1, "Directory services list: %d", nbe); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, + ett_afp_directory, NULL, "Directory services list: %d", nbe); offset++; - sub_tree = proto_item_add_subtree(ti, ett_afp_directory); for (i = 0; i < nbe; i++) { len = tvb_get_guint8(tvb, offset); proto_tree_add_item(sub_tree, hf_afp_server_directory, tvb, offset, 1, ENC_ASCII|ENC_NA); @@ -5181,8 +5158,8 @@ dissect_afp_server_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre offset = utf_ofs; ulen = tvb_get_ntohs(tvb, offset); tmp = tvb_get_string_enc(wmem_packet_scope(), tvb, offset + 2, ulen, ENC_UTF_8|ENC_NA); - ti = proto_tree_add_text(tree, tvb, offset, ulen + 2, "UTF-8 server name: %s", tmp); - sub_tree = proto_item_add_subtree(ti, ett_afp_utf8_name); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, ulen + 2, + ett_afp_utf8_name, NULL, "UTF-8 server name: %s", tmp); proto_tree_add_uint(sub_tree, hf_afp_utf8_server_name_len, tvb, offset, 2, ulen); offset += 2; proto_tree_add_string(sub_tree, hf_afp_utf8_server_name, tvb, offset, ulen, tmp); @@ -5261,10 +5238,9 @@ dissect_afp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) "Unknown error (%u)"), aspinfo->code); } - if (tree) { - ti = proto_tree_add_item(tree, proto_afp, tvb, offset, -1, ENC_NA); - afp_tree = proto_item_add_subtree(ti, ett_afp); - } + ti = proto_tree_add_item(tree, proto_afp, tvb, offset, -1, ENC_NA); + afp_tree = proto_item_add_subtree(ti, ett_afp); + if (!aspinfo->reply) { ti = proto_tree_add_uint(afp_tree, hf_afp_command, tvb,offset, 1, afp_command); diff --git a/epan/dissectors/packet-agentx.c b/epan/dissectors/packet-agentx.c index 79cfcddf39..7fadcb8c05 100644 --- a/epan/dissectors/packet-agentx.c +++ b/epan/dissectors/packet-agentx.c @@ -341,7 +341,6 @@ dissect_object_id(tvbuff_t *tvb, proto_tree *tree, int offset, guint8 flags, enu guint8 n_subid; guint8 prefix; guint8 include; - proto_item* item; proto_tree* subtree; guint32 oid[2048]; char str_oid[2048]; @@ -370,9 +369,8 @@ dissect_object_id(tvbuff_t *tvb, proto_tree *tree, int offset, guint8 flags, enu case OID_END_RANGE: range = " (Range End) "; break; default: inclusion = ""; break; } - item = proto_tree_add_text(tree, tvb, offset, 4 + (n_subid * 4) , - "Object Identifier: %s%s%s", range, str_oid, inclusion); - subtree = proto_item_add_subtree(item, ett_obj_ident); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 4 + (n_subid * 4) , + ett_obj_ident, NULL, "Object Identifier: %s%s%s", range, str_oid, inclusion); } else return offset; @@ -419,15 +417,13 @@ dissect_varbind(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 fla { guint16 vtag; int tlen; - proto_item* item; proto_tree* subtree; NORLES(flags, vtag, tvb, offset); /* 2 reserved bytes after this */ if(tree) { - item = proto_tree_add_text(tree, tvb, offset, len, "Value Representation"); - subtree = proto_item_add_subtree(item, ett_valrep); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_valrep, NULL, "Value Representation"); } else return len; proto_tree_add_uint(subtree, hf_vtag, tvb, offset, 2, vtag); @@ -468,13 +464,11 @@ dissect_varbind(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 fla static void dissect_response_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; guint encoding = (flags & NETWORK_BYTE_ORDER) ? ENC_BIG_ENDIAN : ENC_LITTLE_ENDIAN; guint32 r_uptime; - item = proto_tree_add_text(tree, tvb, offset, len, "Response-PDU"); - subtree = proto_item_add_subtree(item, ett_response); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_response, NULL, "Response-PDU"); NORLEL(flags, r_uptime, tvb, offset); proto_tree_add_uint_format(subtree, hf_resp_uptime, tvb, offset, 4, r_uptime, @@ -492,11 +486,9 @@ dissect_response_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint static void dissect_getnext_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "GetNext-PDU"); - subtree = proto_item_add_subtree(item, ett_getnext); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_getnext, NULL, "GetNext-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -512,11 +504,9 @@ dissect_getnext_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 static void dissect_get_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "Get-PDU"); - subtree = proto_item_add_subtree(item, ett_get); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_get, NULL, "Get-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -532,12 +522,10 @@ dissect_get_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 fla static void dissect_getbulk_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; guint encoding = (flags & NETWORK_BYTE_ORDER) ? ENC_BIG_ENDIAN : ENC_LITTLE_ENDIAN; - item = proto_tree_add_text(tree, tvb, offset, len, "GetBulk-PDU"); - subtree = proto_item_add_subtree(item, ett_getbulk); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_getbulk, NULL, "GetBulk-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -556,12 +544,10 @@ dissect_getbulk_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 static int dissect_open_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; guint8 timeout; - item = proto_tree_add_text(tree, tvb, offset, len, "Open-PDU"); - subtree = proto_item_add_subtree(item, ett_open); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_open, NULL, "Open-PDU"); timeout = tvb_get_guint8(tvb, offset); tvb_get_ntoh24(tvb, offset + 1); @@ -580,17 +566,12 @@ dissect_open_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 fl static int dissect_close_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len) { - proto_item* item; proto_tree* subtree; - guint8 reason; - item = proto_tree_add_text(tree, tvb, offset, len, "Close-PDU"); - subtree = proto_item_add_subtree(item, ett_close); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_close, NULL, "Close-PDU"); - reason = tvb_get_guint8(tvb, offset); + proto_tree_add_item(subtree, hf_close_reason, tvb, offset, 1, ENC_NA); tvb_get_ntoh24(tvb, offset + 1); - - proto_tree_add_uint(subtree, hf_close_reason, tvb, offset, 1, reason); offset+=4; return offset; } @@ -599,13 +580,10 @@ dissect_close_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len) static int dissect_register_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - - proto_item* item; proto_tree* subtree; guint encoding = (flags & NETWORK_BYTE_ORDER) ? ENC_BIG_ENDIAN : ENC_LITTLE_ENDIAN; - item = proto_tree_add_text(tree, tvb, offset, len, "Register-PDU"); - subtree = proto_item_add_subtree(item, ett_register); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_register, NULL, "Register-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -634,12 +612,10 @@ dissect_register_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint static int dissect_unregister_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; guint encoding = (flags & NETWORK_BYTE_ORDER) ? ENC_BIG_ENDIAN : ENC_LITTLE_ENDIAN; - item = proto_tree_add_text(tree, tvb, offset, len, "Unregister-PDU"); - subtree = proto_item_add_subtree(item, ett_unregister); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_unregister, NULL, "Unregister-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -667,11 +643,9 @@ dissect_unregister_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, gui static void dissect_testset_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "Testset-PDU"); - subtree = proto_item_add_subtree(item, ett_testset); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_testset, NULL, "Testset-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -686,11 +660,9 @@ dissect_testset_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 static void dissect_notify_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "Notify-PDU"); - subtree = proto_item_add_subtree(item, ett_notify); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_notify, NULL, "Notify-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -705,11 +677,9 @@ dissect_notify_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 static int dissect_ping_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "Ping-PDU"); - subtree = proto_item_add_subtree(item, ett_ping); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_ping, NULL, "Ping-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -721,11 +691,9 @@ dissect_ping_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 fl static void dissect_idx_alloc_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "IndexAllocate-PDU"); - subtree = proto_item_add_subtree(item, ett_idxalloc); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_idxalloc, NULL, "IndexAllocate-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -741,11 +709,9 @@ dissect_idx_alloc_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guin static void dissect_idx_dealloc_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "IndexDeallocate-PDU"); - subtree = proto_item_add_subtree(item, ett_idxdalloc); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_idxdalloc, NULL, "IndexDeallocate-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -760,11 +726,9 @@ dissect_idx_dealloc_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, gu static int dissect_add_caps_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "AddAgentCaps-PDU"); - subtree = proto_item_add_subtree(item, ett_addcap); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_addcap, NULL, "AddAgentCaps-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -781,11 +745,9 @@ dissect_add_caps_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint static int dissect_rem_caps_pdu(tvbuff_t *tvb, proto_tree *tree, int offset, int len, guint8 flags) { - proto_item* item; proto_tree* subtree; - item = proto_tree_add_text(tree, tvb, offset, len, "RemoveAgentCaps-PDU"); - subtree = proto_item_add_subtree(item, ett_remcap); + subtree = proto_tree_add_subtree(tree, tvb, offset, len, ett_remcap, NULL, "RemoveAgentCaps-PDU"); if(flags & NON_DEFAULT_CONTEXT) { /* show context */ @@ -828,7 +790,7 @@ dissect_agentx_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da { int offset = 0; proto_tree* agentx_tree, *pdu_hdr_tree, *flags_tree; - proto_item* pdu_item , *t_item; + proto_item *t_item; guint8 version; guint8 type; guint8 flags; @@ -865,16 +827,14 @@ dissect_agentx_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* da session_id, trans_id, packet_id, payload_len); agentx_tree = proto_item_add_subtree(t_item, ett_agentx); - pdu_item = proto_tree_add_text(agentx_tree, tvb, 0, PDU_HDR_LEN, "PDU Header: Type[%u], len=%d, sid=%d, tid=%d, packid=%d", + pdu_hdr_tree = proto_tree_add_subtree_format(agentx_tree, tvb, 0, PDU_HDR_LEN, + ett_pdu_hdr, NULL, "PDU Header: Type[%u], len=%d, sid=%d, tid=%d, packid=%d", (char)type, payload_len, session_id, trans_id, packet_id); - pdu_hdr_tree = proto_item_add_subtree(pdu_item, ett_pdu_hdr); - proto_tree_add_uint(pdu_hdr_tree, hf_version, tvb, 0, 1, version); proto_tree_add_uint(pdu_hdr_tree, hf_type, tvb, 1, 1, type); - t_item = proto_tree_add_text(pdu_hdr_tree, tvb, 2, 1, "Flags: 0x%02x", flags); - flags_tree = proto_item_add_subtree(t_item, ett_flags); + flags_tree = proto_tree_add_subtree_format(pdu_hdr_tree, tvb, 2, 1, ett_flags, NULL, "Flags: 0x%02x", flags); proto_tree_add_boolean(flags_tree, hf_flags_register, tvb, 2, 1, flags); proto_tree_add_boolean(flags_tree, hf_flags_newindex, tvb, 2, 1, flags); proto_tree_add_boolean(flags_tree, hf_flags_anyindex, tvb, 2, 1, flags); diff --git a/epan/dissectors/packet-aim-generic.c b/epan/dissectors/packet-aim-generic.c index 95c9f8e903..b7799fde0e 100644 --- a/epan/dissectors/packet-aim-generic.c +++ b/epan/dissectors/packet-aim-generic.c @@ -162,7 +162,6 @@ static int dissect_generic_rateinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto { int offset = 0; guint16 i; - proto_item *ti; guint16 numclasses = tvb_get_ntohs(tvb, 0); proto_tree *classes_tree = NULL, *groups_tree, *group_tree; proto_tree_add_uint(tree, hf_generic_rateinfo_numclasses, tvb, 0, 2, numclasses ); @@ -170,19 +169,18 @@ static int dissect_generic_rateinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto if(tree) { /* sizeof(rate_class_struct) = 35 ! */ - ti = proto_tree_add_text(tree, tvb, offset, 35 * numclasses, "Available Rate Classes"); - classes_tree = proto_item_add_subtree(ti, ett_generic_rateinfo_classes); + classes_tree = proto_tree_add_subtree(tree, tvb, offset, 35 * numclasses, + ett_generic_rateinfo_classes, NULL, "Available Rate Classes"); } for(i = 0; i < numclasses; i++) { guint16 myid = tvb_get_ntohs(tvb, offset); - proto_item *ti_local = proto_tree_add_text(classes_tree, tvb, offset, 35, "Rate Class 0x%02x", myid); - proto_tree *class_tree = proto_item_add_subtree(ti_local, ett_generic_rateinfo_class); + proto_tree *class_tree = proto_tree_add_subtree_format(classes_tree, tvb, offset, 35, + ett_generic_rateinfo_class, NULL, "Rate Class 0x%02x", myid); offset = dissect_rate_class(tvb, pinfo, offset, class_tree); } - ti = proto_tree_add_text(tree, tvb, offset, -1, "Rate Groups"); - groups_tree = proto_item_add_subtree(ti, ett_generic_rateinfo_groups); + groups_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_generic_rateinfo_groups, NULL, "Rate Groups"); for(i = 0; i < numclasses; i++) { guint16 j; @@ -192,8 +190,8 @@ static int dissect_generic_rateinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto * sizeof(rate_group) = sizeof(class_id) + sizeof(numpairs) + numpairs * 2 * sizeof(uint16_t) * = 2 + 2 + numpairs * 4 */ - proto_item *ti_local = proto_tree_add_text(groups_tree, tvb, offset, 4 + 4 * numpairs, "Rate Group 0x%02x", myid); - group_tree = proto_item_add_subtree(ti_local, ett_generic_rateinfo_group); + group_tree = proto_tree_add_subtree_format(groups_tree, tvb, offset, 4 + 4 * numpairs, + ett_generic_rateinfo_group, NULL, "Rate Group 0x%02x", myid); proto_tree_add_uint(group_tree, hf_generic_rateinfo_classid, tvb, offset, 2, myid);offset+=2; proto_tree_add_uint(group_tree, hf_generic_rateinfo_numpairs, tvb, offset, 2, numpairs); offset+=2; for(j = 0; j < numpairs; j++) { @@ -217,19 +215,17 @@ static int dissect_generic_rateinfo(tvbuff_t *tvb, packet_info *pinfo _U_, proto static int dissect_aim_generic_clientready(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *gen_tree) { int offset = 0; - proto_item *ti = proto_tree_add_text(gen_tree, tvb, 0, tvb_length(tvb), "Supported services"); - proto_tree *entry = proto_item_add_subtree(ti, ett_generic_clientready); + proto_tree *entry = proto_tree_add_subtree(gen_tree, tvb, 0, -1, ett_generic_clientready, NULL, "Supported services"); while(tvb_length_remaining(tvb, offset) > 0) { guint16 famnum = tvb_get_ntohs(tvb, offset); const aim_family *family = aim_get_family(famnum); proto_tree *subentry; - ti = proto_tree_add_text(entry, tvb, offset, 2, "%s (0x%x)", family?family->name:"Unknown Family", famnum); + subentry = proto_tree_add_subtree_format(entry, tvb, offset, 2, ett_generic_clientready_item, NULL, + "%s (0x%x)", family?family->name:"Unknown Family", famnum); offset+=2; - subentry = proto_item_add_subtree(ti, ett_generic_clientready_item); - proto_tree_add_text(subentry, tvb, offset, 2, "Version: %d", tvb_get_ntohs(tvb, offset) ); offset += 2; proto_tree_add_text(subentry, tvb, offset, 4, "DLL Version: %u", tvb_get_ntoh24(tvb, offset) ); offset += 4; } @@ -240,8 +236,7 @@ static int dissect_aim_generic_clientready(tvbuff_t *tvb, packet_info *pinfo _U_ static int dissect_aim_generic_serverready(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *gen_tree) { int offset = 0; - proto_item *ti = proto_tree_add_text(gen_tree, tvb, offset, tvb_length(tvb), "Supported services"); - proto_tree *entry = proto_item_add_subtree(ti, ett_generic_clientready); + proto_tree *entry = proto_tree_add_subtree(gen_tree, tvb, offset, -1, ett_generic_clientready, NULL, "Supported services"); while(tvb_length_remaining(tvb, offset) > 0) { guint16 famnum = tvb_get_ntohs(tvb, offset); @@ -271,8 +266,7 @@ static int dissect_aim_generic_redirect(tvbuff_t *tvb, packet_info *pinfo, proto static int dissect_aim_generic_capabilities(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *gen_tree) { int offset = 0; - proto_item *ti = proto_tree_add_text(gen_tree, tvb, offset, tvb_length(tvb), "Requested services"); - proto_tree *entry = proto_item_add_subtree(ti, ett_generic_clientready); + proto_tree *entry = proto_tree_add_subtree(gen_tree, tvb, offset, -1, ett_generic_clientready, NULL, "Requested services"); while(tvb_length_remaining(tvb, offset) > 0) { guint16 famnum = tvb_get_ntohs(tvb, offset); @@ -286,8 +280,7 @@ static int dissect_aim_generic_capabilities(tvbuff_t *tvb, packet_info *pinfo _U static int dissect_aim_generic_capack(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *gen_tree) { int offset = 0; - proto_item *ti = proto_tree_add_text(gen_tree, tvb, offset, tvb_length(tvb), "Accepted requested services"); - proto_tree *entry = proto_item_add_subtree(ti, ett_generic_clientready); + proto_tree *entry = proto_tree_add_subtree(gen_tree, tvb, offset, -1, ett_generic_clientready, NULL, "Accepted requested services"); while(tvb_length_remaining(tvb, offset) > 0) { guint16 famnum = tvb_get_ntohs(tvb, offset); @@ -343,13 +336,12 @@ static int dissect_aim_generic_migration_req(tvbuff_t *tvb, packet_info *pinfo, { int offset = 0; guint32 n, i; - proto_item *ti; proto_tree *entry; n = tvb_get_ntohs(tvb, offset);offset+=2; proto_tree_add_uint(gen_tree, hf_generic_migration_numfams, tvb, offset, 2, n); - ti = proto_tree_add_text(gen_tree, tvb, offset, 2 * n, "Families to migrate"); - entry = proto_item_add_subtree(ti, ett_generic_migratefamilies); + entry = proto_tree_add_subtree(gen_tree, tvb, offset, 2 * n, + ett_generic_migratefamilies, NULL, "Families to migrate"); for(i = 0; i < n; i++) { guint16 famnum = tvb_get_ntohs(tvb, offset); const aim_family *family = aim_get_family(famnum); diff --git a/epan/dissectors/packet-aim-ssi.c b/epan/dissectors/packet-aim-ssi.c index d340569ce1..dfde3b1ca7 100644 --- a/epan/dissectors/packet-aim-ssi.c +++ b/epan/dissectors/packet-aim-ssi.c @@ -155,14 +155,12 @@ static int dissect_ssi_ssi_items(tvbuff_t *tvb, packet_info *pinfo, proto_tree * { int offset = 0; gint ssi_entry_size; - proto_item *ti; proto_tree *ssi_entry = NULL; int size = tvb_length(tvb); while (size > offset) { ssi_entry_size = calc_ssi_entry_size(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, ssi_entry_size, "SSI Entry"); - ssi_entry = proto_item_add_subtree(ti, ett_aim_ssi); + ssi_entry = proto_tree_add_subtree(tree, tvb, offset, ssi_entry_size, ett_aim_ssi, NULL, "SSI Entry"); offset = dissect_ssi_item(tvb, pinfo, offset, ssi_entry); } return offset; @@ -199,7 +197,6 @@ static int dissect_aim_snac_ssi_time_and_items_num(tvbuff_t *tvb, packet_info *p static int dissect_aim_snac_ssi_list(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { int offset = 0; - proto_item *ti; proto_tree *ssi_entry = NULL; guint16 num_items, i; nstime_t tmptime; @@ -216,8 +213,8 @@ static int dissect_aim_snac_ssi_list(tvbuff_t *tvb, packet_info *pinfo _U_, prot for(i = 0; i < num_items; i++) { ssi_entry_size = calc_ssi_entry_size(tvb, offset); - ti = proto_tree_add_text(tree, tvb, offset, ssi_entry_size, "SSI Entry %u", i); - ssi_entry = proto_item_add_subtree(ti, ett_aim_ssi); + ssi_entry = proto_tree_add_subtree_format(tree, tvb, offset, ssi_entry_size, + ett_aim_ssi, NULL, "SSI Entry %u", i); offset = dissect_ssi_item(tvb, pinfo, offset, ssi_entry); } tmptime.secs = tvb_get_ntohl(tvb, offset); diff --git a/epan/dissectors/packet-aim.c b/epan/dissectors/packet-aim.c index f3616b2f5c..0a453a44e0 100644 --- a/epan/dissectors/packet-aim.c +++ b/epan/dissectors/packet-aim.c @@ -689,11 +689,10 @@ dissect_aim_snac(tvbuff_t *tvb, packet_info *pinfo, int offset, if( aim_tree && subtype != NULL ) { offset = orig_offset; - ti1 = proto_tree_add_text(aim_tree, tvb, 6, 10, + aim_tree_fnac = proto_tree_add_subtree_format(aim_tree, tvb, 6, 10, ett_aim_fnac, NULL, "FNAC: Family: %s (0x%04x), Subtype: %s (0x%04x)", family ? family->name : "Unknown", family_id, (subtype && subtype->name) ? subtype->name : "Unknown", subtype_id); - aim_tree_fnac = proto_item_add_subtree(ti1, ett_aim_fnac); proto_tree_add_uint_format_value (aim_tree_fnac, hf_aim_fnac_family, tvb, offset, 2, family_id, "%s (0x%04x)", @@ -809,18 +808,16 @@ dissect_aim_buddyname(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, proto_tree *tree) { guint8 buddyname_length = 0; - proto_item *ti = NULL; - proto_tree *buddy_tree = NULL; + proto_tree *buddy_tree; buddyname_length = tvb_get_guint8(tvb, offset); offset++; if(tree) { - ti = proto_tree_add_text(tree, tvb, offset-1, 1+buddyname_length, - "Buddy: %s", + buddy_tree = proto_tree_add_subtree_format(tree, tvb, offset-1, 1+buddyname_length, + ett_aim_buddyname, NULL, "Buddy: %s", tvb_format_text(tvb, offset, buddyname_length)); - buddy_tree = proto_item_add_subtree(ti, ett_aim_buddyname); proto_tree_add_item(buddy_tree, hf_aim_buddyname_len, tvb, offset-1, 1, ENC_BIG_ENDIAN); proto_tree_add_item(buddy_tree, hf_aim_buddyname, tvb, offset, buddyname_length, ENC_UTF_8|ENC_NA); } @@ -1330,9 +1327,8 @@ dissect_aim_tlv(tvbuff_t *tvb, packet_info *pinfo _U_, int offset, else desc = "Unknown"; - ti1 = proto_tree_add_text(tree, tvb, offset, length + 4, "TLV: %s", desc); - - tlv_tree = proto_item_add_subtree(ti1, ett_aim_tlv); + tlv_tree = proto_tree_add_subtree_format(tree, tvb, offset, length + 4, + ett_aim_tlv, NULL, "TLV: %s", desc); proto_tree_add_text(tlv_tree, tvb, offset, 2, "Value ID: %s (0x%04x)", desc, valueid); diff --git a/epan/dissectors/packet-alcap.c b/epan/dissectors/packet-alcap.c index 3fc44d7fe6..0b37169ebb 100644 --- a/epan/dissectors/packet-alcap.c +++ b/epan/dissectors/packet-alcap.c @@ -1319,9 +1319,8 @@ static void alcap_leg_tree(proto_tree* tree, tvbuff_t* tvb, packet_info *pinfo, if(leg->msgs) { alcap_msg_data_t* msg = leg->msgs; - proto_item* pi_local = proto_tree_add_text(tree,tvb,0,0,"[Messages in this leg]"); - proto_tree* tree_local = proto_item_add_subtree(pi_local,ett_leg); - + proto_item* pi_local; + proto_tree* tree_local = proto_tree_add_subtree(tree,tvb,0,0,ett_leg,&pi_local,"[Messages in this leg]"); do { pi_local = proto_tree_add_uint(tree_local,hf_alcap_leg_frame,tvb,0,0,msg->framenum); diff --git a/epan/dissectors/packet-amqp.c b/epan/dissectors/packet-amqp.c index 29b56148e7..7b1ab63984 100644 --- a/epan/dissectors/packet-amqp.c +++ b/epan/dissectors/packet-amqp.c @@ -3184,12 +3184,7 @@ dissect_amqp_0_10_array(tvbuff_t *tvb, struct_length = tvb_get_ntohl(tvb, offset); AMQP_INCREMENT(offset, 4, bound); length -= 4; - /* - * Always add a tree for structs - the struct formatter will - * change the item text to the struct type then add elements to it. - */ - if (array_tree == 0) - array_tree = proto_item_add_subtree(item, ett_amqp_0_10_array); + array_tree = proto_item_add_subtree(item, ett_amqp_0_10_array); sub = proto_tree_add_none_format(array_tree, hf_amqp_field, tvb, element_start, offset - element_start, diff --git a/epan/dissectors/packet-amr.c b/epan/dissectors/packet-amr.c index b1fd09140a..a3bfcac3ac 100644 --- a/epan/dissectors/packet-amr.c +++ b/epan/dissectors/packet-amr.c @@ -440,7 +440,7 @@ dissect_amr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint amr gboolean first_time; /* Set up structures needed to add the protocol subtree and manage it */ - proto_item *ti,*toc_item; + proto_item *ti; proto_tree *amr_tree, *toc_tree; ti = proto_tree_add_item(tree, proto_amr, tvb, 0, -1, ENC_NA); @@ -507,8 +507,7 @@ dissect_amr_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint amr * P bits: padding bits, MUST be set to zero. */ octet = tvb_get_guint8(tvb,offset); - toc_item = proto_tree_add_text(amr_tree, tvb, offset, -1, "Payload Table of Contents"); - toc_tree = proto_item_add_subtree(toc_item, ett_amr_toc); + toc_tree = proto_tree_add_subtree(amr_tree, tvb, offset, -1, ett_amr_toc, NULL, "Payload Table of Contents"); first_time = TRUE; while ((( octet& 0x80 ) == 0x80) || (first_time == TRUE)) { diff --git a/epan/dissectors/packet-ansi_637.c b/epan/dissectors/packet-ansi_637.c index d627527e72..3ba17f9774 100644 --- a/epan/dissectors/packet-ansi_637.c +++ b/epan/dissectors/packet-ansi_637.c @@ -624,7 +624,6 @@ static void tele_param_user_data_cmas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint len, guint32 offset, gboolean *has_private_data_p _U_) { proto_tree *subtree; - proto_item *item; guint8 bit_mask_8; guint8 oct, oct2; guint8 encoding; @@ -698,12 +697,9 @@ tele_param_user_data_cmas(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, g record_len = tvb_get_guint8(tvb_out, offset + 1); - item = - proto_tree_add_text(tree, tvb_out, offset, record_len + 2, - "%s", - str); - - subtree = proto_item_add_subtree(item, ett_tia_1149_cmas_param[subtree_idx]); + subtree = + proto_tree_add_subtree(tree, tvb_out, offset, record_len + 2, + ett_tia_1149_cmas_param[subtree_idx], NULL, str); proto_tree_add_uint_format_value(subtree, hf_ansi_637_tele_cmas_record_type, tvb_out, offset, 1, record_type, @@ -2215,12 +2211,9 @@ dissect_ansi_637_tele_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, ett_param_idx = ett_ansi_637_tele_param[idx]; param_fcn = ansi_637_tele_param_fcn[idx]; - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, - "%s", - str); - - subtree = proto_item_add_subtree(item, ett_param_idx); + subtree = + proto_tree_add_subtree(tree, tvb, curr_offset, -1, + ett_param_idx, &item, str); proto_tree_add_uint(subtree, hf_ansi_637_tele_subparam_id, tvb, curr_offset, 1, oct); @@ -2419,9 +2412,7 @@ dissect_ansi_637_trans_param(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree ett_param_idx = ett_ansi_637_trans_param[idx]; param_fcn = ansi_637_trans_param_fcn[idx]; - item = proto_tree_add_text(tree, tvb, curr_offset, -1, "%s", str); - - subtree = proto_item_add_subtree(item, ett_param_idx); + subtree = proto_tree_add_subtree(tree, tvb, curr_offset, -1, ett_param_idx, &item, str); proto_tree_add_uint(subtree, hf_ansi_637_trans_param_id, tvb, curr_offset, 1, oct); diff --git a/epan/dissectors/packet-ansi_a.c b/epan/dissectors/packet-ansi_a.c index 634ec666d8..a46f83fae6 100644 --- a/epan/dissectors/packet-ansi_a.c +++ b/epan/dissectors/packet-ansi_a.c @@ -2014,7 +2014,6 @@ elem_is95_chan_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint guint8 chan_num; guint32 value; guint32 curr_offset; - proto_item *item; proto_tree *subtree; curr_offset = offset; @@ -2040,12 +2039,9 @@ elem_is95_chan_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint chan_num = 0; do { - item = - proto_tree_add_text(tree, tvb, curr_offset, 4, - "Channel [%u]", - chan_num + 1); - - subtree = proto_item_add_subtree(item, ett_chan_list); + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, 4, + ett_chan_list, NULL, "Channel [%u]", chan_num + 1); proto_tree_add_item(subtree, hf_ansi_a_is95_chan_id_walsh_code_chan_idx, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -2131,16 +2127,14 @@ elem_enc_info(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 o oct = tvb_get_guint8(tvb, curr_offset); - item = - proto_tree_add_text(tree, - tvb, curr_offset, -1, + subtree = + proto_tree_add_subtree_format(tree, + tvb, curr_offset, -1, ett_ansi_enc_info, &item, "Encryption Info [%u]: %s (%u)", num_recs + 1, val_to_str_const((oct & 0x7c) >> 2, ansi_a_enc_info_ident_vals, "Reserved"), (oct & 0x7c) >> 2); - subtree = proto_item_add_subtree(item, ett_ansi_enc_info); - proto_tree_add_item(subtree, hf_ansi_a_extension_8_80, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_ansi_a_enc_info_enc_parm_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_ansi_a_enc_info_status, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -2354,12 +2348,9 @@ elem_cm_info_type_2(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui num_bands = 0; do { - item = - proto_tree_add_text(tree, tvb, curr_offset, band_class_entry_len, - "Band Class Entry [%u]", - num_bands + 1); - - subtree = proto_item_add_subtree(item, ett_cm2_band_class); + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, band_class_entry_len, + ett_cm2_band_class, NULL, "Band Class Entry [%u]", num_bands + 1); proto_tree_add_item(subtree, hf_ansi_a_reserved_bits_8_e0, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_ansi_a_scm_band_class_entry_band_class, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -2956,12 +2947,9 @@ elem_cell_id_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 o do { - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, - "Cell [%u]", - num_cells + 1); - - subtree = proto_item_add_subtree(item, ett_cell_list); + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_cell_list, &item, "Cell [%u]", num_cells + 1); consumed = elem_cell_id_aux(tvb, pinfo, subtree, curr_offset, len - (curr_offset - offset), oct, item); @@ -3131,12 +3119,9 @@ elem_downlink_re_aux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint3 { SHORT_DATA_CHECK(len - (curr_offset - offset), (guint32) 3 + ANSI_A_CELL_ID_LEN(disc)); - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, - "Cell [%u]", - curr_cell + 1); - - subtree = proto_item_add_subtree(item, ett_cell_list); + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_cell_list, &item, "Cell [%u]", curr_cell + 1); consumed = elem_cell_id_aux(tvb, pinfo, subtree, curr_offset, len - (curr_offset - offset), disc, item); @@ -3199,13 +3184,11 @@ elem_downlink_re_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint while ((len - (curr_offset - offset)) > 0) { - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, - "Environment [%u]", + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_re_list, &item, "Environment [%u]", num_envs + 1); - subtree = proto_item_add_subtree(item, ett_re_list); - proto_tree_add_item(subtree, hf_ansi_a_downlink_re_entry_env_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset++; @@ -3316,11 +3299,9 @@ elem_ho_pow_lev(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 off curr_offset++; - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, - "Cell [1]"); - - subtree = proto_item_add_subtree(item, ett_cell_list); + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_cell_list, &item, "Cell [1]"); consumed = elem_cell_id_aux(tvb, pinfo, subtree, curr_offset, len - (curr_offset - offset), 0x7, item); @@ -3338,12 +3319,9 @@ elem_ho_pow_lev(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 off curr_offset++; - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, - "Cell [%u]", - num_cells + 1); - - subtree = proto_item_add_subtree(item, ett_cell_list); + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_cell_list, &item, "Cell [%u]", num_cells + 1); consumed = elem_cell_id_aux(tvb, pinfo, subtree, curr_offset, len - (curr_offset - offset), 0x2, item); @@ -3449,7 +3427,6 @@ elem_is2000_chan_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui guint32 value; guint32 pilot_pn; guint32 curr_offset; - proto_item *item; proto_tree *subtree; const gchar *str; @@ -3475,10 +3452,8 @@ elem_is2000_chan_id(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui do { - item = proto_tree_add_text(tree, tvb, curr_offset, 6, - "Channel [%u]", chan_num + 1); - - subtree = proto_item_add_subtree(item, ett_chan_list); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 6, + ett_chan_list, NULL, "Channel [%u]", chan_num + 1); oct = tvb_get_guint8(tvb, curr_offset); @@ -4662,13 +4637,11 @@ elem_so_list(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 offset { guint16 value; - item = - proto_tree_add_text(tree, tvb, curr_offset, 3, - "Service Option [%u]", + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, 3, + ett_so_list, &item, "Service Option [%u]", inst + 1); - subtree = proto_item_add_subtree(item, ett_so_list); - proto_tree_add_item(tree, hf_ansi_a_reserved_bits_8_c0, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_ansi_a_so_list_sr_id, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(tree, hf_ansi_a_so_list_soci, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -4759,7 +4732,6 @@ elem_adds_user_part(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 guint8 oct; guint32 curr_offset; tvbuff_t *adds_tvb; - proto_item *item; proto_tree *subtree; curr_offset = offset; @@ -4774,8 +4746,7 @@ elem_adds_user_part(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 curr_offset++; - item = proto_tree_add_text(tree, tvb, curr_offset, len - 1, "Application Data Message"); - subtree = proto_item_add_subtree(item, ett_adds_user_part); + subtree = proto_tree_add_subtree(tree, tvb, curr_offset, len - 1, ett_adds_user_part, NULL, "Application Data Message"); switch (oct & 0x3f) { @@ -4887,7 +4858,6 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 guint32 curr_offset, saved_offset; guint32 value; guint is2000_portion_len; - proto_item *item; proto_tree *scr_subtree, *subtree; const gchar *str = NULL; @@ -4906,9 +4876,8 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 saved_offset = curr_offset; - item = proto_tree_add_text(tree, tvb, curr_offset, is2000_portion_len, - "IS-2000 Service Configuration Record Content"); - scr_subtree = proto_item_add_subtree(item, ett_scr); + scr_subtree = proto_tree_add_subtree(tree, tvb, curr_offset, is2000_portion_len, + ett_scr, NULL, "IS-2000 Service Configuration Record Content"); proto_tree_add_item(scr_subtree, hf_ansi_a_is2000_scr_for_mux_option, tvb, curr_offset, 2, ENC_BIG_ENDIAN); curr_offset += 2; @@ -4930,10 +4899,9 @@ elem_is2000_scr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint32 { oct = tvb_get_guint8(tvb, curr_offset); - item = proto_tree_add_text(scr_subtree, tvb, + subtree = proto_tree_add_subtree_format(scr_subtree, tvb, curr_offset, oct /* !!! oct already includes the length octet itself */, - "Service option connection record [%u]", ii+1); - subtree = proto_item_add_subtree(item, ett_scr_socr); + ett_scr_socr, NULL, "Service option connection record [%u]", ii+1); curr_offset += 1; proto_tree_add_item(subtree, hf_ansi_a_is2000_scr_socr_soc_ref, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -5242,11 +5210,9 @@ elem_is2000_mob_cap(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui { SHORT_DATA_CHECK(len - (curr_offset - offset), oct_len); - item = - proto_tree_add_text(tree, tvb, curr_offset, oct_len, - "FCH Information"); - - subtree = proto_item_add_subtree(item, ett_is2000_mob_cap_fch_info); + subtree = + proto_tree_add_subtree(tree, tvb, curr_offset, oct_len, + ett_is2000_mob_cap_fch_info, NULL, "FCH Information"); content_fill_aux(tvb, subtree, curr_offset, oct_len, fill_bits, hf_ansi_a_is2000_mob_cap_fch_info_content, @@ -5275,8 +5241,8 @@ elem_is2000_mob_cap(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui { SHORT_DATA_CHECK(len - (curr_offset - offset), oct_len); - item = proto_tree_add_text(tree, tvb, curr_offset, oct_len, "DCCH Information"); - subtree = proto_item_add_subtree(item, ett_is2000_mob_cap_dcch_info); + subtree = proto_tree_add_subtree(tree, tvb, curr_offset, oct_len, + ett_is2000_mob_cap_dcch_info, NULL, "DCCH Information"); content_fill_aux(tvb, subtree, curr_offset, oct_len, fill_bits, hf_ansi_a_is2000_mob_cap_dcch_info_content, @@ -5307,8 +5273,8 @@ elem_is2000_mob_cap(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui { SHORT_DATA_CHECK(len - (curr_offset - offset), oct_len); - item = proto_tree_add_text(tree, tvb, curr_offset, oct_len, "FOR_PDCH Information"); - subtree = proto_item_add_subtree(item, ett_is2000_mob_cap_for_pdch_info); + subtree = proto_tree_add_subtree(tree, tvb, curr_offset, oct_len, + ett_is2000_mob_cap_for_pdch_info, NULL, "FOR_PDCH Information"); content_fill_aux(tvb, subtree, curr_offset, oct_len, fill_bits, hf_ansi_a_is2000_mob_cap_for_pdch_info_content, @@ -5339,9 +5305,8 @@ elem_is2000_mob_cap(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gui { SHORT_DATA_CHECK(len - (curr_offset - offset), oct_len); - item = proto_tree_add_text(tree, tvb, curr_offset, oct_len, "REV_PDCH Information"); - - subtree = proto_item_add_subtree(item, ett_is2000_mob_cap_rev_pdch_info); + subtree = proto_tree_add_subtree(tree, tvb, curr_offset, oct_len, + ett_is2000_mob_cap_rev_pdch_info, NULL, "REV_PDCH Information"); content_fill_aux(tvb, subtree, curr_offset, oct_len, fill_bits, hf_ansi_a_is2000_mob_cap_rev_pdch_info_content, @@ -5576,15 +5541,14 @@ elem_fwd_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g ett_elem_idx = ett_ansi_fwd_ms_info_rec[idx]; } - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_elem_idx, &item, "Information Record Type [%u]: (%u) %s", num_recs + 1, rec_type, str); - subtree = proto_item_add_subtree(item, ett_elem_idx); - curr_offset++; oct_len = tvb_get_guint8(tvb, curr_offset); @@ -5785,15 +5749,14 @@ elem_rev_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g ett_elem_idx = ett_ansi_rev_ms_info_rec[idx]; } - item = - proto_tree_add_text(tree, tvb, curr_offset, -1, + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_elem_idx, NULL, "Information Record Type [%u]: (%u) %s", num_recs + 1, rec_type, str); - subtree = proto_item_add_subtree(item, ett_elem_idx); - curr_offset++; oct_len = tvb_get_guint8(tvb, curr_offset); @@ -5911,10 +5874,8 @@ elem_rev_ms_info_recs(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, g while ((oct_len - (curr_offset - saved_offset2)) > 2) { - item = proto_tree_add_text(subtree, tvb, curr_offset, 3, - "Service Option [%u]", i + 1); - - subtree2 = proto_item_add_subtree(item, ett_so_list); + subtree2 = proto_tree_add_subtree_format(subtree, tvb, curr_offset, 3, + ett_so_list, &item, "Service Option [%u]", i + 1); proto_tree_add_item(subtree2, hf_ansi_a_reserved_bits_8_fc, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(subtree2, hf_ansi_a_rev_ms_info_rec_so_info_fwd_support, tvb, curr_offset, 1, ENC_BIG_ENDIAN); @@ -6927,10 +6888,8 @@ elem_a2p_bearer_format(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin { orig_offset = curr_offset; - item = proto_tree_add_text(tree, tvb, curr_offset, -1, - "Bearer Format [%u]", num_bearers + 1); - - subtree = proto_item_add_subtree(item, ett_bearer_list); + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, + ett_bearer_list, &item, "Bearer Format [%u]", num_bearers + 1); proto_tree_add_item(subtree, hf_ansi_a_a2p_bearer_form_format_len, tvb, curr_offset, 1, ENC_BIG_ENDIAN); curr_offset++; @@ -7497,14 +7456,12 @@ elem_tlv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, gu parm_len = tvb_get_guint8(tvb, curr_offset + 1); - data_p->elem_item = - proto_tree_add_text(tree, tvb, curr_offset, parm_len + 2, - "%s%s", + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, parm_len + 2, + ett_ansi_elem_1[idx], &data_p->elem_item, "%s%s", ansi_a_elem_1_strings[idx].strptr, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - subtree = proto_item_add_subtree(data_p->elem_item, ett_ansi_elem_1[idx]); - proto_tree_add_uint(subtree, hf_ansi_a_elem_id, tvb, curr_offset, 1, oct); proto_tree_add_uint(subtree, hf_ansi_a_length, tvb, curr_offset + 1, 1, parm_len); @@ -7561,15 +7518,13 @@ elem_tv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, gui { dec_idx = ansi_a_elem_1_strings[idx].dec_index; - data_p->elem_item = - proto_tree_add_text(tree, + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, -1, - "%s%s", + ett_ansi_elem_1[idx], &data_p->elem_item, "%s%s", ansi_a_elem_1_strings[idx].strptr, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - subtree = proto_item_add_subtree(data_p->elem_item, ett_ansi_elem_1[idx]); - proto_tree_add_uint(subtree, hf_ansi_a_elem_id, tvb, curr_offset, 1, oct); if (elem_1_fcn[dec_idx] == NULL) @@ -7658,14 +7613,12 @@ elem_lv(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, elem_idx_t idx, gui parm_len = tvb_get_guint8(tvb, curr_offset); - data_p->elem_item = - proto_tree_add_text(tree, tvb, curr_offset, parm_len + 1, - "%s%s", + subtree = + proto_tree_add_subtree_format(tree, tvb, curr_offset, parm_len + 1, + ett_ansi_elem_1[idx], &data_p->elem_item, "%s%s", ansi_a_elem_1_strings[idx].strptr, (name_add == NULL) || (name_add[0] == '\0') ? "" : name_add); - subtree = proto_item_add_subtree(data_p->elem_item, ett_ansi_elem_1[idx]); - proto_tree_add_uint(subtree, hf_ansi_a_length, tvb, curr_offset, 1, parm_len); @@ -7879,7 +7832,6 @@ dtap_cm_srvc_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 of guint curr_len; guint8 oct; proto_tree *subtree; - proto_item *item; curr_offset = offset; curr_len = len; @@ -7888,9 +7840,8 @@ dtap_cm_srvc_req(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint32 of * special dissection for CM Service Type */ oct = tvb_get_guint8(tvb, curr_offset); - item = proto_tree_add_text(tree, tvb, curr_offset, 1, + subtree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 1, ett_cm_srvc_type, NULL, "CM Service Type: %s", val_to_str_const(oct & 0x0f, dtap_cm_service_type_vals, "Unknown")); - subtree = proto_item_add_subtree(item, ett_cm_srvc_type); proto_tree_add_item(subtree, hf_ansi_a_elem_id_f0, tvb, curr_offset, 1, ENC_BIG_ENDIAN); proto_tree_add_item(subtree, hf_ansi_a_cm_svrc_type, tvb, curr_offset, 1, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-aodv.c b/epan/dissectors/packet-aodv.c index ad306dbf1c..d2d9de4f69 100644 --- a/epan/dissectors/packet-aodv.c +++ b/epan/dissectors/packet-aodv.c @@ -149,7 +149,6 @@ static void dissect_aodv_ext(tvbuff_t * tvb, int offset, proto_tree * tree) { proto_tree *ext_tree; - proto_item *ti; guint8 type, len; if (!tree) @@ -162,8 +161,7 @@ dissect_aodv_ext(tvbuff_t * tvb, int offset, proto_tree * tree) type = tvb_get_guint8(tvb, offset); len = tvb_get_guint8(tvb, offset + 1); - ti = proto_tree_add_text(tree, tvb, offset, 2 + len, "Extensions"); - ext_tree = proto_item_add_subtree(ti, ett_aodv_extensions); + ext_tree = proto_tree_add_subtree(tree, tvb, offset, 2 + len, ett_aodv_extensions, NULL, "Extensions"); proto_tree_add_text(ext_tree, tvb, offset, 1, "Type: %u (%s)", type, @@ -218,8 +216,7 @@ dissect_aodv_rreq(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree, flags = tvb_get_guint8(tvb, offset); if (aodv_tree) { - tj = proto_tree_add_text(aodv_tree, tvb, offset, 1, "Flags:"); - aodv_flags_tree = proto_item_add_subtree(tj, ett_aodv_flags); + aodv_flags_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, 1, ett_aodv_flags, &tj, "Flags:"); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rreq_join, tvb, offset, 1, flags); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rreq_repair, @@ -347,8 +344,7 @@ dissect_aodv_rrep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree, flags = tvb_get_guint8(tvb, offset); if (aodv_tree) { - tj = proto_tree_add_text(aodv_tree, tvb, offset, 1, "Flags:"); - aodv_flags_tree = proto_item_add_subtree(tj, ett_aodv_flags); + aodv_flags_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, 1, ett_aodv_flags, &tj, "Flags:"); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rrep_repair, tvb, offset, 1, flags); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rrep_ack, tvb, @@ -461,8 +457,7 @@ dissect_aodv_rerr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree, flags = tvb_get_guint8(tvb, offset); if (aodv_tree) { - tj = proto_tree_add_text(aodv_tree, tvb, offset, 1, "Flags:"); - aodv_flags_tree = proto_item_add_subtree(tj, ett_aodv_flags); + aodv_flags_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, 1, ett_aodv_flags, &tj, "Flags:"); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rerr_nodelete, tvb, offset, 1, flags); if (flags & RERR_NODEL) @@ -479,10 +474,9 @@ dissect_aodv_rerr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree, offset += 1; if (is_ipv6) { - tj = proto_tree_add_text(aodv_tree, tvb, offset, - (INET6_ADDRLEN + 4)*dest_count, + aodv_unreach_dest_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, + (INET6_ADDRLEN + 4)*dest_count, ett_aodv_unreach_dest, NULL, "Unreachable Destinations"); - aodv_unreach_dest_tree = proto_item_add_subtree(tj, ett_aodv_unreach_dest); for (i = 0; i < dest_count; i++) { proto_tree_add_item(aodv_unreach_dest_tree, hf_aodv_unreach_dest_ipv6, @@ -493,9 +487,8 @@ dissect_aodv_rerr(tvbuff_t *tvb, packet_info *pinfo, proto_tree *aodv_tree, offset += 4; } } else { - tj = proto_tree_add_text(aodv_tree, tvb, offset, (4 + 4)*dest_count, - "Unreachable Destinations"); - aodv_unreach_dest_tree = proto_item_add_subtree(tj, ett_aodv_unreach_dest); + aodv_unreach_dest_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, (4 + 4)*dest_count, + ett_aodv_unreach_dest, NULL, "Unreachable Destinations"); for (i = 0; i < dest_count; i++) { proto_tree_add_item(aodv_unreach_dest_tree, hf_aodv_unreach_dest_ip, tvb, offset, 4, ENC_BIG_ENDIAN); @@ -525,8 +518,7 @@ dissect_aodv_draft_01_v6_rreq(tvbuff_t *tvb, packet_info *pinfo, flags = tvb_get_guint8(tvb, offset); if (aodv_tree) { - tj = proto_tree_add_text(aodv_tree, tvb, offset, 1, "Flags:"); - aodv_flags_tree = proto_item_add_subtree(tj, ett_aodv_flags); + aodv_flags_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, 1, ett_aodv_flags, &tj, "Flags:"); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rreq_join, tvb, offset, 1, flags); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rreq_repair, @@ -628,8 +620,7 @@ dissect_aodv_draft_01_v6_rrep(tvbuff_t *tvb, packet_info *pinfo, flags = tvb_get_guint8(tvb, offset); if (aodv_tree) { - tj = proto_tree_add_text(aodv_tree, tvb, offset, 1, "Flags:"); - aodv_flags_tree = proto_item_add_subtree(tj, ett_aodv_flags); + aodv_flags_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, 1, ett_aodv_flags, &tj, "Flags:"); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rrep_repair, tvb, offset, 1, flags); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rrep_ack, tvb, @@ -717,8 +708,7 @@ dissect_aodv_draft_01_v6_rerr(tvbuff_t *tvb, packet_info *pinfo, flags = tvb_get_guint8(tvb, offset); if (aodv_tree) { - tj = proto_tree_add_text(aodv_tree, tvb, offset, 1, "Flags:"); - aodv_flags_tree = proto_item_add_subtree(tj, ett_aodv_flags); + aodv_flags_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, 1, ett_aodv_flags, &tj, "Flags:"); proto_tree_add_boolean(aodv_flags_tree, hf_aodv_flags_rerr_nodelete, tvb, offset, 1, flags); if (flags & RERR_NODEL) @@ -735,10 +725,10 @@ dissect_aodv_draft_01_v6_rerr(tvbuff_t *tvb, packet_info *pinfo, dest_count); offset += 1; - tj = proto_tree_add_text(aodv_tree, tvb, offset, + aodv_unreach_dest_tree = proto_tree_add_subtree(aodv_tree, tvb, offset, (4 + INET6_ADDRLEN)*dest_count, + ett_aodv_unreach_dest, NULL, "Unreachable Destinations"); - aodv_unreach_dest_tree = proto_item_add_subtree(tj, ett_aodv_unreach_dest); for (i = 0; i < dest_count; i++) { proto_tree_add_item(aodv_unreach_dest_tree, hf_aodv_dest_seqno, tvb, offset, 4, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-aoe.c b/epan/dissectors/packet-aoe.c index ff249cd534..3a892137f4 100644 --- a/epan/dissectors/packet-aoe.c +++ b/epan/dissectors/packet-aoe.c @@ -326,25 +326,22 @@ dissect_aoe_v1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { guint8 flags, cmd; guint32 tag; - proto_item *flags_item=NULL; - proto_tree *flags_tree=NULL; + proto_item *flags_item; + proto_tree *flags_tree; /* read and dissect the flags */ flags=tvb_get_guint8(tvb, 0)&0x0f; - if(tree){ - flags_item=proto_tree_add_text(tree, tvb, 0, 1, "Flags:"); - flags_tree=proto_item_add_subtree(flags_item, ett_aoe_flags); - } + + flags_tree=proto_tree_add_subtree(tree, tvb, 0, 1, ett_aoe_flags, &flags_item, "Flags:"); + proto_tree_add_item(flags_tree, hf_aoe_flags_response, tvb, 0, 1, ENC_BIG_ENDIAN); proto_tree_add_item(flags_tree, hf_aoe_flags_error, tvb, 0, 1, ENC_BIG_ENDIAN); - if(flags_item){ - proto_item_append_text(flags_item,(flags&AOE_FLAGS_RESPONSE)?" Response":" Request"); - if(flags&AOE_FLAGS_ERROR){ + + proto_item_append_text(flags_item,(flags&AOE_FLAGS_RESPONSE)?" Response":" Request"); + if(flags&AOE_FLAGS_ERROR){ proto_item_append_text(flags_item, " Error"); - } } - /* error */ if(flags&AOE_FLAGS_ERROR){ proto_tree_add_item(tree, hf_aoe_error, tvb, 1, 1, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-aprs.c b/epan/dissectors/packet-aprs.c index 3a98576675..ac655edcd7 100644 --- a/epan/dissectors/packet-aprs.c +++ b/epan/dissectors/packet-aprs.c @@ -848,17 +848,12 @@ dissect_aprs_storm( tvbuff_t *tvb, const storm_items_s *storm_items ) { - proto_tree *storm_tree = NULL; + proto_tree *storm_tree; + proto_tree *tc; - if ( parent_tree ) - { - proto_tree *tc; - int data_len; + tc = proto_tree_add_item( parent_tree, hf_aprs_storm_idx, tvb, offset, -1, ENC_ASCII|ENC_NA ); + storm_tree = proto_item_add_subtree( tc, ett_aprs_storm_idx ); - data_len = tvb_reported_length_remaining( tvb, offset ); - tc = proto_tree_add_item( parent_tree, hf_aprs_storm_idx, tvb, offset, data_len, ENC_ASCII|ENC_NA ); - storm_tree = proto_item_add_subtree( tc, ett_aprs_storm_idx ); - } proto_tree_add_item( storm_tree, *storm_items->hf_aprs_storm_dir, tvb, offset, 3, ENC_BIG_ENDIAN ); offset += 3; offset += 1; diff --git a/epan/dissectors/packet-arp.c b/epan/dissectors/packet-arp.c index 4c6a1e9ece..b384b5d90b 100644 --- a/epan/dissectors/packet-arp.c +++ b/epan/dissectors/packet-arp.c @@ -688,16 +688,16 @@ check_for_duplicate_addresses(packet_info *pinfo, proto_tree *tree, /* Add report to tree if we found a duplicate */ if (result != NULL) { proto_tree *duplicate_tree; + proto_item *ti; /* Create subtree */ - proto_item *ti = proto_tree_add_text(tree, tvb, 0, 0, + duplicate_tree = proto_tree_add_subtree_format(tree, tvb, 0, 0, ett_arp_duplicate_address, &ti, "Duplicate IP address detected for %s (%s) - also in use by %s (frame %u)", arpproaddr_to_str((guint8*)&ip, 4, ETHERTYPE_IP), ether_to_str(mac), ether_to_str(result->mac), result->frame_num); PROTO_ITEM_SET_GENERATED(ti); - duplicate_tree = proto_item_add_subtree(ti, ett_arp_duplicate_address); /* Add item for navigating to earlier frame */ ti = proto_tree_add_uint(duplicate_tree, hf_arp_duplicate_ip_address_earlier_frame, @@ -1127,23 +1127,23 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_uint(arp_tree, hf_arp_proto_type, tvb, ATM_AR_PRO, 2,ar_pro); - tl = proto_tree_add_text(arp_tree, tvb, ATM_AR_SHTL, 1, + tl_tree = proto_tree_add_subtree_format(arp_tree, tvb, ATM_AR_SHTL, 1, + ett_atmarp_tl, NULL, "Sender ATM number type/length: %s/%u", (ar_shtl & ATMARP_IS_E164 ? "E.164" : "ATM Forum NSAPA"), ar_shl); - tl_tree = proto_item_add_subtree(tl, ett_atmarp_tl); proto_tree_add_boolean(tl_tree, hf_atmarp_sht, tvb, ATM_AR_SHTL, 1, ar_shtl); proto_tree_add_uint(tl_tree, hf_atmarp_shl, tvb, ATM_AR_SHTL, 1, ar_shtl); - tl = proto_tree_add_text(arp_tree, tvb, ATM_AR_SSTL, 1, + tl_tree = proto_tree_add_subtree_format(arp_tree, tvb, ATM_AR_SSTL, 1, + ett_atmarp_tl, NULL, "Sender ATM subaddress type/length: %s/%u", (ar_sstl & ATMARP_IS_E164 ? "E.164" : "ATM Forum NSAPA"), ar_ssl); - tl_tree = proto_item_add_subtree(tl, ett_atmarp_tl); proto_tree_add_boolean(tl_tree, hf_atmarp_sst, tvb, ATM_AR_SSTL, 1, ar_sstl); proto_tree_add_uint(tl_tree, hf_atmarp_ssl, tvb, ATM_AR_SSTL, 1, ar_sstl); @@ -1152,23 +1152,23 @@ dissect_atmarp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_uint(arp_tree, hf_atmarp_spln, tvb, ATM_AR_SPLN, 1, ar_spln); - tl = proto_tree_add_text(arp_tree, tvb, ATM_AR_THTL, 1, + tl_tree = proto_tree_add_subtree_format(arp_tree, tvb, ATM_AR_THTL, 1, + ett_atmarp_tl, NULL, "Target ATM number type/length: %s/%u", (ar_thtl & ATMARP_IS_E164 ? "E.164" : "ATM Forum NSAPA"), ar_thl); - tl_tree = proto_item_add_subtree(tl, ett_atmarp_tl); proto_tree_add_boolean(tl_tree, hf_atmarp_tht, tvb, ATM_AR_THTL, 1, ar_thtl); proto_tree_add_uint(tl_tree, hf_atmarp_thl, tvb, ATM_AR_THTL, 1, ar_thtl); - tl = proto_tree_add_text(arp_tree, tvb, ATM_AR_TSTL, 1, + tl = proto_tree_add_subtree_format(arp_tree, tvb, ATM_AR_TSTL, 1, + ett_atmarp_tl, NULL, "Target ATM subaddress type/length: %s/%u", (ar_tstl & ATMARP_IS_E164 ? "E.164" : "ATM Forum NSAPA"), ar_tsl); - tl_tree = proto_item_add_subtree(tl, ett_atmarp_tl); proto_tree_add_boolean(tl_tree, hf_atmarp_tst, tvb, ATM_AR_TSTL, 1, ar_tstl); proto_tree_add_uint(tl_tree, hf_atmarp_tsl, tvb, ATM_AR_TSTL, 1, ar_tstl); diff --git a/epan/dissectors/packet-aruba-iap.c b/epan/dissectors/packet-aruba-iap.c index 3f6c41558d..ecc62b4e12 100644 --- a/epan/dissectors/packet-aruba-iap.c +++ b/epan/dissectors/packet-aruba-iap.c @@ -53,8 +53,8 @@ static int hf_iap_unknown_bytes = -1; static int dissect_aruba_iap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_) { - proto_tree *ti = NULL; - proto_tree *aruba_iap_tree = NULL; + proto_tree *ti; + proto_tree *aruba_iap_tree; guint16 magic; int offset = 0; @@ -68,10 +68,8 @@ dissect_aruba_iap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* dat col_set_str(pinfo->cinfo, COL_PROTOCOL, "IAP"); col_clear(pinfo->cinfo, COL_INFO); - if (tree) { - ti = proto_tree_add_item(tree, proto_aruba_iap, tvb, 0, 0, ENC_NA); - aruba_iap_tree = proto_item_add_subtree(ti, ett_aruba_iap); - } + ti = proto_tree_add_item(tree, proto_aruba_iap, tvb, 0, 0, ENC_NA); + aruba_iap_tree = proto_item_add_subtree(ti, ett_aruba_iap); proto_tree_add_item(aruba_iap_tree, hf_iap_magic, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; diff --git a/epan/dissectors/packet-asap.c b/epan/dissectors/packet-asap.c index 4c1e6de52c..d4f034ecd5 100644 --- a/epan/dissectors/packet-asap.c +++ b/epan/dissectors/packet-asap.c @@ -172,9 +172,8 @@ dissect_error_cause(tvbuff_t *cause_tvb, proto_tree *parameter_tree) length = tvb_get_ntohs(cause_tvb, CAUSE_LENGTH_OFFSET); padding_length = tvb_length(cause_tvb) - length; - cause_item = proto_tree_add_text(parameter_tree, cause_tvb, CAUSE_HEADER_OFFSET, tvb_length(cause_tvb), - "%s", val_to_str_const(code, cause_code_values, "Unknown error cause")); - cause_tree = proto_item_add_subtree(cause_item, ett_asap_cause); + cause_tree = proto_tree_add_subtree(parameter_tree, cause_tvb, CAUSE_HEADER_OFFSET, -1, ett_asap_cause, &cause_item, + val_to_str_const(code, cause_code_values, "Unknown error cause")); proto_tree_add_item(cause_tree, hf_cause_code, cause_tvb, CAUSE_CODE_OFFSET, CAUSE_CODE_LENGTH, ENC_BIG_ENDIAN); proto_tree_add_item(cause_tree, hf_cause_length, cause_tvb, CAUSE_LENGTH_OFFSET, CAUSE_LENGTH_LENGTH, ENC_BIG_ENDIAN); @@ -650,8 +649,8 @@ dissect_parameter(tvbuff_t *parameter_tvb, proto_tree *asap_tree) padding_length = tvb_length(parameter_tvb) - length; /* create proto_tree stuff */ - parameter_item = proto_tree_add_text(asap_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, tvb_length(parameter_tvb), "%s", val_to_str_const(type, parameter_type_values, "Unknown Parameter")); - parameter_tree = proto_item_add_subtree(parameter_item, ett_asap_parameter); + parameter_tree = proto_tree_add_subtree(asap_tree, parameter_tvb, PARAMETER_HEADER_OFFSET, -1, + ett_asap_parameter, ¶meter_item, val_to_str_const(type, parameter_type_values, "Unknown Parameter")); /* add tag and length to the asap tree */ proto_tree_add_item(parameter_tree, hf_parameter_type, parameter_tvb, PARAMETER_TYPE_OFFSET, PARAMETER_TYPE_LENGTH, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-assa_r3.c b/epan/dissectors/packet-assa_r3.c index c161654287..a750f5d440 100644 --- a/epan/dissectors/packet-assa_r3.c +++ b/epan/dissectors/packet-assa_r3.c @@ -3610,14 +3610,12 @@ dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset, guint32 length, } else { - proto_item *eventlog_item; proto_tree *eventlog_tree; if (!upstreamfield_tree) break; - eventlog_item = proto_tree_add_text (upstreamfield_tree, tvb, offset, 9, "Event Log Record"); - eventlog_tree = proto_item_add_subtree (eventlog_item, ett_r3eventlogrecord); + eventlog_tree = proto_tree_add_subtree(upstreamfield_tree, tvb, offset, 9, ett_r3eventlogrecord, NULL, "Event Log Record"); proto_tree_add_item (eventlog_tree, hf_r3_eventlog_year, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (eventlog_tree, hf_r3_eventlog_month, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN); @@ -3639,16 +3637,15 @@ dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset, guint32 length, } else { - proto_item *datetime_item; proto_tree *datetime_tree; if (!upstreamfield_tree) break; - datetime_item = proto_tree_add_text (upstreamfield_tree, tvb, offset, 8, "Date/Time: %02u/%02u/%02u-%u %02u:%02u:%02u %u", + datetime_tree = proto_tree_add_subtree_format(upstreamfield_tree, tvb, offset, 8, ett_r3datetime, NULL, + "Date/Time: %02u/%02u/%02u-%u %02u:%02u:%02u %u", tvb_get_guint8 (tvb, offset + 0), tvb_get_guint8 (tvb, offset + 1), tvb_get_guint8 (tvb, offset + 2), tvb_get_guint8 (tvb, offset + 3), tvb_get_guint8 (tvb, offset + 4), tvb_get_guint8 (tvb, offset + 5), tvb_get_guint8 (tvb, offset + 6), tvb_get_guint8 (tvb, offset + 7)); - datetime_tree = proto_item_add_subtree (datetime_item, ett_r3datetime); proto_tree_add_item (datetime_tree, hf_r3_datetime_year, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (datetime_tree, hf_r3_datetime_month, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN); @@ -3671,7 +3668,6 @@ dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset, guint32 length, } else { - proto_item *declinedlog_item; proto_tree *declinedlog_tree; guint8 cred1type; guint8 cred2type; @@ -3679,8 +3675,7 @@ dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset, guint32 length, if (!upstreamfield_tree) break; - declinedlog_item = proto_tree_add_text (upstreamfield_tree, tvb, offset, 49, "Declined Log Record"); - declinedlog_tree = proto_item_add_subtree (declinedlog_item, ett_r3declinedlogrecord); + declinedlog_tree = proto_tree_add_subtree(upstreamfield_tree, tvb, offset, 49, ett_r3declinedlogrecord, NULL, "Declined Log Record"); proto_tree_add_item (declinedlog_tree, hf_r3_declinedlog_year, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (declinedlog_tree, hf_r3_declinedlog_month, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN); @@ -3709,15 +3704,14 @@ dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset, guint32 length, } else { - proto_item *expireon_item; proto_tree *expireon_tree; if (!upstreamfield_tree) break; - expireon_item = proto_tree_add_text (upstreamfield_tree, tvb, offset, 3, "Expire YY/MM/DD: %02u/%02u/%02u", + expireon_tree = proto_tree_add_subtree_format(upstreamfield_tree, tvb, offset, 3, ett_r3expireon, NULL, + "Expire YY/MM/DD: %02u/%02u/%02u", tvb_get_guint8 (tvb, offset + 2), tvb_get_guint8 (tvb, offset + 0), tvb_get_guint8 (tvb, offset + 1)); - expireon_tree = proto_item_add_subtree (expireon_item, ett_r3expireon); proto_tree_add_item (expireon_tree, hf_r3_expireon_month, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (expireon_tree, hf_r3_expireon_day, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN); @@ -3760,14 +3754,12 @@ dissect_r3_upstreamfields (tvbuff_t *tvb, guint32 start_offset, guint32 length, } else { - proto_item *alarmlog_item; proto_tree *alarmlog_tree; if (!upstreamfield_tree) break; - alarmlog_item = proto_tree_add_text (upstreamfield_tree, tvb, offset, 9, "Alarm Record"); - alarmlog_tree = proto_item_add_subtree (alarmlog_item, ett_r3alarmlogrecord); + alarmlog_tree = proto_tree_add_subtree(upstreamfield_tree, tvb, offset, 9, ett_r3alarmlogrecord, NULL, "Alarm Record"); proto_tree_add_item (alarmlog_tree, hf_r3_alarmlog_year, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (alarmlog_tree, hf_r3_alarmlog_month, tvb, offset + 1, 1, ENC_LITTLE_ENDIAN); @@ -3804,7 +3796,6 @@ dissect_r3_upstreamcommand_reserved (tvbuff_t *tvb _U_, guint32 start_offset _U_ static void dissect_r3_upstreamcommand_debugmsg (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *debugmsg_item; proto_tree *debugmsg_tree; if (!tree) @@ -3812,8 +3803,7 @@ dissect_r3_upstreamcommand_debugmsg (tvbuff_t *tvb, guint32 start_offset, guint3 DISSECTOR_ASSERT(start_offset == 0); - debugmsg_item = proto_tree_add_text (tree, tvb, 0, -1, "Debug message"); - debugmsg_tree = proto_item_add_subtree (debugmsg_item, ett_r3debugmsg); + debugmsg_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett_r3debugmsg, NULL, "Debug message"); proto_tree_add_item (debugmsg_tree, hf_r3_debugmsg, tvb, 1, -1, ENC_ASCII|ENC_NA); } @@ -3849,7 +3839,6 @@ dissect_r3_upstreamcommand_dumpeventlog (tvbuff_t *tvb, guint32 start_offset, gu } else { - proto_item *eventlog_item; proto_tree *eventlog_tree; const gchar *en; @@ -3858,8 +3847,8 @@ dissect_r3_upstreamcommand_dumpeventlog (tvbuff_t *tvb, guint32 start_offset, gu en = val_to_str_ext_const (tvb_get_guint8 (tvb, 10), &r3_eventnames_ext, "[Unknown Event]"); - eventlog_item = proto_tree_add_text (tree, tvb, start_offset, 10, "Event Log Record %u (%s)", tvb_get_letohs (tvb, 0), en); - eventlog_tree = proto_item_add_subtree (eventlog_item, ett_r3eventlogrecord); + eventlog_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, 10, ett_r3eventlogrecord, NULL, + "Event Log Record %u (%s)", tvb_get_letohs (tvb, 0), en); proto_tree_add_item (eventlog_tree, hf_r3_eventlog_recordnumber, tvb, 0, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item (eventlog_tree, hf_r3_eventlog_year, tvb, 2, 1, ENC_LITTLE_ENDIAN); @@ -3912,7 +3901,7 @@ dissect_r3_upstreamcommand_queryconfig (tvbuff_t *tvb, guint32 start_offset, gui while (offset < tvb_reported_length (tvb)) { - proto_item *upstreamfield_item, *pi; + proto_item *pi; proto_tree *upstreamfield_tree; const gchar *ci; guint8 item_length; @@ -3920,8 +3909,8 @@ dissect_r3_upstreamcommand_queryconfig (tvbuff_t *tvb, guint32 start_offset, gui ci = val_to_str_ext_const (tvb_get_guint8 (tvb, offset + 1), &r3_configitemnames_ext, "[Unknown Configuration Item]"); item_length = tvb_get_guint8 (tvb, offset + 0); - upstreamfield_item = proto_tree_add_text (tree, tvb, offset + 0, item_length, "Config Field: %s (%u)", ci, tvb_get_guint8 (tvb, offset + 1)); - upstreamfield_tree = proto_item_add_subtree (upstreamfield_item, ett_r3upstreamfield); + upstreamfield_tree = proto_tree_add_subtree_format(tree, tvb, offset + 0, item_length, ett_r3upstreamfield, NULL, + "Config Field: %s (%u)", ci, tvb_get_guint8 (tvb, offset + 1)); pi = proto_tree_add_item (upstreamfield_tree, hf_r3_configitemlength, tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); if (item_length == 0) { @@ -4010,8 +3999,8 @@ dissect_r3_upstreamcommand_mfg (tvbuff_t *tvb, guint32 start_offset, guint32 len proto_tree_add_item (tree, hf_r3_mfgfield_length, tvb, 0, 1, ENC_LITTLE_ENDIAN); - mfg_item = proto_tree_add_text (tree, tvb, 1, -1, "Upstream Manufacturing Field: %s (%u)", cn, mfg_fld); - mfg_tree = proto_item_add_subtree (mfg_item, ett_r3commandmfg); + mfg_tree = proto_tree_add_subtree_format(tree, tvb, 1, -1, ett_r3commandmfg, &mfg_item, + "Upstream Manufacturing Field: %s (%u)", cn, mfg_fld); proto_tree_add_item (mfg_tree, hf_r3_mfgfield, tvb, 1, 1, ENC_LITTLE_ENDIAN); @@ -4057,7 +4046,6 @@ dissect_r3_upstreamcommand_declinedwarning (tvbuff_t *tvb, guint32 start_offset, static void dissect_r3_upstreamcommand_dumpdeclinedlog (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *declinedlog_item; proto_tree *declinedlog_tree; guint8 cred1type; guint8 cred2type; @@ -4067,8 +4055,8 @@ dissect_r3_upstreamcommand_dumpdeclinedlog (tvbuff_t *tvb, guint32 start_offset, DISSECTOR_ASSERT(start_offset == 0); - declinedlog_item = proto_tree_add_text (tree, tvb, start_offset, 49, "Declined Log Record %u", tvb_get_letohs (tvb, 0)); - declinedlog_tree = proto_item_add_subtree (declinedlog_item, ett_r3declinedlogrecord); + declinedlog_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, 49, + ett_r3declinedlogrecord, NULL, "Declined Log Record %u", tvb_get_letohs (tvb, 0)); proto_tree_add_item (declinedlog_tree, hf_r3_declinedlog_recordnumber, tvb, 0, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item (declinedlog_tree, hf_r3_declinedlog_year, tvb, 2, 1, ENC_LITTLE_ENDIAN); @@ -4103,7 +4091,6 @@ dissect_r3_upstreamcommand_alarmwarning (tvbuff_t *tvb, guint32 start_offset, gu static void dissect_r3_upstreamcommand_dumpalarmlog (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *alarmlog_item; proto_tree *alarmlog_tree; if (!tree) @@ -4111,8 +4098,8 @@ dissect_r3_upstreamcommand_dumpalarmlog (tvbuff_t *tvb, guint32 start_offset, gu DISSECTOR_ASSERT(start_offset == 0); - alarmlog_item = proto_tree_add_text (tree, tvb, start_offset, 9, "Alarm Log Record %u", tvb_get_letohs (tvb, 0)); - alarmlog_tree = proto_item_add_subtree (alarmlog_item, ett_r3alarmlogrecord); + alarmlog_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, 9, + ett_r3alarmlogrecord, NULL, "Alarm Log Record %u", tvb_get_letohs (tvb, 0)); proto_tree_add_item (alarmlog_tree, hf_r3_alarmlog_recordnumber, tvb, 0, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item (alarmlog_tree, hf_r3_alarmlog_year, tvb, 2, 1, ENC_LITTLE_ENDIAN); @@ -4146,7 +4133,6 @@ dissect_r3_upstreamcommand_commandalarm (tvbuff_t *tvb, guint32 start_offset, gu static void dissect_r3_upstreamcommand_dumpdebuglog (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *debuglog_item; proto_tree *debuglog_tree; if (!tree) @@ -4154,8 +4140,8 @@ dissect_r3_upstreamcommand_dumpdebuglog (tvbuff_t *tvb, guint32 start_offset, gu DISSECTOR_ASSERT(start_offset == 0); - debuglog_item = proto_tree_add_text (tree, tvb, start_offset, 8, "Debug Log Record %u", tvb_get_letohs (tvb, 0)); - debuglog_tree = proto_item_add_subtree (debuglog_item, ett_r3debuglogrecord); + debuglog_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, 8, + ett_r3debuglogrecord, NULL, "Debug Log Record %u", tvb_get_letohs (tvb, 0)); proto_tree_add_item (debuglog_tree, hf_r3_debuglog_recordnumber, tvb, 0, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item (debuglog_tree, hf_r3_debuglog_flags, tvb, 2, 4, ENC_LITTLE_ENDIAN); @@ -4187,9 +4173,8 @@ dissect_r3_upstreammfgfield_iopins (tvbuff_t *tvb, guint32 start_offset, guint32 for (i = 0; i < len; i += 3, portname++) { - proto_item *port_item = proto_tree_add_text (tree, tvb, i, 3, + proto_tree *port_tree = proto_tree_add_subtree_format(tree, tvb, i, 3, ett_r3iopins, NULL, "Port %c Configuration", (portname == 'I') ? ++portname : portname); - proto_tree *port_tree = proto_item_add_subtree (port_item, ett_r3iopins); proto_tree_add_item (port_tree, hf_r3_iopins_lat, tvb, i + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (port_tree, hf_r3_iopins_port, tvb, i + 1, 1, ENC_LITTLE_ENDIAN); @@ -4240,7 +4225,6 @@ dissect_r3_upstreammfgfield_hardwareid (tvbuff_t *tvb, guint32 start_offset, gui static void dissect_r3_upstreammfgfield_checkpointlog (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *cpl_item; proto_tree *cpl_tree; guint counter; gint len; @@ -4254,22 +4238,24 @@ dissect_r3_upstreammfgfield_checkpointlog (tvbuff_t *tvb, guint32 start_offset, len = tvb_length_remaining (tvb, 1); proto_tree_add_item (tree, hf_r3_checkpointlog_entryptr, tvb, 0, 1, ENC_LITTLE_ENDIAN); - cpl_item = proto_tree_add_text (tree, tvb, 1, -1, "Checkpoint Log"); - cpl_tree = proto_item_add_subtree (cpl_item, ett_r3checkpointlog); + cpl_tree = proto_tree_add_subtree(tree, tvb, 1, -1, ett_r3checkpointlog, NULL, "Checkpoint Log"); counter = 0; for (i = 0; i < len; i += 2, counter++) { guint rcon = tvb_get_guint8 (tvb, i + 0); guint cp = tvb_get_guint8 (tvb, i + 1); - proto_item *cpe_item = proto_tree_add_text (cpl_tree, tvb, i + 0, 2, "Checkpoint Log Entry %u", counter); - proto_tree *cpe_tree = proto_item_add_subtree (cpe_item, ett_r3checkpointlogentry); + proto_item *cpe_item; + proto_tree *cpe_tree; guint resettype; const gchar *desc; static const gchar *resets [] = { "Stack underflow", "Stack overflow", "Power-On", "Software", "Brown-out", "MCLR in sleep", "WDT", "Normal", "[Unknown Reset Type]" }; + + cpe_tree = proto_tree_add_subtree_format(cpl_tree, tvb, i + 0, 2, ett_r3checkpointlogentry, &cpe_item, + "Checkpoint Log Entry %u", counter); desc = val_to_str_ext_const (cp, &r3_checkpointnames_ext, "[Unknown Checkpoint]"); if (rcon == 0xff) @@ -4306,7 +4292,6 @@ static void dissect_r3_upstreammfgfield_cpuregisters (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { proto_tree *tmp_tree [19]; - proto_item *cr_item; proto_tree *cr_tree; if (!tree) @@ -4314,8 +4299,7 @@ dissect_r3_upstreammfgfield_cpuregisters (tvbuff_t *tvb, guint32 start_offset, g DISSECTOR_ASSERT(start_offset == 0); - cr_item = proto_tree_add_text (tree, tvb, start_offset, -1, "CPU Registers"); - cr_tree = proto_item_add_subtree (cr_item, ett_r3cpuregisters); + cr_tree = proto_tree_add_subtree(tree, tvb, start_offset, -1, ett_r3cpuregisters, NULL, "CPU Registers"); tmp_tree [ 0] = proto_item_add_subtree (proto_tree_add_item (cr_tree, hf_r3_cpuregisters_intcon, tvb, 0, 1, ENC_LITTLE_ENDIAN), ett_r3cpuregister); tmp_tree [ 1] = proto_item_add_subtree (proto_tree_add_item (cr_tree, hf_r3_cpuregisters_intcon2, tvb, 1, 1, ENC_LITTLE_ENDIAN), ett_r3cpuregister); @@ -4496,22 +4480,21 @@ dissect_r3_upstreammfgfield_taskflags (tvbuff_t *tvb, guint32 start_offset, guin { gint len; gint i; - proto_item *tfg_item; proto_tree *tfg_tree; DISSECTOR_ASSERT(start_offset == 0); len = MAX(0, tvb_length_remaining (tvb, 0)); - tfg_item = proto_tree_add_text (tree, tvb, 0, -1, "Task Flags (%u tasks)", len / 5); - tfg_tree = proto_item_add_subtree (tfg_item, ett_r3taskflags); + tfg_tree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_r3taskflags, NULL, + "Task Flags (%u tasks)", len / 5); for (i = 0; i < len; i += 5) { - proto_item *tf_item = proto_tree_add_text (tfg_tree, tvb, i, 5, + proto_tree *tf_tree = proto_tree_add_subtree_format(tfg_tree, tvb, i, 5, + ett_r3taskflagsentry, NULL, "Task Flags (%2d: 0x%06x)", tvb_get_guint8 (tvb, i + 0), tvb_get_letohl (tvb, i + 1)); - proto_tree *tf_tree = proto_item_add_subtree (tf_item, ett_r3taskflagsentry); proto_tree_add_item (tf_tree, hf_r3_taskflags_taskid, tvb, i + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tf_tree, hf_r3_taskflags_flags, tvb, i + 1, 4, ENC_LITTLE_ENDIAN); @@ -4536,8 +4519,7 @@ dissect_r3_upstreammfgfield_timerchain (tvbuff_t *tvb, guint32 start_offset, gui for (i = 0; i < len; i += 12) { - proto_item *tc_item = proto_tree_add_text (tree, tvb, 3 + i, 12, "Timer Chain Entry"); - proto_tree *tc_tree = proto_item_add_subtree (tc_item, ett_r3timerchain); + proto_tree *tc_tree = proto_tree_add_subtree(tree, tvb, 3 + i, 12, ett_r3timerchain, NULL, "Timer Chain Entry"); proto_tree_add_item (tc_tree, hf_r3_timerchain_tasktag, tvb, 3 + i + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tc_tree, hf_r3_timerchain_address, tvb, 3 + i + 1, 2, ENC_LITTLE_ENDIAN); @@ -4560,18 +4542,14 @@ dissect_r3_upstreammfgfield_peekpoke (tvbuff_t *tvb, guint32 start_offset, guint for (i = 0; i < len; i += 3) { - proto_item *peekpoke_item = NULL; - proto_item *peekpoke_op_item = NULL; - proto_tree *peekpoke_tree = NULL; + proto_item *peekpoke_item; + proto_item *peekpoke_op_item; + proto_tree *peekpoke_tree; - if (tree) - { - peekpoke_item = proto_tree_add_text (tree, tvb, i, 3, "%s", ""); - peekpoke_tree = proto_item_add_subtree (peekpoke_item, ett_r3peekpoke); + peekpoke_tree = proto_tree_add_subtree(tree, tvb, i, 3, ett_r3peekpoke, &peekpoke_item, ""); - peekpoke_op_item = proto_tree_add_item (peekpoke_tree, hf_r3_peekpoke_operation, tvb, i + 0, 1, ENC_LITTLE_ENDIAN); - proto_tree_add_item (peekpoke_tree, hf_r3_peekpoke_address, tvb, i + 1, 2, ENC_LITTLE_ENDIAN); - } + peekpoke_op_item = proto_tree_add_item (peekpoke_tree, hf_r3_peekpoke_operation, tvb, i + 0, 1, ENC_LITTLE_ENDIAN); + proto_tree_add_item (peekpoke_tree, hf_r3_peekpoke_address, tvb, i + 1, 2, ENC_LITTLE_ENDIAN); switch (tvb_get_guint8 (tvb, i + 0)) { @@ -4646,7 +4624,6 @@ dissect_r3_upstreammfgfield_peekpoke (tvbuff_t *tvb, guint32 start_offset, guint static void dissect_r3_upstreammfgfield_lockstate (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *ls_item; proto_tree *ls_tree; guint ls; @@ -4656,8 +4633,7 @@ dissect_r3_upstreammfgfield_lockstate (tvbuff_t *tvb, guint32 start_offset, guin DISSECTOR_ASSERT(start_offset == 0); ls = tvb_get_letoh24 (tvb, 0); - ls_item = proto_tree_add_text (tree, tvb, 0, -1, "Lock State (0x%06x)", ls); - ls_tree = proto_item_add_subtree (ls_item, ett_r3lockstate); + ls_tree = proto_tree_add_subtree_format(tree, tvb, 0, -1, ett_r3lockstate, NULL, "Lock State (0x%06x)", ls); proto_tree_add_boolean (ls_tree, hf_r3_lockstate_passage, tvb, 0, 3, ls); proto_tree_add_boolean (ls_tree, hf_r3_lockstate_panic, tvb, 0, 3, ls); @@ -4686,7 +4662,6 @@ dissect_r3_upstreammfgfield_lockstate (tvbuff_t *tvb, guint32 start_offset, guin static void dissect_r3_upstreammfgfield_capabilities (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *cf_item; proto_tree *cf_tree; gint len; guint items; @@ -4716,8 +4691,7 @@ dissect_r3_upstreammfgfield_capabilities (tvbuff_t *tvb, guint32 start_offset, g if (!tree) return; - cf_item = proto_tree_add_text (tree, tvb, 0, len, "Capabilities (%u items)", items); - cf_tree = proto_item_add_subtree (cf_item, ett_r3capabilities); + cf_tree = proto_tree_add_subtree_format(tree, tvb, 0, len, ett_r3capabilities, NULL, "Capabilities (%u items)", items); i = 0; while (i<len && (step=tvb_get_guint8(tvb, i))>0) @@ -4748,7 +4722,6 @@ dissect_r3_upstreammfgfield_dumpm41t81 (tvbuff_t *tvb, guint32 start_offset, gui } else { - proto_item *rtc_item; proto_tree *rtc_tree; proto_tree *tmp_tree [20]; guint offset_in_bits; @@ -4756,8 +4729,7 @@ dissect_r3_upstreammfgfield_dumpm41t81 (tvbuff_t *tvb, guint32 start_offset, gui if (!tree) return; - rtc_item = proto_tree_add_text (tree, tvb, 0, -1, "M41T81 RTC Registers"); - rtc_tree = proto_item_add_subtree (rtc_item, ett_r3m41t81registers); + rtc_tree = proto_tree_add_subtree(tree, tvb, 0, -1, ett_r3m41t81registers, NULL, "M41T81 RTC Registers"); tmp_tree [ 0] = proto_item_add_subtree (proto_tree_add_item (rtc_tree, hf_r3_dumpm41t81_reg00, tvb, 0, 1, ENC_LITTLE_ENDIAN), ett_r3m41t81register); tmp_tree [ 1] = proto_item_add_subtree (proto_tree_add_item (rtc_tree, hf_r3_dumpm41t81_reg01, tvb, 1, 1, ENC_LITTLE_ENDIAN), ett_r3m41t81register); @@ -4867,7 +4839,6 @@ dissect_r3_upstreammfgfield_checksumresults (tvbuff_t *tvb, guint32 start_offset } else { - proto_item *cksum_item; proto_tree *cksum_tree; guint32 error = FALSE; gint i; @@ -4883,8 +4854,8 @@ dissect_r3_upstreammfgfield_checksumresults (tvbuff_t *tvb, guint32 start_offset i += step; } - cksum_item = proto_tree_add_text (tree, tvb, 0, len, "Checksum Results (%s)", error ? "Error" : "No Errors"); - cksum_tree = proto_item_add_subtree (cksum_item, ett_r3checksumresults); + cksum_tree = proto_tree_add_subtree_format(tree, tvb, 0, len, ett_r3checksumresults, NULL, + "Checksum Results (%s)", error ? "Error" : "No Errors"); i = 0; while (i<len && (step=tvb_get_guint8(tvb, i))>0) @@ -4932,14 +4903,13 @@ dissect_r3_upstreammfgfield_mortisestatelog (tvbuff_t *tvb, guint32 start_offset guint state = tvb_get_guint8 (tvb, 3 + i + 0); guint last = tvb_get_guint8 (tvb, 3 + i + 1); guint event = tvb_get_guint8 (tvb, 3 + i + 2); - proto_item *ms_item = proto_tree_add_text (tree, tvb, 3 + i, 3, + proto_tree *ms_tree = proto_tree_add_subtree_format(tree, tvb, 3 + i, 3, ett_r3mortisestatelog, NULL, "State Log Entry %2d (State=0x%02x, Last=0x%02x, Event=%s (0x%02x))", i / 3, state, last, val_to_str_ext_const (event, &r3_mortiseeventnames_ext, "[Unknown]"), event); - proto_tree *ms_tree = proto_item_add_subtree (ms_item, ett_r3mortisestatelog); proto_tree_add_item (ms_tree, hf_r3_mortisestatelog_state, tvb, 3 + i + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (ms_tree, hf_r3_mortisestatelog_last, tvb, 3 + i + 1, 1, ENC_LITTLE_ENDIAN); @@ -4950,7 +4920,6 @@ dissect_r3_upstreammfgfield_mortisestatelog (tvbuff_t *tvb, guint32 start_offset static void dissect_r3_upstreammfgfield_mortisepins (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *iopins_item; proto_tree *iopins_tree; if (!tree) @@ -4958,9 +4927,8 @@ dissect_r3_upstreammfgfield_mortisepins (tvbuff_t *tvb, guint32 start_offset, gu DISSECTOR_ASSERT(start_offset == 0); - iopins_item = proto_tree_add_text (tree, tvb, 0, 1, + iopins_tree = proto_tree_add_subtree_format(tree, tvb, 0, 1, ett_r3iopins, NULL, "Mortise Pin States (0x%02x)", tvb_get_guint8 (tvb, 0)); - iopins_tree = proto_item_add_subtree (iopins_item, ett_r3iopins); proto_tree_add_item (iopins_tree, hf_r3_mortisepins_s1, tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (iopins_tree, hf_r3_mortisepins_s2, tvb, 0, 1, ENC_LITTLE_ENDIAN); @@ -5041,15 +5009,13 @@ dissect_r3_response_hasdata (tvbuff_t *tvb, guint32 start_offset, guint32 length if (tree) { - proto_item *upstreamcommand_item; const gchar *ct; ct = val_to_str_ext_const (upstreamCmd, &r3_upstreamcommandnames_ext, "[Unknown Command Type]"); proto_tree_add_item (tree, hf_r3_responsetype, tvb, 2, 1, ENC_LITTLE_ENDIAN); - upstreamcommand_item = proto_tree_add_text (tree, tvb, 3, -1, + upstreamcommand_tree = proto_tree_add_subtree_format(tree, tvb, 3, -1, ett_r3upstreamcommand, NULL, "Upstream Command: %s (%u)", ct, upstreamCmd); - upstreamcommand_tree = proto_item_add_subtree (upstreamcommand_item, ett_r3upstreamcommand); proto_tree_add_item (upstreamcommand_tree, hf_r3_upstreamcommand, tvb, 3, 1, ENC_LITTLE_ENDIAN); } @@ -5139,7 +5105,6 @@ static void dissect_r3_cmd_setdatetime (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { proto_tree *dt_tree; - proto_item *dt_item; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -5152,7 +5117,7 @@ dissect_r3_cmd_setdatetime (tvbuff_t *tvb, guint32 start_offset, guint32 length proto_tree_add_item (tree, hf_r3_commandlength, tvb, start_offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tree, hf_r3_command, tvb, start_offset + 1, 1, ENC_LITTLE_ENDIAN); - dt_item = proto_tree_add_text (tree, payload_tvb, 0, -1, + dt_tree = proto_tree_add_subtree_format (tree, payload_tvb, 0, -1, ett_r3setdatetime, NULL, "Set Date/Time (%02u/%02u/%02u-%u %02u:%02u:%02u)", tvb_get_guint8 (payload_tvb, 0), tvb_get_guint8 (payload_tvb, 1), @@ -5161,7 +5126,6 @@ dissect_r3_cmd_setdatetime (tvbuff_t *tvb, guint32 start_offset, guint32 length tvb_get_guint8 (payload_tvb, 4), tvb_get_guint8 (payload_tvb, 5), tvb_get_guint8 (payload_tvb, 6)); - dt_tree = proto_item_add_subtree (dt_item, ett_r3setdatetime); proto_tree_add_item (dt_tree, hf_r3_setdate_year, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (dt_tree, hf_r3_setdate_month, payload_tvb, 1, 1, ENC_LITTLE_ENDIAN); @@ -5214,9 +5178,8 @@ dissect_r3_cmd_setconfig (tvbuff_t *tvb, guint32 start_offset, guint32 length _U "[Unknown Configuration Item]"); item_length = tvb_get_guint8 (payload_tvb, offset + 0); - sc_item = proto_tree_add_text (tree, payload_tvb, offset + 0, item_length, - "Config Field: %s (%u)", ci, configItem); - sc_tree = proto_item_add_subtree (sc_item, ett_r3upstreamfield); + sc_tree = proto_tree_add_subtree_format(tree, payload_tvb, offset + 0, item_length, + ett_r3upstreamfield, NULL, "Config Field: %s (%u)", ci, configItem); sc_item = proto_tree_add_item (sc_tree, hf_r3_configitemlength, payload_tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (sc_tree, hf_r3_configitem, payload_tvb, offset + 1, 1, ENC_LITTLE_ENDIAN); @@ -5371,18 +5334,17 @@ dissect_r3_cmd_manageuser (tvbuff_t *tvb, guint32 start_offset, guint32 length _ } else { - proto_item *expireon_item; proto_tree *expireon_tree; if (!tree) break; - expireon_item = proto_tree_add_text (mu_tree, payload_tvb, offset, 3, + expireon_tree = proto_tree_add_subtree_format(mu_tree, payload_tvb, offset, 3, + ett_r3expireon, NULL, "Expire YY/MM/DD: %02u/%02u/%02u", tvb_get_guint8 (payload_tvb, offset + 2), tvb_get_guint8 (payload_tvb, offset + 0), tvb_get_guint8 (payload_tvb, offset + 1)); - expireon_tree = proto_item_add_subtree (expireon_item, ett_r3expireon); proto_tree_add_item (expireon_tree, hf_r3_expireon_month, payload_tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (expireon_tree, hf_r3_expireon_day, payload_tvb, offset + 1, 1, ENC_LITTLE_ENDIAN); @@ -5447,9 +5409,7 @@ dissect_r3_cmd_deleteusers (tvbuff_t *tvb, guint32 start_offset, guint32 length static void dissect_r3_cmd_defineexception (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *startdate_item; proto_tree *startdate_tree; - proto_item *enddate_item; proto_tree *enddate_tree; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -5465,25 +5425,25 @@ dissect_r3_cmd_defineexception (tvbuff_t *tvb, guint32 start_offset, guint32 len proto_tree_add_item (tree, hf_r3_defineexception_number, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN); - startdate_item = proto_tree_add_text (tree, payload_tvb, 1, 4, + startdate_tree = proto_tree_add_subtree_format(tree, payload_tvb, 1, 4, + ett_r3defineexceptionstartdate, NULL, "Start MM/DD HH:MM (%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 1), tvb_get_guint8 (payload_tvb, 2), tvb_get_guint8 (payload_tvb, 3), tvb_get_guint8 (payload_tvb, 4)); - startdate_tree = proto_item_add_subtree (startdate_item, ett_r3defineexceptionstartdate); proto_tree_add_item (startdate_tree, hf_r3_defineexception_startdate_month, payload_tvb, 1, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (startdate_tree, hf_r3_defineexception_startdate_day, payload_tvb, 2, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (startdate_tree, hf_r3_defineexception_startdate_hours, payload_tvb, 3, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (startdate_tree, hf_r3_defineexception_startdate_minutes, payload_tvb, 4, 1, ENC_LITTLE_ENDIAN); - enddate_item = proto_tree_add_text (tree, payload_tvb, 5, 4, + enddate_tree = proto_tree_add_subtree_format(tree, payload_tvb, 5, 4, + ett_r3defineexceptionenddate, NULL, "End MM/DD HH:MM (%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 5), tvb_get_guint8 (payload_tvb, 6), tvb_get_guint8 (payload_tvb, 7), tvb_get_guint8 (payload_tvb, 8)); - enddate_tree = proto_item_add_subtree (enddate_item, ett_r3defineexceptionenddate); proto_tree_add_item (enddate_tree, hf_r3_defineexception_enddate_month, payload_tvb, 5, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (enddate_tree, hf_r3_defineexception_enddate_day, payload_tvb, 6, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (enddate_tree, hf_r3_defineexception_enddate_hours, payload_tvb, 7, 1, ENC_LITTLE_ENDIAN); @@ -5493,7 +5453,6 @@ dissect_r3_cmd_defineexception (tvbuff_t *tvb, guint32 start_offset, guint32 len static void dissect_r3_cmd_defineexceptiongroup (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *bits_item; proto_tree *bits_tree; guint cmdLen; tvbuff_t *payload_tvb; @@ -5511,8 +5470,7 @@ dissect_r3_cmd_defineexceptiongroup (tvbuff_t *tvb, guint32 start_offset, guint3 proto_tree_add_item (tree, hf_r3_defineexceptiongroup_number, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN); - bits_item = proto_tree_add_text (tree, payload_tvb, 1, -1, "Exception Group Bit Field"); - bits_tree = proto_item_add_subtree (bits_item, ett_r3defineexceptiongroupbits); + bits_tree = proto_tree_add_subtree(tree, payload_tvb, 1, -1, ett_r3defineexceptiongroupbits, NULL, "Exception Group Bit Field"); for (i = 1; i < (cmdLen - 2); i++) { @@ -5547,11 +5505,11 @@ dissect_r3_cmd_definecalendar (tvbuff_t *tvb, guint32 start_offset, guint32 leng for (i = 0; i < 12; i++) { guint32 daymap = tvb_get_letohl (payload_tvb, (i * 4) + 1); - proto_item *calendar_item = proto_tree_add_text (tree, payload_tvb, (i * 4) + 1, 4, + proto_tree *calendar_tree = proto_tree_add_subtree_format(tree, payload_tvb, (i * 4) + 1, 4, + ett_r3definecalendarmonth [i + 1], NULL, "Calendar Bit Field - %s (0x%08x)", (mn = val_to_str_ext_const (i + 1, &r3_monthnames_ext, "[Unknown Month]")), daymap); - proto_tree *calendar_tree = proto_item_add_subtree (calendar_item, ett_r3definecalendarmonth [i + 1]); guint32 j; for (j = 0; j < 31; j++) @@ -5566,11 +5524,8 @@ dissect_r3_cmd_definecalendar (tvbuff_t *tvb, guint32 start_offset, guint32 leng static void dissect_r3_cmd_definetimezone (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *starttime_item; proto_tree *starttime_tree; - proto_item *endtime_item; proto_tree *endtime_tree; - proto_item *daymap_item; proto_tree *daymap_tree; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -5588,24 +5543,24 @@ dissect_r3_cmd_definetimezone (tvbuff_t *tvb, guint32 start_offset, guint32 leng proto_tree_add_item (tree, hf_r3_definetimezone_number, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN); - starttime_item = proto_tree_add_text (tree, payload_tvb, 1, 2, + starttime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 1, 2, + ett_r3definetimezonestarttime, NULL, "Start HH:MM (%02u:%02u)", tvb_get_guint8 (payload_tvb, 1), tvb_get_guint8 (payload_tvb, 2)); - starttime_tree = proto_item_add_subtree (starttime_item, ett_r3definetimezonestarttime); proto_tree_add_item (starttime_tree, hf_r3_definetimezone_starttime_hours, payload_tvb, 1, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_definetimezone_starttime_minutes, payload_tvb, 2, 1, ENC_LITTLE_ENDIAN); - endtime_item = proto_tree_add_text (tree, payload_tvb, 3, 2, + endtime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 3, 2, + ett_r3definetimezoneendtime, NULL, "End HH:MM (%02u:%02u)", tvb_get_guint8 (payload_tvb, 3), tvb_get_guint8 (payload_tvb, 4)); - endtime_tree = proto_item_add_subtree (endtime_item, ett_r3definetimezoneendtime); proto_tree_add_item (endtime_tree, hf_r3_definetimezone_endtime_hours, payload_tvb, 3, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (endtime_tree, hf_r3_definetimezone_endtime_minutes, payload_tvb, 4, 1, ENC_LITTLE_ENDIAN); - daymap_item = proto_tree_add_text (tree, payload_tvb, 5, 1, "Day Map (0x%02x)", tvb_get_guint8 (payload_tvb, 5)); - daymap_tree = proto_item_add_subtree (daymap_item, ett_r3definetimezonedaymap); + daymap_tree = proto_tree_add_subtree_format(tree, payload_tvb, 5, 1, ett_r3definetimezonedaymap, NULL, + "Day Map (0x%02x)", tvb_get_guint8 (payload_tvb, 5)); for (i = 0; i < 7; i++) proto_tree_add_boolean (daymap_tree, hf_r3_definetimezone_daymap [i], payload_tvb, 5, 1, @@ -5640,7 +5595,6 @@ dissect_r3_cmd_rmtauthretry (tvbuff_t *tvb, guint32 start_offset, guint32 length static void dissect_r3_cmd_filters (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *filter_item; proto_tree *filter_tree; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -5657,9 +5611,8 @@ dissect_r3_cmd_filters (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, proto_tree_add_item (tree, hf_r3_filter_type, payload_tvb, 1, 1, ENC_LITTLE_ENDIAN); - filter_item = proto_tree_add_text (tree, payload_tvb, 2, -1, + filter_tree = proto_tree_add_subtree_format(tree, payload_tvb, 2, -1, ett_r3filters, NULL, "Filters (%u specified)", tvb_get_guint8 (payload_tvb, 0)); - filter_tree = proto_item_add_subtree (filter_item, ett_r3filters); for (i = 0; i < tvb_get_guint8 (payload_tvb, 0); i++) proto_tree_add_item (filter_tree, hf_r3_filter_list, payload_tvb, i + 2, 1, ENC_LITTLE_ENDIAN); @@ -5684,12 +5637,11 @@ dissect_r3_cmd_alarmconfigure (tvbuff_t *tvb, guint32 start_offset, guint32 leng proto_tree_add_item (tree, hf_r3_commandlength, tvb, start_offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tree, hf_r3_command, tvb, start_offset + 1, 1, ENC_LITTLE_ENDIAN); - alarm_item = proto_tree_add_text (tree, payload_tvb, 0, -1, "Alarm List (0 items)"); - alarm_tree = proto_item_add_subtree (alarm_item, ett_r3alarmlist); + alarm_tree = proto_tree_add_subtree(tree, payload_tvb, 0, -1, ett_r3alarmlist, &alarm_item, "Alarm List (0 items)"); while (offset < (cmdLen - 2)) { - proto_item *alarmcfg_item, *pi; + proto_item *pi; proto_tree *alarmcfg_tree; const gchar *ai; const gchar *as; @@ -5704,9 +5656,8 @@ dissect_r3_cmd_alarmconfigure (tvbuff_t *tvb, guint32 start_offset, guint32 leng as = (tvb_get_guint8 (payload_tvb, offset + 2) & 0xfe) ? "Error" : (tvb_get_guint8 (payload_tvb, offset + 2) & 0x01) ? "Enabled" : "Disabled"; - alarmcfg_item = proto_tree_add_text (alarm_tree, payload_tvb, offset, tvb_get_guint8 (payload_tvb, offset), - "Alarm Item (%s, %s)", ai, as); - alarmcfg_tree = proto_item_add_subtree (alarmcfg_item, ett_r3alarmcfg); + alarmcfg_tree = proto_tree_add_subtree_format(alarm_tree, payload_tvb, offset, tvb_get_guint8 (payload_tvb, offset), + ett_r3alarmcfg, NULL, "Alarm Item (%s, %s)", ai, as); alarm_len = tvb_get_guint8 (payload_tvb, offset + 0); pi = proto_tree_add_item (alarmcfg_tree, hf_r3_alarm_length, payload_tvb, offset + 0, 1, ENC_LITTLE_ENDIAN); @@ -5730,9 +5681,7 @@ dissect_r3_cmd_alarmconfigure (tvbuff_t *tvb, guint32 start_offset, guint32 leng static void dissect_r3_cmd_eventlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *starttime_item; proto_tree *starttime_tree; - proto_item *endtime_item; proto_tree *endtime_tree; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -5746,28 +5695,28 @@ dissect_r3_cmd_eventlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 length proto_tree_add_item (tree, hf_r3_commandlength, tvb, start_offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tree, hf_r3_command, tvb, start_offset + 1, 1, ENC_LITTLE_ENDIAN); - starttime_item = proto_tree_add_text (tree, payload_tvb, 0, 5, + starttime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 0, 5, + ett_r3eventlogdumpstarttime, NULL, "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 0), tvb_get_guint8 (payload_tvb, 1), tvb_get_guint8 (payload_tvb, 2), tvb_get_guint8 (payload_tvb, 3), tvb_get_guint8 (payload_tvb, 4)); - starttime_tree = proto_item_add_subtree (starttime_item, ett_r3eventlogdumpstarttime); proto_tree_add_item (starttime_tree, hf_r3_eventlogdump_starttime_year, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_eventlogdump_starttime_month, payload_tvb, 1, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_eventlogdump_starttime_day, payload_tvb, 2, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_eventlogdump_starttime_hours, payload_tvb, 3, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_eventlogdump_starttime_minutes, payload_tvb, 4, 1, ENC_LITTLE_ENDIAN); - endtime_item = proto_tree_add_text (tree, payload_tvb, 5, 5, + endtime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 5, 5, + ett_r3eventlogdumpendtime, NULL, "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 5), tvb_get_guint8 (payload_tvb, 6), tvb_get_guint8 (payload_tvb, 7), tvb_get_guint8 (payload_tvb, 8), tvb_get_guint8 (payload_tvb, 9)); - endtime_tree = proto_item_add_subtree (endtime_item, ett_r3eventlogdumpendtime); proto_tree_add_item (endtime_tree, hf_r3_eventlogdump_endtime_year, payload_tvb, 5, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (endtime_tree, hf_r3_eventlogdump_endtime_month, payload_tvb, 6, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (endtime_tree, hf_r3_eventlogdump_endtime_day, payload_tvb, 7, 1, ENC_LITTLE_ENDIAN); @@ -5780,9 +5729,7 @@ dissect_r3_cmd_eventlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 length static void dissect_r3_cmd_declinedlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *starttime_item; proto_tree *starttime_tree; - proto_item *endtime_item; proto_tree *endtime_tree; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -5796,28 +5743,28 @@ dissect_r3_cmd_declinedlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 len proto_tree_add_item (tree, hf_r3_commandlength, tvb, start_offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tree, hf_r3_command, tvb, start_offset + 1, 1, ENC_LITTLE_ENDIAN); - starttime_item = proto_tree_add_text (tree, payload_tvb, 0, 5, + starttime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 0, 5, + ett_r3declinedlogdumpstarttime, NULL, "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 0), tvb_get_guint8 (payload_tvb, 1), tvb_get_guint8 (payload_tvb, 2), tvb_get_guint8 (payload_tvb, 3), tvb_get_guint8 (payload_tvb, 4)); - starttime_tree = proto_item_add_subtree (starttime_item, ett_r3declinedlogdumpstarttime); proto_tree_add_item (starttime_tree, hf_r3_declinedlogdump_starttime_year, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_declinedlogdump_starttime_month, payload_tvb, 1, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_declinedlogdump_starttime_day, payload_tvb, 2, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_declinedlogdump_starttime_hours, payload_tvb, 3, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_declinedlogdump_starttime_minutes, payload_tvb, 4, 1, ENC_LITTLE_ENDIAN); - endtime_item = proto_tree_add_text (tree, payload_tvb, 5, 5, + endtime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 5, 5, + ett_r3declinedlogdumpendtime, NULL, "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 5), tvb_get_guint8 (payload_tvb, 6), tvb_get_guint8 (payload_tvb, 7), tvb_get_guint8 (payload_tvb, 8), tvb_get_guint8 (payload_tvb, 9)); - endtime_tree = proto_item_add_subtree (endtime_item, ett_r3declinedlogdumpendtime); proto_tree_add_item (endtime_tree, hf_r3_declinedlogdump_endtime_year, payload_tvb, 5, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (endtime_tree, hf_r3_declinedlogdump_endtime_month, payload_tvb, 6, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (endtime_tree, hf_r3_declinedlogdump_endtime_day, payload_tvb, 7, 1, ENC_LITTLE_ENDIAN); @@ -5828,9 +5775,7 @@ dissect_r3_cmd_declinedlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 len static void dissect_r3_cmd_alarmlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *starttime_item; proto_tree *starttime_tree; - proto_item *endtime_item; proto_tree *endtime_tree; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -5844,28 +5789,28 @@ dissect_r3_cmd_alarmlogdump (tvbuff_t *tvb, guint32 start_offset, guint32 length proto_tree_add_item (tree, hf_r3_commandlength, tvb, start_offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tree, hf_r3_command, tvb, start_offset + 1, 1, ENC_LITTLE_ENDIAN); - starttime_item = proto_tree_add_text (tree, payload_tvb, 0, 5, + starttime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 0, 5, + ett_r3alarmlogdumpstarttime, NULL, "Start YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 0), tvb_get_guint8 (payload_tvb, 1), tvb_get_guint8 (payload_tvb, 2), tvb_get_guint8 (payload_tvb, 3), tvb_get_guint8 (payload_tvb, 4)); - starttime_tree = proto_item_add_subtree (starttime_item, ett_r3alarmlogdumpstarttime); proto_tree_add_item (starttime_tree, hf_r3_alarmlogdump_starttime_year, payload_tvb, 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_alarmlogdump_starttime_month, payload_tvb, 1, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_alarmlogdump_starttime_day, payload_tvb, 2, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_alarmlogdump_starttime_hours, payload_tvb, 3, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (starttime_tree, hf_r3_alarmlogdump_starttime_minutes, payload_tvb, 4, 1, ENC_LITTLE_ENDIAN); - endtime_item = proto_tree_add_text (tree, payload_tvb, 5, 5, + endtime_tree = proto_tree_add_subtree_format(tree, payload_tvb, 5, 5, + ett_r3alarmlogdumpendtime, NULL, "End YY/MM/DD HH:MM (%02u/%02u/%02u %02u:%02u)", tvb_get_guint8 (payload_tvb, 5), tvb_get_guint8 (payload_tvb, 6), tvb_get_guint8 (payload_tvb, 7), tvb_get_guint8 (payload_tvb, 8), tvb_get_guint8 (payload_tvb, 9)); - endtime_tree = proto_item_add_subtree (endtime_item, ett_r3alarmlogdumpendtime); proto_tree_add_item (endtime_tree, hf_r3_alarmlogdump_endtime_year, payload_tvb, 5, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (endtime_tree, hf_r3_alarmlogdump_endtime_month, payload_tvb, 6, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (endtime_tree, hf_r3_alarmlogdump_endtime_day, payload_tvb, 7, 1, ENC_LITTLE_ENDIAN); @@ -5892,9 +5837,8 @@ dissect_r3_cmd_downloadfirmware (tvbuff_t *tvb, guint32 start_offset, guint32 le proto_tree_add_item (tree, hf_r3_commandlength, tvb, start_offset + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (tree, hf_r3_command, tvb, start_offset + 1, 1, ENC_LITTLE_ENDIAN); - dlfw_item = proto_tree_add_text (tree, payload_tvb, 0, -1, + dlfw_tree = proto_tree_add_subtree_format(tree, payload_tvb, 0, -1, ett_r3downloadfirmware, &dlfw_item, "Download Record (Record #%u, ", tvb_get_letohs (payload_tvb, 2)); - dlfw_tree = proto_item_add_subtree (dlfw_item, ett_r3downloadfirmware); proto_tree_add_item (dlfw_tree, hf_r3_firmwaredownload_length, payload_tvb, 0, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item (dlfw_tree, hf_r3_firmwaredownload_record, payload_tvb, 2, 2, ENC_LITTLE_ENDIAN); @@ -6010,7 +5954,6 @@ dissect_r3_cmd_powertableselection (tvbuff_t *tvb, guint32 start_offset, guint32 static void dissect_r3_cmd_clearnvram (tvbuff_t *tvb, guint32 start_offset, guint32 length _U_, packet_info *pinfo _U_, proto_tree *tree) { - proto_item *nvram_item; proto_tree *nvram_tree; guint8 cmdLen; tvbuff_t *payload_tvb; @@ -6028,8 +5971,8 @@ dissect_r3_cmd_clearnvram (tvbuff_t *tvb, guint32 start_offset, guint32 length _ nvramclearoptions = tvb_get_letohs (payload_tvb, 0); - nvram_item = proto_tree_add_text (tree, payload_tvb, 0, 2, "NVRAM Clean Options (0x%04x)", nvramclearoptions); - nvram_tree = proto_item_add_subtree (nvram_item, ett_r3clearnvram); + nvram_tree = proto_tree_add_subtree_format(tree, payload_tvb, 0, 2, ett_r3clearnvram, NULL, + "NVRAM Clean Options (0x%04x)", nvramclearoptions); for (i = 0; i < 16; i++) proto_tree_add_boolean (nvram_tree, hf_r3_nvramclearoptions [i], payload_tvb, 0, 2, nvramclearoptions); @@ -6271,13 +6214,13 @@ dissect_r3_cmdmfg_forceoptions (tvbuff_t *tvb, guint32 start_offset, guint32 len i = 0; while (i<len && (step=tvb_get_guint8(tvb, start_offset + i))>0) { - proto_item *force_item = proto_tree_add_text (tree, tvb, start_offset + i, tvb_get_guint8 (tvb, start_offset + i), + proto_tree *force_tree = proto_tree_add_subtree_format(tree, tvb, start_offset + i, tvb_get_guint8 (tvb, start_offset + i), + ett_r3forceoptions, NULL, "Force Option %s (%u)", val_to_str_ext_const ( tvb_get_guint8 (tvb, start_offset + i + 1), &r3_forceitemnames_ext, "[Unknown]"), tvb_get_guint8 (tvb, start_offset + i + 1)); - proto_tree *force_tree = proto_item_add_subtree (force_item, ett_r3forceoptions); proto_item *force_item_item; proto_tree_add_item (force_tree, hf_r3_forceoptions_length, tvb, start_offset + i + 0, 1, ENC_LITTLE_ENDIAN); @@ -6381,8 +6324,7 @@ dissect_r3_cmdmfg_peekpoke (tvbuff_t *tvb, guint32 start_offset, guint32 length proto_item *peekpoke_op_item; proto_tree *peekpoke_tree; - peekpoke_item = proto_tree_add_text (tree, tvb, start_offset + i, 3, "%s", ""); - peekpoke_tree = proto_item_add_subtree (peekpoke_item, ett_r3peekpoke); + peekpoke_tree = proto_tree_add_subtree(tree, tvb, start_offset + i, 3, ett_r3peekpoke, &peekpoke_item, ""); peekpoke_op_item = proto_tree_add_item (peekpoke_tree, hf_r3_peekpoke_operation, tvb, start_offset + i + 0, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item (peekpoke_tree, hf_r3_peekpoke_address, tvb, start_offset + i + 1, 2, ENC_LITTLE_ENDIAN); @@ -6601,13 +6543,13 @@ dissect_r3_command (tvbuff_t *tvb, guint32 start_offset, guint32 length, packet_ else cn = val_to_str_ext_const (cmd, &r3_cmdmfgnames_ext, "[Unknown Mfg Command]"); - cmd_item = proto_tree_add_text (r3_tree, tvb, start_offset, cmdLen, "Command Packet: %s (%d)", cn, cmd); - cmd_tree = proto_item_add_subtree (cmd_item, ett_r3cmd); + cmd_tree = proto_tree_add_subtree_format(r3_tree, tvb, start_offset, cmdLen, + ett_r3cmd, &cmd_item, "Command Packet: %s (%d)", cn, cmd); if (!mfgCommandFlag) { if (cmd >= CMD_LAST) - expert_add_info(pinfo, proto_tree_get_parent (cmd_tree), &ei_r3_unknown_command_value); + expert_add_info(pinfo, cmd_item, &ei_r3_unknown_command_value); else if (r3command_dissect [cmd]) (*r3command_dissect [cmd]) (tvb, start_offset, length, pinfo, cmd_tree); } diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c index ddaeeb1a2a..3120c6ffca 100644 --- a/epan/dissectors/packet-atalk.c +++ b/epan/dissectors/packet-atalk.c @@ -609,7 +609,7 @@ dissect_rtmp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { i = 1; while (tvb_offset_exists(tvb, offset)) { - proto_tree *tuple_item, *tuple_tree; + proto_tree *tuple_tree; guint16 tuple_net; guint8 tuple_dist; guint16 tuple_range_end; @@ -619,15 +619,16 @@ dissect_rtmp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { if (tuple_dist & 0x80) { tuple_range_end = tvb_get_ntohs(tvb, offset+3); - tuple_item = proto_tree_add_text(rtmp_tree, tvb, offset, 6, + tuple_tree = proto_tree_add_subtree_format(rtmp_tree, tvb, offset, 6, + ett_rtmp_tuple, NULL, "Tuple %d: Range Start: %u Dist: %u Range End: %u", i, tuple_net, tuple_dist&0x7F, tuple_range_end); } else { - tuple_item = proto_tree_add_text(rtmp_tree, tvb, offset, 3, + tuple_tree = proto_tree_add_subtree_format(rtmp_tree, tvb, offset, 3, + ett_rtmp_tuple, NULL, "Tuple %d: Net: %u Dist: %u", i, tuple_net, tuple_dist); } - tuple_tree = proto_item_add_subtree(tuple_item, ett_rtmp_tuple); if (tuple_dist & 0x80) { proto_tree_add_uint(tuple_tree, hf_rtmp_tuple_range_start, tvb, offset, 2, @@ -693,9 +694,8 @@ dissect_nbp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_tree *node_item,*node_tree; int soffset = offset; - node_item = proto_tree_add_text(nbp_tree, tvb, offset, -1, - "Node %u", i+1); - node_tree = proto_item_add_subtree(node_item, ett_nbp_node); + node_tree = proto_tree_add_subtree_format(nbp_tree, tvb, offset, -1, + ett_nbp_node, &node_item, "Node %u", i+1); proto_tree_add_item(node_tree, hf_nbp_node_net, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; diff --git a/epan/dissectors/packet-atm.c b/epan/dissectors/packet-atm.c index f3232b8435..e4ca478f70 100644 --- a/epan/dissectors/packet-atm.c +++ b/epan/dissectors/packet-atm.c @@ -286,9 +286,8 @@ dissect_lan_destination(tvbuff_t *tvb, int offset, const char *type, proto_tree guint16 tag; proto_tree *rd_tree; - td = proto_tree_add_text(tree, tvb, offset, 8, "%s LAN destination", - type); - dest_tree = proto_item_add_subtree(td, ett_atm_lane_lc_lan_dest); + dest_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8, + ett_atm_lane_lc_lan_dest, NULL, "%s LAN destination", type); tag = tvb_get_ntohs(tvb, offset); proto_tree_add_item(dest_tree, hf_atm_lan_destination_tag, tvb, offset, 2, ENC_BIG_ENDIAN ); offset += 2; @@ -301,7 +300,7 @@ dissect_lan_destination(tvbuff_t *tvb, int offset, const char *type, proto_tree case TAG_ROUTE_DESCRIPTOR: offset += 4; - proto_tree_add_item(dest_tree, hf_atm_lan_destination_route_desc, tvb, offset, 2, ENC_LITTLE_ENDIAN); + td = proto_tree_add_item(dest_tree, hf_atm_lan_destination_route_desc, tvb, offset, 2, ENC_LITTLE_ENDIAN); rd_tree = proto_item_add_subtree(td, ett_atm_lane_lc_lan_dest_rd); proto_tree_add_item(rd_tree, hf_atm_lan_destination_lan_id, tvb, offset, 2, ENC_LITTLE_ENDIAN); proto_tree_add_item(rd_tree, hf_atm_lan_destination_bridge_num, tvb, offset, 2, ENC_LITTLE_ENDIAN); @@ -369,15 +368,13 @@ dissect_le_control_tlvs(tvbuff_t *tvb, int offset, guint num_tlvs, { guint32 tlv_type; guint8 tlv_length; - proto_item *ttlv; proto_tree *tlv_tree; while (num_tlvs != 0) { tlv_type = tvb_get_ntohl(tvb, offset); tlv_length = tvb_get_guint8(tvb, offset+4); - ttlv = proto_tree_add_text(tree, tvb, offset, 5+tlv_length, "TLV type: %s", - val_to_str(tlv_type, le_tlv_type_vals, "Unknown (0x%08x)")); - tlv_tree = proto_item_add_subtree(ttlv, ett_atm_lane_lc_tlv); + tlv_tree = proto_tree_add_subtree_format(tree, tvb, offset, 5+tlv_length, ett_atm_lane_lc_tlv, NULL, + "TLV type: %s", val_to_str(tlv_type, le_tlv_type_vals, "Unknown (0x%08x)")); proto_tree_add_item(tlv_tree, hf_atm_le_control_tlv_type, tvb, offset, 4, ENC_BIG_ENDIAN); proto_tree_add_item(tlv_tree, hf_atm_le_control_tlv_length, tvb, offset+4, 1, ENC_BIG_ENDIAN); offset += 5+tlv_length; diff --git a/epan/dissectors/packet-auto_rp.c b/epan/dissectors/packet-auto_rp.c index 2b1ddffac0..b2a7f158ba 100644 --- a/epan/dissectors/packet-auto_rp.c +++ b/epan/dissectors/packet-auto_rp.c @@ -124,7 +124,7 @@ static void dissect_auto_rp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) rp_count, plurality(rp_count, "", "s")); if (tree) { - proto_item *ti, *tv; + proto_item *ti; proto_tree *auto_rp_tree, *ver_type_tree; int i, offset; guint16 holdtime; @@ -133,10 +133,10 @@ static void dissect_auto_rp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) ti = proto_tree_add_item(tree, proto_auto_rp, tvb, offset, -1, ENC_NA); auto_rp_tree = proto_item_add_subtree(ti, ett_auto_rp); - tv = proto_tree_add_text(auto_rp_tree, tvb, offset, 1, "Version: %s, Packet type: %s", + ver_type_tree = proto_tree_add_subtree_format(auto_rp_tree, tvb, offset, 1, + ett_auto_rp_ver_type, NULL, "Version: %s, Packet type: %s", val_to_str_const(hi_nibble(ver_type), auto_rp_ver_vals, "Unknown"), val_to_str_const(lo_nibble(ver_type), auto_rp_type_vals, "Unknown")); - ver_type_tree = proto_item_add_subtree(tv, ett_auto_rp_ver_type); proto_tree_add_uint(ver_type_tree, hf_auto_rp_version, tvb, offset, 1, ver_type); proto_tree_add_uint(ver_type_tree, hf_auto_rp_type, tvb, offset, 1, ver_type); offset++; @@ -167,47 +167,41 @@ static void dissect_auto_rp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) */ static int do_auto_rp_map(tvbuff_t *tvb, int offset, proto_tree *auto_rp_tree) { - proto_item *ti; proto_tree *map_tree; guint8 group_count; - guint32 rp_addr; /* In network byte order */ int i; - rp_addr = tvb_get_ipv4(tvb, offset); group_count = tvb_get_guint8(tvb, offset + 5); /* sizeof map header + n * sizeof encoded group addresses */ - ti = proto_tree_add_text(auto_rp_tree, tvb, offset, 6 + group_count * 6, - "RP %s: %u group%s", ip_to_str((guint8 *)&rp_addr), + map_tree = proto_tree_add_subtree_format(auto_rp_tree, tvb, offset, 6 + group_count * 6, + ett_auto_rp_map, NULL, + "RP %s: %u group%s", tvb_ip_to_str(tvb, offset), group_count, plurality(group_count, "", "s")); - map_tree = proto_item_add_subtree(ti, ett_auto_rp_map); - proto_tree_add_ipv4(map_tree, hf_auto_rp_rp_addr, tvb, offset, 4, rp_addr); + proto_tree_add_item(map_tree, hf_auto_rp_rp_addr, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; - proto_tree_add_uint(map_tree, hf_auto_rp_pim_ver, tvb, offset, 1, tvb_get_guint8(tvb, offset)); + proto_tree_add_item(map_tree, hf_auto_rp_pim_ver, tvb, offset, 1, ENC_NA); offset++; proto_tree_add_text(map_tree, tvb, offset, 1, "Number of groups this RP maps to: %u", group_count); offset++; for (i = 0; i < group_count; i++) { - proto_item *gi; proto_tree *grp_tree; guint8 sign, mask_len; - guint32 group_addr; /* In network byte order */ sign = tvb_get_guint8(tvb, offset); mask_len = tvb_get_guint8(tvb, offset + 1); - group_addr = tvb_get_ipv4(tvb, offset + 2); - gi = proto_tree_add_text(map_tree, tvb, offset, 6, "Group %s/%u (%s)", - ip_to_str((guint8 *)&group_addr), mask_len, + grp_tree = proto_tree_add_subtree_format(map_tree, tvb, offset, 6, + ett_auto_rp_group, NULL, "Group %s/%u (%s)", + tvb_ip_to_str(tvb, offset + 2), mask_len, val_to_str_const(sign&AUTO_RP_SIGN_MASK, auto_rp_mask_sign_vals, "")); - grp_tree = proto_item_add_subtree(gi, ett_auto_rp_group); proto_tree_add_uint(grp_tree, hf_auto_rp_prefix_sgn, tvb, offset, 1, sign); offset++; proto_tree_add_uint(grp_tree, hf_auto_rp_mask_len, tvb, offset, 1, mask_len); offset++; - proto_tree_add_ipv4(grp_tree, hf_auto_rp_group_prefix, tvb, offset, 4, group_addr); + proto_tree_add_item(grp_tree, hf_auto_rp_group_prefix, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; } diff --git a/epan/dissectors/packet-babel.c b/epan/dissectors/packet-babel.c index f3c143618b..580b17b0d2 100644 --- a/epan/dissectors/packet-babel.c +++ b/epan/dissectors/packet-babel.c @@ -306,11 +306,11 @@ dissect_babel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U tvb_get_ptr(tvb, message + 4, len - 2), len - 2, nh); - ti = proto_tree_add_text(message_tree, + subtree = proto_tree_add_subtree_format(message_tree, tvb, message + 4, len - 2, + ett_subtree, NULL, "NH: %s", format_address(rc < 0 ? NULL : nh)); - subtree = proto_item_add_subtree(ti, ett_subtree); proto_tree_add_item(subtree, hf_babel_message_ae, tvb, message + 2, 1, ENC_NA); proto_tree_add_item(subtree, hf_babel_message_prefix, @@ -343,12 +343,12 @@ dissect_babel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U tvb, message + 8, 2, ENC_BIG_ENDIAN); proto_tree_add_item(message_tree, hf_babel_message_metric, tvb, message + 10, 2, ENC_BIG_ENDIAN); - ti = proto_tree_add_text(message_tree, + subtree = proto_tree_add_subtree_format(message_tree, tvb, message + 12, len - 10, + ett_subtree, NULL, "Prefix: %s", format_prefix(rc < 0 ? NULL : p, plen)); - subtree = proto_item_add_subtree(ti, ett_subtree); proto_tree_add_item(subtree, hf_babel_message_ae, tvb, message + 2, 1, ENC_NA); proto_tree_add_item(subtree, hf_babel_message_plen, @@ -367,12 +367,12 @@ dissect_babel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U tvb_get_ptr(tvb, message + 4, len - 2), NULL, len - 2, p); - ti = proto_tree_add_text(message_tree, + subtree = proto_tree_add_subtree_format(message_tree, tvb, message + 4, len - 2, + ett_subtree, NULL, "Prefix: %s", format_prefix(rc < 0 ? NULL : p, plen)); - subtree = proto_item_add_subtree(ti, ett_subtree); proto_tree_add_item(subtree, hf_babel_message_ae, tvb, message + 2, 1, ENC_NA); proto_tree_add_item(subtree, hf_babel_message_plen, @@ -395,12 +395,12 @@ dissect_babel(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U tvb, message + 6, 1, ENC_NA); proto_tree_add_item(message_tree, hf_babel_message_routerid, tvb, message + 8, 8, ENC_NA); - ti = proto_tree_add_text(message_tree, + subtree = proto_tree_add_subtree_format(message_tree, tvb, message + 16, len - 14, + ett_subtree, NULL, "Prefix: %s", format_prefix(rc < 0 ? NULL : p, plen)); - subtree = proto_item_add_subtree(ti, ett_subtree); proto_tree_add_item(subtree, hf_babel_message_ae, tvb, message + 2, 1, ENC_NA); proto_tree_add_item(subtree, hf_babel_message_plen, diff --git a/epan/dissectors/packet-bacapp.c b/epan/dissectors/packet-bacapp.c index 91c913df1a..5924a79d6d 100644 --- a/epan/dissectors/packet-bacapp.c +++ b/epan/dissectors/packet-bacapp.c @@ -5338,11 +5338,9 @@ fNullTag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, cons { guint8 tag_no, tag_info; guint32 lvt; - proto_item *ti; proto_tree *subtree; - ti = proto_tree_add_text(tree, tvb, offset, 1, "%sNULL", label); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 1, ett_bacapp_tag, NULL, "%sNULL", label); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset + 1; @@ -5353,7 +5351,6 @@ fBooleanTag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, c { guint8 tag_no, tag_info; guint32 lvt = 0; - proto_item *ti; proto_tree *subtree; guint bool_len = 1; @@ -5363,9 +5360,8 @@ fBooleanTag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, c ++bool_len; } - ti = proto_tree_add_text(tree, tvb, offset, bool_len, - "%s%s", label, lvt == 0 ? "FALSE" : "TRUE"); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, bool_len, + ett_bacapp_tag, NULL, "%s%s", label, lvt == 0 ? "FALSE" : "TRUE"); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset + bool_len; @@ -5378,18 +5374,16 @@ fUnsignedTag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); /* only support up to an 8 byte (64-bit) integer */ if (fUnsigned64(tvb, offset + tag_len, lvt, &val)) - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s(Unsigned) %" G_GINT64_MODIFIER "u", label, val); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s(Unsigned) %" G_GINT64_MODIFIER "u", label, val); else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s - %u octets (Unsigned)", label, lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s - %u octets (Unsigned)", label, lvt); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -5432,24 +5426,23 @@ fEnumeratedTagSplit(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); /* only support up to a 4 byte (32-bit) enumeration */ if (fUnsigned32(tvb, offset+tag_len, lvt, &val)) { if (vs) - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s %s", label, val_to_split_str(val, split_val, vs, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s %s", label, val_to_split_str(val, split_val, vs, ASHRAE_Reserved_Fmt, Vendor_Proprietary_Fmt)); else - ti =proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s %u", label, val); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s %u", label, val); } else { - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s - %u octets (enumeration)", label, lvt); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s - %u octets (enumeration)", label, lvt); } - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -5469,17 +5462,15 @@ fSignedTag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, co guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (fSigned64(tvb, offset + tag_len, lvt, &val)) - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s(Signed) %" G_GINT64_MODIFIER "d", label, val); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s(Signed) %" G_GINT64_MODIFIER "d", label, val); else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s - %u octets (Signed)", label, lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s - %u octets (Signed)", label, lvt); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -5492,14 +5483,12 @@ fRealTag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, cons guint32 lvt; guint tag_len; gfloat f_val; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); f_val = tvb_get_ntohieee_float(tvb, offset+tag_len); - ti = proto_tree_add_text(tree, tvb, offset, 4+tag_len, - "%s%f (Real)", label, f_val); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 4+tag_len, + ett_bacapp_tag, NULL, "%s%f (Real)", label, f_val); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+4; @@ -5512,14 +5501,12 @@ fDoubleTag(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, co guint32 lvt; guint tag_len; gdouble d_val; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); d_val = tvb_get_ntohieee_double(tvb, offset+tag_len); - ti = proto_tree_add_text(tree, tvb, offset, 8+tag_len, - "%s%f (Double)", label, d_val); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, 8+tag_len, + ett_bacapp_tag, NULL, "%s%f (Double)", label, d_val); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+8; @@ -5536,12 +5523,16 @@ fProcessId(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (fUnsigned32(tvb, offset+tag_len, lvt, &val)) + { ti = proto_tree_add_uint(tree, hf_bacapp_tag_ProcessId, tvb, offset, lvt+tag_len, val); + subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + } else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "Process Identifier - %u octets (Signed)", lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + { + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "Process Identifier - %u octets (Signed)", lvt); + } fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset += tag_len + lvt; @@ -5553,21 +5544,21 @@ fTimeSpan(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, con { guint32 val = 0, lvt; guint8 tag_no, tag_info; - proto_item *ti; proto_tree *subtree; guint tag_len; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (fUnsigned32(tvb, offset+tag_len, lvt, &val)) - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "%s (hh.mm.ss): %d.%02d.%02d%s", - label, - (val / 3600), ((val % 3600) / 60), (val % 60), - val == 0 ? " (indefinite)" : ""); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, + "%s (hh.mm.ss): %d.%02d.%02d%s", + label, + (val / 3600), ((val % 3600) / 60), (val % 60), + val == 0 ? " (indefinite)" : ""); else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s - %u octets (Signed)", label, lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -5580,18 +5571,17 @@ fWeekNDay(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); month = tvb_get_guint8(tvb, offset+tag_len); weekOfMonth = tvb_get_guint8(tvb, offset+tag_len+1); dayOfWeek = tvb_get_guint8(tvb, offset+tag_len+2); - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, "%s %s, %s", + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s %s, %s", val_to_str(month, months, "month (%d) not found"), val_to_str(weekOfMonth, weekofmonth, "week of month (%d) not found"), val_to_str(dayOfWeek, day_of_week, "day of week (%d) not found")); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -5604,7 +5594,6 @@ fDate(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const g guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); @@ -5613,12 +5602,14 @@ fDate(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const g day = tvb_get_guint8(tvb, offset+tag_len+2); weekday = tvb_get_guint8(tvb, offset+tag_len+3); if ((year == 255) && (day == 255) && (month == 255) && (weekday == 255)) { - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%sany", label); } else if (year != 255) { year += 1900; - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s%s %d, %d, (Day of Week = %s)", label, val_to_str(month, months, @@ -5627,12 +5618,12 @@ fDate(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const g day_of_week, "(%d) not found")); } else { - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s%s %d, any year, (Day of Week = %s)", label, val_to_str(month, months, "month (%d) not found"), day, val_to_str(weekday, day_of_week, "(%d) not found")); } - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -5644,7 +5635,6 @@ fTime(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const g guint32 hour, minute, second, msec, lvt; guint8 tag_no, tag_info; guint tag_len; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); @@ -5653,17 +5643,18 @@ fTime(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const g second = tvb_get_guint8(tvb, offset+tag_len+2); msec = tvb_get_guint8(tvb, offset+tag_len+3); if ((hour == 255) && (minute == 255) && (second == 255) && (msec == 255)) - ti = proto_tree_add_text(tree, tvb, offset, - lvt+tag_len, "%sany", label); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, + lvt+tag_len, ett_bacapp_tag, NULL, + "%sany", label); else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s%d:%02d:%02d.%d %s = %02d:%02d:%02d.%d", label, hour > 12 ? hour - 12 : hour, minute, second, msec, hour >= 12 ? "P.M." : "A.M.", hour, minute, second, msec); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -5673,11 +5664,9 @@ static guint fDateTime(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label) { proto_tree *subtree = tree; - proto_item *tt; if (label != NULL) { - tt = proto_tree_add_text(subtree, tvb, offset, 10, "%s", label); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 10, ett_bacapp_value, NULL, label); } offset = fDate(tvb, pinfo, subtree, offset, "Date: "); return fTime(tvb, pinfo, subtree, offset, "Time: "); @@ -5734,13 +5723,10 @@ fEventTimeStamps( tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, guint { guint32 lvt = 0; proto_tree* subtree = tree; - proto_item* ti = 0; if (tvb_reported_length_remaining(tvb, offset) > 0) { - ti = proto_tree_add_text(tree, tvb, offset, lvt, "eventTimeStamps"); - if (ti) { - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); - } + subtree = proto_tree_add_subtree(tree, tvb, offset, lvt, ett_bacapp_tag, NULL, "eventTimeStamps"); + offset = fTimeStamp(tvb, pinfo, subtree, offset, "TO-OFFNORMAL timestamp: "); offset = fTimeStamp(tvb, pinfo, subtree, offset, "TO-FAULT timestamp: "); offset = fTimeStamp(tvb, pinfo, subtree, offset, "TO-NORMAL timestamp: "); @@ -5824,19 +5810,16 @@ fOctetString(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, guint start = offset; guint8 tag_no, tag_info; proto_tree *subtree = tree; - proto_item *ti = 0; offset += fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (lvt > 0) { tmp = tvb_bytes_to_ep_str(tvb, offset, lvt); - ti = proto_tree_add_text(tree, tvb, offset, lvt, "%s %s", label, tmp); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt, + ett_bacapp_tag, NULL, "%s %s", label, tmp); offset += lvt; } - if (ti) - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); - fTagHeaderTree(tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt); return offset; @@ -5845,45 +5828,34 @@ fOctetString(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, static guint fMacAddress(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset, const gchar *label, guint32 lvt) { - gchar *tmp; guint start = offset; guint8 tag_no, tag_info; proto_tree* subtree = tree; - proto_item* ti; offset += fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); - ti = proto_tree_add_text(tree, tvb, offset, 6, "%s", label); /* just add the label, with the tagHeader information in its subtree */ + subtree = proto_tree_add_subtree(tree, tvb, offset, 6, ett_bacapp_tag, NULL, label); /* just add the label, with the tagHeader information in its subtree */ if (lvt > 0) { if (lvt == 6) { /* we have 6 Byte IP Address with 4 Octets IPv4 and 2 Octets Port Information */ - guint32 ip = tvb_get_ipv4(tvb, offset); - guint16 port = tvb_get_ntohs(tvb, offset+4); - - proto_tree_add_ipv4(tree, hf_bacapp_tag_IPV4, tvb, offset, 4, ip); - proto_tree_add_uint(tree, hf_bacapp_tag_PORT, tvb, offset+4, 2, port); + proto_tree_add_item(tree, hf_bacapp_tag_IPV4, tvb, offset, 4, ENC_BIG_ENDIAN); + proto_tree_add_item(tree, hf_bacapp_tag_PORT, tvb, offset+4, 2, ENC_BIG_ENDIAN); } else { if (lvt == 18) { /* we have 18 Byte IP Address with 16 Octets IPv6 and 2 Octets Port Information */ - struct e_in6_addr addr; - guint16 port = tvb_get_ntohs(tvb, offset+16); - tvb_get_ipv6(tvb, offset, &addr); - proto_tree_add_ipv6(tree, hf_bacapp_tag_IPV6, tvb, offset, 16, (const guint8 *) &addr); - proto_tree_add_uint(tree, hf_bacapp_tag_PORT, tvb, offset+16, 2, port); + proto_tree_add_item(tree, hf_bacapp_tag_IPV6, tvb, offset, 16, ENC_NA); + proto_tree_add_item(tree, hf_bacapp_tag_PORT, tvb, offset+16, 2, ENC_BIG_ENDIAN); } else { /* we have 1 Byte MS/TP Address or anything else interpreted as an address */ - tmp = tvb_bytes_to_ep_str(tvb, offset, lvt); - ti = proto_tree_add_text(tree, tvb, offset, lvt, "%s", tmp); + subtree = proto_tree_add_subtree(tree, tvb, offset, lvt, + ett_bacapp_tag, NULL, tvb_bytes_to_ep_str(tvb, offset, lvt)); } } offset += lvt; } - if (ti) - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); - fTagHeaderTree(tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt); return offset; @@ -5920,21 +5892,21 @@ fObjectIdentifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off guint8 tag_no, tag_info; guint32 lvt; guint tag_length; - proto_item *ti; proto_tree *subtree; guint32 object_id; tag_length = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); object_id = tvb_get_ntohl(tvb, offset+tag_length); object_type = object_id_type(object_id); - ti = proto_tree_add_text(tree, tvb, offset, tag_length + 4, - "ObjectIdentifier: %s, %u", + subtree = proto_tree_add_subtree_format(tree, tvb, offset, tag_length + 4, + ett_bacapp_tag, NULL, "ObjectIdentifier: %s, %u", val_to_split_str(object_type, 128, BACnetObjectType, ASHRAE_Reserved_Fmt, Vendor_Proprietary_Fmt), object_id_instance(object_id)); + if (col_get_writable(pinfo->cinfo)) col_append_fstr(pinfo->cinfo, COL_INFO, "%s,%u ", val_to_split_str(object_type, @@ -5956,7 +5928,6 @@ fObjectIdentifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off object_id_instance(object_id))); /* here are the details of how we arrived at the above text */ - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset += tag_length; proto_tree_add_item(subtree, hf_bacapp_objectType, tvb, offset, 4, ENC_BIG_ENDIAN); @@ -5993,12 +5964,10 @@ fRecipientProcess(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off guint8 tag_no, tag_info; guint32 lvt; proto_tree *orgtree = tree; - proto_item *tt; proto_tree *subtree; /* beginning of new item - indent and label */ - tt = proto_tree_add_text(orgtree, tvb, offset, 1, "Recipient Process" ); - tree = proto_item_add_subtree(tt, ett_bacapp_value); + tree = proto_tree_add_subtree(orgtree, tvb, offset, 1, ett_bacapp_value, NULL, "Recipient Process" ); while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */ lastoffset = offset; @@ -6006,8 +5975,7 @@ fRecipientProcess(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off switch (fTagNo(tvb, offset)) { case 0: /* recipient */ offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt); /* show context open */ - tt = proto_tree_add_text(tree, tvb, offset, 1, "Recipient"); /* add tree label and indent */ - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_bacapp_value, NULL, "Recipient"); /* add tree label and indent */ offset = fRecipient(tvb, pinfo, subtree, offset); offset += fTagHeaderTree(tvb, pinfo, tree, offset, &tag_no, &tag_info, &lvt); /* show context close */ break; @@ -6030,7 +5998,6 @@ fCOVSubscription(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree; - proto_item *tt; proto_tree *orgtree = tree; guint itemno = 1; @@ -6044,19 +6011,19 @@ fCOVSubscription(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs case 0: /* recipient */ /* beginning of new item in list */ - tt = proto_tree_add_text(orgtree, tvb, offset, 1, "Subscription %d",itemno); /* add tree label and indent */ + tree = proto_tree_add_subtree_format(orgtree, tvb, offset, 1, + ett_bacapp_value, NULL, "Subscription %d",itemno); /* add tree label and indent */ itemno = itemno + 1; - tree = proto_item_add_subtree(tt, ett_bacapp_value); - tt = proto_tree_add_text(tree, tvb, offset, 1, "Recipient"); /* add tree label and indent */ - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(tree, tvb, offset, 1, + ett_bacapp_value, NULL, "Recipient"); /* add tree label and indent */ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); /* show context open */ offset = fRecipientProcess(tvb, pinfo, subtree, offset); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); /* show context close */ break; case 1: /* MonitoredPropertyReference */ - tt = proto_tree_add_text(tree, tvb, offset, 1, "Monitored Property Reference"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(tree, tvb, offset, 1, + ett_bacapp_value, NULL, "Monitored Property Reference"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fBACnetObjectPropertyReference(tvb, pinfo, subtree, offset); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); @@ -6156,7 +6123,6 @@ fActionList(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *ti; while (tvb_reported_length_remaining(tvb, offset) > 0) { lastoffset = offset; @@ -6169,8 +6135,7 @@ fActionList(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) continue; } if (tag_is_opening(tag_info)) { - ti = proto_tree_add_text(tree, tvb, offset, 1, "Action List"); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_bacapp_tag, NULL, "Action List"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); } @@ -6192,7 +6157,6 @@ fPropertyIdentifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; const gchar *label = "Property Identifier"; @@ -6200,7 +6164,8 @@ fPropertyIdentifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); /* can we decode this value? */ if (fUnsigned32(tvb, offset+tag_len, lvt, (guint32 *)&propertyIdentifier)) { - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "%s: %s (%u)", label, val_to_split_str(propertyIdentifier, 512, BACnetPropertyIdentifier, @@ -6216,7 +6181,7 @@ fPropertyIdentifier(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o /* property identifiers cannot be larger than 22-bits */ return offset; } - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); proto_tree_add_item(subtree, hf_BACnetPropertyIdentifier, tvb, offset+tag_len, lvt, ENC_BIG_ENDIAN); @@ -6230,17 +6195,15 @@ fPropertyArrayIndex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; tag_len = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (fUnsigned32(tvb, offset + tag_len, lvt, (guint32 *)&propertyArrayIndex)) - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "property Array Index (Unsigned) %u", propertyArrayIndex); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "property Array Index (Unsigned) %u", propertyArrayIndex); else - ti = proto_tree_add_text(tree, tvb, offset, lvt+tag_len, - "property Array Index - %u octets (Unsigned)", lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, lvt+tag_len, + ett_bacapp_tag, NULL, "property Array Index - %u octets (Unsigned)", lvt); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset+tag_len+lvt; @@ -6254,7 +6217,6 @@ fCharacterString(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs guint offs, extra = 1; const char *coding; guint8 *out; - proto_item *ti; proto_tree *subtree; guint start = offset; @@ -6320,13 +6282,12 @@ fCharacterString(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offs coding = "unknown"; break; } - ti = proto_tree_add_text(tree, tvb, offset, l, "%s%s '%s'", label, coding, out); + subtree = proto_tree_add_subtree_format(tree, tvb, offset, l, ett_bacapp_tag, NULL, + "%s%s '%s'", label, coding, out); lvt -= l; offset += l; } while (lvt > 0); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); - fTagHeaderTree(tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt); proto_tree_add_item(subtree, hf_BACnetCharacterSet, tvb, start+offs, 1, ENC_BIG_ENDIAN); @@ -6349,17 +6310,15 @@ fBitStringTagVS(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse guint32 lvt, i, numberOfBytes; guint8 bf_arr[256]; proto_tree* subtree = tree; - proto_item* ti; offs = fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); numberOfBytes = lvt-1; /* Ignore byte for unused bit count */ offset += offs; unused = tvb_get_guint8(tvb, offset); /* get the unused Bits */ - ti = proto_tree_add_text(tree, tvb, start, offs+lvt, + subtree = proto_tree_add_subtree_format(tree, tvb, start, offs+lvt, + ett_bacapp_tag, NULL, "%s(Bit String)", label); - if (ti) { - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); - } + fTagHeaderTree(tvb, pinfo, subtree, start, &tag_no, &tag_info, &lvt); proto_tree_add_text(subtree, tvb, offset, 1, "Unused bits: %u", unused); @@ -6521,7 +6480,6 @@ fContextTaggedValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o guint8 tag_no, tag_info; guint32 lvt; guint tag_len; - proto_item *ti; proto_tree *subtree; gint tvb_len; @@ -6532,10 +6490,9 @@ fContextTaggedValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint o if ((tvb_len >= 0) && ((guint32)tvb_len < lvt)) { lvt = tvb_len; } - ti = proto_tree_add_text(tree, tvb, offset+tag_len, lvt, - "Context Value (as %u DATA octets)", lvt); + subtree = proto_tree_add_subtree_format(tree, tvb, offset+tag_len, lvt, + ett_bacapp_tag, NULL, "Context Value (as %u DATA octets)", lvt); - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); return offset + tag_len + lvt; @@ -7059,7 +7016,6 @@ fSubscribeCOVPropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */ lastoffset = offset; @@ -7085,10 +7041,7 @@ fSubscribeCOVPropertyRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree break; case 4: /* monitoredPropertyIdentifier */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "monitoredPropertyIdentifier"); - if (tt) { - subtree = proto_item_add_subtree(tt, ett_bacapp_value); - } + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, "monitoredPropertyIdentifier"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fBACnetPropertyReference(tvb, pinfo, subtree, offset, 1); break; @@ -7179,7 +7132,6 @@ fWeeklySchedule(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse guint32 lvt; guint i = 1; /* day of week array index */ proto_tree *subtree = tree; - proto_item *tt; if (propertyArrayIndex > 0) { /* BACnetARRAY index 0 refers to the length @@ -7197,8 +7149,8 @@ fWeeklySchedule(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse if (tag_is_closing(tag_info)) { return offset; /* outer encoding will print out closing tag */ } - tt = proto_tree_add_text(tree, tvb, offset, 0, "%s", val_to_str(i++, day_of_week, "day of week (%d) not found")); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_bacapp_value, NULL, + val_to_str(i++, day_of_week, "day of week (%d) not found")); offset = fDailySchedule(tvb, pinfo, subtree, offset); if (offset == lastoffset) break; /* nothing happened, exit loop */ } @@ -7353,7 +7305,6 @@ fConfirmedPrivateTransferRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree * guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; tvbuff_t *next_tvb; guint vendor_identifier = 0; guint service_number = 0; @@ -7398,8 +7349,8 @@ fConfirmedPrivateTransferRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree * break; case 2: /*serviceParameters */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "service Parameters"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, + ett_bacapp_value, NULL, "service Parameters"); propertyIdentifier = -1; offset = fAbstractSyntaxNType(tvb, pinfo, subtree, offset); break; @@ -7434,11 +7385,9 @@ fLifeSafetyOperationRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; if (label != NULL) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "%s", label); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, label); } while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */ @@ -7668,12 +7617,11 @@ fNotificationParameters(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gui guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); - tt = proto_tree_add_text(subtree, tvb, offset, 0, "notification parameters (%d) %s", + subtree = proto_tree_add_subtree_format(subtree, tvb, offset, 0, + ett_bacapp_value, NULL, "notification parameters (%d) %s", tag_no, val_to_str_const(tag_no, BACnetEventType, "invalid type")); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); /* Opening tag for parameter choice */ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); @@ -8055,12 +8003,12 @@ fEventParameter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); - tt = proto_tree_add_text(subtree, tvb, offset, 0, "event parameters (%d) %s", + subtree = proto_tree_add_subtree_format(subtree, tvb, offset, 0, + ett_bacapp_value, NULL, "event parameters (%d) %s", tag_no, val_to_str_const(tag_no, BACnetEventType, "invalid type")); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + /* Opening tag for parameter choice */ offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); @@ -8498,7 +8446,6 @@ fEventLogRecord(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */ lastoffset = offset; @@ -8516,8 +8463,7 @@ fEventLogRecord(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offse offset = fBitStringTagVS(tvb, pinfo, tree, offset, "log status:", BACnetLogStatus); break; case 1: /* todo: move this to new method fConfirmedEventNotificationRequestTag... */ - tt = proto_tree_add_text(tree, tvb, offset, 1, "notification: "); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_bacapp_value, NULL, "notification: "); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fConfirmedEventNotificationRequest(tvb, pinfo, subtree, offset); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); @@ -8780,7 +8726,6 @@ fConfirmedCOVNotificationRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree * guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */ lastoffset = offset; @@ -8806,8 +8751,7 @@ fConfirmedCOVNotificationRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree * break; case 4: /* List of Values */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "list of Values"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, "list of Values"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fBACnetPropertyValue(tvb, pinfo, subtree, offset); break; @@ -8991,10 +8935,7 @@ flistOfEventSummaries(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint "acknowledged Transitions: ", BACnetEventTransitionBits); break; case 3: /* eventTimeStamps */ - ti = proto_tree_add_text(tree, tvb, offset, lvt, "eventTimeStamps"); - if (ti) { - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); - } + subtree = proto_tree_add_subtree(tree, tvb, offset, lvt, ett_bacapp_tag, NULL, "eventTimeStamps"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fTimeStamp(tvb, pinfo, subtree, offset, "TO-OFFNORMAL timestamp: "); offset = fTimeStamp(tvb, pinfo, subtree, offset, "TO-FAULT timestamp: "); @@ -9010,10 +8951,7 @@ flistOfEventSummaries(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint "event Enable: ", BACnetEventTransitionBits); break; case 6: /* eventPriorities */ - ti = proto_tree_add_text(tree, tvb, offset, lvt, "eventPriorities"); - if (ti) { - subtree = proto_item_add_subtree(ti, ett_bacapp_tag); - } + subtree = proto_tree_add_subtree(tree, tvb, offset, lvt, ett_bacapp_tag, NULL, "eventPriorities"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fUnsignedTag(tvb, pinfo, subtree, offset, "TO-OFFNORMAL Priority: "); offset = fUnsignedTag(tvb, pinfo, subtree, offset, "TO-FAULT Priority: "); @@ -9082,7 +9020,6 @@ fAddListElementRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; col_set_writable(pinfo->cinfo, FALSE); /* don't set all infos into INFO column */ @@ -9101,8 +9038,7 @@ fAddListElementRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin break; case 3: /* listOfElements */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "listOfElements"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, "listOfElements"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fAbstractSyntaxNType(tvb, pinfo, subtree, offset); break; @@ -9754,7 +9690,6 @@ fReadAccessSpecification(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu guint lastoffset = 0; guint8 tag_no, tag_info; guint32 lvt; - proto_item *tt; proto_tree *subtree = tree; while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */ @@ -9766,8 +9701,7 @@ fReadAccessSpecification(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gu break; case 1: /* listOfPropertyReferences */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "listOfPropertyReferences"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, "listOfPropertyReferences"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fBACnetPropertyReference(tvb, pinfo, subtree, offset, 1); } else if (tag_is_closing(tag_info)) { @@ -9795,7 +9729,6 @@ fReadAccessResult(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off guint8 tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; while (tvb_reported_length_remaining(tvb, offset) > 0) { /* exit loop if nothing happens inside */ lastoffset = offset; @@ -9813,8 +9746,7 @@ fReadAccessResult(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off break; case 1: /* list of Results */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(tree, tvb, offset, 1, "listOfResults"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_bacapp_value, NULL, "listOfResults"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); break; } @@ -9825,8 +9757,7 @@ fReadAccessResult(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off break; case 5: /* propertyAccessError */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "propertyAccessError"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, "propertyAccessError"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); /* Error Code follows */ offset = fError(tvb, pinfo, subtree, offset); @@ -9906,7 +9837,6 @@ fReadRangeRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; offset = fBACnetObjectPropertyReference(tvb, pinfo, subtree, offset); @@ -9914,8 +9844,8 @@ fReadRangeRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint off /* optional range choice */ fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "%s", val_to_str_const(tag_no, BACnetReadRangeOptions, "unknown range option")); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, + val_to_str_const(tag_no, BACnetReadRangeOptions, "unknown range option")); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); switch (tag_no) { case 3: /* range byPosition */ @@ -9947,7 +9877,6 @@ fReadRangeAck(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; /* set the optional global properties to indicate not-used */ propertyArrayIndex = -1; @@ -9964,8 +9893,7 @@ fReadRangeAck(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (tag_is_opening(tag_info)) { col_set_writable(pinfo->cinfo, FALSE); /* don't set all infos into INFO column */ - tt = proto_tree_add_text(subtree, tvb, offset, 1, "itemData"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, "itemData"); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fAbstractSyntaxNType(tvb, pinfo, subtree, offset); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); @@ -9984,14 +9912,13 @@ fAccessMethod(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset) guint lastoffset = 0; guint32 lvt; guint8 tag_no, tag_info; - proto_item* tt; proto_tree* subtree = NULL; fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(tree, tvb, offset, 1, "%s", val_to_str_const(tag_no, BACnetFileAccessOption, "invalid access method")); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_bacapp_value, NULL, + val_to_str_const(tag_no, BACnetFileAccessOption, "invalid access method")); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fApplicationTypes(tvb, pinfo, subtree, offset, val_to_str_const(tag_no, BACnetFileStartOption, "invalid option")); offset = fApplicationTypes(tvb, pinfo, subtree, offset, val_to_str_const(tag_no, BACnetFileWriteInfo, "unknown option")); @@ -10021,15 +9948,14 @@ fAtomicReadFileRequest(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guin guint8 tag_no, tag_info; guint32 lvt; proto_tree *subtree = tree; - proto_item *tt; offset = fObjectIdentifier(tvb, pinfo, tree, offset); fTagHeader(tvb, pinfo, offset, &tag_no, &tag_info, &lvt); if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, "%s", val_to_str_const(tag_no, BACnetFileAccessOption, "unknown access method")); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_bacapp_value, NULL, + val_to_str_const(tag_no, BACnetFileAccessOption, "unknown access method")); offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fSignedTag(tvb, pinfo, subtree, offset, val_to_str_const(tag_no, BACnetFileStartOption, "unknown option")); offset = fUnsignedTag(tvb, pinfo, subtree, offset, val_to_str_const(tag_no, BACnetFileRequestCount, "unknown option")); @@ -10507,7 +10433,6 @@ fConfirmedPrivateTransferError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr guint8 tag_no = 0, tag_info = 0; guint32 lvt = 0; proto_tree *subtree = tree; - proto_item *tt; guint vendor_identifier = 0; guint service_number = 0; @@ -10535,9 +10460,8 @@ fConfirmedPrivateTransferError(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tr break; case 3: /* errorParameters */ if (tag_is_opening(tag_info)) { - tt = proto_tree_add_text(subtree, tvb, offset, 1, - "error Parameters"); - subtree = proto_item_add_subtree(tt, ett_bacapp_value); + subtree = proto_tree_add_subtree(subtree, tvb, offset, 1, + ett_bacapp_value, NULL, "error Parameters"); propertyIdentifier = -1; offset += fTagHeaderTree(tvb, pinfo, subtree, offset, &tag_no, &tag_info, &lvt); offset = fAbstractSyntaxNType(tvb, pinfo, subtree, offset); diff --git a/epan/dissectors/packet-batadv.c b/epan/dissectors/packet-batadv.c index 3a6b5ae13f..d871030d59 100644 --- a/epan/dissectors/packet-batadv.c +++ b/epan/dissectors/packet-batadv.c @@ -1744,16 +1744,15 @@ static void dissect_batadv_icmp_v6(tvbuff_t *tvb, packet_info *pinfo, proto_tree static void dissect_batadv_icmp_rr(proto_tree *batadv_icmp_tree, tvbuff_t *tvb, int offset) { - proto_tree *field_tree = NULL; - proto_item *tf; + proto_tree *field_tree; int ptr, i; ptr = tvb_get_guint8(tvb, offset); if (ptr < 1 || ptr > BAT_RR_LEN) return; - tf = proto_tree_add_text(batadv_icmp_tree, tvb, offset, 1+ 6 * BAT_RR_LEN, "ICMP RR"); - field_tree = proto_item_add_subtree(tf, ett_batadv_icmp_rr); + field_tree = proto_tree_add_subtree(batadv_icmp_tree, tvb, offset, 1+ 6 * BAT_RR_LEN, + ett_batadv_icmp_rr, NULL, "ICMP RR"); proto_tree_add_text(field_tree, tvb, offset, 1, "Pointer: %d", ptr); ptr--; diff --git a/epan/dissectors/packet-beep.c b/epan/dissectors/packet-beep.c index 304f722bda..2da36c62ba 100644 --- a/epan/dissectors/packet-beep.c +++ b/epan/dissectors/packet-beep.c @@ -499,9 +499,8 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo, if (cmd_temp != NULL) { if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, header_len(tvb, offset) + 2, "Header"); - - hdr = proto_item_add_subtree(ti, ett_header); + hdr = proto_tree_add_subtree(tree, tvb, offset, header_len(tvb, offset) + 2, + ett_header, NULL, "Header"); ti = proto_tree_add_item(hdr, hf_beep_cmd, tvb, offset, 3, ENC_NA|ENC_ASCII); /* Include space */ @@ -659,9 +658,8 @@ dissect_beep_tree(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tr = NULL; if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, MIN(5, MAX(0, tvb_length_remaining(tvb, offset))), "Trailer"); - - tr = proto_item_add_subtree(ti, ett_trailer); + tr = proto_tree_add_subtree(tree, tvb, offset, MIN(5, MAX(0, tvb_length_remaining(tvb, offset))), + ett_trailer, NULL, "Trailer"); proto_tree_add_item(hdr, hf_beep_cmd, tvb, offset, 3, ENC_NA|ENC_ASCII); } diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c index 1c45c1b1c2..9a631b5f3f 100644 --- a/epan/dissectors/packet-ber.c +++ b/epan/dissectors/packet-ber.c @@ -1026,10 +1026,8 @@ try_dissect_unknown_ber(packet_info *pinfo, tvbuff_t *tvb, volatile int offset, switch (ber_class) { case BER_CLASS_UNI: - item = proto_tree_add_text(tree, tvb, offset, len, "%s", val_to_str_ext_const(tag, &ber_uni_tag_codes_ext, "Unknown")); - if (item) { - next_tree = proto_item_add_subtree(item, ett_ber_SEQUENCE); - } + next_tree = proto_tree_add_subtree(tree, tvb, offset, len, ett_ber_SEQUENCE, NULL, + val_to_str_ext_const(tag, &ber_uni_tag_codes_ext, "Unknown")); while (offset < (int)(start_offset + len + hdr_len)) offset = try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1); break; @@ -1037,10 +1035,8 @@ try_dissect_unknown_ber(packet_info *pinfo, tvbuff_t *tvb, volatile int offset, case BER_CLASS_CON: case BER_CLASS_PRI: default: - item = proto_tree_add_text(tree, tvb, offset, len, "[%s %d]", val_to_str_const(ber_class, ber_class_codes, "Unknown"), tag); - if (item) { - next_tree = proto_item_add_subtree(item, ett_ber_SEQUENCE); - } + next_tree = proto_tree_add_subtree_format(tree, tvb, offset, len, ett_ber_SEQUENCE, NULL, + "[%s %d]", val_to_str_const(ber_class, ber_class_codes, "Unknown"), tag); while (offset < (int)(start_offset + len + hdr_len)) offset = try_dissect_unknown_ber(pinfo, tvb, offset, next_tree, nest_level+1); break; diff --git a/epan/dissectors/packet-bfd.c b/epan/dissectors/packet-bfd.c index b18ddcdce6..a5430a81fa 100644 --- a/epan/dissectors/packet-bfd.c +++ b/epan/dissectors/packet-bfd.c @@ -327,11 +327,11 @@ dissect_bfd_authentication(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) auth_len = tvb_get_guint8(tvb, offset + 1); if (tree) { - auth_item = proto_tree_add_text(tree, tvb, offset, auth_len, "Authentication: %s", + auth_tree = proto_tree_add_subtree_format(tree, tvb, offset, auth_len, + ett_bfd_auth, NULL, "Authentication: %s", val_to_str(auth_type, bfd_control_auth_type_values, "Unknown Authentication Type (%d)") ); - auth_tree = proto_item_add_subtree(auth_item, ett_bfd_auth); proto_tree_add_item(auth_tree, hf_bfd_auth_type, tvb, offset, 1, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-bgp.c b/epan/dissectors/packet-bgp.c index e4bf20cf52..4d6e27cbc7 100644 --- a/epan/dissectors/packet-bgp.c +++ b/epan/dissectors/packet-bgp.c @@ -1672,7 +1672,6 @@ static int decode_path_prefix4(proto_tree *tree, int hf_path_id, int hf_addr, tvbuff_t *tvb, gint offset, const char *tag) { - proto_item *ti; proto_tree *prefix_tree; union { guint8 addr_bytes[4]; @@ -1691,10 +1690,9 @@ decode_path_prefix4(proto_tree *tree, int hf_path_id, int hf_addr, tvbuff_t *tvb return -1; } /* put prefix into protocol tree */ - ti = proto_tree_add_text(tree, tvb, offset, - 4 + 1 + length, "%s/%u PathId %u ", + prefix_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4 + 1 + length, + ett_bgp_prefix, NULL, "%s/%u PathId %u ", ip_to_str(ip_addr.addr_bytes), plen, path_identifier); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); if (hf_path_id != -1) { proto_tree_add_uint(prefix_tree, hf_path_id, tvb, offset, 4, path_identifier); @@ -1721,7 +1719,6 @@ static int decode_prefix4(proto_tree *tree, proto_item *parent_item, int hf_addr, tvbuff_t *tvb, gint offset, guint16 tlen, const char *tag) { - proto_item *ti; proto_tree *prefix_tree; union { guint8 addr_bytes[4]; @@ -1740,15 +1737,14 @@ decode_prefix4(proto_tree *tree, proto_item *parent_item, int hf_addr, tvbuff_t } /* put prefix into protocol tree */ - ti = proto_tree_add_text(tree, tvb, offset, - tlen != 0 ? tlen : 1 + length, "%s/%u", - ip_to_str(ip_addr.addr_bytes), plen); + prefix_tree = proto_tree_add_subtree_format(tree, tvb, offset, + tlen != 0 ? tlen : 1 + length, ett_bgp_prefix, NULL, + "%s/%u", ip_to_str(ip_addr.addr_bytes), plen); /* append parent item if not NULL */ if (parent_item != NULL) proto_item_append_text(parent_item, " (%s/%u)", ip_to_str(ip_addr.addr_bytes), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, offset, 1, "%s prefix length: %u", tag, plen); if (hf_addr != -1) { @@ -1768,7 +1764,6 @@ static int decode_prefix6(proto_tree *tree, int hf_addr, tvbuff_t *tvb, gint offset, guint16 tlen, const char *tag) { - proto_item *ti; proto_tree *prefix_tree; struct e_in6_addr addr; /* IPv6 address */ int plen; /* prefix length */ @@ -1784,10 +1779,9 @@ decode_prefix6(proto_tree *tree, int hf_addr, tvbuff_t *tvb, gint offset, } /* put prefix into protocol tree */ - ti = proto_tree_add_text(tree, tvb, offset, - tlen != 0 ? tlen : 1 + length, "%s/%u", + prefix_tree = proto_tree_add_subtree_format(tree, tvb, offset, + tlen != 0 ? tlen : 1 + length, ett_bgp_prefix, NULL, "%s/%u", ip6_to_str(&addr), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, offset, 1, "%s prefix length: %u", tag, plen); if (hf_addr != -1) { @@ -3872,12 +3866,12 @@ decode_prefix_MP(proto_tree *tree, int hf_addr4, int hf_addr6, return -1; } - ti = proto_tree_add_text(tree, tvb, start_offset, + prefix_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, (offset + length) - start_offset, + ett_bgp_prefix, NULL, "Label Stack=%s IPv4=%s/%u", wmem_strbuf_get_str(stack_strbuf), ip_to_str(ip4addr.addr_bytes), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, start_offset, 1, "%s Prefix length: %u", tag, plen + labnum * 3 * 8); proto_tree_add_text(prefix_tree, tvb, start_offset + 1, 3 * labnum, "%s Label Stack: %s", @@ -3942,11 +3936,11 @@ decode_prefix_MP(proto_tree *tree, int hf_addr4, int hf_addr6, wmem_strbuf_append_printf(comm_strbuf, "Invalid RT type"); break; } - ti = proto_tree_add_text(tree, tvb, offset + 1, length, "%s %u:%s/%u", + prefix_tree = proto_tree_add_subtree_format(tree, tvb, offset + 1, length, + ett_bgp_prefix, NULL, "%s %u:%s/%u", tag, tvb_get_ntohl(tvb, offset + 1 + 0), wmem_strbuf_get_str(comm_strbuf), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, offset, 1, "%s Prefix length: %u", tag, plen); proto_tree_add_text(prefix_tree, tvb, offset + 1, 4, "%s Originating AS: %u", @@ -3991,11 +3985,11 @@ decode_prefix_MP(proto_tree *tree, int hf_addr4, int hf_addr6, tag, plen + 16); return -1; } - ti = proto_tree_add_text(tree, tvb, start_offset, + prefix_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, (offset + length) - start_offset, + ett_bgp_prefix, NULL, "Tunnel Identifier=0x%x IPv4=%s/%u", tnl_id, ip_to_str(ip4addr.addr_bytes), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, start_offset, 1, "%s Prefix length: %u", tag, plen + 16); @@ -4048,14 +4042,14 @@ decode_prefix_MP(proto_tree *tree, int hf_addr4, int hf_addr6, return -1; } - ti = proto_tree_add_text(tree, tvb, start_offset, + prefix_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, (offset + 8 + length) - start_offset, + ett_bgp_prefix, NULL, "Label Stack=%s RD=%u:%u, IPv4=%s/%u", wmem_strbuf_get_str(stack_strbuf), tvb_get_ntohs(tvb, offset + 2), tvb_get_ntohl(tvb, offset + 4), ip_to_str(ip4addr.addr_bytes), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, start_offset, 1, "%s Prefix length: %u", tag, plen + labnum * 3 * 8 + 8 * 8); proto_tree_add_text(prefix_tree, tvb, start_offset + 1, 3 * labnum, @@ -4085,15 +4079,15 @@ decode_prefix_MP(proto_tree *tree, int hf_addr4, int hf_addr6, return -1; } - ti = proto_tree_add_text(tree, tvb, start_offset, + prefix_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, (offset + 8 + length) - start_offset, + ett_bgp_prefix, NULL, "Label Stack=%s RD=%s:%u, IPv4=%s/%u", wmem_strbuf_get_str(stack_strbuf), ip_to_str(ip4addr.addr_bytes), tvb_get_ntohs(tvb, offset + 6), ip_to_str(ip4addr2.addr_bytes), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, start_offset, 1, "%s Prefix length: %u", tag, plen + labnum * 3 * 8 + 8 * 8); proto_tree_add_text(prefix_tree, tvb, start_offset + 1, 3 * labnum, @@ -4121,15 +4115,15 @@ decode_prefix_MP(proto_tree *tree, int hf_addr4, int hf_addr6, return -1; } - ti = proto_tree_add_text(tree, tvb, start_offset, + prefix_tree = proto_tree_add_subtree_format(tree, tvb, start_offset, (offset + 8 + length) - start_offset, + ett_bgp_prefix, NULL, "Label Stack=%s RD=%u.%u:%u, IPv4=%s/%u", wmem_strbuf_get_str(stack_strbuf), tvb_get_ntohs(tvb, offset + 2), tvb_get_ntohs(tvb, offset + 4), tvb_get_ntohs(tvb, offset + 6), ip_to_str(ip4addr.addr_bytes), plen); - prefix_tree = proto_item_add_subtree(ti, ett_bgp_prefix); proto_tree_add_text(prefix_tree, tvb, start_offset, 1, "%s Prefix length: %u", tag, plen + labnum * 3 * 8 + 8 * 8); proto_tree_add_text(prefix_tree, tvb, start_offset + 1, 3 * labnum, @@ -5421,7 +5415,7 @@ dissect_bgp_update_pmsi_attr(packet_info *pinfo, proto_tree *parent_tree, tvbuff proto_tree_add_item(tunnel_id_tree, hf_bgp_pmsi_tunnel_mldp_fec_el_opa_val_ext_len, tvb, offset+14+rn_addr_length, 2, ENC_BIG_ENDIAN); opaque_value_length = tvb_get_ntohs(tvb, offset+14+rn_addr_length); proto_tree_add_item(tunnel_id_tree, hf_bgp_pmsi_tunnel_mldp_fec_el_opa_value_str, tvb, offset+16+rn_addr_length, - opaque_value_length, ENC_ASCII); + opaque_value_length, ENC_ASCII|ENC_NA); } else { /* This covers situation when opaque id is 0 (reserved) or any other value */ @@ -5864,11 +5858,10 @@ dissect_bgp_update(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo) val_to_str_const(saf, bgpattr_nlri_safi, saf >= 134 ? "Vendor specific" : "Unknown"), saf); nexthop_len = tvb_get_guint8(tvb, o + i + aoff + 3); - ti = proto_tree_add_text(subtree2, tvb, o + i + aoff + 3, - nexthop_len + 1, + subtree3 = proto_tree_add_subtree_format(subtree2, tvb, o + i + aoff + 3, + nexthop_len + 1, ett_bgp_mp_nhna, NULL, "Next hop network address (%d byte%s)", nexthop_len, plurality(nexthop_len, "", "s")); - subtree3 = proto_item_add_subtree(ti, ett_bgp_mp_nhna); /* * The addresses don't contain lengths, so if we @@ -6032,10 +6025,9 @@ dissect_bgp_update(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo) ssa_type = tvb_get_ntohs(tvb, q) & BGP_SSA_TYPE; ssa_len = tvb_get_ntohs(tvb, q + 2); - ti = proto_tree_add_text(subtree2, tvb, q, MIN(ssa_len + 4, end - q), - "%s Information", + subtree3 = proto_tree_add_subtree_format(subtree2, tvb, q, MIN(ssa_len + 4, end - q), + ett_bgp_ssa, NULL, "%s Information", val_to_str_const(ssa_type, bgp_ssa_type, "Unknown SSA")); - subtree3 = proto_item_add_subtree(ti, ett_bgp_ssa); proto_tree_add_item(subtree3, hf_bgp_ssa_t, tvb, q, 1, ENC_BIG_ENDIAN); @@ -6057,8 +6049,7 @@ dissect_bgp_update(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo) proto_tree_add_item(subtree3, hf_bgp_ssa_l2tpv3_pref, tvb, q + 4, 2, ENC_BIG_ENDIAN); - ti = proto_tree_add_text(subtree3, tvb, q + 6, 1, "Flags"); - subtree4 = proto_item_add_subtree(ti, ett_bgp_ssa_subtree) ; + subtree4 = proto_tree_add_subtree(subtree3, tvb, q + 6, 1, ett_bgp_ssa_subtree, NULL, "Flags"); proto_tree_add_item(subtree4, hf_bgp_ssa_l2tpv3_s, tvb, q + 6, 1, ENC_BIG_ENDIAN); proto_tree_add_item(subtree4, hf_bgp_ssa_l2tpv3_unused, tvb, @@ -6101,22 +6092,20 @@ dissect_bgp_update(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo) q = o + i + aoff; end = o + i + aoff + tlen; - ti = proto_tree_add_text(subtree2, tvb, q, tlen, "TLV Encodings"); - subtree3 = proto_item_add_subtree(ti, ett_bgp_tunnel_tlv); + subtree3 = proto_tree_add_subtree(subtree2, tvb, q, tlen, ett_bgp_tunnel_tlv, NULL, "TLV Encodings"); while (q < end) { encaps_tunnel_type = tvb_get_ntohs(tvb, q); encaps_tunnel_len = tvb_get_ntohs(tvb, q + 2); - ti = proto_tree_add_text(subtree3, tvb, q, encaps_tunnel_len + 4, "%s (%u bytes)", + subtree4 = proto_tree_add_subtree_format(subtree3, tvb, q, encaps_tunnel_len + 4, + ett_bgp_tunnel_tlv_subtree, NULL, "%s (%u bytes)", val_to_str_const(encaps_tunnel_type, bgp_attr_tunnel_type, "Unknown"), encaps_tunnel_len + 4); - subtree4 = proto_item_add_subtree(ti, ett_bgp_tunnel_tlv_subtree); proto_tree_add_item(subtree4, hf_bgp_update_encaps_tunnel_tlv_type, tvb, q, 2, ENC_NA); proto_tree_add_item(subtree4, hf_bgp_update_encaps_tunnel_tlv_len, tvb, q + 2, 2, ENC_NA); - ti = proto_tree_add_text(subtree4, tvb, q + 4, encaps_tunnel_len, "Sub-TLV Encodings"); - subtree5 = proto_item_add_subtree(ti, ett_bgp_tunnel_subtlv); + subtree5 = proto_tree_add_subtree(subtree4, tvb, q + 4, encaps_tunnel_len, ett_bgp_tunnel_subtlv, NULL, "Sub-TLV Encodings"); q += 4; j = q + encaps_tunnel_len; @@ -6124,8 +6113,8 @@ dissect_bgp_update(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo) encaps_tunnel_subtype = tvb_get_guint8(tvb, q); encaps_tunnel_sublen = tvb_get_guint8(tvb, q + 1); - ti = proto_tree_add_text(subtree5, tvb, q, encaps_tunnel_sublen + 2, "%s (%u bytes)", val_to_str_const(encaps_tunnel_subtype, subtlv_type, "Unknown"), encaps_tunnel_sublen + 2); - subtree6 = proto_item_add_subtree(ti, ett_bgp_tunnel_tlv_subtree); + subtree6 = proto_tree_add_subtree_format(subtree5, tvb, q, encaps_tunnel_sublen + 2, ett_bgp_tunnel_tlv_subtree, NULL, + "%s (%u bytes)", val_to_str_const(encaps_tunnel_subtype, subtlv_type, "Unknown"), encaps_tunnel_sublen + 2); proto_tree_add_item(subtree6, hf_bgp_update_encaps_tunnel_subtlv_type, tvb, q, 1, ENC_NA); proto_tree_add_item(subtree6, hf_bgp_update_encaps_tunnel_subtlv_len, tvb, q + 1, 1, ENC_NA); diff --git a/epan/dissectors/packet-bitcoin.c b/epan/dissectors/packet-bitcoin.c index d59bf277c9..1704a072e1 100644 --- a/epan/dissectors/packet-bitcoin.c +++ b/epan/dissectors/packet-bitcoin.c @@ -714,8 +714,7 @@ dissect_bitcoin_msg_getdata(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *t { proto_tree *subtree; - ti = proto_tree_add_text(tree, tvb, offset, 36, "Inventory vector"); - subtree = proto_item_add_subtree(ti, ett_getdata_list); + subtree = proto_tree_add_subtree(tree, tvb, offset, 36, ett_getdata_list, NULL, "Inventory vector"); proto_tree_add_item(subtree, &hfi_msg_getdata_type, tvb, offset, 4, ENC_LITTLE_ENDIAN); offset += 4; diff --git a/epan/dissectors/packet-bmc.c b/epan/dissectors/packet-bmc.c index cde5f729dd..03ad16e59d 100644 --- a/epan/dissectors/packet-bmc.c +++ b/epan/dissectors/packet-bmc.c @@ -184,8 +184,8 @@ dissect_bmc_schedule_message(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree * proto_tree_add_item(tree, hf_bmc_new_message_bitmap, tvb, offset, new_message_bitmap_len, ENC_NA); offset += new_message_bitmap_len; - ti = proto_tree_add_text(tree, tvb, offset, 0, "Message Description" ); - message_description_tree = proto_item_add_subtree(ti, ett_bmc_message_description); + message_description_tree = proto_tree_add_subtree(tree, tvb, offset, 0, + ett_bmc_message_description, &ti, "Message Description" ); saved_offset = offset; bit=1; diff --git a/epan/dissectors/packet-bofl.c b/epan/dissectors/packet-bofl.c index 9eb9308e6d..96be5eb8ea 100644 --- a/epan/dissectors/packet-bofl.c +++ b/epan/dissectors/packet-bofl.c @@ -63,7 +63,7 @@ static void dissect_bofl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { proto_item *ti; - proto_tree *bofl_tree = NULL; + proto_tree *bofl_tree; gint len; guint32 pdu, sequence; @@ -71,29 +71,25 @@ dissect_bofl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_clear(pinfo->cinfo, COL_INFO); - if (tree) { - ti = proto_tree_add_item(tree, proto_bofl, tvb, 0, -1, ENC_NA); - bofl_tree = proto_item_add_subtree(ti, ett_bofl); - } + ti = proto_tree_add_item(tree, proto_bofl, tvb, 0, -1, ENC_NA); + bofl_tree = proto_item_add_subtree(ti, ett_bofl); pdu = tvb_get_ntohl(tvb, 0); col_add_fstr(pinfo->cinfo, COL_INFO, "PDU: 0x%08x", pdu); - if (tree) - proto_tree_add_uint(bofl_tree, hf_bofl_pdu, tvb, 0, 4, pdu); + proto_tree_add_uint(bofl_tree, hf_bofl_pdu, tvb, 0, 4, pdu); sequence = tvb_get_ntohl(tvb, 4); col_append_fstr(pinfo->cinfo, COL_INFO, " Sequence: %u", sequence); - if (tree) { - proto_tree_add_uint(bofl_tree, hf_bofl_sequence, tvb, 4, 4, sequence); - - len = tvb_length_remaining(tvb, 8); - if (len > 0) - proto_tree_add_text(bofl_tree, tvb, 8, len, - "Padding (%d byte)", len); - } + + proto_tree_add_uint(bofl_tree, hf_bofl_sequence, tvb, 4, 4, sequence); + + len = tvb_length_remaining(tvb, 8); + if (len > 0) + proto_tree_add_text(bofl_tree, tvb, 8, len, + "Padding (%d byte)", len); } diff --git a/epan/dissectors/packet-bootp.c b/epan/dissectors/packet-bootp.c index ca3cf52c83..2825f37b89 100644 --- a/epan/dissectors/packet-bootp.c +++ b/epan/dissectors/packet-bootp.c @@ -4094,7 +4094,8 @@ dissect_packetcable_mta_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len raw_val = tvb_get_ntohs(tvb, subopt_off); tvb_memcpy(tvb, asc_val, subopt_off, 2); - mib_ti = proto_tree_add_text(subtree, tvb, subopt_off, 2, "%s (%s)", + subtree2 = proto_tree_add_subtree_format(subtree, tvb, subopt_off, 2, + ett_bootp_option, &mib_ti, "%s (%s)", val_to_str_const(raw_val, pkt_mdc_mib_orgs, "Unknown"), asc_val); if (subopt_off > off + 4 + 2) { proto_item_append_text(ti, ", "); @@ -4111,7 +4112,6 @@ dissect_packetcable_mta_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len switch (raw_val) { case PKT_MDC_MIB_CL: - subtree2 = proto_item_add_subtree(mib_ti, ett_bootp_option); for (i = 0; i < 8; i++) { if (mib_val & pkt_mdc_cl_mib_vals[i].value) { @@ -4123,8 +4123,6 @@ dissect_packetcable_mta_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len break; case PKT_MDC_MIB_IETF: - subtree2 = proto_item_add_subtree(mib_ti, ett_bootp_option); - for (i = 0; i < 8; i++) { if (mib_val & pkt_mdc_ietf_mib_vals[i].value) { decode_bitfield_value(bit_fld, mib_val, pkt_mdc_ietf_mib_vals[i].value, 8); @@ -4135,8 +4133,6 @@ dissect_packetcable_mta_cap(proto_tree *v_tree, tvbuff_t *tvb, int voff, int len break; case PKT_MDC_MIB_EURO: - subtree2 = proto_item_add_subtree(mib_ti, ett_bootp_option); - for (i = 0; i < 8; i++) { if (mib_val & pkt_mdc_euro_mib_vals[i].value) { decode_bitfield_value(bit_fld, mib_val, pkt_mdc_euro_mib_vals[i].value, 8); diff --git a/epan/dissectors/packet-bpdu.c b/epan/dissectors/packet-bpdu.c index a8151876c3..895998b3ae 100644 --- a/epan/dissectors/packet-bpdu.c +++ b/epan/dissectors/packet-bpdu.c @@ -272,10 +272,10 @@ dissect_bpdu_pvst_tlv(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb) { tlv_type = tvb_get_ntohs(tvb, offset); tlv_length = tvb_get_ntohs(tvb, offset + 2); - ti = proto_tree_add_text(tree, tvb, offset, 4 + tlv_length, "%s", + tlv_tree = proto_tree_add_subtree(tree, tvb, offset, 4 + tlv_length, + ett_bpdu_pvst_tlv, NULL, val_to_str(tlv_type, bpdu_pvst_tlv_vals, "Unknown TLV type: 0x%04x")); - tlv_tree = proto_item_add_subtree(ti, ett_bpdu_pvst_tlv); proto_tree_add_item(tlv_tree, hf_bpdu_pvst_tlvtype, tvb, offset, 2, ENC_BIG_ENDIAN); tlv_length_item = proto_tree_add_item(tlv_tree, hf_bpdu_pvst_tlvlength, tvb, offset + 2, 2, ENC_BIG_ENDIAN); @@ -356,15 +356,12 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp proto_tree *bpdu_tree; proto_tree *mstp_tree, *msti_tree, *spt_tree = NULL, *aux_mcid_tree = NULL, *agreement_tree = NULL; proto_item *bpdu_item; - proto_item *mstp_item, *msti_item, *spt_item = NULL, *aux_mcid_item = NULL, *agreement_item = NULL; + proto_item *agreement_item; proto_tree *flags_tree; proto_item *flags_item; proto_tree *root_id_tree; - proto_item *root_id_item; proto_tree *bridge_id_tree; - proto_item *bridge_id_item; proto_tree *cist_bridge_id_tree; - proto_item *cist_bridge_id_item; proto_item *hidden_item; const char *sep; @@ -594,13 +591,13 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp * bpdu_use_system_id_extensions * */ if (bpdu_use_system_id_extensions) { - root_id_item = proto_tree_add_text(bpdu_tree, tvb, + root_id_tree = proto_tree_add_subtree_format(bpdu_tree, tvb, BPDU_ROOT_IDENTIFIER, 8, + ett_root_id, NULL, "Root Identifier: %d / %d / %s", root_identifier_bridge_priority, root_identifier_system_id_extension, root_identifier_mac_str); - root_id_tree = proto_item_add_subtree(root_id_item, ett_root_id); proto_tree_add_uint(root_id_tree, hf_bpdu_root_prio, tvb, BPDU_ROOT_IDENTIFIER , 1, root_identifier_bridge_priority); @@ -611,12 +608,12 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp BPDU_ROOT_IDENTIFIER + 2, 6, ENC_NA); } else { - root_id_item = proto_tree_add_text(bpdu_tree, tvb, + root_id_tree = proto_tree_add_subtree_format(bpdu_tree, tvb, BPDU_ROOT_IDENTIFIER, 8, + ett_root_id, NULL, "Root Identifier: %d / %s", root_identifier_bridge_priority, root_identifier_mac_str); - root_id_tree = proto_item_add_subtree(root_id_item, ett_root_id); proto_tree_add_uint(root_id_tree, hf_bpdu_root_prio, tvb, BPDU_ROOT_IDENTIFIER , 2, root_identifier_bridge_priority); @@ -632,13 +629,13 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp * bpdu_use_system_id_extensions * */ if (bpdu_use_system_id_extensions) { - bridge_id_item = proto_tree_add_text(bpdu_tree, tvb, + bridge_id_tree = proto_tree_add_subtree_format(bpdu_tree, tvb, BPDU_BRIDGE_IDENTIFIER, 8, + ett_bridge_id, NULL, "Bridge Identifier: %d / %d / %s", bridge_identifier_bridge_priority, bridge_identifier_system_id_extension, bridge_identifier_mac_str); - bridge_id_tree = proto_item_add_subtree(bridge_id_item, ett_bridge_id); proto_tree_add_uint(bridge_id_tree, hf_bpdu_bridge_prio, tvb, BPDU_BRIDGE_IDENTIFIER , 1, bridge_identifier_bridge_priority); @@ -648,12 +645,12 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp proto_tree_add_item(bridge_id_tree, hf_bpdu_bridge_mac, tvb, BPDU_BRIDGE_IDENTIFIER + 2, 6, ENC_NA); } else { - bridge_id_item = proto_tree_add_text(bpdu_tree, tvb, + bridge_id_tree = proto_tree_add_subtree_format(bpdu_tree, tvb, BPDU_BRIDGE_IDENTIFIER, 8, + ett_bridge_id, NULL, "Bridge Identifier: %d / %s", bridge_identifier_bridge_priority, bridge_identifier_mac_str); - bridge_id_tree = proto_item_add_subtree(bridge_id_item, ett_bridge_id); proto_tree_add_uint(bridge_id_tree, hf_bpdu_bridge_prio, tvb, BPDU_BRIDGE_IDENTIFIER , 2, bridge_identifier_bridge_priority); @@ -759,9 +756,8 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp set_actual_length(tvb, BPDU_MSTI + total_msti_length); } - mstp_item = proto_tree_add_text(bpdu_tree, tvb, BPDU_VERSION_3_LENGTH, - -1, "MST Extension"); - mstp_tree = proto_item_add_subtree(mstp_item, ett_mstp); + mstp_tree = proto_tree_add_subtree(bpdu_tree, tvb, BPDU_VERSION_3_LENGTH, + -1, ett_mstp, NULL, "MST Extension"); proto_tree_add_item(mstp_tree, hf_bpdu_mst_config_format_selector, tvb, BPDU_MST_CONFIG_FORMAT_SELECTOR, 1, ENC_BIG_ENDIAN); @@ -789,13 +785,13 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp cist_bridge_identifier_system_id_extension = cist_bridge_identifier_bridge_priority & 0x0fff; cist_bridge_identifier_bridge_priority &= 0xf000; - cist_bridge_id_item = proto_tree_add_text(mstp_tree, tvb, + cist_bridge_id_tree = proto_tree_add_subtree_format(mstp_tree, tvb, BPDU_CIST_BRIDGE_IDENTIFIER, 8, + ett_cist_bridge_id, NULL, "CIST Bridge Identifier: %d / %d / %s", cist_bridge_identifier_bridge_priority, cist_bridge_identifier_system_id_extension, cist_bridge_identifier_mac_str); - cist_bridge_id_tree = proto_item_add_subtree(cist_bridge_id_item, ett_cist_bridge_id); proto_tree_add_uint(cist_bridge_id_tree, hf_bpdu_cist_bridge_prio, tvb, BPDU_CIST_BRIDGE_IDENTIFIER , 1, cist_bridge_identifier_bridge_priority); @@ -806,12 +802,12 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp BPDU_CIST_BRIDGE_IDENTIFIER + 2, 6, ENC_NA); } else { - cist_bridge_id_item = proto_tree_add_text(mstp_tree, tvb, + cist_bridge_id_tree = proto_tree_add_subtree_format(mstp_tree, tvb, BPDU_CIST_BRIDGE_IDENTIFIER, 8, + ett_cist_bridge_id, NULL, "CIST Bridge Identifier: %d / %s", cist_bridge_identifier_bridge_priority, cist_bridge_identifier_mac_str); - cist_bridge_id_tree = proto_item_add_subtree(cist_bridge_id_item, ett_cist_bridge_id); proto_tree_add_uint(cist_bridge_id_tree, hf_bpdu_cist_bridge_prio, tvb, BPDU_CIST_BRIDGE_IDENTIFIER , 2, cist_bridge_identifier_bridge_priority); @@ -833,13 +829,13 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp cist_bridge_identifier_system_id_extension = cist_bridge_identifier_bridge_priority & 0x0fff; cist_bridge_identifier_bridge_priority &= 0xf000; - cist_bridge_id_item = proto_tree_add_text(mstp_tree, tvb, + cist_bridge_id_tree = proto_tree_add_subtree_format(mstp_tree, tvb, ALT_BPDU_CIST_BRIDGE_IDENTIFIER, 8, + ett_cist_bridge_id, NULL, "CIST Bridge Identifier: %d / %d / %s", cist_bridge_identifier_bridge_priority, cist_bridge_identifier_system_id_extension, cist_bridge_identifier_mac_str); - cist_bridge_id_tree = proto_item_add_subtree(cist_bridge_id_item, ett_cist_bridge_id); proto_tree_add_uint(cist_bridge_id_tree, hf_bpdu_cist_bridge_prio, tvb, ALT_BPDU_CIST_BRIDGE_IDENTIFIER , 1, cist_bridge_identifier_bridge_priority); @@ -849,12 +845,12 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp proto_tree_add_item(cist_bridge_id_tree, hf_bpdu_cist_bridge_mac, tvb, ALT_BPDU_CIST_BRIDGE_IDENTIFIER + 2, 6, ENC_NA); } else { - cist_bridge_id_item = proto_tree_add_text(mstp_tree, tvb, + cist_bridge_id_tree = proto_tree_add_subtree_format(mstp_tree, tvb, ALT_BPDU_CIST_BRIDGE_IDENTIFIER, 8, + ett_cist_bridge_id, NULL, "CIST Bridge Identifier: %d / %s", cist_bridge_identifier_bridge_priority, cist_bridge_identifier_mac_str); - cist_bridge_id_tree = proto_item_add_subtree(cist_bridge_id_item, ett_cist_bridge_id); proto_tree_add_uint(cist_bridge_id_tree, hf_bpdu_cist_bridge_prio, tvb, ALT_BPDU_CIST_BRIDGE_IDENTIFIER , 2, cist_bridge_identifier_bridge_priority); @@ -885,12 +881,11 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp tvb_get_guint8(tvb, offset+ MSTI_REGIONAL_ROOT+1); msti_regional_root_mac_str = tvb_ether_to_str(tvb, offset + MSTI_REGIONAL_ROOT + 2); - msti_item = proto_tree_add_text(mstp_tree, tvb, offset, 16, + msti_tree = proto_tree_add_subtree_format(mstp_tree, tvb, offset, 16, ett_msti, NULL, "MSTID %d, Regional Root Identifier %d / %s", msti_regional_root_mstid, msti_regional_root_priority, msti_regional_root_mac_str); - msti_tree = proto_item_add_subtree(msti_item, ett_msti); /* flags */ flags = tvb_get_guint8(tvb, offset+MSTI_FLAGS); @@ -969,12 +964,11 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp tvb_get_guint8(tvb, offset+ ALT_MSTI_REGIONAL_ROOT+1); msti_regional_root_mac_str = tvb_ether_to_str(tvb, offset+ ALT_MSTI_REGIONAL_ROOT + 2); - msti_item = proto_tree_add_text(mstp_tree, tvb, offset, 16, + msti_tree = proto_tree_add_subtree_format(mstp_tree, tvb, offset, 16, ett_msti, NULL, "MSTID %d, Regional Root Identifier %d / %s", msti_regional_root_mstid, msti_regional_root_priority, msti_regional_root_mac_str); - msti_tree = proto_item_add_subtree(msti_item, ett_msti); msti_mstid = tvb_get_ntohs(tvb, offset+ ALT_MSTI_MSTID); proto_tree_add_text(msti_tree, tvb, offset+ALT_MSTI_MSTID, 2, @@ -1073,18 +1067,15 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp /* version 4 length is 55 or more. */ if (version_4_length >= 53) { - spt_item = proto_tree_add_text(bpdu_tree, tvb, - bpdu_version_4_length, -1, "SPT Extension"); - - spt_tree = proto_item_add_subtree(spt_item, ett_spt); + spt_tree = proto_tree_add_subtree(bpdu_tree, tvb, bpdu_version_4_length, -1, + ett_spt, NULL, "SPT Extension"); spt_offset = (bpdu_version_4_length + 2); /* Aux MCID: */ - aux_mcid_item = proto_tree_add_text(spt_tree, tvb, spt_offset, - MCID_LEN, "MCID Data"); - aux_mcid_tree = proto_item_add_subtree(aux_mcid_item, ett_aux_mcid); + aux_mcid_tree = proto_tree_add_subtree(spt_tree, tvb, spt_offset, + MCID_LEN, ett_aux_mcid, NULL, "MCID Data"); proto_tree_add_item(aux_mcid_tree, hf_bpdu_spt_config_format_selector, tvb, spt_offset, 1, @@ -1100,9 +1091,8 @@ dissect_bpdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean is_bp spt_offset += MCID_LEN; /* Agreement Data */ - agreement_item = proto_tree_add_text(spt_tree, tvb, spt_offset, - -1, "Agreement Data"); - agreement_tree = proto_item_add_subtree(agreement_item, ett_agreement); + agreement_tree = proto_tree_add_subtree(spt_tree, tvb, spt_offset, + -1, ett_agreement, &agreement_item, "Agreement Data"); spt_agree_data = tvb_get_guint8(tvb, spt_offset); diff --git a/epan/dissectors/packet-bssap.c b/epan/dissectors/packet-bssap.c index 3374933085..f39918b969 100644 --- a/epan/dissectors/packet-bssap.c +++ b/epan/dissectors/packet-bssap.c @@ -435,15 +435,12 @@ dissect_bssap_data_param(tvbuff_t *tvb, packet_info *pinfo, static void dissect_bssap_dlci_param(tvbuff_t *tvb, proto_tree *tree, guint16 length) { - proto_item *dlci_item; proto_tree *dlci_tree; guint8 oct; - dlci_item = - proto_tree_add_text(tree, tvb, 0, length, - "Data Link Connection Identifier"); - - dlci_tree = proto_item_add_subtree(dlci_item, ett_bssap_dlci); + dlci_tree = + proto_tree_add_subtree(tree, tvb, 0, length, + ett_bssap_dlci, NULL, "Data Link Connection Identifier"); oct = tvb_get_guint8(tvb, 0); diff --git a/epan/dissectors/packet-bssgp.c b/epan/dissectors/packet-bssgp.c index 9483e2d684..5a083d652a 100644 --- a/epan/dissectors/packet-bssgp.c +++ b/epan/dissectors/packet-bssgp.c @@ -2146,7 +2146,7 @@ static guint16 de_bssgp_pfc_flow_ctrl(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree; - proto_item *pi, *ti2; + proto_item *pi; guint32 curr_offset; guint8 num_pfc, i, pfc_len; @@ -2172,9 +2172,8 @@ de_bssgp_pfc_flow_ctrl(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, b_pfc_included = (pfc_len == 6); for (i = 0; i < num_pfc; i++) { - ti2 = proto_tree_add_text(tree, tvb, curr_offset, pfc_len, - "PFC (%u)", i + 1); - pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfc_flow_control_parameters_pfc); + pfc_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, pfc_len, + ett_bssgp_pfc_flow_control_parameters_pfc, NULL, "PFC (%u)", i + 1); /* PFI: Packet Flow Identifier. * Coded as the value part of the Packet Flow Identifier information element in @@ -2409,7 +2408,6 @@ static value_string_ext bssgp_mbms_num_ra_ids_vals_ext = VALUE_STRING_EXT_INIT(b static guint16 de_bssgp_mbms_ra_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { - proto_item *ti; proto_tree *rai_tree; guint32 curr_offset; guint8 num_ra_ids; @@ -2423,8 +2421,8 @@ de_bssgp_mbms_ra_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, g /* octet 4 - 11 Routing Area Identification 1 (etc)*/ for (i = 0; i < num_ra_ids; i++) { - ti = proto_tree_add_text(tree, tvb, curr_offset, 8, "Routing Area Identification (%u)", i + 1); - rai_tree = proto_item_add_subtree(ti, ett_bssgp_ra_id); + rai_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 8, + ett_bssgp_ra_id, NULL, "Routing Area Identification (%u)", i + 1); /* The element is coded as the Routing Area Identification information element in * 3GPP TS 24.008, not including 3GPP TS 24.008 IEI and 3GPP TS 24.008 length indicator. @@ -2520,7 +2518,7 @@ static guint16 de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree, *pft_tree, *abqp_tree, *arp_tree, *t10_tree; - proto_item *pi, *ti2; + proto_item *pi; guint32 curr_offset; guint8 num_pfc, i, pfc_len; @@ -2544,9 +2542,8 @@ de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pi pfc_len = (len - 1) / num_pfc; for (i = 0; i < num_pfc; i++) { - ti2 = proto_tree_add_text(tree, tvb, curr_offset, pfc_len, - "PFC (%u)", i + 1); - pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list); + pfc_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, pfc_len, + ett_bssgp_pfcs_to_be_set_up_list, NULL, "PFC (%u)", i + 1); de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0); curr_offset++; @@ -2554,8 +2551,8 @@ de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pi /* PFT: Packet Flow Timer. Coded as the GPRS Timer information element, * see sub-clause 11.3.44. */ - proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Packet Flow Timer(PFT)"); - pft_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_pft); + pft_tree = proto_tree_add_subtree(pfc_tree, tvb, curr_offset, 3, + ett_bssgp_pfcs_to_be_set_up_list_pft, NULL, "Packet Flow Timer(PFT)"); proto_tree_add_item(pft_tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN); proto_tree_add_item(pft_tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN); curr_offset += 3; @@ -2563,8 +2560,8 @@ de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pi /* ABQP: Aggregate BSS QoS Profile. * Coded as the Aggregate BSS QoS Profile information element, see sub-clause 11.3.43. */ - proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Aggregate BSS QoS Profile(ABQP)"); - abqp_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_abqp); + abqp_tree = proto_tree_add_subtree(pfc_tree, tvb, curr_offset, 3, + ett_bssgp_pfcs_to_be_set_up_list_abqp, NULL, "Aggregate BSS QoS Profile(ABQP)"); /* Unsure about length 16 */ curr_offset = curr_offset + de_sm_qos(tvb, abqp_tree, pinfo, curr_offset, 16, NULL, 0); @@ -2573,8 +2570,8 @@ de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pi * This information element is optionally included. */ if(pfc_len>17){ - proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "Allocation/Retention Priority"); - arp_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_arp); + arp_tree = proto_tree_add_subtree(pfc_tree, tvb, curr_offset, 3, + ett_bssgp_pfcs_to_be_set_up_list_arp, NULL, "Allocation/Retention Priority"); curr_offset = curr_offset + be_prio(tvb, arp_tree, pinfo, curr_offset, 1, NULL, 0); } /* T10: T10. @@ -2583,8 +2580,8 @@ de_bssgp_pfcs_to_be_set_up_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pi * is present and if queuing is allowed for the PFC. */ if(pfc_len>18){ - proto_tree_add_text(pfc_tree, tvb, curr_offset, 3, "T10"); - t10_tree = proto_item_add_subtree(ti2, ett_bssgp_pfcs_to_be_set_up_list_t10); + t10_tree = proto_tree_add_subtree(pfc_tree, tvb, curr_offset, 3, + ett_bssgp_pfcs_to_be_set_up_list_t10, NULL, "T10"); proto_tree_add_item(t10_tree, hf_bssgp_unit_val, tvb, curr_offset, 3, ENC_BIG_ENDIAN); proto_tree_add_item(t10_tree, hf_bssgp_gprs_timer, tvb, curr_offset, 3, ENC_BIG_ENDIAN); curr_offset += 3; @@ -2599,7 +2596,7 @@ static guint16 de_bssgp_list_of_setup_pfcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree; - proto_item *pi, *ti2; + proto_item *pi; guint32 curr_offset; guint8 num_pfc, i; @@ -2621,9 +2618,8 @@ de_bssgp_list_of_setup_pfcs(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo return (curr_offset-offset); for (i = 0; i < num_pfc; i++) { - ti2 = proto_tree_add_text(tree, tvb, curr_offset, 1, - "PFC (%u)", i + 1); - pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_list_of_setup_pfcs); + pfc_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 1, + ett_bssgp_list_of_setup_pfcs, NULL, "PFC (%u)", i + 1); de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0); curr_offset++; @@ -2949,7 +2945,7 @@ static guint16 de_bssgp_active_pfcs_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U_, guint32 offset, guint len _U_, gchar *add_string _U_, int string_len _U_) { proto_tree *pfc_tree; - proto_item *pi, *ti2; + proto_item *pi; guint32 curr_offset; guint8 num_pfc, i; @@ -2971,8 +2967,8 @@ de_bssgp_active_pfcs_list(tvbuff_t *tvb, proto_tree *tree, packet_info *pinfo _U return (curr_offset-offset); for (i = 0; i < num_pfc; i++) { - ti2 = proto_tree_add_text(tree, tvb, curr_offset, 1, "PFC (%u)", i + 1); - pfc_tree = proto_item_add_subtree(ti2, ett_bssgp_pfc_flow_control_parameters_pfc); + pfc_tree = proto_tree_add_subtree_format(tree, tvb, curr_offset, 1, + ett_bssgp_pfc_flow_control_parameters_pfc, NULL, "PFC (%u)", i + 1); de_sm_pflow_id(tvb, pfc_tree, pinfo, curr_offset, 1, NULL, 0); curr_offset++; |