aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-06-20 17:34:10 -0400
committerMichael Mann <mmann78@netscape.net>2014-06-22 14:34:17 +0000
commitf5e2b4293d420fe8438075ebc8db76ac5f8b9747 (patch)
treeef3df7ea2b675bb726cba30c9fc62392236a5fbe /epan
parent08bd0128ed786b95021b0e4e89838e8cf0742d74 (diff)
convert to proto_tree_add_subtree[_format]
Change-Id: I358bfaa4e5d40cd01b766f614f8bd0dbaf611dd0 Reviewed-on: https://code.wireshark.org/review/2508 Reviewed-by: Evan Huus <eapache@gmail.com> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/file-elf.c87
-rw-r--r--epan/dissectors/file-gif.c6
-rw-r--r--epan/dissectors/file-mp4.c3
-rw-r--r--epan/dissectors/file-png.c7
-rw-r--r--epan/dissectors/packet-3com-njack.c7
-rw-r--r--epan/dissectors/packet-3com-xns.c8
-rw-r--r--epan/dissectors/packet-3g-a11.c114
-rw-r--r--epan/dissectors/packet-6lowpan.c89
-rw-r--r--epan/dissectors/packet-9p.c6
-rw-r--r--epan/dissectors/packet-a21.c18
-rw-r--r--epan/dissectors/packet-acn.c30
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<profile_count; profile_index++) {
- proto_item *tk = proto_tree_add_text (extt_tree, tvb, offset, (2*profile_count), "Forward Profile : %d", profile_index);
- proto_tree *extu_tree = proto_item_add_subtree(tk, ett_a11_forward_profile);
+ proto_tree *extu_tree = proto_tree_add_subtree_format(extt_tree, tvb, offset, (2*profile_count),
+ ett_a11_forward_profile, NULL, "Forward Profile : %d", profile_index);
proto_tree_add_item(extu_tree, hf_a11_ase_forward_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
}/*for*/
@@ -900,9 +892,8 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
reverse_profile_count=tvb_get_guint8(tvb, offset+6);
- tl = proto_tree_add_text(exts_tree, tvb, offset,6+(reverse_profile_count*2)+1, "Reverse ROHC Info");
-
- extv_tree = proto_item_add_subtree(tl, ett_a11_reverse_rohc);
+ extv_tree = proto_tree_add_subtree(exts_tree, tvb, offset,6+(reverse_profile_count*2)+1,
+ ett_a11_reverse_rohc, NULL, "Reverse ROHC Info");
proto_tree_add_item(extv_tree, hf_a11_ase_reverse_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@@ -922,9 +913,8 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
for (profile_index=0; profile_index<reverse_profile_count; profile_index++) {
- proto_item *tm = proto_tree_add_text(extv_tree, tvb, offset, (2*profile_count), "Reverse Profile : %d", profile_index);
-
- proto_tree *extw_tree = proto_item_add_subtree(tm, ett_a11_reverse_profile);
+ proto_tree *extw_tree = proto_tree_add_subtree_format(extv_tree, tvb, offset, (2*profile_count),
+ ett_a11_reverse_profile, NULL, "Reverse Profile : %d", profile_index);
proto_tree_add_item(extw_tree, hf_a11_ase_reverse_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@@ -1015,10 +1005,8 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
- proto_item *ti = proto_tree_add_text
- (ext_tree, tvb, offset+clen, entry_len+1, "Forward Flow Entry (Flow Id: %d)", flow_id);
-
- proto_tree *flow_tree = proto_item_add_subtree(ti, ett_a11_fqi_flowentry);
+ proto_tree *flow_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset+clen,
+ entry_len+1, ett_a11_fqi_flowentry, NULL, "Forward Flow Entry (Flow Id: %d)", flow_id);
/* Entry Length */
proto_tree_add_item(flow_tree, hf_a11_fqi_entrylen, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
@@ -1040,11 +1028,10 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Requested QoS Blob */
if (requested_qos_len) {
- proto_item *ti2;
proto_tree *exts_tree2;
- proto_item *ti1 = proto_tree_add_text(flow_tree, tvb, offset+clen,requested_qos_len, "Forward Requested QoS ");
- proto_tree *exts_tree1 = proto_item_add_subtree(ti1, ett_a11_fqi_requestedqos);
+ proto_tree *exts_tree1 = proto_tree_add_subtree(flow_tree, tvb, offset+clen,requested_qos_len,
+ ett_a11_fqi_requestedqos, NULL, "Forward Requested QoS ");
proto_tree_add_text(exts_tree1, tvb, offset+clen, requested_qos_len, "Forward Requested QoS Sub Blob");
@@ -1059,8 +1046,8 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
clen++;
/* QoS attribute set */
- ti2 = proto_tree_add_text(exts_tree1, tvb, offset+clen, 4, "QoS Attribute Set");
- exts_tree2 = proto_item_add_subtree(ti2, ett_a11_fqi_qos_attribute_set);
+ exts_tree2 = proto_tree_add_subtree(exts_tree1, tvb, offset+clen, 4, ett_a11_fqi_qos_attribute_set,
+ NULL, "QoS Attribute Set");
/* QoS attribute setid */
proto_tree_add_item(exts_tree2, hf_a11_fqi_qos_attribute_setid, tvb, offset+clen, 2, ENC_BIG_ENDIAN);
@@ -1082,12 +1069,10 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Granted QoS Blob */
if (granted_qos_len) {
- proto_item *ti3;
proto_tree *exts_tree3;
- ti3 = proto_tree_add_text(flow_tree, tvb, offset+clen, granted_qos_len, "Forward Granted QoS ");
-
- exts_tree3 = proto_item_add_subtree(ti3, ett_a11_fqi_grantedqos);
+ exts_tree3 = proto_tree_add_subtree(flow_tree, tvb, offset+clen, granted_qos_len,
+ ett_a11_fqi_grantedqos, NULL, "Forward Granted QoS ");
proto_tree_add_text(exts_tree3, tvb, offset+clen, granted_qos_len, "Forward Granted QoS Sub Blob");
@@ -1123,10 +1108,9 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
- proto_item *ti = proto_tree_add_text
- (ext_tree, tvb, offset+clen, entry_len+1, "Reverse Flow Entry (Flow Id: %d)", flow_id);
-
- proto_tree *flow_tree = proto_item_add_subtree(ti, ett_a11_rqi_flowentry);
+ proto_tree *flow_tree = proto_tree_add_subtree_format
+ (ext_tree, tvb, offset+clen, entry_len+1, ett_a11_rqi_flowentry, NULL,
+ "Reverse Flow Entry (Flow Id: %d)", flow_id);
/* Entry Length */
proto_tree_add_item(flow_tree, hf_a11_rqi_entrylen, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
@@ -1147,12 +1131,10 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Requested QoS Blob */
if (requested_qos_len) {
- proto_item *ti1, *ti2;
proto_tree *exts_tree1, *exts_tree2;
- ti1 = proto_tree_add_text(flow_tree, tvb, offset+clen,requested_qos_len , "Reverse Requested QoS ");
-
- exts_tree1 = proto_item_add_subtree(ti1, ett_a11_rqi_requestedqos);
+ exts_tree1 = proto_tree_add_subtree(flow_tree, tvb, offset+clen,requested_qos_len,
+ ett_a11_rqi_requestedqos, NULL, "Reverse Requested QoS ");
proto_tree_add_text(exts_tree1, tvb, offset+clen, requested_qos_len, "Reverse Requested QoS Sub Blob");
@@ -1167,8 +1149,8 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
clen++;
/* QoS attribute set */
- ti2 = proto_tree_add_text(exts_tree1, tvb, offset+clen, 4, "QoS Attribute Set");
- exts_tree2 = proto_item_add_subtree(ti2, ett_a11_rqi_qos_attribute_set);
+ exts_tree2 = proto_tree_add_subtree(exts_tree1, tvb, offset+clen, 4,
+ ett_a11_rqi_qos_attribute_set, NULL, "QoS Attribute Set");
/* QoS attribute setid */
proto_tree_add_item(exts_tree2, hf_a11_rqi_qos_attribute_setid, tvb, offset+clen, 2, ENC_BIG_ENDIAN);
@@ -1189,11 +1171,10 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Granted QoS Blob */
if (granted_qos_len) {
- proto_item *ti3;
proto_tree *exts_tree3;
- ti3 = proto_tree_add_text(flow_tree, tvb, offset+clen,granted_qos_len , "Reverse Granted QoS ");
- exts_tree3 = proto_item_add_subtree(ti3, ett_a11_rqi_grantedqos);
+ exts_tree3 = proto_tree_add_subtree(flow_tree, tvb, offset+clen,granted_qos_len,
+ ett_a11_rqi_grantedqos, NULL, "Reverse Granted QoS ");
proto_tree_add_text(exts_tree3, tvb, offset+clen, granted_qos_len, "Reverse Granted QoS Sub Blob");
@@ -1213,13 +1194,11 @@ dissect_subscriber_qos_profile(tvbuff_t *tvb, packet_info *pinfo, int offset, in
int qos_profile_len = ext_len;
- proto_item *ti =
- proto_tree_add_text (ext_tree, tvb, offset, 0,
+ exts_tree =
+ proto_tree_add_subtree_format(ext_tree, tvb, offset, 0, ett_a11_subscriber_profile, NULL,
"Subscriber Qos Profile (%d bytes)",
qos_profile_len);
- exts_tree = proto_item_add_subtree(ti, ett_a11_subscriber_profile);
-
/* Subscriber QoS profile */
if (qos_profile_len) {
proto_tree_add_item
@@ -1249,11 +1228,11 @@ dissect_fwd_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 flow_id = tvb_get_guint8(tvb, offset+clen);
- proto_item *ti = proto_tree_add_text
- (ext_tree, tvb, offset+clen, 1, "Forward Flow Entry (Flow Id: %d)", flow_id);
+ exts_tree = proto_tree_add_subtree_format
+ (ext_tree, tvb, offset+clen, 1, ett_a11_fqui_flowentry, NULL,
+ "Forward Flow Entry (Flow Id: %d)", flow_id);
clen++;
- exts_tree = proto_item_add_subtree(ti, ett_a11_fqui_flowentry);
/* Forward QoS Sub Blob Length */
granted_qos_len = tvb_get_guint8(tvb, offset+clen);
@@ -1291,10 +1270,10 @@ dissect_rev_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 flow_id = tvb_get_guint8(tvb, offset+clen);
- proto_item *ti = proto_tree_add_text
- (ext_tree, tvb, offset+clen, 1, "Reverse Flow Entry (Flow Id: %d)", flow_id);
+ exts_tree = proto_tree_add_subtree_format
+ (ext_tree, tvb, offset+clen, 1, ett_a11_rqui_flowentry, NULL,
+ "Reverse Flow Entry (Flow Id: %d)", flow_id);
clen++;
- exts_tree = proto_item_add_subtree(ti, ett_a11_rqui_flowentry);
/* Reverse QoS Sub Blob Length */
granted_qos_len = tvb_get_guint8(tvb, offset+clen);
@@ -1316,7 +1295,6 @@ dissect_rev_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
static void
dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree)
{
- proto_item *ti;
proto_tree *exts_tree;
proto_tree *ext_tree;
guint ext_len;
@@ -1327,8 +1305,7 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
gint16 apptype = -1;
/* Add our tree, if we have extensions */
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Extensions");
- exts_tree = proto_item_add_subtree(ti, ett_a11_exts);
+ exts_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_a11_exts, NULL, "Extensions");
/* And, handle each extension */
while (tvb_reported_length_remaining(tvb, offset) > 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(offset<length){
record_id=tvb_get_guint8(tvb, offset);
record_len=tvb_get_guint8(tvb, offset+1);
- record_item = proto_tree_add_text(tree, tvb, offset+2, record_len, "Record %u",i+1);
- record_tree = proto_item_add_subtree(record_item, ett_a21_record_content);
+ record_tree = proto_tree_add_subtree_format(tree, tvb, offset+2, record_len,
+ ett_a21_record_content, NULL, "Record %u",i+1);
proto_tree_add_item(record_tree, hf_a21_mob_sub_info_record_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@@ -544,9 +543,8 @@ dissect_a21_ie_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, gi
length = tvb_get_guint8(tvb, offset+1);
}
- ti = proto_tree_add_text(tree, tvb, offset, 1 + length_len + length, "%s : ",
- val_to_str_const(ie_type, a21_element_type_vals, "Unknown"));
- ie_tree = proto_item_add_subtree(ti, ett_a21_ie);
+ ie_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1 + length_len + length, ett_a21_ie, &ti,
+ "%s : ", val_to_str_const(ie_type, a21_element_type_vals, "Unknown"));
/* Octet 1-element identifie*/
proto_tree_add_item(ie_tree, hf_a21_element_identifier, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -627,7 +625,7 @@ dissect_a21(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint8 message_type;
int offset = 0;
- proto_item *ti, *tc;
+ proto_item *tc;
proto_tree *a21_tree, *corr_tree;
col_set_str(pinfo->cinfo, 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);