convert to proto_tree_add_subtree[_format]

Change-Id: I358bfaa4e5d40cd01b766f614f8bd0dbaf611dd0
Reviewed-on: https://code.wireshark.org/review/2508
Reviewed-by: Evan Huus <eapache@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
Michael Mann 2014-06-20 17:34:10 -04:00
parent 08bd0128ed
commit f5e2b4293d
11 changed files with 140 additions and 235 deletions

View File

@ -848,7 +848,6 @@ dissect_eh_frame_hdr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_
gint offset, gint segment_size _U_, gint register_size, guint machine_encoding)
{
proto_item *item;
proto_item *table_item;
proto_tree *table_tree;
guint8 format;
gint efp_length;
@ -931,15 +930,14 @@ dissect_eh_frame_hdr(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_
i_entry = 0;
table_item = proto_tree_add_text(segment_tree, tvb, offset, value_guard(fde_count * table_entry_length * 2), "Binary Search Table");
table_tree = proto_item_add_subtree(table_item, ett_binary_table);
table_tree = proto_tree_add_subtree(segment_tree, tvb, offset, value_guard(fde_count * table_entry_length * 2),
ett_binary_table, NULL, "Binary Search Table");
while (++i_entry <= fde_count) {
proto_item *entry_item;
proto_tree *entry_tree;
entry_item = proto_tree_add_text(table_tree, tvb, offset, table_entry_length * 2, "Binary Table Entry #%u", i_entry);
entry_tree = proto_item_add_subtree(entry_item, ett_binary_table_entry);
entry_tree = proto_tree_add_subtree_format(table_tree, tvb, offset, table_entry_length * 2, ett_binary_table_entry,
NULL, "Binary Table Entry #%u", i_entry);
proto_tree_add_item(entry_tree, hf_elf_eh_frame_hdr_binary_search_table_entry_initial_location, tvb, offset, table_entry_length, machine_encoding);
offset += table_entry_length;
@ -957,9 +955,7 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree
gint offset, gint segment_size _U_, gint register_size _U_, guint machine_encoding)
{
proto_tree *record_tree;
proto_item *record_item;
proto_tree *entry_tree;
proto_item *entry_item;
guint64 length;
guint64 length_remaining;
guint64 unsigned_value;
@ -981,8 +977,8 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree
length_remaining = length;
record_item = proto_tree_add_text(segment_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)), "Common Information Entry");
record_tree = proto_item_add_subtree(record_item, ett_elf_cie);
record_tree = proto_tree_add_subtree(segment_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)),
ett_elf_cie, NULL, "Common Information Entry");
proto_tree_add_item(record_tree, hf_elf_eh_frame_length, tvb, offset, 4, machine_encoding);
offset += 4;
@ -1035,8 +1031,8 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree
proto_tree_add_item(record_tree, hf_elf_eh_frame_initial_instructions, tvb, offset, value_guard(length_remaining), machine_encoding);
offset += value_guard(length_remaining);
record_item = proto_tree_add_text(segment_tree, tvb, offset, value_guard(segment_size - length - 4), "Frame Description Entries");
record_tree = proto_item_add_subtree(record_item, ett_elf_fde);
record_tree = proto_tree_add_subtree(segment_tree, tvb, offset, value_guard(segment_size - length - 4),
ett_elf_fde, NULL, "Frame Description Entries");
is_extended_length = FALSE;
entry_number = 1;
@ -1050,8 +1046,8 @@ dissect_eh_frame(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *segment_tree
tvb_get_ntoh64(tvb, offset + 4) : tvb_get_letoh64(tvb, offset + 4);
}
entry_item = proto_tree_add_text(record_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)), "Entry %i", entry_number);
entry_tree = proto_item_add_subtree(entry_item, ett_elf_entry);
entry_tree = proto_tree_add_subtree_format(record_tree, tvb, offset, value_guard(length + (is_extended_length ? 4 + 8 : 4)),
ett_elf_entry, NULL, "Entry %i", entry_number);
proto_tree_add_item(entry_tree, hf_elf_eh_frame_fde_length, tvb, offset, 4, machine_encoding);
offset += 4;
@ -1106,11 +1102,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
proto_item *main_item;
proto_tree *header_tree;
proto_item *header_item;
proto_item *program_header_item;
proto_tree *program_header_tree;
proto_item *section_header_item;
proto_tree *section_header_tree;
proto_item *ph_entry_item;
proto_tree *ph_entry_tree;
proto_item *sh_entry_item;
proto_tree *sh_entry_tree;
@ -1118,9 +1111,7 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
proto_tree *segment_tree;
proto_item *generated_item;
proto_tree *generated_tree;
proto_item *overlapping_item;
proto_tree *overlapping_tree;
proto_item *blackhole_item;
proto_tree *blackhole_tree;
proto_item *entry_item;
proto_tree *entry_tree;
@ -1164,8 +1155,7 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
main_item = proto_tree_add_item(tree, proto_elf, tvb, offset, -1, ENC_NA);
main_tree = proto_item_add_subtree(main_item, ett_elf);
header_item = proto_tree_add_text(main_tree, tvb, offset, 1, "Header");
header_tree = proto_item_add_subtree(header_item, ett_elf_header);
header_tree = proto_tree_add_subtree(main_tree, tvb, offset, 1, ett_elf_header, &header_item, "Header");
/* e_ident */
proto_tree_add_item(header_tree, hf_elf_magic_bytes, tvb, offset, sizeof(magic), ENC_NA);
@ -1267,13 +1257,11 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
tvb_get_ntohs(tvb, offset) : tvb_get_letohs(tvb, offset);
/*offset += 2;*/
program_header_item = proto_tree_add_text(main_tree, tvb, value_guard(phoff),
phnum * phentsize, "Program Header Table [%d entries]", phnum);
program_header_tree = proto_item_add_subtree(program_header_item, ett_elf_program_header);
program_header_tree = proto_tree_add_subtree_format(main_tree, tvb, value_guard(phoff),
phnum * phentsize, ett_elf_program_header, NULL, "Program Header Table [%d entries]", phnum);
section_header_item = proto_tree_add_text(main_tree, tvb, value_guard(shoff),
shnum * shentsize, "Section Header Table [%d entries]", shnum);
section_header_tree = proto_item_add_subtree(section_header_item, ett_elf_section_header);
section_header_tree = proto_tree_add_subtree_format(main_tree, tvb, value_guard(shoff),
shnum * shentsize, ett_elf_section_header, NULL, "Section Header Table [%d entries]", shnum);
file_size = ehsize + phnum * phentsize + shnum * shentsize;
@ -1306,20 +1294,17 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
p_type = (machine_encoding == ENC_BIG_ENDIAN) ?
tvb_get_ntohl(tvb, offset) : tvb_get_letohl(tvb, offset);
if (p_type >= 0x60000000 && p_type <= 0x6FFFFFFF) {
ph_entry_item = proto_tree_add_text(program_header_tree, tvb, offset,
phentsize, "Entry #%d: Operating System Specific (0x%08x)", phnum - i_16 - 1, p_type);
ph_entry_tree = proto_item_add_subtree(ph_entry_item, ett_elf_program_header);
ph_entry_tree = proto_tree_add_subtree_format(program_header_tree, tvb, offset, phentsize, ett_elf_program_header, NULL,
"Entry #%d: Operating System Specific (0x%08x)", phnum - i_16 - 1, p_type);
proto_tree_add_item(ph_entry_tree, hf_elf_p_type_operating_system_specific, tvb, offset, 4, machine_encoding);
} else if (p_type >= 0x70000000 && p_type <= 0x7FFFFFFF) {
ph_entry_item = proto_tree_add_text(program_header_tree, tvb, offset,
phentsize, "Entry #%d: Processor Specific (0x%08x)", phnum - i_16 - 1, p_type);
ph_entry_tree = proto_item_add_subtree(ph_entry_item, ett_elf_program_header);
ph_entry_tree = proto_tree_add_subtree_format(program_header_tree, tvb, offset, phentsize, ett_elf_program_header, NULL,
"Entry #%d: Processor Specific (0x%08x)", phnum - i_16 - 1, p_type);
proto_tree_add_item(ph_entry_tree, hf_elf_p_type_processor_specific, tvb, offset, 4, machine_encoding);
} else {
ph_entry_item = proto_tree_add_text(program_header_tree, tvb, offset,
phentsize, "Entry #%d: %s", phnum - i_16 - 1,
ph_entry_tree = proto_tree_add_subtree_format(program_header_tree, tvb, offset, phentsize, ett_elf_program_header, NULL,
"Entry #%d: %s", phnum - i_16 - 1,
val_to_str_const(p_type, p_type_vals, "Unknown"));
ph_entry_tree = proto_item_add_subtree(ph_entry_item, ett_elf_program_header);
proto_tree_add_item(ph_entry_tree, hf_elf_p_type, tvb, offset, 4, machine_encoding);
}
offset += 4;
@ -1467,9 +1452,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
i_16 = shnum;
while (i_16-- > 0) {
sh_entry_item = proto_tree_add_text(section_header_tree, tvb, offset,
shentsize, "Entry #%d: ", shnum - i_16 - 1);
sh_entry_tree = proto_item_add_subtree(sh_entry_item, ett_elf_section_header);
sh_entry_tree = proto_tree_add_subtree_format(section_header_tree, tvb, offset, shentsize,
ett_elf_section_header, &sh_entry_item, "Entry #%d: ", shnum - i_16 - 1);
proto_tree_add_item(sh_entry_tree, hf_elf_sh_name, tvb, offset, 4, machine_encoding);
sh_name = (machine_encoding == ENC_BIG_ENDIAN) ?
@ -1590,9 +1574,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
segment_info[area_counter].name = section_name;
area_counter += 1;
segment_item = proto_tree_add_text(sh_entry_tree, tvb,
value_guard(segment_offset), value_guard(segment_size), "Segment");
segment_tree = proto_item_add_subtree(segment_item, ett_elf_segment);
segment_tree = proto_tree_add_subtree(sh_entry_tree, tvb, value_guard(segment_offset),
value_guard(segment_size), ett_elf_segment, &segment_item, "Segment");
if (g_strcmp0(section_name, ".eh_frame") == 0) {
next_offset = dissect_eh_frame(tvb, pinfo, segment_tree,
@ -1610,9 +1593,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
if (sh_entsize > 0) {
next_offset = value_guard(segment_offset);
for (i = 1; i < (segment_size / sh_entsize) + 1; i += 1) {
entry_item = proto_tree_add_text(segment_tree, tvb, next_offset,
value_guard(sh_entsize), "Entry #%d", i);
entry_tree = proto_item_add_subtree(entry_item, ett_symbol_table_entry);
entry_tree = proto_tree_add_subtree_format(segment_tree, tvb, next_offset,
value_guard(sh_entsize), ett_symbol_table_entry, NULL, "Entry #%d", i);
next_offset = dissect_dynamic(tvb, pinfo, entry_tree, entry_item,
next_offset, register_size, machine_encoding);
@ -1624,9 +1606,8 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
if (sh_entsize > 0) {
next_offset = value_guard(segment_offset);
for (i = 1; i < (segment_size / sh_entsize) + 1; i += 1) {
entry_item = proto_tree_add_text(segment_tree, tvb, next_offset,
value_guard(sh_entsize), "Entry #%d", i);
entry_tree = proto_item_add_subtree(entry_item, ett_symbol_table_entry);
entry_tree = proto_tree_add_subtree_format(segment_tree, tvb, next_offset,
value_guard(sh_entsize), ett_symbol_table_entry, NULL, "Entry #%d", i);
next_offset = dissect_symbol_table(tvb, pinfo, entry_tree, entry_item,
next_offset, register_size, machine_encoding, (sh_type == 0x02) ? strtab_offset : dynstr_offset,
@ -1659,15 +1640,11 @@ dissect_elf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
}
/* Try to detect blackholes and overlapping segments */
generated_item = proto_tree_add_text(main_tree, tvb, 0, 0, "Infos");
generated_tree = proto_tree_add_subtree(main_tree, tvb, 0, 0, ett_elf_info, &generated_item, "Infos");
PROTO_ITEM_SET_GENERATED(generated_item);
generated_tree = proto_item_add_subtree(generated_item, ett_elf_info);
blackhole_item = proto_tree_add_text(generated_tree, tvb, 0, 0, "Backholes");
blackhole_tree = proto_item_add_subtree(blackhole_item, ett_elf_black_holes);
overlapping_item = proto_tree_add_text(generated_tree, tvb, 0, 0, "Overlapping");
overlapping_tree = proto_item_add_subtree(overlapping_item, ett_elf_overlapping);
blackhole_tree = proto_tree_add_subtree(generated_tree, tvb, 0, 0, ett_elf_black_holes, NULL, "Backholes");
overlapping_tree = proto_tree_add_subtree(generated_tree, tvb, 0, 0, ett_elf_overlapping, NULL, "Overlapping");
/* sorting... */
for (i = 0; i < area_counter; i += 1) {

View File

@ -371,7 +371,7 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
color_resolution = 1 + ((peek & 0x60) >> 4);
image_bpp = 1 + (peek & 0x07);
ti = proto_tree_add_text(gif_tree, tvb, 10, 1,
subtree = proto_tree_add_subtree(gif_tree, tvb, 10, 1, ett_global_flags, &ti,
"Global settings:");
if (color_map_present)
proto_item_append_text(ti, " (Global color table present)");
@ -379,7 +379,6 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
" (%u bit%s per color) (%u bit%s per pixel)",
color_resolution, plurality(color_resolution, "", "s"),
image_bpp, plurality(image_bpp, "", "s"));
subtree = proto_item_add_subtree(ti, ett_global_flags);
proto_tree_add_item(subtree, &hfi_global_color_map_present,
tvb, 10, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(subtree, &hfi_global_color_resolution,
@ -536,7 +535,7 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
color_resolution = 1 + ((peek & 0x60) >> 4);
image_bpp = 1 + (peek & 0x07);
ti2 = proto_tree_add_text(subtree, tvb, offset, 1,
subtree2 = proto_tree_add_subtree(subtree, tvb, offset, 1, ett_local_flags, &ti2,
"Local settings:");
if (color_map_present)
proto_item_append_text(ti2, " (Local color table present)");
@ -544,7 +543,6 @@ dissect_gif(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
" (%u bit%s per color) (%u bit%s per pixel)",
color_resolution, plurality(color_resolution, "", "s"),
image_bpp, plurality(image_bpp, "", "s"));
subtree2 = proto_item_add_subtree(ti2, ett_local_flags);
proto_tree_add_item(subtree2, &hfi_local_color_map_present,
tvb, offset, 1, ENC_LITTLE_ENDIAN);
proto_tree_add_item(subtree2, &hfi_local_color_resolution,

View File

@ -301,9 +301,8 @@ dissect_mp4_box(guint32 parent_box_type _U_,
box_type_str = tvb_get_string_enc(wmem_packet_scope(), tvb,
offset+4, 4, ENC_ASCII|ENC_NA);
type_pi = proto_tree_add_text(tree, tvb, offset, -1, "%s (%s)",
box_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_mp4_box, &type_pi, "%s (%s)",
val_to_str_const(box_type, box_types, "unknown"), box_type_str);
box_tree = proto_item_add_subtree(type_pi, ett_mp4_box);
size_pi = proto_tree_add_item(box_tree, hf_mp4_box_size,
tvb, offset, 4, ENC_BIG_ENDIAN);

View File

@ -457,7 +457,7 @@ dissect_png(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *da
while(tvb_reported_length_remaining(tvb, offset) > 0){
guint32 len_field;
proto_item *chunk_it, *len_it;
proto_item *len_it;
proto_tree *chunk_tree;
guint32 type;
guint8 *type_str;
@ -470,9 +470,8 @@ dissect_png(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *da
tvb, offset+4, 4, ENC_ASCII|ENC_NA);
/* 4 byte len field, 4 byte chunk type, 4 byte CRC */
chunk_it = proto_tree_add_text(tree, tvb, offset, 4+4+len_field+4, "%s (%s)",
val_to_str_const(type, chunk_types, "unknown"), type_str);
chunk_tree = proto_item_add_subtree(chunk_it, ett_png_chunk);
chunk_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4+4+len_field+4, ett_png_chunk, NULL,
"%s (%s)", val_to_str_const(type, chunk_types, "unknown"), type_str);
len_it = proto_tree_add_item(chunk_tree, &hfi_png_chunk_len,
tvb, offset, 4, ENC_BIG_ENDIAN);

View File

@ -383,7 +383,6 @@ dissect_tlvs(tvbuff_t *tvb, proto_tree *njack_tree, guint32 offset)
{
guint8 tlv_type;
guint8 tlv_length;
proto_item *tlv_item;
proto_item *tlv_tree;
for (;;) {
@ -402,14 +401,12 @@ dissect_tlvs(tvbuff_t *tvb, proto_tree *njack_tree, guint32 offset)
continue;
}
tlv_length = tvb_get_guint8(tvb, offset + 1);
tlv_item = proto_tree_add_text(njack_tree, tvb,
offset, tlv_length + 2,
tlv_tree = proto_tree_add_subtree_format(njack_tree, tvb,
offset, tlv_length + 2, ett_njack_tlv_header, NULL,
"T %02x, L %02x: %s",
tlv_type,
tlv_length,
val_to_str_ext_const(tlv_type, &njack_cmd_vals_ext, "Unknown"));
tlv_tree = proto_item_add_subtree(tlv_item,
ett_njack_tlv_header);
proto_tree_add_item(tlv_tree, hf_njack_tlv_type,
tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;

View File

@ -65,7 +65,7 @@ static dissector_handle_t data_handle;
static void
dissect_3com_xns(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree *subtree = NULL;
proto_tree *subtree;
proto_tree *ti;
guint16 type;
tvbuff_t *next_tvb;
@ -73,10 +73,8 @@ dissect_3com_xns(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "3Com XNS");
col_clear(pinfo->cinfo, COL_INFO);
if (tree) {
ti = proto_tree_add_item(tree, proto_3com_xns, tvb, 0, 4, ENC_NA);
subtree = proto_item_add_subtree(ti, ett_3com_xns);
}
ti = proto_tree_add_item(tree, proto_3com_xns, tvb, 0, 4, ENC_NA);
subtree = proto_item_add_subtree(ti, ett_3com_xns);
type = tvb_get_ntohs(tvb, 0);
next_tvb = tvb_new_subset_remaining(tvb, 2);

View File

@ -680,7 +680,6 @@ decode_bcmcs(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len)
case 1:
{
int i = 0;
proto_item *ti;
proto_tree *entry_tree;
while (ext_len > 0) {
i++;
@ -691,8 +690,8 @@ decode_bcmcs(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len)
} else {
ext_len = ext_len - entry_len;
}
ti = proto_tree_add_text(ext_tree, tvb, offset, entry_len, "BCMCS Information Entry %u", i);
entry_tree = proto_item_add_subtree(ti, ett_a11_bcmcs_entry);
entry_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset, entry_len,
ett_a11_bcmcs_entry, NULL, "BCMCS Information Entry %u", i);
proto_tree_add_item(entry_tree, hf_a11_bcmcs_entry_len, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_text(ext_tree, tvb, offset, entry_len -1, "Entry Data, Not dissected yet");
@ -713,7 +712,6 @@ decode_bcmcs(proto_tree* ext_tree, tvbuff_t* tvb, int offset, guint ext_len)
static void
dissect_a11_radius( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, int app_len)
{
proto_item *ti;
proto_tree *radius_tree;
/* None of this really matters if we don't have a tree */
@ -725,9 +723,7 @@ dissect_a11_radius( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t
return;
}
ti = proto_tree_add_text(tree, tvb, offset - 2, app_len, "Airlink Record");
radius_tree = proto_item_add_subtree(ti, ett_a11_radiuses);
radius_tree = proto_tree_add_subtree(tree, tvb, offset - 2, app_len, ett_a11_radiuses, NULL, "Airlink Record");
dissect_attribute_value_pairs(radius_tree, pinfo, tvb, offset, app_len-2);
@ -795,9 +791,8 @@ dissect_3gpp2_radius_aut_flow_profile_ids(proto_tree *tree, tvbuff_t *tvb, pac
sub_type_length = tvb_get_guint8(tvb,offset+1);
/* value is 2 octets */
value = tvb_get_ntohs(tvb,offset+2);
item = proto_tree_add_text(tree, tvb, offset, sub_type_length, "%s = %u",
val_to_str_const(sub_type, a11_aut_flow_prof_subtype_vals, "Unknown"), value);
sub_tree = proto_item_add_subtree(item, ett_a11_aut_flow_profile_ids);
sub_tree = proto_tree_add_subtree_format(tree, tvb, offset, sub_type_length, ett_a11_aut_flow_profile_ids, &item,
"%s = %u", val_to_str_const(sub_type, a11_aut_flow_prof_subtype_vals, "Unknown"), value);
proto_tree_add_item(sub_tree, hf_a11_aut_flow_prof_sub_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@ -825,7 +820,6 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
proto_tree *exts_tree;
guint8 srid = tvb_get_guint8(tvb, offset+1);
guint16 service_option = tvb_get_ntohs(tvb, offset+2);
proto_item *ti;
guint8 entry_lenght;
int entry_start_offset;
@ -834,11 +828,11 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
entry_lenght = tvb_get_guint8(tvb, offset);
if (registration_request_msg && ((service_option == 64) || (service_option == 67)))
ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght+1, "GRE Key Entry (SRID: %d)", srid);
exts_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset, entry_lenght+1,
ett_a11_ase, NULL, "GRE Key Entry (SRID: %d)", srid);
else
ti = proto_tree_add_text(ext_tree, tvb, offset, entry_lenght, "GRE Key Entry (SRID: %d)", srid);
exts_tree = proto_item_add_subtree(ti, ett_a11_ase);
exts_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset, entry_lenght,
ett_a11_ase, NULL, "GRE Key Entry (SRID: %d)", srid);
proto_tree_add_item(exts_tree, hf_a11_ase_len_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@ -865,15 +859,13 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
if ((entry_lenght>14)&&(registration_request_msg)) {
if (service_option == 0x0043) {
proto_item *tl;
proto_tree *extv_tree;
guint8 profile_count = tvb_get_guint8(tvb, offset+6);
guint8 profile_index = 0;
guint8 reverse_profile_count;
proto_item *tj = proto_tree_add_text(exts_tree, tvb, offset,6+(profile_count*2)+1, "Forward ROHC Info");
proto_tree *extt_tree = proto_item_add_subtree(tj, ett_a11_forward_rohc);
proto_tree *extt_tree = proto_tree_add_subtree(exts_tree, tvb, offset,6+(profile_count*2)+1,
ett_a11_forward_rohc, NULL, "Forward ROHC Info");
proto_tree_add_item(extt_tree, hf_a11_ase_forward_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@ -891,8 +883,8 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
for (profile_index=0; profile_index<profile_count; profile_index++) {
proto_item *tk = proto_tree_add_text (extt_tree, tvb, offset, (2*profile_count), "Forward Profile : %d", profile_index);
proto_tree *extu_tree = proto_item_add_subtree(tk, ett_a11_forward_profile);
proto_tree *extu_tree = proto_tree_add_subtree_format(extt_tree, tvb, offset, (2*profile_count),
ett_a11_forward_profile, NULL, "Forward Profile : %d", profile_index);
proto_tree_add_item(extu_tree, hf_a11_ase_forward_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
}/*for*/
@ -900,9 +892,8 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
reverse_profile_count=tvb_get_guint8(tvb, offset+6);
tl = proto_tree_add_text(exts_tree, tvb, offset,6+(reverse_profile_count*2)+1, "Reverse ROHC Info");
extv_tree = proto_item_add_subtree(tl, ett_a11_reverse_rohc);
extv_tree = proto_tree_add_subtree(exts_tree, tvb, offset,6+(reverse_profile_count*2)+1,
ett_a11_reverse_rohc, NULL, "Reverse ROHC Info");
proto_tree_add_item(extv_tree, hf_a11_ase_reverse_rohc_info_len, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
@ -922,9 +913,8 @@ dissect_ase(tvbuff_t *tvb, int offset, guint ase_len, proto_tree *ext_tree)
for (profile_index=0; profile_index<reverse_profile_count; profile_index++) {
proto_item *tm = proto_tree_add_text(extv_tree, tvb, offset, (2*profile_count), "Reverse Profile : %d", profile_index);
proto_tree *extw_tree = proto_item_add_subtree(tm, ett_a11_reverse_profile);
proto_tree *extw_tree = proto_tree_add_subtree_format(extv_tree, tvb, offset, (2*profile_count),
ett_a11_reverse_profile, NULL, "Reverse Profile : %d", profile_index);
proto_tree_add_item(extw_tree, hf_a11_ase_reverse_profile, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@ -1015,10 +1005,8 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, entry_len+1, "Forward Flow Entry (Flow Id: %d)", flow_id);
proto_tree *flow_tree = proto_item_add_subtree(ti, ett_a11_fqi_flowentry);
proto_tree *flow_tree = proto_tree_add_subtree_format(ext_tree, tvb, offset+clen,
entry_len+1, ett_a11_fqi_flowentry, NULL, "Forward Flow Entry (Flow Id: %d)", flow_id);
/* Entry Length */
proto_tree_add_item(flow_tree, hf_a11_fqi_entrylen, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
@ -1040,11 +1028,10 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Requested QoS Blob */
if (requested_qos_len) {
proto_item *ti2;
proto_tree *exts_tree2;
proto_item *ti1 = proto_tree_add_text(flow_tree, tvb, offset+clen,requested_qos_len, "Forward Requested QoS ");
proto_tree *exts_tree1 = proto_item_add_subtree(ti1, ett_a11_fqi_requestedqos);
proto_tree *exts_tree1 = proto_tree_add_subtree(flow_tree, tvb, offset+clen,requested_qos_len,
ett_a11_fqi_requestedqos, NULL, "Forward Requested QoS ");
proto_tree_add_text(exts_tree1, tvb, offset+clen, requested_qos_len, "Forward Requested QoS Sub Blob");
@ -1059,8 +1046,8 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
clen++;
/* QoS attribute set */
ti2 = proto_tree_add_text(exts_tree1, tvb, offset+clen, 4, "QoS Attribute Set");
exts_tree2 = proto_item_add_subtree(ti2, ett_a11_fqi_qos_attribute_set);
exts_tree2 = proto_tree_add_subtree(exts_tree1, tvb, offset+clen, 4, ett_a11_fqi_qos_attribute_set,
NULL, "QoS Attribute Set");
/* QoS attribute setid */
proto_tree_add_item(exts_tree2, hf_a11_fqi_qos_attribute_setid, tvb, offset+clen, 2, ENC_BIG_ENDIAN);
@ -1082,12 +1069,10 @@ dissect_fwd_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Granted QoS Blob */
if (granted_qos_len) {
proto_item *ti3;
proto_tree *exts_tree3;
ti3 = proto_tree_add_text(flow_tree, tvb, offset+clen, granted_qos_len, "Forward Granted QoS ");
exts_tree3 = proto_item_add_subtree(ti3, ett_a11_fqi_grantedqos);
exts_tree3 = proto_tree_add_subtree(flow_tree, tvb, offset+clen, granted_qos_len,
ett_a11_fqi_grantedqos, NULL, "Forward Granted QoS ");
proto_tree_add_text(exts_tree3, tvb, offset+clen, granted_qos_len, "Forward Granted QoS Sub Blob");
@ -1123,10 +1108,9 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 entry_len = tvb_get_guint8(tvb, offset+clen);
guint8 flow_id = tvb_get_guint8(tvb, offset+clen+1);
proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, entry_len+1, "Reverse Flow Entry (Flow Id: %d)", flow_id);
proto_tree *flow_tree = proto_item_add_subtree(ti, ett_a11_rqi_flowentry);
proto_tree *flow_tree = proto_tree_add_subtree_format
(ext_tree, tvb, offset+clen, entry_len+1, ett_a11_rqi_flowentry, NULL,
"Reverse Flow Entry (Flow Id: %d)", flow_id);
/* Entry Length */
proto_tree_add_item(flow_tree, hf_a11_rqi_entrylen, tvb, offset+clen, 1, ENC_BIG_ENDIAN);
@ -1147,12 +1131,10 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Requested QoS Blob */
if (requested_qos_len) {
proto_item *ti1, *ti2;
proto_tree *exts_tree1, *exts_tree2;
ti1 = proto_tree_add_text(flow_tree, tvb, offset+clen,requested_qos_len , "Reverse Requested QoS ");
exts_tree1 = proto_item_add_subtree(ti1, ett_a11_rqi_requestedqos);
exts_tree1 = proto_tree_add_subtree(flow_tree, tvb, offset+clen,requested_qos_len,
ett_a11_rqi_requestedqos, NULL, "Reverse Requested QoS ");
proto_tree_add_text(exts_tree1, tvb, offset+clen, requested_qos_len, "Reverse Requested QoS Sub Blob");
@ -1167,8 +1149,8 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
clen++;
/* QoS attribute set */
ti2 = proto_tree_add_text(exts_tree1, tvb, offset+clen, 4, "QoS Attribute Set");
exts_tree2 = proto_item_add_subtree(ti2, ett_a11_rqi_qos_attribute_set);
exts_tree2 = proto_tree_add_subtree(exts_tree1, tvb, offset+clen, 4,
ett_a11_rqi_qos_attribute_set, NULL, "QoS Attribute Set");
/* QoS attribute setid */
proto_tree_add_item(exts_tree2, hf_a11_rqi_qos_attribute_setid, tvb, offset+clen, 2, ENC_BIG_ENDIAN);
@ -1189,11 +1171,10 @@ dissect_rev_qosinfo(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
/* Granted QoS Blob */
if (granted_qos_len) {
proto_item *ti3;
proto_tree *exts_tree3;
ti3 = proto_tree_add_text(flow_tree, tvb, offset+clen,granted_qos_len , "Reverse Granted QoS ");
exts_tree3 = proto_item_add_subtree(ti3, ett_a11_rqi_grantedqos);
exts_tree3 = proto_tree_add_subtree(flow_tree, tvb, offset+clen,granted_qos_len,
ett_a11_rqi_grantedqos, NULL, "Reverse Granted QoS ");
proto_tree_add_text(exts_tree3, tvb, offset+clen, granted_qos_len, "Reverse Granted QoS Sub Blob");
@ -1213,13 +1194,11 @@ dissect_subscriber_qos_profile(tvbuff_t *tvb, packet_info *pinfo, int offset, in
int qos_profile_len = ext_len;
proto_item *ti =
proto_tree_add_text (ext_tree, tvb, offset, 0,
exts_tree =
proto_tree_add_subtree_format(ext_tree, tvb, offset, 0, ett_a11_subscriber_profile, NULL,
"Subscriber Qos Profile (%d bytes)",
qos_profile_len);
exts_tree = proto_item_add_subtree(ti, ett_a11_subscriber_profile);
/* Subscriber QoS profile */
if (qos_profile_len) {
proto_tree_add_item
@ -1249,11 +1228,11 @@ dissect_fwd_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 flow_id = tvb_get_guint8(tvb, offset+clen);
proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, 1, "Forward Flow Entry (Flow Id: %d)", flow_id);
exts_tree = proto_tree_add_subtree_format
(ext_tree, tvb, offset+clen, 1, ett_a11_fqui_flowentry, NULL,
"Forward Flow Entry (Flow Id: %d)", flow_id);
clen++;
exts_tree = proto_item_add_subtree(ti, ett_a11_fqui_flowentry);
/* Forward QoS Sub Blob Length */
granted_qos_len = tvb_get_guint8(tvb, offset+clen);
@ -1291,10 +1270,10 @@ dissect_rev_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
guint8 flow_id = tvb_get_guint8(tvb, offset+clen);
proto_item *ti = proto_tree_add_text
(ext_tree, tvb, offset+clen, 1, "Reverse Flow Entry (Flow Id: %d)", flow_id);
exts_tree = proto_tree_add_subtree_format
(ext_tree, tvb, offset+clen, 1, ett_a11_rqui_flowentry, NULL,
"Reverse Flow Entry (Flow Id: %d)", flow_id);
clen++;
exts_tree = proto_item_add_subtree(ti, ett_a11_rqui_flowentry);
/* Reverse QoS Sub Blob Length */
granted_qos_len = tvb_get_guint8(tvb, offset+clen);
@ -1316,7 +1295,6 @@ dissect_rev_qosupdate_info(tvbuff_t *tvb, int offset, proto_tree *ext_tree)
static void
dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree)
{
proto_item *ti;
proto_tree *exts_tree;
proto_tree *ext_tree;
guint ext_len;
@ -1327,8 +1305,7 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
gint16 apptype = -1;
/* Add our tree, if we have extensions */
ti = proto_tree_add_text(tree, tvb, offset, -1, "Extensions");
exts_tree = proto_item_add_subtree(ti, ett_a11_exts);
exts_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_a11_exts, NULL, "Extensions");
/* And, handle each extension */
while (tvb_reported_length_remaining(tvb, offset) > 0) {
@ -1352,11 +1329,10 @@ dissect_a11_extensions( tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tre
hdrLen = 2;
}
ti = proto_tree_add_text(exts_tree, tvb, offset, ext_len + hdrLen,
"Extension: %s",
ext_tree = proto_tree_add_subtree_format(exts_tree, tvb, offset, ext_len + hdrLen,
ett_a11_ext, NULL, "Extension: %s",
val_to_str(ext_type, a11_ext_types,
"Unknown Extension %u"));
ext_tree = proto_item_add_subtree(ti, ett_a11_ext);
proto_tree_add_uint(ext_tree, hf_a11_ext_type, tvb, offset, 1, ext_type);
offset += 1;

View File

@ -1021,8 +1021,8 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg
guint8 hc1_encoding;
guint8 hc_udp_encoding = 0;
guint8 next_header;
proto_tree * hc_tree = NULL;
proto_item * ti;
proto_tree * hc_tree;
proto_item * hc_item;
tvbuff_t * ipv6_tvb;
/* IPv6 header. */
guint8 ipv6_class;
@ -1034,13 +1034,10 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg
*=====================================================
*/
/* Create a tree for the HC1 Header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, 0, 2, "HC1 Encoding");
hc_tree = proto_item_add_subtree(ti, ett_6lowpan_hc1);
hc_tree = proto_tree_add_subtree(tree, tvb, 0, 2, ett_6lowpan_hc1, &hc_item, "HC1 Encoding");
/* Get and display the pattern. */
proto_tree_add_bits_item(hc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_HC1_BITS, ENC_BIG_ENDIAN);
}
/* Get and display the pattern. */
proto_tree_add_bits_item(hc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_HC1_BITS, ENC_BIG_ENDIAN);
offset += 1;
/* Get and display the HC1 encoding bits. */
@ -1062,8 +1059,7 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg
if (next_header == LOWPAN_HC1_NEXT_UDP) {
hc_udp_encoding = tvb_get_guint8(tvb, offset);
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 1, "HC_UDP Encoding");
hc_tree = proto_item_add_subtree(ti, ett_6lowpan_hc2_udp);
hc_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_6lowpan_hc2_udp, NULL, "HC_UDP Encoding");
proto_tree_add_boolean(hc_tree, hf_6lowpan_hc2_udp_src, tvb, offset, 1, hc_udp_encoding & LOWPAN_HC2_UDP_SRCPORT);
proto_tree_add_boolean(hc_tree, hf_6lowpan_hc2_udp_dst, tvb, offset, 1, hc_udp_encoding & LOWPAN_HC2_UDP_DSTPORT);
proto_tree_add_boolean(hc_tree, hf_6lowpan_hc2_udp_len, tvb, offset, 1, hc_udp_encoding & LOWPAN_HC2_UDP_LENGTH);
@ -1072,7 +1068,7 @@ dissect_6lowpan_hc1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint dg
}
else {
/* HC1 states there are more bits, but an illegal next header was defined. */
expert_add_info(pinfo, NULL, &ei_6lowpan_hc1_more_bits);
expert_add_info(pinfo, hc_item, &ei_6lowpan_hc1_more_bits);
return NULL;
}
}
@ -1382,13 +1378,10 @@ dissect_6lowpan_iphc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint d
hint_panid = (hints) ? (hints->src_pan) : (IEEE802154_BCAST_PAN);
/* Create a tree for the IPHC header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, 0, 2, "IPHC Header");
iphc_tree = proto_item_add_subtree(ti, ett_6lowpan_iphc);
iphc_tree = proto_tree_add_subtree(tree, tvb, 0, 2, ett_6lowpan_iphc, NULL, "IPHC Header");
/* Display the pattern. */
proto_tree_add_bits_item(iphc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_IPHC_BITS, ENC_BIG_ENDIAN);
}
/* Display the pattern. */
proto_tree_add_bits_item(iphc_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_IPHC_BITS, ENC_BIG_ENDIAN);
/*=====================================================
* Parse IPHC Header flags.
@ -1782,8 +1775,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
/* Create a tree for the IPv6 extension header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 2, "IPv6 extension header");
nhc_tree = proto_item_add_subtree(ti, ett_6lowpan_nhc_ext);
nhc_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_6lowpan_nhc_ext, NULL, "IPv6 extension header");
/* Display the NHC-UDP pattern. */
proto_tree_add_bits_item(nhc_tree, hf_6lowpan_nhc_pattern, tvb, offset<<3, LOWPAN_NHC_PATTERN_EXT_BITS, ENC_BIG_ENDIAN);
}
@ -1827,8 +1819,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
/* Create a tree for the IPv6 extension header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 2, "IPv6 extension header");
nhc_tree = proto_item_add_subtree(ti, ett_6lowpan_nhc_ext);
nhc_tree = proto_tree_add_subtree(tree, tvb, offset, 2, ett_6lowpan_nhc_ext, NULL, "IPv6 extension header");
/* Display the NHC-UDP pattern. */
proto_tree_add_bits_item(nhc_tree, hf_6lowpan_nhc_pattern, tvb, offset<<3, LOWPAN_NHC_PATTERN_EXT_BITS, ENC_BIG_ENDIAN);
}
@ -1939,8 +1930,7 @@ dissect_6lowpan_iphc_nhc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gi
/* Create a tree for the UDP header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, 0, 1, "UDP header compression");
nhc_tree = proto_item_add_subtree(ti, ett_6lowpan_nhc_udp);
nhc_tree = proto_tree_add_subtree(tree, tvb, 0, 1, ett_6lowpan_nhc_udp, NULL, "UDP header compression");
/* Display the NHC-UDP pattern. */
proto_tree_add_bits_item(nhc_tree, hf_6lowpan_nhc_pattern, tvb, offset<<3, LOWPAN_NHC_PATTERN_UDP_BITS, ENC_BIG_ENDIAN);
}
@ -2100,12 +2090,10 @@ dissect_6lowpan_bc0(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree)
{
guint8 seqnum;
proto_tree * bcast_tree;
proto_item * ti;
/* Create a tree for the broadcast header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, 0, 2, "Broadcast Header");
bcast_tree = proto_item_add_subtree(ti, ett_6lowpan_bcast);
bcast_tree = proto_tree_add_subtree(tree, tvb, 0, 2, ett_6lowpan_bcast, NULL, "Broadcast Header");
/* Get and display the pattern. */
proto_tree_add_bits_item(bcast_tree, hf_6lowpan_pattern, tvb, 0, LOWPAN_PATTERN_BC0_BITS, ENC_BIG_ENDIAN);
@ -2144,20 +2132,15 @@ dissect_6lowpan_mesh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
const guint8 * dst_ifcid;
/* Create a tree for the mesh header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 0, "Mesh Header");
mesh_tree = proto_item_add_subtree(ti, ett_6lowpan_mesh);
}
mesh_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_6lowpan_mesh, NULL, "Mesh Header");
/* Get and display the mesh flags. */
mesh_header = tvb_get_guint8(tvb, offset);
if (tree) {
proto_item * flag_item;
proto_tree * flag_tree;
/* Create the mesh header subtree. */
flag_item = proto_tree_add_text(mesh_tree, tvb, offset, 1, "Flags");
flag_tree = proto_item_add_subtree(flag_item, ett_6lowpan_mesh);
flag_tree = proto_tree_add_subtree(mesh_tree, tvb, offset, 1, ett_6lowpan_mesh, NULL, "Flags");
/* Add the mesh header fields. */
proto_tree_add_bits_item(flag_tree, hf_6lowpan_pattern, tvb, offset * 8, LOWPAN_PATTERN_MESH_BITS, ENC_BIG_ENDIAN);
@ -2252,9 +2235,9 @@ dissect_6lowpan_frag_first(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
gint frag_size;
guint16 dgram_size;
guint16 dgram_tag;
proto_tree * frag_tree = NULL;
proto_item * ti = NULL;
proto_item * length_item = NULL;
proto_tree * frag_tree;
proto_item * ti;
proto_item * length_item;
/* Reassembly parameters. */
tvbuff_t * new_tvb;
tvbuff_t * frag_tvb;
@ -2262,30 +2245,21 @@ dissect_6lowpan_frag_first(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
gboolean save_fragmented;
/* Create a tree for the fragmentation header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 0, "Fragmentation Header");
frag_tree = proto_item_add_subtree(ti, ett_6lowpan_frag);
}
frag_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_6lowpan_frag, &ti, "Fragmentation Header");
/* Get and display the pattern and datagram size. */
dgram_size = tvb_get_bits16(tvb, (offset * 8) + LOWPAN_PATTERN_FRAG_BITS, LOWPAN_FRAG_DGRAM_SIZE_BITS, ENC_BIG_ENDIAN);
if (tree) {
proto_tree_add_bits_item(frag_tree, hf_6lowpan_pattern, tvb, offset * 8, LOWPAN_PATTERN_FRAG_BITS, ENC_BIG_ENDIAN);
length_item = proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_size, tvb, offset, 2, dgram_size);
}
proto_tree_add_bits_item(frag_tree, hf_6lowpan_pattern, tvb, offset * 8, LOWPAN_PATTERN_FRAG_BITS, ENC_BIG_ENDIAN);
length_item = proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_size, tvb, offset, 2, dgram_size);
offset += 2;
/* Get and display the datagram tag. */
dgram_tag = tvb_get_ntohs(tvb, offset);
if (tree) {
proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag);
}
proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag);
offset += 2;
/* Adjust the fragmentation header length. */
if (tree) {
proto_item_set_end(ti, tvb, offset);
}
proto_item_set_end(ti, tvb, offset);
/* The first fragment can contain an uncompressed IPv6, HC1 or IPHC fragment. */
frag_tvb = tvb_new_subset_remaining(tvb, offset);
@ -2373,17 +2347,14 @@ dissect_6lowpan_frag_middle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint16 dgram_tag;
guint16 dgram_offset = 0;
proto_tree * frag_tree = NULL;
proto_item * ti = NULL;
proto_item * ti;
/* Reassembly parameters. */
tvbuff_t * new_tvb;
fragment_head * frag_data;
gboolean save_fragmented;
/* Create a tree for the fragmentation header. */
if (tree) {
ti = proto_tree_add_text(tree, tvb, offset, 0, "Fragmentation Header");
frag_tree = proto_item_add_subtree(ti, ett_6lowpan_frag);
}
frag_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_6lowpan_frag, &ti, "Fragmentation Header");
/* Get and display the pattern and datagram size. */
dgram_size = tvb_get_bits16(tvb, (offset * 8) + LOWPAN_PATTERN_FRAG_BITS, LOWPAN_FRAG_DGRAM_SIZE_BITS, ENC_BIG_ENDIAN);
@ -2395,16 +2366,12 @@ dissect_6lowpan_frag_middle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* Get and display the datagram tag. */
dgram_tag = tvb_get_ntohs(tvb, offset);
if (tree) {
proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag);
}
proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_tag, tvb, offset, 2, dgram_tag);
offset += 2;
/* Get and display the datagram offset. */
dgram_offset = tvb_get_guint8(tvb, offset) * 8;
if (tree) {
proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_offset, tvb, offset, 1, dgram_offset);
}
proto_tree_add_uint(frag_tree, hf_6lowpan_frag_dgram_offset, tvb, offset, 1, dgram_offset);
offset += 1;
/* Adjust the fragmentation header length. */

View File

@ -2256,7 +2256,7 @@ static void dissect_9P_mode(tvbuff_t *tvb, proto_item *item, int offset)
/* dissect 9P Qid */
static void dissect_9P_qid(tvbuff_t *tvb, proto_tree *tree, int offset)
{
proto_item *qid_item,*qidtype_item;
proto_item *qidtype_item;
proto_tree *qid_tree,*qidtype_tree;
guint64 path;
guint32 vers;
@ -2269,8 +2269,8 @@ static void dissect_9P_qid(tvbuff_t *tvb, proto_tree *tree, int offset)
vers = tvb_get_letohs(tvb, offset+1);
path = tvb_get_letoh64(tvb, offset+1+4);
qid_item = proto_tree_add_text(tree, tvb, offset, 13, "Qid type=0x%02x vers=%d path=%" G_GINT64_MODIFIER "u", type, vers, path);
qid_tree = proto_item_add_subtree(qid_item, ett_9P_qid);
qid_tree = proto_tree_add_subtree_format(tree, tvb, offset, 13, ett_9P_qid, NULL,
"Qid type=0x%02x vers=%d path=%" G_GINT64_MODIFIER "u", type, vers, path);
qidtype_item = proto_tree_add_item(qid_tree, hf_9P_qidtype, tvb, offset, 1, ENC_LITTLE_ENDIAN);
qidtype_tree = proto_item_add_subtree(qidtype_item, ett_9P_qidtype);

View File

@ -291,14 +291,13 @@ dissect_a21_mobile_subscription_information(tvbuff_t *tvb, packet_info *pinfo _U
guint8 record_id;
guint16 record_len=0;
proto_tree *record_tree;
proto_item *record_item;
while(offset<length){
record_id=tvb_get_guint8(tvb, offset);
record_len=tvb_get_guint8(tvb, offset+1);
record_item = proto_tree_add_text(tree, tvb, offset+2, record_len, "Record %u",i+1);
record_tree = proto_item_add_subtree(record_item, ett_a21_record_content);
record_tree = proto_tree_add_subtree_format(tree, tvb, offset+2, record_len,
ett_a21_record_content, NULL, "Record %u",i+1);
proto_tree_add_item(record_tree, hf_a21_mob_sub_info_record_id, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;
@ -544,9 +543,8 @@ dissect_a21_ie_common(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree, gi
length = tvb_get_guint8(tvb, offset+1);
}
ti = proto_tree_add_text(tree, tvb, offset, 1 + length_len + length, "%s : ",
val_to_str_const(ie_type, a21_element_type_vals, "Unknown"));
ie_tree = proto_item_add_subtree(ti, ett_a21_ie);
ie_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1 + length_len + length, ett_a21_ie, &ti,
"%s : ", val_to_str_const(ie_type, a21_element_type_vals, "Unknown"));
/* Octet 1-element identifie*/
proto_tree_add_item(ie_tree, hf_a21_element_identifier, tvb, offset, 1, ENC_BIG_ENDIAN);
@ -627,7 +625,7 @@ dissect_a21(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint8 message_type;
int offset = 0;
proto_item *ti, *tc;
proto_item *tc;
proto_tree *a21_tree, *corr_tree;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "A21");
@ -644,9 +642,9 @@ dissect_a21(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree_add_item(tree, proto_a21, tvb, offset, 0, ENC_NA);
if(tree){
ti = proto_tree_add_text(tree, tvb, offset, 1, "%s",
val_to_str_const(message_type, a21_message_type_vals, "Unknown"));
a21_tree = proto_item_add_subtree(ti, ett_a21);
a21_tree = proto_tree_add_subtree(tree, tvb, offset, 1, ett_a21, NULL,
val_to_str_const(message_type, a21_message_type_vals, "Unknown"));
/* message type in Octet 1 */
proto_tree_add_item(a21_tree, hf_a21_message_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset++;

View File

@ -498,8 +498,8 @@ acn_add_channel_owner_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree *
guint32 session_count;
guint32 x;
pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Owner Info Block");
this_tree = proto_item_add_subtree(pi, ett_acn_channel_owner_info_block);
this_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_acn_channel_owner_info_block, NULL,
"Channel Owner Info Block");
proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@ -527,8 +527,8 @@ acn_add_channel_member_info_block(tvbuff_t *tvb, packet_info *pinfo, proto_tree
guint32 session_count;
guint32 x;
pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Member Info Block");
this_tree = proto_item_add_subtree(pi, ett_acn_channel_member_info_block);
this_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_acn_channel_member_info_block,
NULL, "Channel Member Info Block");
proto_tree_add_item(this_tree, hf_acn_member_id, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
@ -567,11 +567,11 @@ acn_add_expiry(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offs
static guint32
acn_add_channel_parameter(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset)
{
proto_item *pi;
proto_tree *param_tree;
pi = proto_tree_add_text(tree, tvb, offset, 8, "Channel Parameter Block");
param_tree = proto_item_add_subtree(pi, ett_acn_channel_parameter);
param_tree = proto_tree_add_subtree(tree, tvb, offset, 8, ett_acn_channel_parameter,
NULL, "Channel Parameter Block");
proto_tree_add_item(param_tree, hf_acn_expiry, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
proto_tree_add_item(param_tree, hf_acn_nak_outbound_flag, tvb, offset, 1, ENC_BIG_ENDIAN);
@ -611,8 +611,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
break;
case ACN_ADDR_IPV4:
/* Build tree and add type*/
pi = proto_tree_add_text(tree, tvb, offset, 7, "%s", label);
addr_tree = proto_item_add_subtree(pi, ett_acn_address);
addr_tree = proto_tree_add_subtree(tree, tvb, offset, 7, ett_acn_address, &pi, label);
proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
/* Add port */
@ -629,8 +628,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
break;
case ACN_ADDR_IPV6:
/* Build tree and add type*/
pi = proto_tree_add_text(tree, tvb, offset, 19, "%s", label);
addr_tree = proto_item_add_subtree(pi, ett_acn_address);
addr_tree = proto_tree_add_subtree(tree, tvb, offset, 19, ett_acn_address, &pi, label);
proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
/* Add port */
@ -647,8 +645,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
break;
case ACN_ADDR_IPPORT:
/* Build tree and add type*/
pi = proto_tree_add_text(tree, tvb, offset, 3, "%s", label);
addr_tree = proto_item_add_subtree(pi, ett_acn_address);
addr_tree = proto_tree_add_subtree(tree, tvb, offset, 3, ett_acn_address, &pi, label);
proto_tree_add_item(addr_tree, hf_acn_ip_address_type, tvb, offset, 1, ENC_BIG_ENDIAN);
offset += 1;
/* Add port */
@ -667,8 +664,7 @@ acn_add_address(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int off
static guint32
acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, acn_dmp_adt_type *adt)
{
proto_item *pi;
proto_tree *this_tree = NULL;
proto_tree *this_tree;
guint8 D;
const gchar *name;
@ -677,9 +673,9 @@ acn_add_dmp_address_type(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
D = ACN_DMP_ADT_EXTRACT_D(adt->flags);
name = val_to_str(D, acn_dmp_adt_d_vals, "not valid (%d)");
pi = proto_tree_add_text(tree, tvb, offset, 1, "Address and Data Type: %s", name);
this_tree = proto_tree_add_subtree_format(tree, tvb, offset, 1, ett_acn_address_type,
NULL, "Address and Data Type: %s", name);
this_tree = proto_item_add_subtree(pi, ett_acn_address_type);
proto_tree_add_uint(this_tree, hf_acn_dmp_adt_v, tvb, offset, 1, adt->flags);
proto_tree_add_uint(this_tree, hf_acn_dmp_adt_r, tvb, offset, 1, adt->flags);
proto_tree_add_uint(this_tree, hf_acn_dmp_adt_d, tvb, offset, 1, adt->flags);