summaryrefslogtreecommitdiff
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-06-22 16:01:36 -0400
committerMichael Mann <mmann78@netscape.net>2014-06-22 21:07:16 +0000
commit188aa9a80eea47842988f1b860931d25e1ca08bd (patch)
tree9b6faf83e26edb43fe6befe6d2ff01c4b6daaa89 /epan
parent3fc441e7a5008640c68ec985e669d5092414a519 (diff)
downloadwireshark-188aa9a80eea47842988f1b860931d25e1ca08bd.tar.gz
convert to proto_tree_add_subtree[_format]
Change-Id: Ib60ca75b7da8cfa21cfe2999c9b9448a02c332df Reviewed-on: https://code.wireshark.org/review/2560 Tested-by: Michael Mann <mmann78@netscape.net> Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r--epan/dissectors/packet-afp.c194
-rw-r--r--epan/dissectors/packet-agentx.c86
-rw-r--r--epan/dissectors/packet-aim-generic.c38
-rw-r--r--epan/dissectors/packet-aim-ssi.c9
-rw-r--r--epan/dissectors/packet-aim.c16
-rw-r--r--epan/dissectors/packet-alcap.c5
-rw-r--r--epan/dissectors/packet-amqp.c7
-rw-r--r--epan/dissectors/packet-amr.c5
-rw-r--r--epan/dissectors/packet-ansi_637.c23
-rw-r--r--epan/dissectors/packet-ansi_a.c175
-rw-r--r--epan/dissectors/packet-aodv.c36
-rw-r--r--epan/dissectors/packet-aoe.c19
-rw-r--r--epan/dissectors/packet-aprs.c13
-rw-r--r--epan/dissectors/packet-arp.c20
-rw-r--r--epan/dissectors/packet-aruba-iap.c10
-rw-r--r--epan/dissectors/packet-asap.c9
-rw-r--r--epan/dissectors/packet-assa_r3.c242
-rw-r--r--epan/dissectors/packet-atalk.c14
-rw-r--r--epan/dissectors/packet-atm.c13
-rw-r--r--epan/dissectors/packet-auto_rp.c30
-rw-r--r--epan/dissectors/packet-babel.c16
-rw-r--r--epan/dissectors/packet-bacapp.c308
-rw-r--r--epan/dissectors/packet-batadv.c7
-rw-r--r--epan/dissectors/packet-beep.c10
-rw-r--r--epan/dissectors/packet-ber.c12
-rw-r--r--epan/dissectors/packet-bfd.c4
-rw-r--r--epan/dissectors/packet-bgp.c73
-rw-r--r--epan/dissectors/packet-bitcoin.c3
-rw-r--r--epan/dissectors/packet-bmc.c4
-rw-r--r--epan/dissectors/packet-bofl.c26
-rw-r--r--epan/dissectors/packet-bootp.c8
-rw-r--r--epan/dissectors/packet-bpdu.c68
-rw-r--r--epan/dissectors/packet-bssap.c9
-rw-r--r--epan/dissectors/packet-bssgp.c48
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, &parameter_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++;