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>
This commit is contained in:
Michael Mann 2014-06-22 16:01:36 -04:00
parent 3fc441e7a5
commit 188aa9a80e
34 changed files with 604 additions and 956 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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,

View File

@ -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)) {

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -326,24 +326,21 @@ 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, " 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){

View File

@ -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;

View File

@ -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);

View File

@ -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;

View File

@ -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);

View File

@ -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);
}

View File

@ -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;

View File

@ -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;

View File

@ -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;
}

View File

@ -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,

View File

@ -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);

View File

@ -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--;

View File

@ -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);
}

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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);
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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++;