From f5e2b4293d420fe8438075ebc8db76ac5f8b9747 Mon Sep 17 00:00:00 2001 From: Michael Mann Date: Fri, 20 Jun 2014 17:34:10 -0400 Subject: [PATCH] convert to proto_tree_add_subtree[_format] Change-Id: I358bfaa4e5d40cd01b766f614f8bd0dbaf611dd0 Reviewed-on: https://code.wireshark.org/review/2508 Reviewed-by: Evan Huus Reviewed-by: Michael Mann --- epan/dissectors/file-elf.c | 87 ++++++++------------- epan/dissectors/file-gif.c | 6 +- epan/dissectors/file-mp4.c | 3 +- epan/dissectors/file-png.c | 7 +- epan/dissectors/packet-3com-njack.c | 7 +- epan/dissectors/packet-3com-xns.c | 8 +- epan/dissectors/packet-3g-a11.c | 114 +++++++++++----------------- epan/dissectors/packet-6lowpan.c | 89 +++++++--------------- epan/dissectors/packet-9p.c | 6 +- epan/dissectors/packet-a21.c | 18 ++--- epan/dissectors/packet-acn.c | 30 ++++---- 11 files changed, 140 insertions(+), 235 deletions(-) diff --git a/epan/dissectors/file-elf.c b/epan/dissectors/file-elf.c index 9f8384116f..145f7772a2 100644 --- a/epan/dissectors/file-elf.c +++ b/epan/dissectors/file-elf.c @@ -848,7 +848,6 @@ dissect_eh_frame_hdr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_ gint offset, gint segment_size _U_, gint register_size, guint machine_encoding) { proto_item *item; - proto_item *table_item; proto_tree *table_tree; guint8 format; gint efp_length; @@ -931,15 +930,14 @@ dissect_eh_frame_hdr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_ i_entry = 0; - table_item = proto_tree_add_text(segment_tree, tvb, offset, value_guard(fde_count * table_entry_length * 2), "Binary Search Table"); - table_tree = proto_item_add_subtree(table_item, ett_binary_table); + table_tree = proto_tree_add_subtree(segment_tree, tvb, offset, value_guard(fde_count * table_entry_length * 2), + ett_binary_table, NULL, "Binary Search Table"); while (++i_entry <= fde_count) { - proto_item *entry_item; proto_tree *entry_tree; - entry_item = proto_tree_add_text(table_tree, tvb, offset, table_entry_length * 2, "Binary Table Entry #%u", i_entry); - entry_tree = proto_item_add_subtree(entry_item, ett_binary_table_entry); + entry_tree = proto_tree_add_subtree_format(table_tree, tvb, offset, table_entry_length * 2, ett_binary_table_entry, + NULL, "Binary Table Entry #%u", i_entry); proto_tree_add_item(entry_tree, hf_elf_eh_frame_hdr_binary_search_table_entry_initial_location, tvb, offset, table_entry_length, machine_encoding); offset += table_entry_length; @@ -957,9 +955,7 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree gint offset, gint segment_size _U_, gint register_size _U_, guint machine_encoding) { proto_tree *record_tree; - proto_item *record_item; proto_tree *entry_tree; - proto_item *entry_item; guint64 length; guint64 length_remaining; guint64 unsigned_value; @@ -981,8 +977,8 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree length_remaining = length; - record_item = proto_tree_add_text(segment_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)), "Common Information Entry"); - record_tree = proto_item_add_subtree(record_item, ett_elf_cie); + record_tree = proto_tree_add_subtree(segment_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)), + ett_elf_cie, NULL, "Common Information Entry"); proto_tree_add_item(record_tree, hf_elf_eh_frame_length, tvb, offset, 4, machine_encoding); offset += 4; @@ -1035,8 +1031,8 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree proto_tree_add_item(record_tree, hf_elf_eh_frame_initial_instructions, tvb, offset, value_guard(length_remaining), machine_encoding); offset += value_guard(length_remaining); - record_item = proto_tree_add_text(segment_tree, tvb, offset, value_guard(segment_size - length - 4), "Frame Description Entries"); - record_tree = proto_item_add_subtree(record_item, ett_elf_fde); + record_tree = proto_tree_add_subtree(segment_tree, tvb, offset, value_guard(segment_size - length - 4), + ett_elf_fde, NULL, "Frame Description Entries"); is_extended_length = FALSE; entry_number = 1; @@ -1050,8 +1046,8 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree tvb_get_ntoh64(tvb, offset + 4) : tvb_get_letoh64(tvb, offset + 4); } - entry_item = proto_tree_add_text(record_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)), "Entry %i", entry_number); - entry_tree = proto_item_add_subtree(entry_item, ett_elf_entry); + entry_tree = proto_tree_add_subtree_format(record_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)), + ett_elf_entry, NULL, "Entry %i", entry_number); proto_tree_add_item(entry_tree, hf_elf_eh_frame_fde_length, tvb, offset, 4, machine_encoding); offset += 4; @@ -1106,11 +1102,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) proto_item *main_item; proto_tree *header_tree; proto_item *header_item; - proto_item *program_header_item; proto_tree *program_header_tree; - proto_item *section_header_item; proto_tree *section_header_tree; - proto_item *ph_entry_item; proto_tree *ph_entry_tree; proto_item *sh_entry_item; proto_tree *sh_entry_tree; @@ -1118,9 +1111,7 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) proto_tree *segment_tree; proto_item *generated_item; proto_tree *generated_tree; - proto_item *overlapping_item; proto_tree *overlapping_tree; - proto_item *blackhole_item; proto_tree *blackhole_tree; proto_item *entry_item; proto_tree *entry_tree; @@ -1164,8 +1155,7 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) main_item = proto_tree_add_item(tree, proto_elf, tvb, offset, -1, ENC_NA); main_tree = proto_item_add_subtree(main_item, ett_elf); - header_item = proto_tree_add_text(main_tree, tvb, offset, 1, "Header"); - header_tree = proto_item_add_subtree(header_item, ett_elf_header); + header_tree = proto_tree_add_subtree(main_tree, tvb, offset, 1, ett_elf_header, &header_item, "Header"); /* e_ident */ proto_tree_add_item(header_tree, hf_elf_magic_bytes, tvb, offset, sizeof(magic), ENC_NA); @@ -1267,13 +1257,11 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) tvb_get_ntohs(tvb, offset) : tvb_get_letohs(tvb, offset); /*offset += 2;*/ - program_header_item = proto_tree_add_text(main_tree, tvb, value_guard(phoff), - phnum * phentsize, "Program Header Table [%d entries]", phnum); - program_header_tree = proto_item_add_subtree(program_header_item, ett_elf_program_header); + program_header_tree = proto_tree_add_subtree_format(main_tree, tvb, value_guard(phoff), + phnum * phentsize, ett_elf_program_header, NULL, "Program Header Table [%d entries]", phnum); - section_header_item = proto_tree_add_text(main_tree, tvb, value_guard(shoff), - shnum * shentsize, "Section Header Table [%d entries]", shnum); - section_header_tree = proto_item_add_subtree(section_header_item, ett_elf_section_header); + section_header_tree = proto_tree_add_subtree_format(main_tree, tvb, value_guard(shoff), + shnum * shentsize, ett_elf_section_header, NULL, "Section Header Table [%d entries]", shnum); file_size = ehsize + phnum * phentsize + shnum * shentsize; @@ -1306,20 +1294,17 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) p_type = (machine_encoding == ENC_BIG_ENDIAN) ? tvb_get_ntohl(tvb, offset) : tvb_get_letohl(tvb, offset); if (p_type >= 0x60000000 && p_type <= 0x6FFFFFFF) { - ph_entry_item = proto_tree_add_text(program_header_tree, tvb, offset, - phentsize, "Entry #%d: Operating System Specific (0x%08x)", phnum - i_16 - 1, p_type); - ph_entry_tree = proto_item_add_subtree(ph_entry_item, ett_elf_program_header); + ph_entry_tree = proto_tree_add_subtree_format(program_header_tree, tvb, offset, phentsize, ett_elf_program_header, NULL, + "Entry #%d: Operating System Specific (0x%08x)", phnum - i_16 - 1, p_type); proto_tree_add_item(ph_entry_tree, hf_elf_p_type_operating_system_specific, tvb, offset, 4, machine_encoding); } else if (p_type >= 0x70000000 && p_type <= 0x7FFFFFFF) { - ph_entry_item = proto_tree_add_text(program_header_tree, tvb, offset, - phentsize, "Entry #%d: Processor Specific (0x%08x)", phnum - i_16 - 1, p_type); - ph_entry_tree = proto_item_add_subtree(ph_entry_item, ett_elf_program_header); + ph_entry_tree = proto_tree_add_subtree_format(program_header_tree, tvb, offset, phentsize, ett_elf_program_header, NULL, + "Entry #%d: Processor Specific (0x%08x)", phnum - i_16 - 1, p_type); proto_tree_add_item(ph_entry_tree, hf_elf_p_type_processor_specific, tvb, offset, 4, machine_encoding); } else { - ph_entry_item = proto_tree_add_text(program_header_tree, tvb, offset, - phentsize, "Entry #%d: %s", phnum - i_16 - 1, + ph_entry_tree = proto_tree_add_subtree_format(program_header_tree, tvb, offset, phentsize, ett_elf_program_header, NULL, + "Entry #%d: %s", phnum - i_16 - 1, val_to_str_const(p_type, p_type_vals, "Unknown")); - ph_entry_tree = proto_item_add_subtree(ph_entry_item, ett_elf_program_header); proto_tree_add_item(ph_entry_tree, hf_elf_p_type, tvb, offset, 4, machine_encoding); } offset += 4; @@ -1467,9 +1452,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) i_16 = shnum; while (i_16-- > 0) { - sh_entry_item = proto_tree_add_text(section_header_tree, tvb, offset, - shentsize, "Entry #%d: ", shnum - i_16 - 1); - sh_entry_tree = proto_item_add_subtree(sh_entry_item, ett_elf_section_header); + sh_entry_tree = proto_tree_add_subtree_format(section_header_tree, tvb, offset, shentsize, + ett_elf_section_header, &sh_entry_item, "Entry #%d: ", shnum - i_16 - 1); proto_tree_add_item(sh_entry_tree, hf_elf_sh_name, tvb, offset, 4, machine_encoding); sh_name = (machine_encoding == ENC_BIG_ENDIAN) ? @@ -1590,9 +1574,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) segment_info[area_counter].name = section_name; area_counter += 1; - segment_item = proto_tree_add_text(sh_entry_tree, tvb, - value_guard(segment_offset), value_guard(segment_size), "Segment"); - segment_tree = proto_item_add_subtree(segment_item, ett_elf_segment); + segment_tree = proto_tree_add_subtree(sh_entry_tree, tvb, value_guard(segment_offset), + value_guard(segment_size), ett_elf_segment, &segment_item, "Segment"); if (g_strcmp0(section_name, ".eh_frame") == 0) { next_offset = dissect_eh_frame(tvb, pinfo, segment_tree, @@ -1610,9 +1593,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) if (sh_entsize > 0) { next_offset = value_guard(segment_offset); for (i = 1; i < (segment_size / sh_entsize) + 1; i += 1) { - entry_item = proto_tree_add_text(segment_tree, tvb, next_offset, - value_guard(sh_entsize), "Entry #%d", i); - entry_tree = proto_item_add_subtree(entry_item, ett_symbol_table_entry); + entry_tree = proto_tree_add_subtree_format(segment_tree, tvb, next_offset, + value_guard(sh_entsize), ett_symbol_table_entry, NULL, "Entry #%d", i); next_offset = dissect_dynamic(tvb, pinfo, entry_tree, entry_item, next_offset, register_size, machine_encoding); @@ -1624,9 +1606,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) if (sh_entsize > 0) { next_offset = value_guard(segment_offset); for (i = 1; i < (segment_size / sh_entsize) + 1; i += 1) { - entry_item = proto_tree_add_text(segment_tree, tvb, next_offset, - value_guard(sh_entsize), "Entry #%d", i); - entry_tree = proto_item_add_subtree(entry_item, ett_symbol_table_entry); + entry_tree = proto_tree_add_subtree_format(segment_tree, tvb, next_offset, + value_guard(sh_entsize), ett_symbol_table_entry, NULL, "Entry #%d", i); next_offset = dissect_symbol_table(tvb, pinfo, entry_tree, entry_item, next_offset, register_size, machine_encoding, (sh_type == 0x02) ? strtab_offset : dynstr_offset, @@ -1659,15 +1640,11 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) } /* Try to detect blackholes and overlapping segments */ - generated_item = proto_tree_add_text(main_tree, tvb, 0, 0, "Infos"); + generated_tree = proto_tree_add_subtree(main_tree, tvb, 0, 0, ett_elf_info, &generated_item, "Infos"); PROTO_ITEM_SET_GENERATED(generated_item); - generated_tree = proto_item_add_subtree(generated_item, ett_elf_info); - blackhole_item = proto_tree_add_text(generated_tree, tvb, 0, 0, "Backholes"); - blackhole_tree = proto_item_add_subtree(blackhole_item, ett_elf_black_holes); - - overlapping_item = proto_tree_add_text(generated_tree, tvb, 0, 0, "Overlapping"); - overlapping_tree = proto_item_add_subtree(overlapping_item, ett_elf_overlapping); + blackhole_tree = proto_tree_add_subtree(generated_tree, tvb, 0, 0, ett_elf_black_holes, NULL, "Backholes"); + overlapping_tree = proto_tree_add_subtree(generated_tree, tvb, 0, 0, ett_elf_overlapping, NULL, "Overlapping"); /* sorting... */ for (i = 0; i < area_counter; i += 1) { diff --git a/epan/dissectors/file-gif.c b/epan/dissectors/file-gif.c index 5c6a5cb19c..e8f9922089 100644 --- a/epan/dissectors/file-gif.c +++ b/epan/dissectors/file-gif.c @@ -371,7 +371,7 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) color_resolution = 1 + ((peek & 0x60) >> 4); image_bpp = 1 + (peek & 0x07); - ti = proto_tree_add_text(gif_tree, tvb, 10, 1, + subtree = proto_tree_add_subtree(gif_tree, tvb, 10, 1, ett_global_flags, &ti, "Global settings:"); if (color_map_present) proto_item_append_text(ti, " (Global color table present)"); @@ -379,7 +379,6 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) " (%u bit%s per color) (%u bit%s per pixel)", color_resolution, plurality(color_resolution, "", "s"), image_bpp, plurality(image_bpp, "", "s")); - subtree = proto_item_add_subtree(ti, ett_global_flags); proto_tree_add_item(subtree, &hfi_global_color_map_present, tvb, 10, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(subtree, &hfi_global_color_resolution, @@ -536,7 +535,7 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) color_resolution = 1 + ((peek & 0x60) >> 4); image_bpp = 1 + (peek & 0x07); - ti2 = proto_tree_add_text(subtree, tvb, offset, 1, + subtree2 = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_local_flags, &ti2, "Local settings:"); if (color_map_present) proto_item_append_text(ti2, " (Local color table present)"); @@ -544,7 +543,6 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_) " (%u bit%s per color) (%u bit%s per pixel)", color_resolution, plurality(color_resolution, "", "s"), image_bpp, plurality(image_bpp, "", "s")); - subtree2 = proto_item_add_subtree(ti2, ett_local_flags); proto_tree_add_item(subtree2, &hfi_local_color_map_present, tvb, offset, 1, ENC_LITTLE_ENDIAN); proto_tree_add_item(subtree2, &hfi_local_color_resolution, diff --git a/epan/dissectors/file-mp4.c b/epan/dissectors/file-mp4.c index c51c145be2..5a1feefcf0 100644 --- a/epan/dissectors/file-mp4.c +++ b/epan/dissectors/file-mp4.c @@ -301,9 +301,8 @@ dissect_mp4_box(guint32 parent_box_type _U_, box_type_str = tvb_get_string_enc(wmem_packet_scope(), tvb, offset+4, 4, ENC_ASCII|ENC_NA); - type_pi = proto_tree_add_text(tree, tvb, offset, -1, "%s (%s)", + box_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_mp4_box, &type_pi, "%s (%s)", val_to_str_const(box_type, box_types, "unknown"), box_type_str); - box_tree = proto_item_add_subtree(type_pi, ett_mp4_box); size_pi = proto_tree_add_item(box_tree, hf_mp4_box_size, tvb, offset, 4, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/file-png.c b/epan/dissectors/file-png.c index 4d19f19da8..6567b4ced9 100644 --- a/epan/dissectors/file-png.c +++ b/epan/dissectors/file-png.c @@ -457,7 +457,7 @@ dissect_png(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *da while(tvb_reported_length_remaining(tvb, offset) > 0){ guint32 len_field; - proto_item *chunk_it, *len_it; + proto_item *len_it; proto_tree *chunk_tree; guint32 type; guint8 *type_str; @@ -470,9 +470,8 @@ dissect_png(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *da tvb, offset+4, 4, ENC_ASCII|ENC_NA); /* 4 byte len field, 4 byte chunk type, 4 byte CRC */ - chunk_it = proto_tree_add_text(tree, tvb, offset, 4+4+len_field+4, "%s (%s)", - val_to_str_const(type, chunk_types, "unknown"), type_str); - chunk_tree = proto_item_add_subtree(chunk_it, ett_png_chunk); + chunk_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4+4+len_field+4, ett_png_chunk, NULL, + "%s (%s)", val_to_str_const(type, chunk_types, "unknown"), type_str); len_it = proto_tree_add_item(chunk_tree, &hfi_png_chunk_len, tvb, offset, 4, ENC_BIG_ENDIAN); diff --git a/epan/dissectors/packet-3com-njack.c b/epan/dissectors/packet-3com-njack.c index 1b45fd2b31..b2d728af98 100644 --- a/epan/dissectors/packet-3com-njack.c +++ b/epan/dissectors/packet-3com-njack.c @@ -383,7 +383,6 @@ dissect_tlvs(tvbuff_t *tvb, proto_tree *njack_tree, guint32 offset) { guint8 tlv_type; guint8 tlv_length; - proto_item *tlv_item; proto_item *tlv_tree; for (;;) { @@ -402,14 +401,12 @@ dissect_tlvs(tvbuff_t *tvb, proto_tree *njack_tree, guint32 offset) continue; } tlv_length = tvb_get_guint8(tvb, offset + 1); - tlv_item = proto_tree_add_text(njack_tree, tvb, - offset, tlv_length + 2, + tlv_tree = proto_tree_add_subtree_format(njack_tree, tvb, + offset, tlv_length + 2, ett_njack_tlv_header, NULL, "T %02x, L %02x: %s", tlv_type, tlv_length, val_to_str_ext_const(tlv_type, &njack_cmd_vals_ext, "Unknown")); - tlv_tree = proto_item_add_subtree(tlv_item, - ett_njack_tlv_header); proto_tree_add_item(tlv_tree, hf_njack_tlv_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; diff --git a/epan/dissectors/packet-3com-xns.c b/epan/dissectors/packet-3com-xns.c index 59244db7ac..ae3f6a2822 100644 --- a/epan/dissectors/packet-3com-xns.c +++ b/epan/dissectors/packet-3com-xns.c @@ -65,7 +65,7 @@ static dissector_handle_t data_handle; static void dissect_3com_xns(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { - proto_tree *subtree = NULL; + proto_tree *subtree; proto_tree *ti; guint16 type; tvbuff_t *next_tvb; @@ -73,10 +73,8 @@ dissect_3com_xns(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) col_set_str(pinfo->cinfo, COL_PROTOCOL, "3Com XNS"); col_clear(pinfo->cinfo, COL_INFO); - if (tree) { - ti = proto_tree_add_item(tree, proto_3com_xns, tvb, 0, 4, ENC_NA); - subtree = proto_item_add_subtree(ti, ett_3com_xns); - } + ti = proto_tree_add_item(tree, proto_3com_xns, tvb, 0, 4, ENC_NA); + subtree = proto_item_add_subtree(ti, ett_3com_xns); type = tvb_get_ntohs(tvb, 0); next_tvb = tvb_new_subset_remaining(tvb, 2); diff --git a/epan/dissectors/packet-3g-a11.c b/epan/dissectors/packet-3g-a11.c index bf3ea6c4df..78bf243aab 100644 --- a/epan/dissectors/packet-3g-a11.c +++ b/epan/dissectors/packet-3g-a11.c @@ -680,7 +680,6 @@ decode_bcmcs(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len) case 1: { int i = 0; - proto_item *ti; proto_tree *entry_tree; while (ext_len > 0) { i++; @@ -691,8 +690,8 @@ decode_bcmcs(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len) } else { ext_len = ext_len - entry_len; } - ti = proto_tree_add_text(ext_tree, tvb, offset, entry_len, "BCMCS Information Entry %u", i); - entry_tree = proto_item_add_subtree(ti, ett_a11_bcmcs_entry); + entry_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset, entry_len, + ett_a11_bcmcs_entry, NULL, "BCMCS Information Entry %u", i); proto_tree_add_item(entry_tree, hf_a11_bcmcs_entry_len, tvb, offset, 1, ENC_BIG_ENDIAN); proto_tree_add_text(ext_tree, tvb, offset, entry_len -1, "Entry Data, Not dissected yet"); @@ -713,7 +712,6 @@ decode_bcmcs(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len) static void dissect_a11_radius( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, int app_len) { - proto_item *ti; proto_tree *radius_tree; /* None of this really matters if we don't have a tree */ @@ -725,9 +723,7 @@ dissect_a11_radius( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t return; } - ti = proto_tree_add_text(tree, tvb, offset - 2, app_len, "Airlink Record"); - - radius_tree = proto_item_add_subtree(ti, ett_a11_radiuses); + radius_tree = proto_tree_add_subtree(tree, tvb, offset - 2, app_len, ett_a11_radiuses, NULL, "Airlink Record"); dissect_attribute_value_pairs(radius_tree, pinfo, tvb, offset, app_len-2); @@ -795,9 +791,8 @@ dissect_3gpp2_radius_aut_flow_profile_ids(proto_tree *tree, tvbuff_t *tvb, pac sub_type_length = tvb_get_guint8(tvb,offset+1); /* value is 2 octets */ value = tvb_get_ntohs(tvb,offset+2); - item = proto_tree_add_text(tree, tvb, offset, sub_type_length, "%s = %u", - val_to_str_const(sub_type, a11_aut_flow_prof_subtype_vals, "Unknown"), value); - sub_tree = proto_item_add_subtree(item, ett_a11_aut_flow_profile_ids); + sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, sub_type_length, ett_a11_aut_flow_profile_ids, &item, + "%s = %u", val_to_str_const(sub_type, a11_aut_flow_prof_subtype_vals, "Unknown"), value); proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; @@ -825,7 +820,6 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree) proto_tree *exts_tree; guint8 srid = tvb_get_guint8(tvb, offset+1); guint16 service_option = tvb_get_ntohs(tvb, offset+2); - proto_item *ti; guint8 entry_lenght; int entry_start_offset; @@ -834,11 +828,11 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree) entry_lenght = tvb_get_guint8(tvb, offset); if (registration_request_msg && ((service_option == 64) || (service_option == 67))) - ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "GRE Key Entry (SRID: %d)", srid); + exts_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset, entry_lenght+1, + ett_a11_ase, NULL, "GRE Key Entry (SRID: %d)", srid); else - ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght, "GRE Key Entry (SRID: %d)", srid); - - exts_tree = proto_item_add_subtree(ti, ett_a11_ase); + exts_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset, entry_lenght, + ett_a11_ase, NULL, "GRE Key Entry (SRID: %d)", srid); proto_tree_add_item(exts_tree, hf_a11_ase_len_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; @@ -865,15 +859,13 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree) if ((entry_lenght>14)&&(registration_request_msg)) { if (service_option == 0x0043) { - proto_item *tl; proto_tree *extv_tree; guint8 profile_count = tvb_get_guint8(tvb, offset+6); guint8 profile_index = 0; guint8 reverse_profile_count; - proto_item *tj = proto_tree_add_text(exts_tree, tvb, offset,6+(profile_count*2)+1, "Forward ROHC Info"); - - proto_tree *extt_tree = proto_item_add_subtree(tj, ett_a11_forward_rohc); + proto_tree *extt_tree = proto_tree_add_subtree(exts_tree, tvb, offset,6+(profile_count*2)+1, + ett_a11_forward_rohc, NULL, "Forward ROHC Info"); proto_tree_add_item(extt_tree, hf_a11_ase_forward_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; @@ -891,8 +883,8 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree) for (profile_index=0; profile_index 0) { @@ -1352,11 +1329,10 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre hdrLen = 2; } - ti = proto_tree_add_text(exts_tree, tvb, offset, ext_len + hdrLen, - "Extension: %s", + ext_tree = proto_tree_add_subtree_format(exts_tree, tvb, offset, ext_len + hdrLen, + ett_a11_ext, NULL, "Extension: %s", val_to_str(ext_type, a11_ext_types, "Unknown Extension %u")); - ext_tree = proto_item_add_subtree(ti, ett_a11_ext); proto_tree_add_uint(ext_tree, hf_a11_ext_type, tvb, offset, 1, ext_type); offset += 1; diff --git a/epan/dissectors/packet-6lowpan.c b/epan/dissectors/packet-6lowpan.c index 62ca5e83df..634f25b420 100644 --- a/epan/dissectors/packet-6lowpan.c +++ b/epan/dissectors/packet-6lowpan.c @@ -1021,8 +1021,8 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg guint8 hc1_encoding; guint8 hc_udp_encoding = 0; guint8 next_header; - proto_tree * hc_tree = NULL; - proto_item * ti; + proto_tree * hc_tree; + proto_item * hc_item; tvbuff_t * ipv6_tvb; /* IPv6 header. */ guint8 ipv6_class; @@ -1034,13 +1034,10 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg *===================================================== */ /* Create a tree for the HC1 Header. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, 0, 2, "HC1 Encoding"); - hc_tree = proto_item_add_subtree(ti, ett_6lowpan_hc1); + hc_tree = proto_tree_add_subtree(tree, tvb, 0, 2, ett_6lowpan_hc1, &hc_item, "HC1 Encoding"); - /* Get and display the pattern. */ - proto_tree_add_bits_item(hc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_HC1_BITS, ENC_BIG_ENDIAN); - } + /* Get and display the pattern. */ + proto_tree_add_bits_item(hc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_HC1_BITS, ENC_BIG_ENDIAN); offset += 1; /* Get and display the HC1 encoding bits. */ @@ -1062,8 +1059,7 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg if (next_header == LOWPAN_HC1_NEXT_UDP) { hc_udp_encoding = tvb_get_guint8(tvb, offset); if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 1, "HC_UDP Encoding"); - hc_tree = proto_item_add_subtree(ti, ett_6lowpan_hc2_udp); + hc_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_6lowpan_hc2_udp, NULL, "HC_UDP Encoding"); proto_tree_add_boolean(hc_tree, hf_6lowpan_hc2_udp_src, tvb, offset, 1, hc_udp_encoding & LOWPAN_HC2_UDP_SRCPORT); proto_tree_add_boolean(hc_tree, hf_6lowpan_hc2_udp_dst, tvb, offset, 1, hc_udp_encoding & LOWPAN_HC2_UDP_DSTPORT); proto_tree_add_boolean(hc_tree, hf_6lowpan_hc2_udp_len, tvb, offset, 1, hc_udp_encoding & LOWPAN_HC2_UDP_LENGTH); @@ -1072,7 +1068,7 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg } else { /* HC1 states there are more bits, but an illegal next header was defined. */ - expert_add_info(pinfo, NULL, &ei_6lowpan_hc1_more_bits); + expert_add_info(pinfo, hc_item, &ei_6lowpan_hc1_more_bits); return NULL; } } @@ -1382,13 +1378,10 @@ dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint d hint_panid = (hints) ? (hints->src_pan) : (IEEE802154_BCAST_PAN); /* Create a tree for the IPHC header. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, 0, 2, "IPHC Header"); - iphc_tree = proto_item_add_subtree(ti, ett_6lowpan_iphc); + iphc_tree = proto_tree_add_subtree(tree, tvb, 0, 2, ett_6lowpan_iphc, NULL, "IPHC Header"); - /* Display the pattern. */ - proto_tree_add_bits_item(iphc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_IPHC_BITS, ENC_BIG_ENDIAN); - } + /* Display the pattern. */ + proto_tree_add_bits_item(iphc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_IPHC_BITS, ENC_BIG_ENDIAN); /*===================================================== * Parse IPHC Header flags. @@ -1782,8 +1775,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi /* Create a tree for the IPv6 extension header. */ if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 2, "IPv6 extension header"); - nhc_tree = proto_item_add_subtree(ti, ett_6lowpan_nhc_ext); + nhc_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_6lowpan_nhc_ext, NULL, "IPv6 extension header"); /* Display the NHC-UDP pattern. */ proto_tree_add_bits_item(nhc_tree, hf_6lowpan_nhc_pattern, tvb, offset<<3, LOWPAN_NHC_PATTERN_EXT_BITS, ENC_BIG_ENDIAN); } @@ -1827,8 +1819,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi /* Create a tree for the IPv6 extension header. */ if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 2, "IPv6 extension header"); - nhc_tree = proto_item_add_subtree(ti, ett_6lowpan_nhc_ext); + nhc_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_6lowpan_nhc_ext, NULL, "IPv6 extension header"); /* Display the NHC-UDP pattern. */ proto_tree_add_bits_item(nhc_tree, hf_6lowpan_nhc_pattern, tvb, offset<<3, LOWPAN_NHC_PATTERN_EXT_BITS, ENC_BIG_ENDIAN); } @@ -1939,8 +1930,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi /* Create a tree for the UDP header. */ if (tree) { - ti = proto_tree_add_text(tree, tvb, 0, 1, "UDP header compression"); - nhc_tree = proto_item_add_subtree(ti, ett_6lowpan_nhc_udp); + nhc_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_6lowpan_nhc_udp, NULL, "UDP header compression"); /* Display the NHC-UDP pattern. */ proto_tree_add_bits_item(nhc_tree, hf_6lowpan_nhc_pattern, tvb, offset<<3, LOWPAN_NHC_PATTERN_UDP_BITS, ENC_BIG_ENDIAN); } @@ -2100,12 +2090,10 @@ dissect_6lowpan_bc0(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) { guint8 seqnum; proto_tree * bcast_tree; - proto_item * ti; /* Create a tree for the broadcast header. */ if (tree) { - ti = proto_tree_add_text(tree, tvb, 0, 2, "Broadcast Header"); - bcast_tree = proto_item_add_subtree(ti, ett_6lowpan_bcast); + bcast_tree = proto_tree_add_subtree(tree, tvb, 0, 2, ett_6lowpan_bcast, NULL, "Broadcast Header"); /* Get and display the pattern. */ proto_tree_add_bits_item(bcast_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_BC0_BITS, ENC_BIG_ENDIAN); @@ -2144,20 +2132,15 @@ dissect_6lowpan_mesh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) const guint8 * dst_ifcid; /* Create a tree for the mesh header. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 0, "Mesh Header"); - mesh_tree = proto_item_add_subtree(ti, ett_6lowpan_mesh); - } + mesh_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_6lowpan_mesh, NULL, "Mesh Header"); /* Get and display the mesh flags. */ mesh_header = tvb_get_guint8(tvb, offset); if (tree) { - proto_item * flag_item; proto_tree * flag_tree; /* Create the mesh header subtree. */ - flag_item = proto_tree_add_text(mesh_tree, tvb, offset, 1, "Flags"); - flag_tree = proto_item_add_subtree(flag_item, ett_6lowpan_mesh); + flag_tree = proto_tree_add_subtree(mesh_tree, tvb, offset, 1, ett_6lowpan_mesh, NULL, "Flags"); /* Add the mesh header fields. */ proto_tree_add_bits_item(flag_tree, hf_6lowpan_pattern, tvb, offset * 8, LOWPAN_PATTERN_MESH_BITS, ENC_BIG_ENDIAN); @@ -2252,9 +2235,9 @@ dissect_6lowpan_frag_first(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint frag_size; guint16 dgram_size; guint16 dgram_tag; - proto_tree * frag_tree = NULL; - proto_item * ti = NULL; - proto_item * length_item = NULL; + proto_tree * frag_tree; + proto_item * ti; + proto_item * length_item; /* Reassembly parameters. */ tvbuff_t * new_tvb; tvbuff_t * frag_tvb; @@ -2262,30 +2245,21 @@ dissect_6lowpan_frag_first(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gboolean save_fragmented; /* Create a tree for the fragmentation header. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 0, "Fragmentation Header"); - frag_tree = proto_item_add_subtree(ti, ett_6lowpan_frag); - } + frag_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_6lowpan_frag, &ti, "Fragmentation Header"); /* Get and display the pattern and datagram size. */ dgram_size = tvb_get_bits16(tvb, (offset * 8) + LOWPAN_PATTERN_FRAG_BITS, LOWPAN_FRAG_DGRAM_SIZE_BITS, ENC_BIG_ENDIAN); - if (tree) { - proto_tree_add_bits_item(frag_tree, hf_6lowpan_pattern, tvb, offset * 8, LOWPAN_PATTERN_FRAG_BITS, ENC_BIG_ENDIAN); - length_item = proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_size, tvb, offset, 2, dgram_size); - } + proto_tree_add_bits_item(frag_tree, hf_6lowpan_pattern, tvb, offset * 8, LOWPAN_PATTERN_FRAG_BITS, ENC_BIG_ENDIAN); + length_item = proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_size, tvb, offset, 2, dgram_size); offset += 2; /* Get and display the datagram tag. */ dgram_tag = tvb_get_ntohs(tvb, offset); - if (tree) { - proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag); - } + proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag); offset += 2; /* Adjust the fragmentation header length. */ - if (tree) { - proto_item_set_end(ti, tvb, offset); - } + proto_item_set_end(ti, tvb, offset); /* The first fragment can contain an uncompressed IPv6, HC1 or IPHC fragment. */ frag_tvb = tvb_new_subset_remaining(tvb, offset); @@ -2373,17 +2347,14 @@ dissect_6lowpan_frag_middle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) guint16 dgram_tag; guint16 dgram_offset = 0; proto_tree * frag_tree = NULL; - proto_item * ti = NULL; + proto_item * ti; /* Reassembly parameters. */ tvbuff_t * new_tvb; fragment_head * frag_data; gboolean save_fragmented; /* Create a tree for the fragmentation header. */ - if (tree) { - ti = proto_tree_add_text(tree, tvb, offset, 0, "Fragmentation Header"); - frag_tree = proto_item_add_subtree(ti, ett_6lowpan_frag); - } + frag_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_6lowpan_frag, &ti, "Fragmentation Header"); /* Get and display the pattern and datagram size. */ dgram_size = tvb_get_bits16(tvb, (offset * 8) + LOWPAN_PATTERN_FRAG_BITS, LOWPAN_FRAG_DGRAM_SIZE_BITS, ENC_BIG_ENDIAN); @@ -2395,16 +2366,12 @@ dissect_6lowpan_frag_middle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) /* Get and display the datagram tag. */ dgram_tag = tvb_get_ntohs(tvb, offset); - if (tree) { - proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag); - } + proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag); offset += 2; /* Get and display the datagram offset. */ dgram_offset = tvb_get_guint8(tvb, offset) * 8; - if (tree) { - proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_offset, tvb, offset, 1, dgram_offset); - } + proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_offset, tvb, offset, 1, dgram_offset); offset += 1; /* Adjust the fragmentation header length. */ diff --git a/epan/dissectors/packet-9p.c b/epan/dissectors/packet-9p.c index c95ffe1e24..b8c91245a5 100644 --- a/epan/dissectors/packet-9p.c +++ b/epan/dissectors/packet-9p.c @@ -2256,7 +2256,7 @@ static void dissect_9P_mode(tvbuff_t *tvb, proto_item *item, int offset) /* dissect 9P Qid */ static void dissect_9P_qid(tvbuff_t *tvb, proto_tree *tree, int offset) { - proto_item *qid_item,*qidtype_item; + proto_item *qidtype_item; proto_tree *qid_tree,*qidtype_tree; guint64 path; guint32 vers; @@ -2269,8 +2269,8 @@ static void dissect_9P_qid(tvbuff_t *tvb, proto_tree *tree, int offset) vers = tvb_get_letohs(tvb, offset+1); path = tvb_get_letoh64(tvb, offset+1+4); - qid_item = proto_tree_add_text(tree, tvb, offset, 13, "Qid type=0x%02x vers=%d path=%" G_GINT64_MODIFIER "u", type, vers, path); - qid_tree = proto_item_add_subtree(qid_item, ett_9P_qid); + qid_tree = proto_tree_add_subtree_format(tree, tvb, offset, 13, ett_9P_qid, NULL, + "Qid type=0x%02x vers=%d path=%" G_GINT64_MODIFIER "u", type, vers, path); qidtype_item = proto_tree_add_item(qid_tree, hf_9P_qidtype, tvb, offset, 1, ENC_LITTLE_ENDIAN); qidtype_tree = proto_item_add_subtree(qidtype_item, ett_9P_qidtype); diff --git a/epan/dissectors/packet-a21.c b/epan/dissectors/packet-a21.c index a5ebe028bb..038c94a7ba 100644 --- a/epan/dissectors/packet-a21.c +++ b/epan/dissectors/packet-a21.c @@ -291,14 +291,13 @@ dissect_a21_mobile_subscription_information(tvbuff_t *tvb, packet_info *pinfo _U guint8 record_id; guint16 record_len=0; proto_tree *record_tree; - proto_item *record_item; while(offsetcinfo, COL_PROTOCOL, "A21"); @@ -644,9 +642,9 @@ dissect_a21(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) proto_tree_add_item(tree, proto_a21, tvb, offset, 0, ENC_NA); if(tree){ - ti = proto_tree_add_text(tree, tvb, offset, 1, "%s", - val_to_str_const(message_type, a21_message_type_vals, "Unknown")); - a21_tree = proto_item_add_subtree(ti, ett_a21); + a21_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_a21, NULL, + val_to_str_const(message_type, a21_message_type_vals, "Unknown")); + /* message type in Octet 1 */ proto_tree_add_item(a21_tree, hf_a21_message_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset++; diff --git a/epan/dissectors/packet-acn.c b/epan/dissectors/packet-acn.c index 67ce91fe60..124bf41141 100644 --- a/epan/dissectors/packet-acn.c +++ b/epan/dissectors/packet-acn.c @@ -498,8 +498,8 @@ acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree * guint32 session_count; guint32 x; - pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Owner Info Block"); - this_tree = proto_item_add_subtree(pi, ett_acn_channel_owner_info_block); + this_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_acn_channel_owner_info_block, NULL, + "Channel Owner Info Block"); proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; @@ -527,8 +527,8 @@ acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree guint32 session_count; guint32 x; - pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Member Info Block"); - this_tree = proto_item_add_subtree(pi, ett_acn_channel_member_info_block); + this_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_acn_channel_member_info_block, + NULL, "Channel Member Info Block"); proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN); offset += 2; @@ -567,11 +567,11 @@ acn_add_expiry(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offs static guint32 acn_add_channel_parameter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset) { - proto_item *pi; proto_tree *param_tree; - pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Parameter Block"); - param_tree = proto_item_add_subtree(pi, ett_acn_channel_parameter); + param_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_acn_channel_parameter, + NULL, "Channel Parameter Block"); + proto_tree_add_item(param_tree, hf_acn_expiry, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; proto_tree_add_item(param_tree, hf_acn_nak_outbound_flag, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -611,8 +611,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off break; case ACN_ADDR_IPV4: /* Build tree and add type*/ - pi = proto_tree_add_text(tree, tvb, offset, 7, "%s", label); - addr_tree = proto_item_add_subtree(pi, ett_acn_address); + addr_tree = proto_tree_add_subtree(tree, tvb, offset, 7, ett_acn_address, &pi, label); proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; /* Add port */ @@ -629,8 +628,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off break; case ACN_ADDR_IPV6: /* Build tree and add type*/ - pi = proto_tree_add_text(tree, tvb, offset, 19, "%s", label); - addr_tree = proto_item_add_subtree(pi, ett_acn_address); + addr_tree = proto_tree_add_subtree(tree, tvb, offset, 19, ett_acn_address, &pi, label); proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; /* Add port */ @@ -647,8 +645,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off break; case ACN_ADDR_IPPORT: /* Build tree and add type*/ - pi = proto_tree_add_text(tree, tvb, offset, 3, "%s", label); - addr_tree = proto_item_add_subtree(pi, ett_acn_address); + addr_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_acn_address, &pi, label); proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; /* Add port */ @@ -667,8 +664,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off static guint32 acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt) { - proto_item *pi; - proto_tree *this_tree = NULL; + proto_tree *this_tree; guint8 D; const gchar *name; @@ -677,9 +673,9 @@ acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree D = ACN_DMP_ADT_EXTRACT_D(adt->flags); name = val_to_str(D, acn_dmp_adt_d_vals, "not valid (%d)"); - pi = proto_tree_add_text(tree, tvb, offset, 1, "Address and Data Type: %s", name); + this_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, ett_acn_address_type, + NULL, "Address and Data Type: %s", name); - this_tree = proto_item_add_subtree(pi, ett_acn_address_type); proto_tree_add_uint(this_tree, hf_acn_dmp_adt_v, tvb, offset, 1, adt->flags); proto_tree_add_uint(this_tree, hf_acn_dmp_adt_r, tvb, offset, 1, adt->flags); proto_tree_add_uint(this_tree, hf_acn_dmp_adt_d, tvb, offset, 1, adt->flags);