aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-07-05 15:25:32 -0400
committerMichael Mann <mmann78@netscape.net>2014-07-05 20:36:36 +0000
commitfc63343a4ebebeb594a162c57bd1b17315a6e4d5 (patch)
treeb0f0c8b8e395a99f9fbbf95edad18b1370786e91
parent3f7725174d2c4122b1d159958a56b8d8b928301b (diff)
convert to proto_tree_add_subtree[_format]
Change-Id: I8df48b25de784a48a25f0e48aac1e1545ed92c35 Reviewed-on: https://code.wireshark.org/review/2865 Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--epan/dissectors/packet-oipf.c4
-rw-r--r--epan/dissectors/packet-omron-fins.c67
-rw-r--r--epan/dissectors/packet-openflow_v1.c3
-rw-r--r--epan/dissectors/packet-openflow_v4.c97
-rw-r--r--epan/dissectors/packet-openflow_v5.c132
-rw-r--r--epan/dissectors/packet-openvpn.c13
-rw-r--r--epan/dissectors/packet-opsi.c4
-rw-r--r--epan/dissectors/packet-osi-options.c11
-rw-r--r--epan/dissectors/packet-ospf.c198
-rw-r--r--epan/dissectors/packet-p_mul.c9
-rw-r--r--epan/dissectors/packet-pagp.c7
-rw-r--r--epan/dissectors/packet-pana.c29
-rw-r--r--epan/dissectors/packet-pathport.c17
-rw-r--r--epan/dissectors/packet-pcep.c13
-rw-r--r--epan/dissectors/packet-pcnfsd.c44
-rw-r--r--epan/dissectors/packet-per.c3
-rw-r--r--epan/dissectors/packet-pflog.c47
-rw-r--r--epan/dissectors/packet-pgm.c24
-rw-r--r--epan/dissectors/packet-pgsql.c21
-rw-r--r--epan/dissectors/packet-pim.c18
-rw-r--r--epan/dissectors/packet-pktc.c45
-rw-r--r--epan/dissectors/packet-pnrp.c120
-rw-r--r--epan/dissectors/packet-portmap.c18
-rw-r--r--epan/dissectors/packet-ppcap.c5
-rw-r--r--epan/dissectors/packet-ppi.c39
-rw-r--r--epan/dissectors/packet-ppp.c330
-rw-r--r--epan/dissectors/packet-ptp.c36
-rw-r--r--epan/dissectors/packet-pvfs2.c117
28 files changed, 511 insertions, 960 deletions
diff --git a/epan/dissectors/packet-oipf.c b/epan/dissectors/packet-oipf.c
index cf0ea556bc..79c3df15d3 100644
--- a/epan/dissectors/packet-oipf.c
+++ b/epan/dissectors/packet-oipf.c
@@ -78,7 +78,6 @@ static int
dissect_oipf_ciplus(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
gint msg_len;
- proto_item *ti;
proto_tree *oipf_ciplus_tree;
guint offset = 0;
guint8 i, send_datatype_nbr;
@@ -91,8 +90,7 @@ dissect_oipf_ciplus(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, voi
if (msg_len < 8)
return 0;
- ti = proto_tree_add_text(tree, tvb, 0, msg_len, "Open IPTV Forum CSPG-CI+");
- oipf_ciplus_tree = proto_item_add_subtree(ti, ett_oipf_ciplus);
+ oipf_ciplus_tree = proto_tree_add_subtree(tree, tvb, 0, msg_len, ett_oipf_ciplus, NULL, "Open IPTV Forum CSPG-CI+");
proto_tree_add_item(oipf_ciplus_tree, hf_oipf_ciplus_cmd_id,
tvb, offset, 1, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-omron-fins.c b/epan/dissectors/packet-omron-fins.c
index 3519df28ed..cb2dbf490b 100644
--- a/epan/dissectors/packet-omron-fins.c
+++ b/epan/dissectors/packet-omron-fins.c
@@ -1142,8 +1142,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
ti = proto_tree_add_item(tree, proto_omron_fins, tvb, 0, -1, ENC_NA);
omron_tree = proto_item_add_subtree(ti, ett_omron);
- ti = proto_tree_add_text(omron_tree, tvb, 0, 12, "Omron Header");
- omron_header_tree = proto_item_add_subtree(ti, ett_omron_header);
+ omron_header_tree = proto_tree_add_subtree(omron_tree, tvb, 0, 12, ett_omron_header, &ti, "Omron Header");
proto_tree_add_bitmask(omron_header_tree, tvb, offset, hf_omron_icf,
ett_omron_icf_fields, omron_icf_fields, ENC_BIG_ENDIAN);
@@ -1262,8 +1261,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
/* Add command data tree */
/* Note: A "malformed" will be thrown if data length = 0 at this point */
- ti = proto_tree_add_text(omron_tree, tvb, offset, -1, "Command Data");
- command_tree = proto_item_add_subtree(ti, ett_omron_command_data);
+ command_tree = proto_tree_add_subtree(omron_tree, tvb, offset, -1, ett_omron_command_data, NULL, "Command Data");
/* Start parsing individual commands */
switch(command_code) {
@@ -1622,8 +1620,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
/* add block record tree for each record */
while(reported_length_remaining >= 8)
{
- ti = proto_tree_add_text(command_tree, tvb, offset, 8, "Block Record");
- omron_block_record_tree = proto_item_add_subtree(ti, ett_omron_block_record);
+ omron_block_record_tree = proto_tree_add_subtree(command_tree, tvb, offset, 8, ett_omron_block_record, NULL, "Block Record");
proto_tree_add_item(omron_block_record_tree, hf_omron_block_record_node_num_status, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(omron_block_record_tree, hf_omron_block_record_node_num_num_nodes, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(omron_block_record_tree, hf_omron_block_record_cio_area, tvb, (offset+1), 2, ENC_BIG_ENDIAN);
@@ -1655,8 +1652,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
while(reported_length_remaining >= 8)
{
- ti = proto_tree_add_text(command_tree, tvb, offset, 8, "Block Record");
- omron_block_record_tree = proto_item_add_subtree(ti, ett_omron_block_record);
+ omron_block_record_tree = proto_tree_add_subtree(command_tree, tvb, offset, 8, ett_omron_block_record, NULL, "Block Record");
proto_tree_add_item(omron_block_record_tree, hf_omron_block_record_node_num_status, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(omron_block_record_tree, hf_omron_block_record_node_num_num_nodes, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(omron_block_record_tree, hf_omron_block_record_cio_area, tvb, (offset+1), 2, ENC_BIG_ENDIAN);
@@ -1856,8 +1852,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
proto_tree_add_item(command_tree, hf_omron_controller_version, tvb, (offset+22), 20, ENC_ASCII|ENC_NA);
proto_tree_add_item(command_tree, hf_omron_for_system_use, tvb, (offset+42), 40, ENC_ASCII|ENC_NA);
/* add area data sub tree */
- ti = proto_tree_add_text(command_tree, tvb, (offset+82), 12, "Area Data");
- area_data_tree = proto_item_add_subtree(ti, ett_area_data);
+ area_data_tree = proto_tree_add_subtree(command_tree, tvb, (offset+82), 12, ett_area_data, NULL, "Area Data");
proto_tree_add_item(area_data_tree, hf_omron_program_area_size, tvb, (offset+82), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(area_data_tree, hf_omron_iom_size, tvb, (offset+84), 1, ENC_BIG_ENDIAN);
proto_tree_add_item(area_data_tree, hf_omron_num_dm_words, tvb, (offset+85), 2, ENC_BIG_ENDIAN);
@@ -1872,8 +1867,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
else if(reported_length_remaining == 69)
{
proto_tree_add_item(command_tree, hf_omron_response_code, tvb, offset, 2, ENC_BIG_ENDIAN);
- ti = proto_tree_add_text(command_tree, tvb, (offset+2), 64, "CPU Bus Unit Conf");
- cpu_bus_tree = proto_item_add_subtree(ti, ett_cpu_bus);
+ cpu_bus_tree = proto_tree_add_subtree(command_tree, tvb, (offset+2), 64, ett_cpu_bus, NULL, "CPU Bus Unit Conf");
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_0, tvb, (offset+2), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_1, tvb, (offset+4), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_2, tvb, (offset+6), 2, ENC_BIG_ENDIAN);
@@ -1892,8 +1886,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_15, tvb, (offset+32), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_reserved, tvb, (offset+34), 32, ENC_ASCII|ENC_NA);
/* Remote IO Data tree */
- ti = proto_tree_add_text(command_tree, tvb, (offset+66), 2, "Remote I/O data");
- io_data_tree = proto_item_add_subtree(ti, ett_io_data);
+ io_data_tree = proto_tree_add_subtree(command_tree, tvb, (offset+66), 2, ett_io_data, NULL, "Remote I/O data");
proto_tree_add_item(io_data_tree, hf_omron_io_data_num_sysmac_1, tvb, (offset+66), 1, ENC_BIG_ENDIAN);
proto_tree_add_item(io_data_tree, hf_omron_io_data_num_sysmac_2, tvb, (offset+67), 1, ENC_BIG_ENDIAN);
/* PC status */
@@ -1909,8 +1902,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
proto_tree_add_item(command_tree, hf_omron_controller_version, tvb, (offset+22), 20, ENC_ASCII|ENC_NA);
proto_tree_add_item(command_tree, hf_omron_for_system_use, tvb, (offset+42), 40, ENC_ASCII|ENC_NA);
/* add area data sub tree */
- ti = proto_tree_add_text(command_tree, tvb, (offset+82), 12, "Area Data");
- area_data_tree = proto_item_add_subtree(ti, ett_area_data);
+ area_data_tree = proto_tree_add_subtree(command_tree, tvb, (offset+82), 12, ett_area_data, NULL, "Area Data");
proto_tree_add_item(area_data_tree, hf_omron_program_area_size, tvb, (offset+82), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(area_data_tree, hf_omron_iom_size, tvb, (offset+84), 1, ENC_BIG_ENDIAN);
proto_tree_add_item(area_data_tree, hf_omron_num_dm_words, tvb, (offset+85), 2, ENC_BIG_ENDIAN);
@@ -1920,8 +1912,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
proto_tree_add_item(area_data_tree, hf_omron_kind_memory_card, tvb, (offset+91), 1, ENC_BIG_ENDIAN);
proto_tree_add_item(area_data_tree, hf_omron_memory_card_size, tvb, (offset+92), 2, ENC_BIG_ENDIAN);
/* cpu bus unit configuration */
- ti = proto_tree_add_text(command_tree, tvb, (offset+94), 64, "CPU Bus Unit Conf");
- cpu_bus_tree = proto_item_add_subtree(ti, ett_cpu_bus);
+ cpu_bus_tree = proto_tree_add_subtree(command_tree, tvb, (offset+94), 64, ett_cpu_bus, NULL, "CPU Bus Unit Conf");
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_0, tvb, (offset+94), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_1, tvb, (offset+96), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_2, tvb, (offset+98), 2, ENC_BIG_ENDIAN);
@@ -1940,8 +1931,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_unit_15, tvb, (offset+124), 2, ENC_BIG_ENDIAN);
proto_tree_add_item(cpu_bus_tree, hf_omron_cpu_bus_reserved, tvb, (offset+126), 32, ENC_ASCII|ENC_NA);
/* Remote IO Data tree */
- ti = proto_tree_add_text(command_tree, tvb, (offset+158), 2, "Remote I/O data");
- io_data_tree = proto_item_add_subtree(ti, ett_io_data);
+ io_data_tree = proto_tree_add_subtree(command_tree, tvb, (offset+158), 2, ett_io_data, NULL, "Remote I/O data");
proto_tree_add_item(io_data_tree, hf_omron_io_data_num_sysmac_1, tvb, (offset+158), 1, ENC_BIG_ENDIAN);
proto_tree_add_item(io_data_tree, hf_omron_io_data_num_sysmac_2, tvb, (offset+159), 1, ENC_BIG_ENDIAN);
/* PC status */
@@ -2027,11 +2017,8 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
{
if(reported_length_remaining == 108)
{
- proto_item *netw_nodes_sts;
proto_tree *netw_nodes_sts_tree;
- proto_item *netw_nodes_non_fatal_err_sts;
proto_tree *netw_nodes_non_fatal_err_sts_tree;
- proto_item *netw_nodes_cyclic_err_ctrs;
proto_tree *netw_nodes_cyclic_err_ctrs_tree;
guint8 i;
guint8 node_num;
@@ -2040,21 +2027,20 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
offset = offset + 2;
/* parsing 31 bytes of foo */
- netw_nodes_sts = proto_tree_add_text(command_tree, tvb, offset, 31, "Network Nodes Status");
- netw_nodes_sts_tree = proto_item_add_subtree(netw_nodes_sts, ett_omron_netw_nodes_sts);
+ netw_nodes_sts_tree = proto_tree_add_subtree(command_tree, tvb, offset, 31, ett_omron_netw_nodes_sts, NULL, "Network Nodes Status");
node_num = 1;
for(i = 0; i < 31; i++)
{
- ti = proto_tree_add_text(netw_nodes_sts_tree, tvb, offset, 1, "Node Number %d", node_num);
- field_tree = proto_item_add_subtree(ti, ett_omron_netw_node_sts);
+ field_tree = proto_tree_add_subtree_format(netw_nodes_sts_tree, tvb, offset, 1,
+ ett_omron_netw_node_sts, NULL, "Node Number %d", node_num);
proto_tree_add_item(field_tree, hf_omron_netw_node_sts_low_3, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_omron_netw_node_sts_low_2, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_omron_netw_node_sts_low_1, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_omron_netw_node_sts_low_0, tvb, offset, 1, ENC_BIG_ENDIAN);
node_num = node_num + 1;
- ti = proto_tree_add_text(netw_nodes_sts_tree, tvb, offset, 1, "Node Number %d", node_num);
- field_tree = proto_item_add_subtree(ti, ett_omron_netw_node_sts);
+ field_tree = proto_tree_add_subtree_format(netw_nodes_sts_tree, tvb, offset, 1,
+ ett_omron_netw_node_sts, NULL, "Node Number %d", node_num);
proto_tree_add_item(field_tree, hf_omron_netw_node_sts_high_3, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_omron_netw_node_sts_high_2, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(field_tree, hf_omron_netw_node_sts_high_1, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -2070,10 +2056,8 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
proto_tree_add_item(command_tree, hf_omron_cyclic_trans_status, tvb, (offset+4), 1, ENC_BIG_ENDIAN);
offset =offset + 5;
- netw_nodes_non_fatal_err_sts =
- proto_tree_add_text(command_tree, tvb, offset, 8, "Network Nodes Non-Fatal Error Status");
- netw_nodes_non_fatal_err_sts_tree =
- proto_item_add_subtree(netw_nodes_non_fatal_err_sts, ett_omron_netw_nodes_non_fatal_err_sts);
+ netw_nodes_non_fatal_err_sts_tree = proto_tree_add_subtree(command_tree, tvb, offset, 8,
+ ett_omron_netw_nodes_non_fatal_err_sts, NULL, "Network Nodes Non-Fatal Error Status");
proto_tree_add_bitmask(netw_nodes_non_fatal_err_sts_tree, tvb, (offset+0), hf_omron_cyclic_label_1,
ett_omron_cyclic_fields, cyclic_non_fatal_1_fields, ENC_BIG_ENDIAN);
@@ -2094,8 +2078,8 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
offset = offset + 8;
- netw_nodes_cyclic_err_ctrs = proto_tree_add_text(command_tree, tvb, offset, 62, "Network Nodes Cyclic Error Counters");
- netw_nodes_cyclic_err_ctrs_tree = proto_item_add_subtree(netw_nodes_cyclic_err_ctrs, ett_omron_netw_nodes_cyclic_err_ctrs);
+ netw_nodes_cyclic_err_ctrs_tree = proto_tree_add_subtree(command_tree, tvb, offset, 62,
+ ett_omron_netw_nodes_cyclic_err_ctrs, NULL, "Network Nodes Cyclic Error Counters");
node_num = 1;
for(i = 0; i < 62; i++)
{
@@ -2118,7 +2102,6 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
{
if(reported_length_remaining == 16)
{
- proto_item *status_flags;
proto_tree *status_flags_tree;
proto_tree_add_item(command_tree, hf_omron_response_code, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -2134,8 +2117,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
offset = offset + 4;
/* Status flag blocks */
- status_flags = proto_tree_add_text(command_tree, tvb, offset, 96, "Status flag blocks");
- status_flags_tree = proto_item_add_subtree(status_flags, ett_omron_data_link_status_tree);
+ status_flags_tree = proto_tree_add_subtree(command_tree, tvb, offset, 96, ett_omron_data_link_status_tree, NULL, "Status flag blocks");
/* Status block 1 */
ti = proto_tree_add_item(status_flags_tree, hf_omron_status_flags, tvb, (offset+0), 3, ENC_BIG_ENDIAN);
@@ -2599,8 +2581,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
while(reported_length_remaining >= 10)
{
- ti = proto_tree_add_text(command_tree, tvb, offset, 10, "Error log data");
- error_log_tree = proto_item_add_subtree(ti, ett_omron_error_log_data);
+ error_log_tree = proto_tree_add_subtree(command_tree, tvb, offset, 10, ett_omron_error_log_data, NULL, "Error log data");
proto_tree_add_item(error_log_tree, hf_omron_error_reset_fals_no, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(error_log_tree, hf_omron_error_reset_fals_no, tvb, (offset+2), 2, ENC_BIG_ENDIAN);
@@ -2653,8 +2634,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
{
proto_tree_add_item(command_tree, hf_omron_response_code, tvb, offset, 2, ENC_BIG_ENDIAN);
- ti = proto_tree_add_text(command_tree, tvb, (offset+2), 26, "Disk data");
- omron_disk_data_tree = proto_item_add_subtree(ti, ett_omron_disk_data);
+ omron_disk_data_tree = proto_tree_add_subtree(command_tree, tvb, (offset+2), 26, ett_omron_disk_data, NULL, "Disk data");
proto_tree_add_item(omron_disk_data_tree, hf_omron_volume_label, tvb, (offset+2), 12, ENC_ASCII|ENC_NA);
omron_byte = tvb_get_guint8(tvb, (offset+14));
@@ -2680,8 +2660,7 @@ dissect_omron_fins(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *da
while(reported_length_remaining >= 20)
{
- ti = proto_tree_add_text(command_tree, tvb, offset, 20, "File data");
- omron_file_data_tree = proto_item_add_subtree(ti, ett_omron_file_data);
+ omron_file_data_tree = proto_tree_add_subtree(command_tree, tvb, offset, 20, ett_omron_file_data, NULL, "File data");
proto_tree_add_item(omron_file_data_tree, hf_omron_filename, tvb, offset, 12, ENC_ASCII|ENC_NA);
diff --git a/epan/dissectors/packet-openflow_v1.c b/epan/dissectors/packet-openflow_v1.c
index e0f1035e56..0b03bfcfd1 100644
--- a/epan/dissectors/packet-openflow_v1.c
+++ b/epan/dissectors/packet-openflow_v1.c
@@ -548,8 +548,7 @@ dissect_openflow_features_reply_v1(tvbuff_t *tvb, packet_info *pinfo, proto_tree
for(i=0; i<num_ports ;i++){
proto_tree *port_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 48, "Port data %u",i+1);
- port_tree = proto_item_add_subtree(ti, ett_openflow_port);
+ port_tree = proto_tree_add_subtree_format(tree, tvb, offset, 48, ett_openflow_port, NULL, "Port data %u",i+1);
dissect_openflow_phy_port(tvb, pinfo, port_tree, offset);
offset+=48;
}
diff --git a/epan/dissectors/packet-openflow_v4.c b/epan/dissectors/packet-openflow_v4.c
index b11ff16476..b45996ca97 100644
--- a/epan/dissectors/packet-openflow_v4.c
+++ b/epan/dissectors/packet-openflow_v4.c
@@ -989,7 +989,6 @@ dissect_openflow_oxm_header_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
static int
dissect_openflow_oxm_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *oxm_tree;
guint16 oxm_class;
guint8 oxm_field_hm;
@@ -1006,8 +1005,7 @@ dissect_openflow_oxm_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
oxm_hm = oxm_field_hm & OXM_HM_MASK;
field_length = (oxm_hm == 0) ? oxm_length : (oxm_length / 2);
- ti = proto_tree_add_text(tree, tvb, offset, oxm_length + 4, "OXM field");
- oxm_tree = proto_item_add_subtree(ti, ett_openflow_v4_oxm);
+ oxm_tree = proto_tree_add_subtree(tree, tvb, offset, oxm_length + 4, ett_openflow_v4_oxm, NULL, "OXM field");
offset = dissect_openflow_oxm_header_v4(tvb, pinfo, oxm_tree, offset, length);
@@ -1134,8 +1132,7 @@ dissect_openflow_match_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
guint16 fields_end;
guint16 pad_length;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Match");
- match_tree = proto_item_add_subtree(ti, ett_openflow_v4_match);
+ match_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_match, &ti, "Match");
/* uint16_t type; */
match_type = tvb_get_ntohs(tvb, offset);
@@ -1213,8 +1210,7 @@ dissect_openflow_meter_band_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 band_type;
guint16 band_len;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Meter band");
- band_tree = proto_item_add_subtree(ti, ett_openflow_v4_meter_band);
+ band_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_meter_band, &ti, "Meter band");
/* uint16_t type; */
band_type = tvb_get_ntohs(tvb, offset);
@@ -1285,14 +1281,12 @@ static const value_string openflow_v4_hello_element_type_values[] = {
static int
dissect_openflow_hello_element_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length)
{
- proto_item *ti;
proto_tree *elem_tree;
guint16 elem_type;
guint16 elem_length;
guint16 pad_length;
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Element");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v4_hello_element);
+ elem_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v4_hello_element, NULL, "Element");
/* uint16_t type; */
elem_type = tvb_get_ntohs(tvb, offset);
@@ -1543,7 +1537,6 @@ static const value_string openflow_v4_error_table_features_failed_code_values[]
static void
dissect_openflow_error_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length)
{
- proto_item *ti;
proto_tree *data_tree;
guint16 error_type;
@@ -1624,8 +1617,7 @@ dissect_openflow_error_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
case OFPET_METER_MOD_FAILED:
case OFPET_TABLE_FEATURES_FAILED:
/* uint8_t data[0]; contains at least the first 64 bytes of the failed request. */
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Data");
- data_tree = proto_item_add_subtree(ti, ett_openflow_v4_error_data);
+ data_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v4_error_data, NULL, "Data");
offset = dissect_openflow_header_v4(tvb, pinfo, data_tree, offset, length);
@@ -1781,7 +1773,6 @@ static const value_string openflow_v4_packet_in_reason_values[] = {
static void
dissect_openflow_packet_in_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *data_tree;
tvbuff_t *next_tvb;
gboolean save_writable;
@@ -1821,8 +1812,7 @@ dissect_openflow_packet_in_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* uint8_t data[0]; */
if (offset < length) {
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Data");
- data_tree = proto_item_add_subtree(ti, ett_openflow_v4_packet_in_data);
+ data_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v4_packet_in_data, NULL, "Data");
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
@@ -1979,7 +1969,6 @@ dissect_openflow_action_header_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
static int
dissect_openflow_action_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *act_tree;
guint16 act_type;
guint16 act_length;
@@ -1989,8 +1978,7 @@ dissect_openflow_action_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
act_length = tvb_get_ntohs(tvb, offset + 2);
act_end = offset + act_length;
- ti = proto_tree_add_text(tree, tvb, offset, act_length, "Action");
- act_tree = proto_item_add_subtree(ti, ett_openflow_v4_action);
+ act_tree = proto_tree_add_subtree(tree, tvb, offset, act_length, ett_openflow_v4_action, NULL, "Action");
offset = dissect_openflow_action_header_v4(tvb, pinfo, act_tree, offset, length);
@@ -2194,8 +2182,7 @@ dissect_openflow_port_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
proto_item *ti;
proto_tree *port_tree, *conf_tree, *state_tree, *curr_tree, *adv_tree, *supp_tree, *peer_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 64, "Port");
- port_tree = proto_item_add_subtree(ti, ett_openflow_v4_port);
+ port_tree = proto_tree_add_subtree(tree, tvb, offset, 64, ett_openflow_v4_port, NULL, "Port");
/* uint32_t port_no; */
if (tvb_get_ntohl(tvb, offset) <= OFPP_MAX) {
@@ -2370,7 +2357,6 @@ dissect_openflow_port_status_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static void
dissect_openflow_packet_out_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *data_tree;
guint16 acts_len, acts_end;
tvbuff_t *next_tvb;
@@ -2412,8 +2398,7 @@ dissect_openflow_packet_out_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* uint8_t data[0]; */
if (offset < length) {
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Data");
- data_tree = proto_item_add_subtree(ti, ett_openflow_v4_packet_out_data);
+ data_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v4_packet_out_data, NULL, "Data");
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
@@ -2490,7 +2475,6 @@ dissect_openflow_instruction_header_v4(tvbuff_t *tvb, packet_info *pinfo _U_, pr
static int
dissect_openflow_instruction_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *inst_tree;
guint16 inst_type;
guint16 inst_length;
@@ -2499,8 +2483,7 @@ dissect_openflow_instruction_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
inst_type = tvb_get_ntohs(tvb, offset);
inst_length = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, inst_length, "Instruction");
- inst_tree = proto_item_add_subtree(ti, ett_openflow_v4_instruction);
+ inst_tree = proto_tree_add_subtree(tree, tvb, offset, inst_length, ett_openflow_v4_instruction, NULL, "Instruction");
offset = dissect_openflow_instruction_header_v4(tvb, pinfo, inst_tree, offset, length);
@@ -2677,8 +2660,7 @@ dissect_openflow_bucket_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
guint16 bucket_length;
guint16 acts_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Bucket");
- bucket_tree = proto_item_add_subtree(ti, ett_openflow_v4_bucket);
+ bucket_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_bucket, &ti, "Bucket");
/* uint16_t len; */
bucket_length = tvb_get_ntohs(tvb, offset);
@@ -3008,8 +2990,7 @@ dissect_openflow_table_feature_prop_v4(tvbuff_t *tvb, packet_info *pinfo _U_, pr
gint32 body_end;
guint16 pad_length;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Table feature property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v4_table_feature_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_table_feature_prop, &ti, "Table feature property");
/* uint16_t type; */
prop_type = tvb_get_ntohs(tvb, offset);
@@ -3033,8 +3014,8 @@ dissect_openflow_table_feature_prop_v4(tvbuff_t *tvb, packet_info *pinfo _U_, pr
case OFPTFPT_INSTRUCTIONS_MISS:
while (offset < body_end) {
elem_begin = offset;
- ti = proto_tree_add_text(prop_tree, tvb, offset, -1, "Instruction ID");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v4_table_feature_prop_instruction_id);
+ elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1,
+ ett_openflow_v4_table_feature_prop_instruction_id, &ti, "Instruction ID");
offset = dissect_openflow_instruction_header_v4(tvb, pinfo, elem_tree, offset, length);
proto_item_set_len(ti, offset - elem_begin);
@@ -3055,8 +3036,7 @@ dissect_openflow_table_feature_prop_v4(tvbuff_t *tvb, packet_info *pinfo _U_, pr
case OFPTFPT_APPLY_ACTIONS_MISS:
while (offset < body_end) {
elem_begin = offset;
- ti = proto_tree_add_text(prop_tree, tvb, offset, -1, "Action ID");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v4_table_feature_prop_action_id);
+ elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1, ett_openflow_v4_table_feature_prop_action_id, &ti, "Action ID");
offset = dissect_openflow_action_header_v4(tvb, pinfo, elem_tree, offset, length);
proto_item_set_len(ti, offset - elem_begin);
@@ -3071,8 +3051,7 @@ dissect_openflow_table_feature_prop_v4(tvbuff_t *tvb, packet_info *pinfo _U_, pr
case OFPTFPT_APPLY_SETFIELD_MISS:
while (offset < body_end) {
elem_begin = offset;
- ti = proto_tree_add_text(prop_tree, tvb, offset, -1, "OXM ID");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v4_table_feature_prop_oxm_id);
+ elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1, ett_openflow_v4_table_feature_prop_oxm_id, &ti, "OXM ID");
offset = dissect_openflow_oxm_header_v4(tvb, pinfo, elem_tree, offset, length);
proto_item_set_len(ti, offset - elem_begin);
@@ -3121,8 +3100,7 @@ dissect_openflow_table_features_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
guint16 feat_length;
guint16 feat_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Table features");
- feat_tree = proto_item_add_subtree(ti, ett_openflow_v4_table_features);
+ feat_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_table_features, &ti, "Table features");
/* uint16_t length; */
feat_length = tvb_get_ntohs(tvb, offset);
@@ -3427,8 +3405,7 @@ dissect_openflow_flow_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 stats_len;
guint16 stats_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Flow stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v4_flow_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_flow_stats, &ti, "Flow stats");
/* uint16_t length; */
stats_len = tvb_get_ntohs(tvb, offset);
@@ -3528,11 +3505,9 @@ dissect_openflow_aggregate_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto
static int
dissect_openflow_table_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 24, "Table stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v4_table_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_openflow_v4_table_stats, NULL, "Table stats");
/* uint8_t table_id; */
if (tvb_get_guint8(tvb, offset) <= OFPTT_MAX) {
@@ -3565,11 +3540,9 @@ dissect_openflow_table_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static int
dissect_openflow_port_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 112, "Port stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v4_port_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, 112, ett_openflow_v4_port_stats, NULL, "Port stats");
/* uint8_t port_no; */
if (tvb_get_ntohl(tvb, offset) <= OFPP_MAX) {
@@ -3646,11 +3619,9 @@ dissect_openflow_port_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
static int
dissect_openflow_queue_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 40, "Queue stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v4_queue_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, 40, ett_openflow_v4_queue_stats, NULL, "Queue stats");
/* uint32_t port_no; */
if (tvb_get_ntohl(tvb, offset) <= OFPP_MAX) {
@@ -3695,11 +3666,9 @@ dissect_openflow_queue_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static int
dissect_openflow_bucket_counter_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *counter_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Bucket counter");
- counter_tree = proto_item_add_subtree(ti, ett_openflow_v4_bucket_counter);
+ counter_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_openflow_v4_bucket_counter, NULL, "Bucket counter");
/* uint64_t packet_count; */
proto_tree_add_item(counter_tree, hf_openflow_v4_bucket_counter_packet_count, tvb, offset, 8, ENC_BIG_ENDIAN);
@@ -3721,8 +3690,7 @@ dissect_openflow_group_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
guint16 stats_len;
guint16 stats_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Group stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v4_group_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_group_stats, &ti, "Group stats");
/* uint16_t length; */
stats_len = tvb_get_ntohs(tvb, offset);
@@ -3784,8 +3752,7 @@ dissect_openflow_group_desc_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 desc_len;
guint16 desc_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Group description");
- desc_tree = proto_item_add_subtree(ti, ett_openflow_v4_group_desc);
+ desc_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_group_desc, &ti, "Group description");
/* uint16_t length; */
desc_len = tvb_get_ntohs(tvb, offset);
@@ -3949,11 +3916,9 @@ dissect_openflow_group_features_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
static int
dissect_openflow_meter_band_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Meter band stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v4_meter_band_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_openflow_v4_meter_band_stats, NULL, "Meter band stats");
/* uint64_t packet_band_count; */
proto_tree_add_item(stats_tree, hf_openflow_v4_meter_band_stats_packet_band_count, tvb, offset, 8, ENC_BIG_ENDIAN);
@@ -3975,8 +3940,7 @@ dissect_openflow_meter_stats_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
guint16 stats_len;
guint16 stats_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Meter stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v4_meter_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_meter_stats, &ti, "Meter stats");
/* uint32_t meter_id; */
if (tvb_get_ntohl(tvb, offset) <= OFPM_MAX) {
@@ -4034,8 +3998,7 @@ dissect_openflow_meter_config_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
guint16 config_len;
guint16 config_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Meter config");
- conf_tree = proto_item_add_subtree(ti, ett_openflow_v4_meter_config);
+ conf_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_meter_config, &ti, "Meter config");
/* uint16_t len; */
config_len = tvb_get_ntohs(tvb, offset);
@@ -4278,8 +4241,7 @@ dissect_openflow_queue_prop_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 prop_type;
guint16 prop_len;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Queue property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v4_queue_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_queue_prop, &ti, "Queue property");
/* uint16_t property; */
prop_type = tvb_get_ntohs(tvb, offset);
@@ -4367,8 +4329,7 @@ dissect_openflow_packet_queue_v4(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
guint16 queue_len;
guint16 queue_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Queue");
- queue_tree = proto_item_add_subtree(ti, ett_openflow_v4_packet_queue);
+ queue_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v4_packet_queue, &ti, "Queue");
/* uint32_t queue_id; */
if (tvb_get_ntohl(tvb, offset) != OFPQ_ALL) {
diff --git a/epan/dissectors/packet-openflow_v5.c b/epan/dissectors/packet-openflow_v5.c
index 0f9e9fdbec..22269a5d92 100644
--- a/epan/dissectors/packet-openflow_v5.c
+++ b/epan/dissectors/packet-openflow_v5.c
@@ -1143,7 +1143,6 @@ dissect_openflow_oxm_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
static int
dissect_openflow_oxm_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *oxm_tree;
guint16 oxm_class;
guint8 oxm_field_hm;
@@ -1160,8 +1159,7 @@ dissect_openflow_oxm_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
oxm_hm = oxm_field_hm & OXM_HM_MASK;
field_length = (oxm_hm == 0) ? oxm_length : (oxm_length / 2);
- ti = proto_tree_add_text(tree, tvb, offset, oxm_length + 4, "OXM field");
- oxm_tree = proto_item_add_subtree(ti, ett_openflow_v5_oxm);
+ oxm_tree = proto_tree_add_subtree(tree, tvb, offset, oxm_length + 4, ett_openflow_v5_oxm, NULL, "OXM field");
offset = dissect_openflow_oxm_header_v5(tvb, pinfo, oxm_tree, offset, length);
@@ -1288,8 +1286,7 @@ dissect_openflow_match_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
guint16 fields_end;
guint16 pad_length;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Match");
- match_tree = proto_item_add_subtree(ti, ett_openflow_v5_match);
+ match_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_match, &ti, "Match");
/* uint16_t type; */
match_type = tvb_get_ntohs(tvb, offset);
@@ -1365,8 +1362,7 @@ dissect_openflow_meter_band_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 band_type;
guint16 band_len;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Meter band");
- band_tree = proto_item_add_subtree(ti, ett_openflow_v5_meter_band);
+ band_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_meter_band, &ti, "Meter band");
/* uint16_t type; */
band_type = tvb_get_ntohs(tvb, offset);
@@ -1435,14 +1431,12 @@ static const value_string openflow_v5_hello_element_type_values[] = {
static int
dissect_openflow_hello_element_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length)
{
- proto_item *ti;
proto_tree *elem_tree;
guint16 elem_type;
guint16 elem_length;
guint16 pad_length;
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Element");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v5_hello_element);
+ elem_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v5_hello_element, NULL, "Element");
/* uint16_t type; */
elem_type = tvb_get_ntohs(tvb, offset);
@@ -1758,7 +1752,6 @@ static const value_string openflow_v5_error_bundle_failed_code_values[] = {
static void
dissect_openflow_error_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length)
{
- proto_item *ti;
proto_tree *data_tree;
guint16 error_type;
@@ -1851,8 +1844,7 @@ dissect_openflow_error_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tre
case OFPET_METER_MOD_FAILED:
case OFPET_TABLE_FEATURES_FAILED:
/* uint8_t data[0]; contains at least the first 64 bytes of the failed request. */
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Data");
- data_tree = proto_item_add_subtree(ti, ett_openflow_v5_error_data);
+ data_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v5_error_data, NULL, "Data");
offset = dissect_openflow_header_v5(tvb, pinfo, data_tree, offset, length);
@@ -2014,7 +2006,6 @@ static const value_string openflow_v5_packet_in_reason_values[] = {
static void
dissect_openflow_packet_in_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *data_tree;
tvbuff_t *next_tvb;
gboolean save_writable;
@@ -2054,8 +2045,7 @@ dissect_openflow_packet_in_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* uint8_t data[0]; */
if (offset < length) {
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Data");
- data_tree = proto_item_add_subtree(ti, ett_openflow_v5_packet_in_data);
+ data_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v5_packet_in_data, NULL, "Data");
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
@@ -2216,7 +2206,6 @@ dissect_openflow_action_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
static int
dissect_openflow_action_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *act_tree;
guint16 act_type;
guint16 act_length;
@@ -2226,8 +2215,7 @@ dissect_openflow_action_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
act_length = tvb_get_ntohs(tvb, offset + 2);
act_end = offset + act_length;
- ti = proto_tree_add_text(tree, tvb, offset, act_length, "Action");
- act_tree = proto_item_add_subtree(ti, ett_openflow_v5_action);
+ act_tree = proto_tree_add_subtree(tree, tvb, offset, act_length, ett_openflow_v5_action, NULL, "Action");
offset = dissect_openflow_action_header_v5(tvb, pinfo, act_tree, offset, length);
@@ -2595,7 +2583,6 @@ static const value_string openflow_v5_port_desc_prop_type_values[] = {
static int
dissect_openflow_port_desc_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *prop_tree;
guint16 prop_type;
guint16 prop_length;
@@ -2603,8 +2590,7 @@ dissect_openflow_port_desc_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
prop_type = tvb_get_ntohs(tvb, offset);
prop_length = tvb_get_ntohs(tvb, offset);
- ti = proto_tree_add_text(tree, tvb, offset, prop_length, "Port desc. property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_port_desc_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, prop_length, ett_openflow_v5_port_desc_prop, NULL, "Port desc. property");
/* uint16_t type; */
proto_tree_add_item(prop_tree, hf_openflow_v5_port_desc_prop_type, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -2667,8 +2653,7 @@ dissect_openflow_port_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree
proto_tree *port_tree, *conf_tree, *state_tree;
guint16 port_end;
- ti = proto_tree_add_text(tree, tvb, offset, 64, "Port");
- port_tree = proto_item_add_subtree(ti, ett_openflow_v5_port);
+ port_tree = proto_tree_add_subtree(tree, tvb, offset, 64, ett_openflow_v5_port, NULL, "Port");
/* uint32_t port_no; */
if (tvb_get_ntohl(tvb, offset) <= OFPP_MAX) {
@@ -2757,7 +2742,6 @@ dissect_openflow_port_status_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static void
dissect_openflow_packet_out_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *data_tree;
guint16 acts_len, acts_end;
tvbuff_t *next_tvb;
@@ -2799,8 +2783,7 @@ dissect_openflow_packet_out_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
/* uint8_t data[0]; */
if (offset < length) {
- ti = proto_tree_add_text(tree, tvb, offset, length - offset, "Data");
- data_tree = proto_item_add_subtree(ti, ett_openflow_v5_packet_out_data);
+ data_tree = proto_tree_add_subtree(tree, tvb, offset, length - offset, ett_openflow_v5_packet_out_data, NULL, "Data");
/* save some state */
save_writable = col_get_writable(pinfo->cinfo);
@@ -2877,7 +2860,6 @@ dissect_openflow_instruction_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pr
static int
dissect_openflow_instruction_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *inst_tree;
guint16 inst_type;
guint16 inst_length;
@@ -2886,8 +2868,7 @@ dissect_openflow_instruction_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
inst_type = tvb_get_ntohs(tvb, offset);
inst_length = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, inst_length, "Instruction");
- inst_tree = proto_item_add_subtree(ti, ett_openflow_v5_instruction);
+ inst_tree = proto_tree_add_subtree(tree, tvb, offset, inst_length, ett_openflow_v5_instruction, NULL, "Instruction");
offset = dissect_openflow_instruction_header_v5(tvb, pinfo, inst_tree, offset, length);
@@ -3064,8 +3045,7 @@ dissect_openflow_bucket_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tr
guint16 bucket_length;
guint16 acts_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Bucket");
- bucket_tree = proto_item_add_subtree(ti, ett_openflow_v5_bucket);
+ bucket_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_bucket, &ti, "Bucket");
/* uint16_t len; */
bucket_length = tvb_get_ntohs(tvb, offset);
@@ -3238,7 +3218,6 @@ static const value_string openflow_v5_portmod_prop_type_values[] = {
static int
dissect_openflow_portmod_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *prop_tree;
guint16 prop_type;
guint16 prop_length;
@@ -3246,8 +3225,7 @@ dissect_openflow_portmod_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
prop_type = tvb_get_ntohs(tvb, offset);
prop_length = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, prop_length, "Portmod property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_portmod_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, prop_length, ett_openflow_v5_portmod_prop, NULL, "Portmod property");
/* uint16_t type; */
proto_tree_add_item(prop_tree, hf_openflow_v5_portmod_prop_type, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -3370,8 +3348,7 @@ dissect_openflow_tablemod_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_t
prop_type = tvb_get_ntohs(tvb, offset);
prop_length = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, prop_length, "Tablemod property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_tablemod_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, prop_length, ett_openflow_v5_tablemod_prop, NULL, "Tablemod property");
/* uint16_t type; */
proto_tree_add_item(prop_tree, hf_openflow_v5_tablemod_prop_type, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -3616,8 +3593,7 @@ dissect_openflow_table_feature_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pr
guint16 body_end;
guint16 pad_length;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Table feature property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_table_feature_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_table_feature_prop, &ti, "Table feature property");
/* uint16_t type; */
prop_type = tvb_get_ntohs(tvb, offset);
@@ -3638,8 +3614,7 @@ dissect_openflow_table_feature_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pr
case OFPTFPT_INSTRUCTIONS_MISS:
while (offset < body_end) {
elem_begin = offset;
- ti = proto_tree_add_text(prop_tree, tvb, offset, -1, "Instruction ID");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v5_table_feature_prop_instruction_id);
+ elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1, ett_openflow_v5_table_feature_prop_instruction_id, &ti, "Instruction ID");
offset = dissect_openflow_instruction_header_v5(tvb, pinfo, elem_tree, offset, length);
proto_item_set_len(ti, offset - elem_begin);
@@ -3660,8 +3635,7 @@ dissect_openflow_table_feature_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pr
case OFPTFPT_APPLY_ACTIONS_MISS:
while (offset < body_end) {
elem_begin = offset;
- ti = proto_tree_add_text(prop_tree, tvb, offset, -1, "Action ID");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v5_table_feature_prop_action_id);
+ elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1, ett_openflow_v5_table_feature_prop_action_id, &ti, "Action ID");
offset = dissect_openflow_action_header_v5(tvb, pinfo, elem_tree, offset, length);
proto_item_set_len(ti, offset - elem_begin);
@@ -3676,8 +3650,7 @@ dissect_openflow_table_feature_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pr
case OFPTFPT_APPLY_SETFIELD_MISS:
while (offset < body_end) {
elem_begin = offset;
- ti = proto_tree_add_text(prop_tree, tvb, offset, -1, "OXM ID");
- elem_tree = proto_item_add_subtree(ti, ett_openflow_v5_table_feature_prop_oxm_id);
+ elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1, ett_openflow_v5_table_feature_prop_oxm_id, &ti, "OXM ID");
offset = dissect_openflow_oxm_header_v5(tvb, pinfo, elem_tree, offset, length);
proto_item_set_len(ti, offset - elem_begin);
@@ -3733,8 +3706,7 @@ dissect_openflow_table_features_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
guint16 feat_length;
guint16 feat_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Table features");
- feat_tree = proto_item_add_subtree(ti, ett_openflow_v5_table_features);
+ feat_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_table_features, &ti, "Table features");
/* uint16_t length; */
feat_length = tvb_get_ntohs(tvb, offset);
@@ -4148,8 +4120,7 @@ dissect_openflow_flow_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 stats_len;
guint16 stats_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Flow stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v5_flow_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_flow_stats, &ti, "Flow stats");
/* uint16_t length; */
stats_len = tvb_get_ntohs(tvb, offset);
@@ -4253,11 +4224,9 @@ dissect_openflow_aggregate_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto
static int
dissect_openflow_table_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 24, "Table stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v5_table_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, 24, ett_openflow_v5_table_stats, NULL, "Table stats");
/* uint8_t table_id; */
if (tvb_get_guint8(tvb, offset) <= OFPTT_MAX) {
@@ -4290,11 +4259,9 @@ dissect_openflow_table_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static int
dissect_openflow_port_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 112, "Port stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v5_port_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, 112, ett_openflow_v5_port_stats, NULL, "Port stats");
/* uint8_t port_no; */
if (tvb_get_ntohl(tvb, offset) <= OFPP_MAX) {
@@ -4380,8 +4347,7 @@ dissect_openflow_table_desc_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
desc_length = tvb_get_ntohs(tvb, offset);
desc_end = offset + desc_length;
- ti = proto_tree_add_text(tree, tvb, offset, desc_length, "Table desc");
- desc_tree = proto_item_add_subtree(ti, ett_openflow_v5_table_desc);
+ desc_tree = proto_tree_add_subtree(tree, tvb, offset, desc_length, ett_openflow_v5_table_desc, NULL, "Table desc");
/* uint16_t length; */
proto_tree_add_item(desc_tree, hf_openflow_v5_table_desc_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -4426,7 +4392,6 @@ static const value_string openflow_v5_queue_stats_prop_type_values[] = {
static int
dissect_openflow_queue_stats_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *prop_tree;
guint16 prop_type;
guint16 prop_length;
@@ -4434,8 +4399,7 @@ dissect_openflow_queue_stats_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, prot
prop_type = tvb_get_ntohs(tvb, offset);
prop_length = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, prop_length, "Queue stats property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_queue_stats_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, prop_length, ett_openflow_v5_queue_stats_prop, NULL, "Queue stats property");
/* uint16_t type; */
proto_tree_add_item(prop_tree, hf_openflow_v5_queue_stats_prop_type, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -4476,7 +4440,6 @@ dissect_openflow_queue_stats_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, prot
static int
dissect_openflow_queue_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
guint16 stats_len;
guint16 stats_end;
@@ -4484,8 +4447,7 @@ dissect_openflow_queue_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
stats_len = tvb_get_ntohs(tvb, offset);
stats_end = offset + stats_len;
- ti = proto_tree_add_text(tree, tvb, offset, stats_len, "Queue stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v5_queue_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, stats_len, ett_openflow_v5_queue_stats, NULL, "Queue stats");
/* uint16_t length; */
proto_tree_add_item(stats_tree, hf_openflow_v5_queue_stats_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -4544,11 +4506,9 @@ dissect_openflow_queue_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
static int
dissect_openflow_bucket_counter_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *counter_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Bucket counter");
- counter_tree = proto_item_add_subtree(ti, ett_openflow_v5_bucket_counter);
+ counter_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_openflow_v5_bucket_counter, NULL, "Bucket counter");
/* uint64_t packet_count; */
proto_tree_add_item(counter_tree, hf_openflow_v5_bucket_counter_packet_count, tvb, offset, 8, ENC_BIG_ENDIAN);
@@ -4570,8 +4530,7 @@ dissect_openflow_group_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
guint16 stats_len;
guint16 stats_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Group stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v5_group_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_group_stats, &ti, "Group stats");
/* uint16_t length; */
stats_len = tvb_get_ntohs(tvb, offset);
@@ -4633,8 +4592,7 @@ dissect_openflow_group_desc_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
guint16 desc_len;
guint16 desc_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Group description");
- desc_tree = proto_item_add_subtree(ti, ett_openflow_v5_group_desc);
+ desc_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_group_desc, &ti, "Group description");
/* uint16_t length; */
desc_len = tvb_get_ntohs(tvb, offset);
@@ -4798,11 +4756,9 @@ dissect_openflow_group_features_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
static int
dissect_openflow_meter_band_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *stats_tree;
- ti = proto_tree_add_text(tree, tvb, offset, 16, "Meter band stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v5_meter_band_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, 16, ett_openflow_v5_meter_band_stats, NULL, "Meter band stats");
/* uint64_t packet_band_count; */
proto_tree_add_item(stats_tree, hf_openflow_v5_meter_band_stats_packet_band_count, tvb, offset, 8, ENC_BIG_ENDIAN);
@@ -4824,8 +4780,7 @@ dissect_openflow_meter_stats_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
guint16 stats_len;
guint16 stats_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Meter stats");
- stats_tree = proto_item_add_subtree(ti, ett_openflow_v5_meter_stats);
+ stats_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_meter_stats, &ti, "Meter stats");
/* uint32_t meter_id; */
if (tvb_get_ntohl(tvb, offset) <= OFPM_MAX) {
@@ -4883,8 +4838,7 @@ dissect_openflow_meter_config_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tr
guint16 config_len;
guint16 config_end;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Meter config");
- conf_tree = proto_item_add_subtree(ti, ett_openflow_v5_meter_config);
+ conf_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_meter_config, &ti, "Meter config");
/* uint16_t len; */
config_len = tvb_get_ntohs(tvb, offset);
@@ -4997,8 +4951,7 @@ dissect_openflow_queue_desc_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto
guint16 prop_type;
guint16 prop_len;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Queue property");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_queue_desc_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_queue_desc_prop, &ti, "Queue property");
/* uint16_t property; */
prop_type = tvb_get_ntohs(tvb, offset);
@@ -5082,7 +5035,6 @@ static const value_string openflow_v5_queue_id_reserved_values[] = {
static int
dissect_openflow_queue_desc_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *desc_tree;
guint16 desc_len;
guint16 desc_end;
@@ -5090,8 +5042,7 @@ dissect_openflow_queue_desc_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
desc_len = tvb_get_ntohs(tvb, offset + 8);
desc_end = offset + desc_len;
- ti = proto_tree_add_text(tree, tvb, offset, desc_len, "Queue desc");
- desc_tree = proto_item_add_subtree(ti, ett_openflow_v5_queue_desc);
+ desc_tree = proto_tree_add_subtree(tree, tvb, offset, desc_len, ett_openflow_v5_queue_desc, NULL, "Queue desc");
/* uint32_t port_no; */
if (tvb_get_ntohl(tvb, offset) <= OFPP_MAX) {
@@ -5146,7 +5097,6 @@ static const value_string openflow_v5_flow_monitor_events[] = {
static int
dissect_openflow_flow_update_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *update_tree;
guint16 update_len;
guint16 update_event;
@@ -5156,8 +5106,7 @@ dissect_openflow_flow_update_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
update_end = offset + update_len;
update_event = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, update_len, "Flow update");
- update_tree = proto_item_add_subtree(ti, ett_openflow_v5_flow_update);
+ update_tree = proto_tree_add_subtree(tree, tvb, offset, update_len, ett_openflow_v5_flow_update, NULL, "Flow update");
/* uint16_t length; */
proto_tree_add_item(update_tree, hf_openflow_v5_flow_update_length, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5473,8 +5422,7 @@ dissect_openflow_async_config_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, pro
prop_type = tvb_get_ntohs(tvb, offset);
prop_len = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, prop_len, "Async config prop");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_async_config_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, prop_len, ett_openflow_v5_async_config_prop, NULL, "Async config prop");
/* uint16_t type; */
proto_tree_add_item(prop_tree, hf_openflow_v5_async_config_prop_type, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5706,8 +5654,7 @@ dissect_openflow_requestforward_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_
guint16 req_begin;
/* struct ofp_header request; */
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Request");
- req_tree = proto_item_add_subtree(ti, ett_openflow_v5_requestforward_request);
+ req_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_requestforward_request, &ti, "Request");
req_begin = offset;
offset = dissect_openflow_message_v5(tvb, pinfo, req_tree, offset);
@@ -5725,7 +5672,6 @@ static const value_string openflow_v5_bundle_prop_type_values[] = {
static int
dissect_openflow_bundle_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, guint16 length _U_)
{
- proto_item *ti;
proto_tree *prop_tree;
guint16 prop_type;
guint16 prop_len;
@@ -5733,8 +5679,7 @@ dissect_openflow_bundle_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tre
prop_type = tvb_get_ntohs(tvb, offset);
prop_len = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, prop_len, "Bundle prop");
- prop_tree = proto_item_add_subtree(ti, ett_openflow_v5_bundle_prop);
+ prop_tree = proto_tree_add_subtree(tree, tvb, offset, prop_len, ett_openflow_v5_bundle_prop, NULL, "Bundle prop");
/* uint16_t type; */
proto_tree_add_item(prop_tree, hf_openflow_v5_bundle_prop_type, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -5847,8 +5792,7 @@ dissect_openflow_bundle_add_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
offset+=2;
/* struct ofp_header message; */
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Message");
- msg_tree = proto_item_add_subtree(ti, ett_openflow_v5_bundle_add_message);
+ msg_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_bundle_add_message, &ti, "Message");
msg_begin = offset;
offset = dissect_openflow_message_v5(tvb, pinfo, msg_tree, offset);
diff --git a/epan/dissectors/packet-openvpn.c b/epan/dissectors/packet-openvpn.c
index c8268ef1c2..91c4f98e4a 100644
--- a/epan/dissectors/packet-openvpn.c
+++ b/epan/dissectors/packet-openvpn.c
@@ -189,7 +189,7 @@ dissect_openvpn_msg_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *openvp
guint32 msg_mpid = -1;
guint32 msg_sessionid = -1;
guint8 openvpn_predict_tlsauth_arraylength;
- proto_item *ti2, *ti3;
+ proto_item *ti2;
proto_tree *packetarray_tree, *type_tree;
guint32 msg_length_remaining;
gboolean msg_lastframe;
@@ -267,8 +267,7 @@ dissect_openvpn_msg_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *openvp
if (pid_arraylength > 0) {
- ti3 = proto_tree_add_text(openvpn_tree, tvb, offset, 0, "Packet-ID Array");
- packetarray_tree = proto_item_add_subtree(ti3, ett_openvpn_packetarray);
+ packetarray_tree = proto_tree_add_subtree(openvpn_tree, tvb, offset, 0, ett_openvpn_packetarray, NULL, "Packet-ID Array");
for (i = 0; i < pid_arraylength; i++) {
proto_tree_add_item(packetarray_tree, hf_openvpn_mpid_arrayelement, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
@@ -301,10 +300,10 @@ dissect_openvpn_msg_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *openvp
if (openvpn_opcode != P_CONTROL_V1) {
proto_tree *data_tree;
- ti2 = proto_tree_add_text(openvpn_tree, tvb, offset, -1, "Data (%d bytes)",
+ data_tree = proto_tree_add_subtree_format(openvpn_tree, tvb, offset, -1,
+ ett_openvpn_data, NULL, "Data (%d bytes)",
tvb_length_remaining(tvb, offset));
- data_tree = proto_item_add_subtree(ti2, ett_openvpn_data);
proto_tree_add_item(data_tree, hf_openvpn_data, tvb, offset, -1, ENC_NA);
return tvb_length(tvb);
}
@@ -340,10 +339,10 @@ dissect_openvpn_msg_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *openvp
/* i.e., show if ("not reassembled") or ("reassembled" and "has multiple fragments") */
if ((frag_msg == NULL) || (frag_msg->next != NULL)) {
proto_tree *data_tree;
- ti2 = proto_tree_add_text(openvpn_tree, tvb, offset, -1, "Message fragment (%d bytes)",
+ data_tree = proto_tree_add_subtree_format(openvpn_tree, tvb, offset, -1,
+ ett_openvpn_data, NULL, "Message fragment (%d bytes)",
tvb_length_remaining(tvb, offset));
- data_tree = proto_item_add_subtree(ti2, ett_openvpn_data);
proto_tree_add_item(data_tree, hf_openvpn_fragment_bytes, tvb, offset, -1, ENC_NA);
}
diff --git a/epan/dissectors/packet-opsi.c b/epan/dissectors/packet-opsi.c
index 848f67a03c..dbac25da3a 100644
--- a/epan/dissectors/packet-opsi.c
+++ b/epan/dissectors/packet-opsi.c
@@ -538,8 +538,8 @@ dissect_attributes(tvbuff_t *tvb, packet_info *pinfo, proto_tree *opsi_tree, int
"Unknown attribute (%d)", attribute_type);
}
else {
- ti = proto_tree_add_text(opsi_tree, tvb, offset, attribute_length, "%s (%d)", opsi_attributes[i].tree_text, attribute_type);
- ntree = proto_item_add_subtree(ti, *opsi_attributes[i].tree_id);
+ ntree = proto_tree_add_subtree_format(opsi_tree, tvb, offset, attribute_length, *opsi_attributes[i].tree_id, &ti,
+ "%s (%d)", opsi_attributes[i].tree_text, attribute_type);
proto_tree_add_item(ntree, hf_opsi_attribute_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
opsi_attributes[i].dissect(tvb, pinfo, ntree, ti, opsi_attributes[i].hf_type_attribute, offset, attribute_length);
}
diff --git a/epan/dissectors/packet-osi-options.c b/epan/dissectors/packet-osi-options.c
index 71f091debb..86a4792f7d 100644
--- a/epan/dissectors/packet-osi-options.c
+++ b/epan/dissectors/packet-osi-options.c
@@ -404,8 +404,7 @@ dissect_option_atn_security_label(const guchar sub_type, guchar length,
tvbuff_t *tvb, guint offset,
proto_tree *tree)
{
- proto_item *ti;
- proto_tree *atn_sl_tree = NULL;
+ proto_tree *atn_sl_tree;
guchar len = 0;
guint8 tag_name = 0;
guint security_info_end = 0;
@@ -423,10 +422,9 @@ dissect_option_atn_security_label(const guchar sub_type, guchar length,
if ( tvb_memeql(tvb, ++offset , atn_security_registration_val, OSI_OPT_SECURITY_ATN_SR_LEN) )
return;
- ti = proto_tree_add_text(tree, tvb, offset, length, "%s",
+ atn_sl_tree = proto_tree_add_subtree(tree, tvb, offset, length, ott_osi_qos, NULL,
val_to_str(sub_type, osi_opt_sec_atn_sr_vals, "Unknown (0x%x)"));
- atn_sl_tree = proto_item_add_subtree(ti, ott_osi_qos);
offset += OSI_OPT_SECURITY_ATN_SR_LEN;
/* Security Information length */
@@ -519,9 +517,8 @@ dissect_osi_options(guchar opt_len, tvbuff_t *tvb, int offset, proto_tree *tree)
return;
}
- ti = proto_tree_add_text(tree, tvb, offset, opt_len,
- "### Option Section ###");
- osi_option_tree = proto_item_add_subtree(ti, ott_osi_options);
+ osi_option_tree = proto_tree_add_subtree(tree, tvb, offset, opt_len,
+ ott_osi_options, &ti, "### Option Section ###");
while ( 0 < opt_len ) {
parm_type = tvb_get_guint8(tvb, offset++);
diff --git a/epan/dissectors/packet-ospf.c b/epan/dissectors/packet-ospf.c
index 92c8ff2046..6d1b44b665 100644
--- a/epan/dissectors/packet-ospf.c
+++ b/epan/dissectors/packet-ospf.c
@@ -1249,7 +1249,6 @@ dissect_ospf(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static int
dissect_ospfv2_lls_tlv(tvbuff_t *tvb, int offset, proto_tree *tree)
{
- proto_item *ti;
proto_tree *ospf_lls_tlv_tree;
guint16 type;
guint16 length;
@@ -1257,9 +1256,8 @@ dissect_ospfv2_lls_tlv(tvbuff_t *tvb, int offset, proto_tree *tree)
type = tvb_get_ntohs(tvb, offset);
length = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(tree, tvb, offset, length + 4, "%s",
- val_to_str_const(type, lls_tlv_type_vals, "Unknown TLV"));
- ospf_lls_tlv_tree = proto_item_add_subtree(ti, ett_ospf_lls_tlv);
+ ospf_lls_tlv_tree = proto_tree_add_subtree(tree, tvb, offset, length + 4, ett_ospf_lls_tlv,
+ NULL, val_to_str_const(type, lls_tlv_type_vals, "Unknown TLV"));
proto_tree_add_item(ospf_lls_tlv_tree, hf_ospf_tlv_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(ospf_lls_tlv_tree, hf_ospf_tlv_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
@@ -1402,14 +1400,11 @@ dissect_ospf_lls_data_block(tvbuff_t *tvb, int offset, proto_tree *tree,
guint8 version)
{
proto_tree *ospf_lls_data_block_tree;
- proto_item *ti;
int ospf_lls_len;
int orig_offset = offset;
ospf_lls_len = tvb_get_ntohs(tvb, offset + 2) * 4;
- ti = proto_tree_add_text(tree, tvb, offset, -1, "OSPF LLS Data Block");
- ospf_lls_data_block_tree = proto_item_add_subtree(ti,
- ett_ospf_lls_data_block);
+ ospf_lls_data_block_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_ospf_lls_data_block, NULL, "OSPF LLS Data Block");
/* TODO: verify checksum */
proto_tree_add_item(ospf_lls_data_block_tree, hf_ospf_lls_checksum, tvb, offset, 2, ENC_BIG_ENDIAN);
@@ -1509,14 +1504,13 @@ static void
dissect_ospf_db_desc(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree,
guint8 version, guint16 length, guint8 address_family)
{
- proto_tree *ospf_db_desc_tree=NULL;
+ proto_tree *ospf_db_desc_tree;
proto_item *ti;
guint8 reserved;
int orig_offset = offset;
if (tree) {
- ti = proto_tree_add_text(tree, tvb, offset, length, "OSPF DB Description");
- ospf_db_desc_tree = proto_item_add_subtree(ti, ett_ospf_desc);
+ ospf_db_desc_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ospf_desc, NULL, "OSPF DB Description");
switch (version ) {
@@ -1572,17 +1566,16 @@ static void
dissect_ospf_ls_req(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, guint8 version,
guint16 length)
{
- proto_tree *ospf_lsr_tree;
proto_item *ti;
+ proto_tree *ospf_lsr_tree;
guint16 reserved;
int orig_offset = offset;
/* zero or more LS requests may be within a LS Request */
/* we place every request for a LSA in a single subtree */
while (orig_offset + length > offset) {
- ti = proto_tree_add_text(tree, tvb, offset, OSPF_LS_REQ_LENGTH,
- "Link State Request");
- ospf_lsr_tree = proto_item_add_subtree(ti, ett_ospf_lsr);
+ ospf_lsr_tree = proto_tree_add_subtree(tree, tvb, offset, OSPF_LS_REQ_LENGTH,
+ ett_ospf_lsr, NULL, "Link State Request");
switch ( version ) {
@@ -1614,13 +1607,11 @@ static void
dissect_ospf_ls_upd(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *tree, guint8 version,
guint16 length, guint8 address_family)
{
- proto_tree *ospf_lsa_upd_tree=NULL;
- proto_item *ti;
+ proto_tree *ospf_lsa_upd_tree;
guint32 lsa_nr;
guint32 lsa_counter;
- ti = proto_tree_add_text(tree, tvb, offset, length, "LS Update Packet");
- ospf_lsa_upd_tree = proto_item_add_subtree(ti, ett_ospf_lsa_upd);
+ ospf_lsa_upd_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_ospf_lsa_upd, NULL, "LS Update Packet");
lsa_nr = tvb_get_ntohl(tvb, offset);
proto_tree_add_item(ospf_lsa_upd_tree, hf_ospf_ls_number_of_lsas, tvb, offset, 4, ENC_BIG_ENDIAN);
@@ -1777,12 +1768,11 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
const guint8 allzero[] = { 0x00, 0x00, 0x00 };
guint num_bcs = 0;
- ti = proto_tree_add_text(tree, tvb, offset, length,
- "MPLS Traffic Engineering LSA");
+ mpls_tree = proto_tree_add_subtree(tree, tvb, offset, length,
+ ett_ospf_lsa_mpls, NULL, "MPLS Traffic Engineering LSA");
hidden_item = proto_tree_add_item(tree, hf_ospf_filter[OSPFF_LS_MPLS],
tvb, offset, 2, ENC_BIG_ENDIAN);
PROTO_ITEM_SET_HIDDEN(hidden_item);
- mpls_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls);
while (length != 0) {
tlv_type = tvb_get_ntohs(tvb, offset);
@@ -1801,9 +1791,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_TLV_LINK:
- ti = proto_tree_add_text(mpls_tree, tvb, offset, tlv_length+4,
- "Link Information");
- tlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link);
+ tlv_tree = proto_tree_add_subtree(mpls_tree, tvb, offset, tlv_length+4,
+ ett_ospf_lsa_mpls_link, NULL, "Link Information");
proto_tree_add_uint_format_value(tlv_tree, hf_ospf_tlv_type, tvb, offset, 2, tlv_type, "2 - Link Information");
proto_tree_add_item(tlv_tree, hf_ospf_tlv_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
stlv_offset = offset + 4;
@@ -1816,12 +1805,11 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
switch (stlv_type) {
case MPLS_LINK_TYPE:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %u - %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %u - %s", stlv_name,
tvb_get_guint8(tvb, stlv_offset + 4),
val_to_str_const(tvb_get_guint8(tvb, stlv_offset + 4),
mpls_link_stlv_ltype_str, "Unknown Link Type"));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -1830,10 +1818,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_LINK_ID:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %s", stlv_name,
tvb_ip_to_str(tvb, stlv_offset + 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -1843,9 +1830,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
case MPLS_LINK_LOCAL_IF:
case MPLS_LINK_REMOTE_IF:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %s", stlv_name, tvb_ip_to_str(tvb, stlv_offset + 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %s", stlv_name,
+ tvb_ip_to_str(tvb, stlv_offset + 4));
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -1860,10 +1847,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_LINK_TE_METRIC:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %u", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %u", stlv_name,
tvb_get_ntohl(tvb, stlv_offset + 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -1872,10 +1858,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_LINK_COLOR:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: 0x%08x", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: 0x%08x", stlv_name,
tvb_get_ntohl(tvb, stlv_offset + 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -1897,11 +1882,10 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
case MPLS_LINK_MAX_BW:
case MPLS_LINK_MAX_RES_BW:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %.10g bytes/s (%.0f bits/s)", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %.10g bytes/s (%.0f bits/s)", stlv_name,
tvb_get_ntohieee_float(tvb, stlv_offset + 4),
tvb_get_ntohieee_float(tvb, stlv_offset + 4) * 8.0);
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -1911,9 +1895,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_LINK_UNRES_BW:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s", stlv_name);
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
+ stlv_tree = proto_tree_add_subtree(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, stlv_name);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -1942,10 +1925,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s", stlv_name);
-
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
+ stlv_tree = proto_tree_add_subtree(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, stlv_name);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
@@ -1992,13 +1973,12 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_LINK_LOCAL_REMOTE_ID:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %d (0x%x) - %d (0x%x)", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %d (0x%x) - %d (0x%x)", stlv_name,
tvb_get_ntohl(tvb, stlv_offset + 4),
tvb_get_ntohl(tvb, stlv_offset + 4),
tvb_get_ntohl(tvb, stlv_offset + 8),
tvb_get_ntohl(tvb, stlv_offset + 8));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
@@ -2012,9 +1992,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_LINK_IF_SWITCHING_DESC:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s", stlv_name);
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
+ stlv_tree = proto_tree_add_subtree(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, stlv_name);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2047,9 +2026,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
}
break;
case MPLS_LINK_PROTECTION:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s", stlv_name);
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
+ stlv_tree = proto_tree_add_subtree(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, stlv_name);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2057,9 +2035,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case MPLS_LINK_SHARED_RISK_GROUP:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s", stlv_name);
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
+ stlv_tree = proto_tree_add_subtree(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, stlv_name);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2068,10 +2045,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case OIF_LOCAL_NODE_ID:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %s", stlv_name,
tvb_ip_to_str(tvb, stlv_offset + 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2081,10 +2057,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case OIF_REMOTE_NODE_ID:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "%s: %s", stlv_name,
tvb_ip_to_str(tvb, stlv_offset + 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2094,8 +2069,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case OIF_SONET_SDH_SWITCHING_CAPABILITY:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4, "%s", stlv_name);
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
+ stlv_tree = proto_tree_add_subtree(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, stlv_name);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2112,10 +2087,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
default:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "Unknown Link sub-TLV: %u %s", stlv_type,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_mpls_link_stlv, NULL, "Unknown Link sub-TLV: %u %s", stlv_type,
rval_to_str(stlv_type, mpls_te_sub_tlv_rvals, "Unknown"));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s %s", stlv_type, stlv_name,
rval_to_str(stlv_type, mpls_te_sub_tlv_rvals, "Unknown"));
@@ -2129,9 +2103,8 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case OIF_TLV_TNA:
- ti = proto_tree_add_text(mpls_tree, tvb, offset, tlv_length+4,
- "TNA Information");
- tlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_oif_tna);
+ tlv_tree = proto_tree_add_subtree(mpls_tree, tvb, offset, tlv_length+4,
+ ett_ospf_lsa_oif_tna, NULL, "TNA Information");
proto_tree_add_uint_format_value(tlv_tree, hf_ospf_tlv_type, tvb, offset, 2, 32768, "32768 - TNA Information");
proto_tree_add_item(tlv_tree, hf_ospf_tlv_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
stlv_offset = offset + 4;
@@ -2144,10 +2117,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
switch (stlv_type) {
case OIF_NODE_ID:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s: %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_oif_tna_stlv, NULL, "%s: %s", stlv_name,
tvb_ip_to_str(tvb, stlv_offset + 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_oif_tna_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2156,10 +2128,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case OIF_TNA_IPv4_ADDRESS:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s (IPv4): %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_oif_tna_stlv, NULL, "%s (IPv4): %s", stlv_name,
tvb_ip_to_str(tvb, stlv_offset + 8));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_oif_tna_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s (IPv4)", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2168,10 +2139,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case OIF_TNA_IPv6_ADDRESS:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s (IPv6): %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_oif_tna_stlv, NULL, "%s (IPv6): %s", stlv_name,
tvb_ip6_to_str(tvb, stlv_offset + 8));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_oif_tna_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s (IPv6)", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2180,10 +2150,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
break;
case OIF_TNA_NSAP_ADDRESS:
- ti = proto_tree_add_text(tlv_tree, tvb, stlv_offset, stlv_len+4,
- "%s (NSAP): %s", stlv_name,
+ stlv_tree = proto_tree_add_subtree_format(tlv_tree, tvb, stlv_offset, stlv_len+4,
+ ett_ospf_lsa_oif_tna_stlv, NULL, "%s (NSAP): %s", stlv_name,
tvb_bytes_to_ep_str (tvb, stlv_offset + 8, stlv_len - 4));
- stlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_oif_tna_stlv);
proto_tree_add_uint_format_value(stlv_tree, hf_ospf_tlv_type, tvb, stlv_offset, 2,
stlv_type, "%u: %s (NSAP)", stlv_type, stlv_name);
proto_tree_add_item(stlv_tree, hf_ospf_tlv_length, tvb, stlv_offset+2, 2, ENC_BIG_ENDIAN);
@@ -2200,10 +2169,9 @@ dissect_ospf_lsa_mpls(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree
}
break;
default:
- ti = proto_tree_add_text(mpls_tree, tvb, offset, tlv_length+4,
- "Unknown LSA: %u %s", tlv_type,
+ tlv_tree = proto_tree_add_subtree_format(mpls_tree, tvb, offset, tlv_length+4,
+ ett_ospf_lsa_mpls_link, NULL, "Unknown LSA: %u %s", tlv_type,
rval_to_str(tlv_type, mpls_te_tlv_rvals, "Unknown"));
- tlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_mpls_link);
proto_tree_add_uint_format_value(tlv_tree, hf_ospf_tlv_type, tvb, offset, 2, tlv_type, "%u - Unknown %s",
tlv_type, rval_to_str(tlv_type, mpls_te_tlv_rvals, "Unknown"));
proto_tree_add_item(tlv_tree, hf_ospf_tlv_length, tvb, offset+2, 2, ENC_BIG_ENDIAN);
@@ -2300,17 +2268,14 @@ static void
dissect_ospf_lsa_opaque_ri(tvbuff_t *tvb, int offset, proto_tree *tree,
guint32 length)
{
- proto_item *ti;
proto_tree *ri_tree;
proto_tree *tlv_tree;
int tlv_type;
int tlv_length;
- ti = proto_tree_add_text(tree, tvb, offset, length,
- "Opaque Router Information LSA");
-
- ri_tree = proto_item_add_subtree(ti, ett_ospf_lsa_opaque_ri);
+ ri_tree = proto_tree_add_subtree(tree, tvb, offset, length,
+ ett_ospf_lsa_opaque_ri, NULL, "Opaque Router Information LSA");
while (length > 0) {
tlv_type = tvb_get_ntohs(tvb, offset);
@@ -2319,9 +2284,8 @@ dissect_ospf_lsa_opaque_ri(tvbuff_t *tvb, int offset, proto_tree *tree,
switch(tlv_type) {
case OPT_RI_TLV:
- ti = proto_tree_add_text(ri_tree, tvb, offset, tlv_length+4,
- "RI TLV");
- tlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_ri_tlv);
+ tlv_tree = proto_tree_add_subtree(ri_tree, tvb, offset, tlv_length+4,
+ ett_ospf_lsa_ri_tlv, NULL, "RI TLV");
proto_tree_add_uint_format_value(tlv_tree, hf_ospf_tlv_type, tvb, offset, 2,
tlv_type, "Router Informational Capabilities TLV (%u)", tlv_type);
@@ -2332,9 +2296,8 @@ dissect_ospf_lsa_opaque_ri(tvbuff_t *tvb, int offset, proto_tree *tree,
break;
case DYN_HOSTNAME_TLV:
- ti = proto_tree_add_text(ri_tree, tvb, offset, tlv_length+4,
- "Dynamic Hostname TLV");
- tlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_dyn_hostname_tlv);
+ tlv_tree = proto_tree_add_subtree(ri_tree, tvb, offset, tlv_length+4,
+ ett_ospf_lsa_dyn_hostname_tlv, NULL, "Dynamic Hostname TLV");
proto_tree_add_uint_format_value(tlv_tree, hf_ospf_tlv_type, tvb, offset, 2,
tlv_type, "Dynamic Hostname TLV (%u)", tlv_type);
@@ -2345,9 +2308,8 @@ dissect_ospf_lsa_opaque_ri(tvbuff_t *tvb, int offset, proto_tree *tree,
break;
default:
- ti = proto_tree_add_text(ri_tree, tvb, offset, tlv_length+4,
- "Unknown Opaque RI LSA TLV");
- tlv_tree = proto_item_add_subtree(ti, ett_ospf_lsa_unknown_tlv);
+ tlv_tree = proto_tree_add_subtree(ri_tree, tvb, offset, tlv_length+4,
+ ett_ospf_lsa_unknown_tlv, NULL, "Unknown Opaque RI LSA TLV");
proto_tree_add_uint_format_value(tlv_tree, hf_ospf_tlv_length, tvb, offset, 2,
tlv_type, "Unknown TLV (%u)", tlv_type);
@@ -2450,14 +2412,13 @@ dissect_ospf_v2_lsa(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t
end_offset = offset + ls_length;
if (disassemble_body) {
- ti = proto_tree_add_text(tree, tvb, offset, ls_length,
- "LS Type: %s",
+ ospf_lsa_tree = proto_tree_add_subtree_format(tree, tvb, offset, ls_length,
+ ett_ospf_lsa, NULL, "LS Type: %s",
val_to_str(ls_type, ls_type_vals, "Unknown (%d)"));
} else {
- ti = proto_tree_add_text(tree, tvb, offset, OSPF_LSA_HEADER_LENGTH,
- "LSA Header");
+ ospf_lsa_tree = proto_tree_add_subtree(tree, tvb, offset, OSPF_LSA_HEADER_LENGTH,
+ ett_ospf_lsa, NULL, "LSA Header");
}
- ospf_lsa_tree = proto_item_add_subtree(ti, ett_ospf_lsa);
proto_tree_add_item(ospf_lsa_tree, hf_ospf_filter[OSPFF_LS_AGE], tvb,
offset, 2, ENC_BIG_ENDIAN);
@@ -2567,7 +2528,6 @@ dissect_ospf_v2_lsa(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t
*/
for (link_counter = 0; link_counter < nr_links; link_counter++) {
proto_tree *ospf_lsa_router_link_tree;
- proto_item *ti_local;
proto_item *ti_item;
@@ -2575,16 +2535,13 @@ dissect_ospf_v2_lsa(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t
link_type = tvb_get_guint8(tvb, offset + 8);
nr_metric = tvb_get_guint8(tvb, offset + 9);
- ti_local = proto_tree_add_text(ospf_lsa_tree, tvb, offset, 12 + 4 * nr_metric,
- "Type: %-8s ID: %-15s Data: %-15s Metric: %d",
+ ospf_lsa_router_link_tree = proto_tree_add_subtree_format(ospf_lsa_tree, tvb, offset, 12 + 4 * nr_metric,
+ ett_ospf_lsa_router_link, NULL, "Type: %-8s ID: %-15s Data: %-15s Metric: %d",
val_to_str_const(link_type, ospf_v3_lsa_type_short_vals, "Unknown"),
tvb_ip_to_str(tvb, offset),
tvb_ip_to_str(tvb, offset + 4),
tvb_get_ntohs(tvb, offset + 10));
- ospf_lsa_router_link_tree = proto_item_add_subtree(ti_local, ett_ospf_lsa_router_link);
-
-
ti_item = proto_tree_add_item(ospf_lsa_router_link_tree, hf_ospf_filter[OSPFF_LS_ROUTER_LINKID],
tvb, offset, 4, ENC_BIG_ENDIAN);
proto_item_append_text(ti_item, " - %s", val_to_str_const(link_type, ospf_v3_lsa_link_id_vals, "Unknown link ID"));
@@ -2749,13 +2706,12 @@ dissect_ospf_v3_lsa(tvbuff_t *tvb, packet_info *pinfo, int offset, proto_tree *t
end_offset = offset + ls_length;
if (disassemble_body) {
- ti = proto_tree_add_text(tree, tvb, offset, ls_length,
- "%s (Type: 0x%04x)", val_to_str_const(ls_type, v3_ls_type_vals,"Unknown"), ls_type);
+ ospf_lsa_tree = proto_tree_add_subtree_format(tree, tvb, offset, ls_length,
+ ett_ospf_lsa, NULL, "%s (Type: 0x%04x)", val_to_str_const(ls_type, v3_ls_type_vals,"Unknown"), ls_type);
} else {
- ti = proto_tree_add_text(tree, tvb, offset, OSPF_LSA_HEADER_LENGTH,
- "LSA Header");
+ ospf_lsa_tree = proto_tree_add_subtree(tree, tvb, offset, OSPF_LSA_HEADER_LENGTH,
+ ett_ospf_lsa, NULL, "LSA Header");
}
- ospf_lsa_tree = proto_item_add_subtree(ti, ett_ospf_lsa);
proto_tree_add_text(ospf_lsa_tree, tvb, offset, 2, "LS Age: %u seconds",
tvb_get_ntohs(tvb, offset) & ~OSPF_DNA_LSA);
diff --git a/epan/dissectors/packet-p_mul.c b/epan/dissectors/packet-p_mul.c
index e8162272da..a03e69f108 100644
--- a/epan/dissectors/packet-p_mul.c
+++ b/epan/dissectors/packet-p_mul.c
@@ -549,9 +549,8 @@ static void add_ack_analysis (tvbuff_t *tvb, packet_info *pinfo, proto_tree *p_m
}
if (pdu_type == Address_PDU) {
- sa = proto_tree_add_text (p_mul_tree, tvb, 0, 0, "ACK analysis");
+ analysis_tree = proto_tree_add_subtree(p_mul_tree, tvb, 0, 0, ett_ack_analysis, &sa, "ACK analysis");
PROTO_ITEM_SET_GENERATED (sa);
- analysis_tree = proto_item_add_subtree (sa, ett_ack_analysis);
/* Fetch package data */
if ((pkg_data = lookup_seq_val (message_id, 0, src)) == NULL) {
@@ -604,9 +603,8 @@ static void add_ack_analysis (tvbuff_t *tvb, packet_info *pinfo, proto_tree *p_m
PROTO_ITEM_SET_HIDDEN (sa);
}
} else if (pdu_type == Ack_PDU) {
- sa = proto_tree_add_text (p_mul_tree, tvb, 0, 0, "SEQ/ACK analysis");
+ analysis_tree = proto_tree_add_subtree(p_mul_tree, tvb, 0, 0, ett_seq_ack_analysis, &sa, "SEQ/ACK analysis");
PROTO_ITEM_SET_GENERATED (sa);
- analysis_tree = proto_item_add_subtree (sa, ett_seq_ack_analysis);
/* Fetch package data */
memcpy((guint8 *)&dstIp, dst->data, 4);
@@ -684,9 +682,8 @@ static p_mul_seq_val *add_seq_analysis (tvbuff_t *tvb, packet_info *pinfo,
return NULL;
}
- sa = proto_tree_add_text (p_mul_tree, tvb, 0, 0, "SEQ analysis");
+ analysis_tree = proto_tree_add_subtree(p_mul_tree, tvb, 0, 0, ett_seq_analysis, &sa, "SEQ analysis");
PROTO_ITEM_SET_GENERATED (sa);
- analysis_tree = proto_item_add_subtree (sa, ett_seq_analysis);
if (pdu_type == Data_PDU || pdu_type == Discard_Message_PDU) {
/* Add reference to Address_PDU */
diff --git a/epan/dissectors/packet-pagp.c b/epan/dissectors/packet-pagp.c
index 78020566c6..ea1246384a 100644
--- a/epan/dissectors/packet-pagp.c
+++ b/epan/dissectors/packet-pagp.c
@@ -174,8 +174,6 @@ dissect_pagp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_tree *flags_tree;
proto_item *flags_item;
proto_tree *tlv_tree;
- proto_item *tlv_item;
-
const char *sep;
@@ -326,10 +324,9 @@ dissect_pagp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
return;
}
- tlv_item = proto_tree_add_text (pagp_tree, tvb, offset, len,
- "TLV Entry #%d", ii+1);
+ tlv_tree = proto_tree_add_subtree_format(pagp_tree, tvb, offset, len,
+ ett_pagp_tlvs, NULL, "TLV Entry #%d", ii+1);
- tlv_tree = proto_item_add_subtree (tlv_item, ett_pagp_tlvs);
proto_tree_add_uint_format (tlv_tree, hf_pagp_tlv, tvb,
offset,2,tlv,"Type = %d (%s)", tlv,
val_to_str_const(tlv,tlv_types, "Unknown")) ;
diff --git a/epan/dissectors/packet-pana.c b/epan/dissectors/packet-pana.c
index 8541022c41..0832a1b9a1 100644
--- a/epan/dissectors/packet-pana.c
+++ b/epan/dissectors/packet-pana.c
@@ -337,11 +337,8 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree)
tvbuff_t *group_tvb;
tvbuff_t *eap_tvb;
tvbuff_t *encap_tvb;
- proto_item *single_avp_item;
proto_tree *single_avp_tree;
- proto_item *avp_eap_item;
proto_tree *avp_eap_tree;
- proto_item *avp_encap_item;
proto_tree *avp_encap_tree;
offset = 0;
@@ -371,15 +368,13 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree)
/* Check padding */
padding = (4 - (avp_length % 4)) % 4;
- single_avp_item = proto_tree_add_text(avp_tree, tvb, offset, avp_length + padding,
- "%s (%s) length: %d bytes (%d padded bytes)",
+ single_avp_tree = proto_tree_add_subtree_format(avp_tree, tvb, offset, avp_length + padding,
+ ett_pana_avp_info, NULL, "%s (%s) length: %d bytes (%d padded bytes)",
val_to_str(avp_code, avp_code_names, "Unknown (%d)"),
val_to_str(avp_type, avp_type_names, "Unknown (%d)"),
avp_length,
avp_length + padding);
- single_avp_tree = proto_item_add_subtree(single_avp_item, ett_pana_avp_info);
-
/* AVP Code */
proto_tree_add_uint_format_value(single_avp_tree, hf_pana_avp_code, tvb,
offset, 2, avp_code, "%s (%u)",
@@ -408,12 +403,10 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree)
/* AVP Value */
switch(avp_type) {
case PANA_GROUPED: {
- proto_item *avp_group_item;
proto_tree *avp_group_tree;
- avp_group_item = proto_tree_add_text(single_avp_tree,
+ avp_group_tree = proto_tree_add_subtree(single_avp_tree,
tvb, offset, avp_data_length,
- "Grouped AVP");
- avp_group_tree = proto_item_add_subtree(avp_group_item, ett_pana_avp);
+ ett_pana_avp, NULL, "Grouped AVP");
group_tvb = tvb_new_subset(tvb, offset,
MIN(avp_data_length, tvb_reported_length(tvb)-offset),
avp_data_length);
@@ -467,10 +460,9 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree)
break;
}
case PANA_EAP: {
- avp_eap_item = proto_tree_add_text(single_avp_tree,
+ avp_eap_tree = proto_tree_add_subtree(single_avp_tree,
tvb, offset, avp_data_length,
- "AVP Value (EAP packet)");
- avp_eap_tree = proto_item_add_subtree(avp_eap_item, ett_pana_avp);
+ ett_pana_avp, NULL, "AVP Value (EAP packet)");
eap_tvb = tvb_new_subset_length(tvb, offset, avp_data_length);
if (eap_handle != NULL) {
call_dissector(eap_handle, eap_tvb, pinfo, avp_eap_tree);
@@ -478,10 +470,9 @@ dissect_avps(tvbuff_t *tvb, packet_info *pinfo, proto_tree *avp_tree)
break;
}
case PANA_ENCAPSULATED: {
- avp_encap_item = proto_tree_add_text(single_avp_tree,
+ avp_encap_tree = proto_tree_add_subtree(single_avp_tree,
tvb, offset, avp_data_length,
- "AVP Value (PANA packet)");
- avp_encap_tree = proto_item_add_subtree(avp_encap_item, ett_pana_avp);
+ ett_pana_avp, NULL, "AVP Value (PANA packet)");
encap_tvb = tvb_new_subset_length(tvb, offset, avp_data_length);
dissect_pana_pdu(encap_tvb, pinfo, avp_encap_tree);
break;
@@ -639,10 +630,8 @@ dissect_pana_pdu(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if(avp_length != 0){
tvbuff_t *avp_tvb;
proto_tree *avp_tree;
- proto_item *avp_item;
avp_tvb = tvb_new_subset_length(tvb, offset, avp_length);
- avp_item = proto_tree_add_text(pana_tree, tvb, offset, avp_length, "Attribute Value Pairs");
- avp_tree = proto_item_add_subtree(avp_item, ett_pana_avp);
+ avp_tree = proto_tree_add_subtree(pana_tree, tvb, offset, avp_length, ett_pana_avp, NULL, "Attribute Value Pairs");
if (avp_tree != NULL) {
dissect_avps(avp_tvb, pinfo, avp_tree);
diff --git a/epan/dissectors/packet-pathport.c b/epan/dissectors/packet-pathport.c
index 0e2543973b..173d6303fc 100644
--- a/epan/dissectors/packet-pathport.c
+++ b/epan/dissectors/packet-pathport.c
@@ -367,8 +367,8 @@ value_string_ext pp_pid_vals_ext = VALUE_STRING_EXT_INIT(pp_pid_vals);
static guint dissect_one_tlv(tvbuff_t *tvb, proto_tree *tree,
guint offset)
{
- proto_item *ti = proto_tree_add_text(tree, tvb, offset, 0, "Property");
- proto_tree *tlv_tree = proto_item_add_subtree(ti, ett_pp_tlv);
+ proto_item *ti;
+ proto_tree *tlv_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_pp_tlv, &ti, "Property");
guint len;
guint pad_len;
@@ -432,8 +432,8 @@ dissect_data_payload(tvbuff_t *tvb, proto_item *tree, guint offset, guint len)
while(offset < end)
{
- proto_item *ti = proto_tree_add_text(tree, tvb, offset, 0, "xDMX Data: ");
- proto_tree *data_tree = proto_item_add_subtree(ti, ett_pp_data);
+ proto_item *ti;
+ proto_tree *data_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_pp_data, &ti, "xDMX Data: ");
proto_tree_add_item(data_tree, hf_pp_data_encoding, tvb, offset, 2, ENC_NA);
offset += 2;
blklen = tvb_get_ntohs(tvb, offset);
@@ -469,13 +469,14 @@ dissect_arp_reply(tvbuff_t *tvb, proto_tree *tree, guint offset, guint len)
static guint
dissect_one_pdu(tvbuff_t *tvb, proto_tree *tree, guint offset)
{
- proto_item *ti = proto_tree_add_text(tree, tvb, offset, 0, "PDU");
- proto_tree *pdu_tree = proto_item_add_subtree(ti, ett_pp_pdu);
+ proto_item *ti;
+ proto_tree *pdu_tree = proto_tree_add_subtree(tree, tvb, offset, 0, ett_pp_pdu, &ti, "PDU");
guint len;
guint type = tvb_get_ntohs(tvb, offset);
const char *name = val_to_str(type, pp_pdu_vals, TYPE_UNKNOWN);
+
proto_item_append_text(ti, " : %s", name);
proto_tree_add_item(pdu_tree, hf_pp_pdu_type, tvb, offset, 2, ENC_NA);
@@ -525,9 +526,7 @@ dissect_multiple_pdus(tvbuff_t *tvb, proto_item *ti,
static int
dissect_header(tvbuff_t *tvb, proto_tree *parent, guint offset)
{
- proto_item *ti = proto_tree_add_item(parent, proto_pathport, tvb, offset, PATHPORT_HEADER_LENGTH, ENC_NA);
- proto_tree *tree = proto_item_add_subtree(ti, ett_pathport);
- proto_item_set_text(ti, "Header");
+ proto_tree *tree = proto_tree_add_subtree(parent, tvb, offset, PATHPORT_HEADER_LENGTH, ett_pathport, NULL, "Header");
proto_tree_add_item(tree, hf_pp_prot, tvb, offset, 2, ENC_NA);
offset += 2;
diff --git a/epan/dissectors/packet-pcep.c b/epan/dissectors/packet-pcep.c
index bd3d245ce6..0448a7d3dc 100644
--- a/epan/dissectors/packet-pcep.c
+++ b/epan/dissectors/packet-pcep.c
@@ -777,7 +777,6 @@ static void
dissect_pcep_tlvs(proto_tree *pcep_obj, tvbuff_t *tvb, int offset, gint length, gint ett_pcep_obj)
{
proto_tree *tlv;
- proto_item *ti;
guint16 tlv_length, tlv_type, of_code;
int i, j;
int padding = 0;
@@ -785,8 +784,8 @@ dissect_pcep_tlvs(proto_tree *pcep_obj, tvbuff_t *tvb, int offset, gint length,
for (j = 0; j < length; j += 4 + tlv_length + padding) {
tlv_type = tvb_get_ntohs(tvb, offset+j);
tlv_length = tvb_get_ntohs(tvb, offset + j + 2);
- ti = proto_tree_add_text(pcep_obj, tvb, offset + j, tlv_length+4, "%s", val_to_str(tlv_type, pcep_tlvs_vals, "Unknown TLV (%u). "));
- tlv = proto_item_add_subtree(ti, ett_pcep_obj);
+ tlv = proto_tree_add_subtree(pcep_obj, tvb, offset + j, tlv_length+4,
+ ett_pcep_obj, NULL, val_to_str(tlv_type, pcep_tlvs_vals, "Unknown TLV (%u). "));
proto_tree_add_item(tlv, hf_pcep_tlv_type, tvb, offset + j, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(tlv, hf_pcep_tlv_length, tvb, offset + 2 + j, 2, ENC_BIG_ENDIAN);
switch (tlv_type)
@@ -2292,7 +2291,6 @@ dissect_pcep_obj_tree(proto_tree *pcep_tree, packet_info *pinfo, tvbuff_t *tvb,
proto_tree *pcep_object_tree;
proto_item *pcep_object_item;
proto_tree *pcep_header_obj_flags;
- proto_item *ti;
while (len < msg_length) {
obj_class = tvb_get_guint8(tvb, offset);
@@ -2427,8 +2425,7 @@ dissect_pcep_obj_tree(proto_tree *pcep_tree, packet_info *pinfo, tvbuff_t *tvb,
ot_res_p_i = tvb_get_guint8(tvb, offset+1);
type = (ot_res_p_i & MASK_OBJ_TYPE)>>4;
- ti = proto_tree_add_text(pcep_object_tree, tvb, offset+1, 1, "Flags");
- pcep_header_obj_flags = proto_item_add_subtree(ti, ett_pcep_hdr);
+ pcep_header_obj_flags = proto_tree_add_subtree(pcep_object_tree, tvb, offset+1, 1, ett_pcep_hdr, NULL, "Flags");
proto_tree_add_item(pcep_header_obj_flags, hf_pcep_hdr_obj_flags_reserved, tvb, offset+1, 1, ENC_NA);
proto_tree_add_item(pcep_header_obj_flags, hf_pcep_hdr_obj_flags_p, tvb, offset+1, 1, ENC_NA);
proto_tree_add_item(pcep_header_obj_flags, hf_pcep_hdr_obj_flags_i, tvb, offset+1, 1, ENC_NA);
@@ -2572,8 +2569,8 @@ dissect_pcep_msg_tree(tvbuff_t *tvb, proto_tree *tree, guint tree_mode, packet_i
ti = proto_tree_add_item(tree, proto_pcep, tvb, offset, msg_length, ENC_NA);
pcep_tree = proto_item_add_subtree(ti, tree_mode);
- ti = proto_tree_add_text(pcep_tree, tvb, offset, 4, "%s Header", val_to_str(message_type, message_type_vals, "Unknown Message (%u). "));
- pcep_header_tree = proto_item_add_subtree(ti, ett_pcep_hdr);
+ pcep_header_tree = proto_tree_add_subtree_format(pcep_tree, tvb, offset, 4, ett_pcep_hdr, NULL,
+ "%s Header", val_to_str(message_type, message_type_vals, "Unknown Message (%u). "));
proto_tree_add_item(pcep_header_tree, hf_pcep_version, tvb, offset, 1, ENC_NA);
diff --git a/epan/dissectors/packet-pcnfsd.c b/epan/dissectors/packet-pcnfsd.c
index eb2e433eb6..acfa2e386a 100644
--- a/epan/dissectors/packet-pcnfsd.c
+++ b/epan/dissectors/packet-pcnfsd.c
@@ -195,8 +195,8 @@ dissect_pcnfsd2_auth_call(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
int newoffset;
const char *ident = NULL;
const char *ident_decoded;
- proto_item *ident_item = NULL;
- proto_tree *ident_tree = NULL;
+ proto_item *ident_item;
+ proto_tree *ident_tree;
const char *password = NULL;
proto_item *password_item = NULL;
proto_tree *password_tree = NULL;
@@ -204,18 +204,12 @@ dissect_pcnfsd2_auth_call(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
offset = dissect_rpc_string(tvb, tree,
hf_pcnfsd_auth_client, offset, NULL);
- if (tree) {
- ident_item = proto_tree_add_text(tree, tvb,
- offset, -1, "Authentication Ident");
- if (ident_item)
- ident_tree = proto_item_add_subtree(
- ident_item, ett_pcnfsd_auth_ident);
- }
+ ident_tree = proto_tree_add_subtree(tree, tvb,
+ offset, -1, ett_pcnfsd_auth_ident, &ident_item, "Authentication Ident");
+
newoffset = dissect_rpc_string(tvb, ident_tree,
hf_pcnfsd_auth_ident_obscure, offset, &ident);
- if (ident_item) {
- proto_item_set_len(ident_item, newoffset-offset);
- }
+ proto_item_set_len(ident_item, newoffset-offset);
if (ident) {
/* Only attempt to decode the ident if it has been specified */
@@ -236,13 +230,9 @@ dissect_pcnfsd2_auth_call(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
offset = newoffset;
- if (tree) {
- password_item = proto_tree_add_text(tree, tvb,
- offset, -1, "Authentication Password");
- if (password_item)
- password_tree = proto_item_add_subtree(
- password_item, ett_pcnfsd_auth_password);
- }
+ password_tree = proto_tree_add_subtree(tree, tvb,
+ offset, -1, ett_pcnfsd_auth_password, NULL, "Authentication Password");
+
newoffset = dissect_rpc_string(tvb, password_tree,
hf_pcnfsd_auth_password_obscure, offset, &password);
if (password_item) {
@@ -279,22 +269,18 @@ dissect_pcnfsd2_auth_reply(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree, void* data _U_)
{
int gids_count;
- proto_item *gitem = NULL;
- proto_tree *gtree = NULL;
+ proto_tree *gtree;
int gids_i;
offset = dissect_rpc_uint32(tvb, tree, hf_pcnfsd_status, offset);
offset = dissect_rpc_uint32(tvb, tree, hf_pcnfsd_uid, offset);
offset = dissect_rpc_uint32(tvb, tree, hf_pcnfsd_gid, offset);
gids_count = tvb_get_ntohl(tvb,offset+0);
- if (tree) {
- gitem = proto_tree_add_text(tree, tvb,
- offset, 4+gids_count*4, "Group IDs: %d", gids_count);
- gtree = proto_item_add_subtree(gitem, ett_pcnfsd_gids);
- }
- if (gtree) {
- proto_tree_add_item(gtree, hf_pcnfsd_gids_count, tvb, offset, 4, ENC_BIG_ENDIAN);
- }
+ gtree = proto_tree_add_subtree_format(tree, tvb,
+ offset, 4+gids_count*4, ett_pcnfsd_gids, NULL, "Group IDs: %d", gids_count);
+
+ proto_tree_add_item(gtree, hf_pcnfsd_gids_count, tvb, offset, 4, ENC_BIG_ENDIAN);
+
offset += 4;
for (gids_i = 0 ; gids_i < gids_count ; gids_i++) {
offset = dissect_rpc_uint32(tvb, gtree,
diff --git a/epan/dissectors/packet-per.c b/epan/dissectors/packet-per.c
index 2a343dc02c..536ebdf1e8 100644
--- a/epan/dissectors/packet-per.c
+++ b/epan/dissectors/packet-per.c
@@ -521,8 +521,7 @@ DEBUG_ENTRY("dissect_per_sequence_of_helper");
proto_item *litem;
proto_tree *ltree;
- litem=proto_tree_add_text(tree, tvb, offset>>3, 0, "Item %d", i);
- ltree=proto_item_add_subtree(litem, ett_per_sequence_of_item);
+ ltree=proto_tree_add_subtree_format(tree, tvb, offset>>3, 0, ett_per_sequence_of_item, &litem, "Item %d", i);
offset=(*func)(tvb, offset, actx, ltree, hf_index);
proto_item_set_len(litem, (offset>>3)!=(lold_offset>>3)?(offset>>3)-(lold_offset>>3):1);
diff --git a/epan/dissectors/packet-pflog.c b/epan/dissectors/packet-pflog.c
index 8c73e183c0..3073aa649b 100644
--- a/epan/dissectors/packet-pflog.c
+++ b/epan/dissectors/packet-pflog.c
@@ -160,7 +160,7 @@ static void
dissect_pflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
tvbuff_t *next_tvb;
- proto_tree *pflog_tree = NULL;
+ proto_tree *pflog_tree;
proto_item *ti = NULL, *ti_len;
int length;
guint8 af, action;
@@ -171,11 +171,9 @@ dissect_pflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PFLOG");
- if (tree) {
- ti = proto_tree_add_item(tree, proto_pflog, tvb, offset, 0, ENC_NA);
+ ti = proto_tree_add_item(tree, proto_pflog, tvb, offset, 0, ENC_NA);
+ pflog_tree = proto_item_add_subtree(ti, ett_pflog);
- pflog_tree = proto_item_add_subtree(ti, ett_pflog);
- }
length = tvb_get_guint8(tvb, offset) + pad_len;
ti_len = proto_tree_add_item(pflog_tree, hf_pflog_length, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -415,8 +413,8 @@ static int
dissect_old_pflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
{
tvbuff_t *next_tvb;
- proto_tree *pflog_tree = NULL;
- proto_item *ti = NULL;
+ proto_tree *pflog_tree;
+ proto_item *ti;
guint32 af;
guint8 *ifname;
guint16 rnr, action;
@@ -424,53 +422,38 @@ dissect_old_pflog(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *dat
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PFLOG-OLD");
- if (tree) {
- ti = proto_tree_add_item(tree, proto_old_pflog, tvb, 0, 0, ENC_NA);
+ ti = proto_tree_add_item(tree, proto_old_pflog, tvb, 0, 0, ENC_NA);
+ pflog_tree = proto_item_add_subtree(ti, ett_pflog);
- pflog_tree = proto_item_add_subtree(ti, ett_pflog);
+ proto_tree_add_item(pflog_tree, hf_old_pflog_af, tvb, offset, 4, ENC_BIG_ENDIAN);
- proto_tree_add_item(pflog_tree, hf_old_pflog_af, tvb, offset, 4, ENC_BIG_ENDIAN);
- }
af = tvb_get_ntohl(tvb, offset);
offset +=4;
- if (tree) {
- proto_tree_add_item(pflog_tree, hf_old_pflog_ifname, tvb, offset, 16, ENC_ASCII|ENC_NA);
- }
+ proto_tree_add_item(pflog_tree, hf_old_pflog_ifname, tvb, offset, 16, ENC_ASCII|ENC_NA);
ifname = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, 16, ENC_ASCII);
offset +=16;
- if (tree) {
- proto_tree_add_item(pflog_tree, hf_old_pflog_rnr, tvb, offset, 2, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(pflog_tree, hf_old_pflog_rnr, tvb, offset, 2, ENC_BIG_ENDIAN);
rnr = tvb_get_ntohs(tvb, offset);
offset +=2;
- if (tree) {
- proto_tree_add_item(pflog_tree, hf_old_pflog_reason, tvb, offset, 2, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(pflog_tree, hf_old_pflog_reason, tvb, offset, 2, ENC_BIG_ENDIAN);
offset +=2;
- if (tree) {
- proto_tree_add_item(pflog_tree, hf_old_pflog_action, tvb, offset, 2, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(pflog_tree, hf_old_pflog_action, tvb, offset, 2, ENC_BIG_ENDIAN);
action = tvb_get_ntohs(tvb, offset);
offset +=2;
- if (tree) {
- proto_tree_add_item(pflog_tree, hf_old_pflog_dir, tvb, offset, 2, ENC_BIG_ENDIAN);
- }
+ proto_tree_add_item(pflog_tree, hf_old_pflog_dir, tvb, offset, 2, ENC_BIG_ENDIAN);
offset +=2;
- if (tree) {
- proto_item_set_text(ti, "PF Log (pre 3.4) %s %s on %s by rule %d",
+ proto_item_set_text(ti, "PF Log (pre 3.4) %s %s on %s by rule %d",
val_to_str(af, pflog_af_vals, "unknown (%u)"),
val_to_str(action, pflog_action_vals, "unknown (%u)"),
ifname,
rnr);
- proto_item_set_len(ti, offset);
-
- }
+ proto_item_set_len(ti, offset);
/* Set the tvbuff for the payload after the header */
next_tvb = tvb_new_subset_remaining(tvb, offset);
diff --git a/epan/dissectors/packet-pgm.c b/epan/dissectors/packet-pgm.c
index 486746a5eb..4dd290bc22 100644
--- a/epan/dissectors/packet-pgm.c
+++ b/epan/dissectors/packet-pgm.c
@@ -357,9 +357,8 @@ dissect_pgmopts(ptvcursor_t* cursor, packet_info *pinfo, const char *pktname)
guint8 genopts_len;
guint8 opts_type;
- tf = proto_tree_add_text(ptvcursor_tree(cursor), tvb, ptvcursor_current_offset(cursor), -1,
- "%s Options", pktname);
- opts_tree = proto_item_add_subtree(tf, ett_pgm_opts);
+ opts_tree = proto_tree_add_subtree_format(ptvcursor_tree(cursor), tvb, ptvcursor_current_offset(cursor), -1,
+ ett_pgm_opts, &tf, "%s Options", pktname);
ptvcursor_set_tree(cursor, opts_tree);
opts_type = tvb_get_guint8(tvb, ptvcursor_current_offset(cursor));
ti = ptvcursor_add(cursor, hf_pgm_opt_type, 1, ENC_BIG_ENDIAN);
@@ -950,10 +949,10 @@ dissect_pgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ptvcursor_add(cursor, hf_pgm_main_gsi, 6, ENC_NA);
ptvcursor_add(cursor, hf_pgm_main_tsdulen, 2, ENC_BIG_ENDIAN);
- tf = proto_tree_add_text(pgm_tree, tvb, ptvcursor_current_offset(cursor), plen, "%s Packet", pktname);
switch(pgmhdr_type) {
case PGM_SPM_PCKT:
- type_tree = proto_item_add_subtree(tf, ett_pgm_spm);
+ type_tree = proto_tree_add_subtree_format(pgm_tree, tvb, ptvcursor_current_offset(cursor), plen,
+ ett_pgm_spm, NULL, "%s Packet", pktname);
ptvcursor_set_tree(cursor, type_tree);
ptvcursor_add(cursor, hf_pgm_spm_sqn, 4, ENC_BIG_ENDIAN);
@@ -980,7 +979,8 @@ dissect_pgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
break;
case PGM_RDATA_PCKT:
case PGM_ODATA_PCKT:
- type_tree = proto_item_add_subtree(tf, ett_pgm_data);
+ type_tree = proto_tree_add_subtree_format(pgm_tree, tvb, ptvcursor_current_offset(cursor), plen,
+ ett_pgm_data, NULL, "%s Packet", pktname);
ptvcursor_set_tree(cursor, type_tree);
ptvcursor_add(cursor, hf_pgm_spm_sqn, 4, ENC_BIG_ENDIAN);
@@ -989,7 +989,8 @@ dissect_pgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case PGM_NAK_PCKT:
case PGM_NNAK_PCKT:
case PGM_NCF_PCKT:
- type_tree = proto_item_add_subtree(tf, ett_pgm_nak);
+ type_tree = proto_tree_add_subtree_format(pgm_tree, tvb, ptvcursor_current_offset(cursor), plen,
+ ett_pgm_nak, NULL, "%s Packet", pktname);
ptvcursor_set_tree(cursor, type_tree);
ptvcursor_add(cursor, hf_pgm_nak_sqn, 4, ENC_BIG_ENDIAN);
@@ -1031,7 +1032,8 @@ dissect_pgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
break;
case PGM_POLL_PCKT:
- type_tree = proto_item_add_subtree(tf, ett_pgm_poll);
+ type_tree = proto_tree_add_subtree_format(pgm_tree, tvb, ptvcursor_current_offset(cursor), plen,
+ ett_pgm_poll, NULL, "%s Packet", pktname);
ptvcursor_set_tree(cursor, type_tree);
ptvcursor_add(cursor, hf_pgm_poll_sqn, 4, ENC_BIG_ENDIAN);
@@ -1060,7 +1062,8 @@ dissect_pgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ptvcursor_add(cursor, hf_pgm_poll_matching_bmask, 4, ENC_BIG_ENDIAN);
break;
case PGM_POLR_PCKT:
- type_tree = proto_item_add_subtree(tf, ett_pgm_polr);
+ type_tree = proto_tree_add_subtree_format(pgm_tree, tvb, ptvcursor_current_offset(cursor), plen,
+ ett_pgm_polr, NULL, "%s Packet", pktname);
ptvcursor_set_tree(cursor, type_tree);
ptvcursor_add(cursor, hf_pgm_polr_sqn, 4, ENC_BIG_ENDIAN);
@@ -1068,7 +1071,8 @@ dissect_pgm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
ptvcursor_add(cursor, hf_pgm_polr_res, 2, ENC_BIG_ENDIAN);
break;
case PGM_ACK_PCKT:
- type_tree = proto_item_add_subtree(tf, ett_pgm_ack);
+ type_tree = proto_tree_add_subtree_format(pgm_tree, tvb, ptvcursor_current_offset(cursor), plen,
+ ett_pgm_ack, NULL, "%s Packet", pktname);
ptvcursor_set_tree(cursor, type_tree);
ptvcursor_add(cursor, hf_pgm_ack_sqn, 4, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-pgsql.c b/epan/dissectors/packet-pgsql.c
index ee1d3e7797..4bc25d9fb4 100644
--- a/epan/dissectors/packet-pgsql.c
+++ b/epan/dissectors/packet-pgsql.c
@@ -191,8 +191,7 @@ static void dissect_pgsql_fe_msg(guchar type, guint length, tvbuff_t *tvb,
n += siz;
i = tvb_get_ntohs(tvb, n);
- ti = proto_tree_add_text(tree, tvb, n, 2, "Parameters: %d", i);
- shrub = proto_item_add_subtree(ti, ett_values);
+ shrub = proto_tree_add_subtree_format(tree, tvb, n, 2, ett_values, NULL, "Parameters: %d", i);
n += 2;
while (i-- > 0) {
proto_tree_add_item(shrub, hf_typeoid, tvb, n, 4, ENC_BIG_ENDIAN);
@@ -211,8 +210,7 @@ static void dissect_pgsql_fe_msg(guchar type, guint length, tvbuff_t *tvb,
n += siz;
i = tvb_get_ntohs(tvb, n);
- ti = proto_tree_add_text(tree, tvb, n, 2, "Parameter formats: %d", i);
- shrub = proto_item_add_subtree(ti, ett_values);
+ shrub = proto_tree_add_subtree_format(tree, tvb, n, 2, ett_values, NULL, "Parameter formats: %d", i);
n += 2;
while (i-- > 0) {
proto_tree_add_item(shrub, hf_format, tvb, n, 2, ENC_BIG_ENDIAN);
@@ -220,8 +218,7 @@ static void dissect_pgsql_fe_msg(guchar type, guint length, tvbuff_t *tvb,
}
i = tvb_get_ntohs(tvb, n);
- ti = proto_tree_add_text(tree, tvb, n, 2, "Parameter values: %d", i);
- shrub = proto_item_add_subtree(ti, ett_values);
+ shrub = proto_tree_add_subtree_format(tree, tvb, n, 2, ett_values, NULL, "Parameter values: %d", i);
n += 2;
while (i-- > 0) {
siz = tvb_get_ntohl(tvb, n);
@@ -234,8 +231,7 @@ static void dissect_pgsql_fe_msg(guchar type, guint length, tvbuff_t *tvb,
}
i = tvb_get_ntohs(tvb, n);
- ti = proto_tree_add_text(tree, tvb, n, 2, "Result formats: %d", i);
- shrub = proto_item_add_subtree(ti, ett_values);
+ shrub = proto_tree_add_subtree_format(tree, tvb, n, 2, ett_values, NULL, "Result formats: %d", i);
n += 2;
while (i-- > 0) {
proto_tree_add_item(shrub, hf_format, tvb, n, 2, ENC_BIG_ENDIAN);
@@ -335,8 +331,7 @@ static void dissect_pgsql_fe_msg(guchar type, guint length, tvbuff_t *tvb,
n += 4;
i = tvb_get_ntohs(tvb, n);
- ti = proto_tree_add_text(tree, tvb, n, 2, "Parameter formats: %d", i);
- shrub = proto_item_add_subtree(ti, ett_values);
+ shrub = proto_tree_add_subtree_format(tree, tvb, n, 2, ett_values, NULL, "Parameter formats: %d", i);
n += 2;
while (i-- > 0) {
proto_tree_add_item(shrub, hf_format, tvb, n, 2, ENC_BIG_ENDIAN);
@@ -344,8 +339,7 @@ static void dissect_pgsql_fe_msg(guchar type, guint length, tvbuff_t *tvb,
}
i = tvb_get_ntohs(tvb, n);
- ti = proto_tree_add_text(tree, tvb, n, 2, "Parameter values: %d", i);
- shrub = proto_item_add_subtree(ti, ett_values);
+ shrub = proto_tree_add_subtree_format(tree, tvb, n, 2, ett_values, NULL, "Parameter values: %d", i);
n += 2;
while (i-- > 0) {
siz = tvb_get_ntohl(tvb, n);
@@ -522,8 +516,7 @@ static void dissect_pgsql_be_msg(guchar type, guint length, tvbuff_t *tvb,
proto_tree_add_item(tree, hf_format, tvb, n, 1, ENC_BIG_ENDIAN);
n += 1;
i = tvb_get_ntohs(tvb, n);
- ti = proto_tree_add_text(tree, tvb, n, 2, "Columns: %d", i);
- shrub = proto_item_add_subtree(ti, ett_values);
+ shrub = proto_tree_add_subtree_format(tree, tvb, n, 2, ett_values, NULL, "Columns: %d", i);
n += 2;
while (i-- > 2) {
proto_tree_add_item(shrub, hf_format, tvb, n, 2, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-pim.c b/epan/dissectors/packet-pim.c
index e0a5a88056..c4e1cfb820 100644
--- a/epan/dissectors/packet-pim.c
+++ b/epan/dissectors/packet-pim.c
@@ -179,7 +179,6 @@ dissect_pimv1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
proto_tree *pim_tree = NULL;
proto_item *ti;
proto_tree *pimopt_tree = NULL;
- proto_item *tiopt;
if (!proto_is_protocol_enabled(find_protocol_by_id(proto_pim))) {
/*
@@ -273,8 +272,7 @@ dissect_pimv1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
offset += 3; /* skip reserved stuff */
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- tiopt = proto_tree_add_text(pim_tree, tvb, offset, -1, "PIM options");
- pimopt_tree = proto_item_add_subtree(tiopt, ett_pim_opts);
+ pimopt_tree = proto_tree_add_subtree(pim_tree, tvb, offset, -1, ett_pim_opts, NULL, "PIM options");
} else
goto done;
@@ -799,8 +797,7 @@ dissect_pim(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
offset += 4;
if (tvb_reported_length_remaining(tvb, offset) > 0) {
- tiopt = proto_tree_add_text(pim_tree, tvb, offset, -1, "PIM options");
- pimopt_tree = proto_item_add_subtree(tiopt, ett_pim_opts);
+ pimopt_tree = proto_tree_add_subtree(pim_tree, tvb, offset, -1, ett_pim_opts, &tiopt, "PIM options");
} else
goto done;
@@ -822,10 +819,9 @@ dissect_pim(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
opt_count++;
hello_opt = tvb_get_ntohs(tvb, offset);
opt_len = tvb_get_ntohs(tvb, offset + 2);
- opt_item = proto_tree_add_text(pimopt_tree, tvb, offset, 4 + opt_len,
- "Option %u: %s", hello_opt,
+ opt_tree = proto_tree_add_subtree_format(pimopt_tree, tvb, offset, 4 + opt_len,
+ ett_pim_opt, &opt_item, "Option %u: %s", hello_opt,
val_to_str(hello_opt, pim_opt_vals, "Unknown: %u"));
- opt_tree = proto_item_add_subtree(opt_item, ett_pim_opt);
proto_tree_add_item(opt_tree, hf_pim_optiontype, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(opt_tree, hf_pim_optionlength, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
@@ -876,13 +872,11 @@ dissect_pim(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
{
int i;
proto_tree *sub_tree = NULL;
- proto_item *addrlist_option;
- addrlist_option = proto_tree_add_text(opt_tree, tvb, offset, 4 + opt_len,
- "%sAddress List (%u)",
+ sub_tree = proto_tree_add_subtree_format(opt_tree, tvb, offset, 4 + opt_len,
+ ett_pim_opt, NULL, "%sAddress List (%u)",
hello_opt == 65001 ? "old " : "",
hello_opt);
- sub_tree = proto_item_add_subtree(addrlist_option, ett_pim_opt);
for (i = offset + 4; i < offset + 4 + opt_len; ) {
int advance;
if (!dissect_pim_addr(sub_tree, tvb, i, pimv2_unicast, NULL, NULL,
diff --git a/epan/dissectors/packet-pktc.c b/epan/dissectors/packet-pktc.c
index 7a577d72a1..a4ec15e102 100644
--- a/epan/dissectors/packet-pktc.c
+++ b/epan/dissectors/packet-pktc.c
@@ -175,16 +175,14 @@ static int
dissect_pktc_app_specific_data(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 doi, guint8 kmmid)
{
int old_offset=offset;
- proto_tree *tree = NULL;
+ proto_tree *tree;
proto_tree *engineid_tree = NULL;
- proto_item *item = NULL;
+ proto_item *item;
proto_item *engineid_item = NULL;
guint8 len;
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_pktc_app_spec_data, tvb, offset, -1, ENC_NA);
- tree = proto_item_add_subtree(item, ett_pktc_app_spec_data);
- }
+ item = proto_tree_add_item(parent_tree, hf_pktc_app_spec_data, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_pktc_app_spec_data);
switch(doi){
case DOI_SNMPv3:
@@ -201,8 +199,8 @@ dissect_pktc_app_specific_data(packet_info *pinfo _U_, proto_tree *parent_tree,
/* snmpEngineID */
engineid_item = proto_tree_add_item(tree, hf_pktc_snmpEngineID, tvb, offset, len, ENC_NA);
- engineid_tree = proto_item_add_subtree(engineid_item, ett_pktc_engineid);
- dissect_snmp_engineid(engineid_tree, tvb, offset, len);
+ engineid_tree = proto_item_add_subtree(engineid_item, ett_pktc_engineid);
+ dissect_snmp_engineid(engineid_tree, tvb, offset, len);
offset+=len;
/* boots */
@@ -259,15 +257,12 @@ static int
dissect_pktc_list_of_ciphersuites(packet_info *pinfo _U_, proto_tree *parent_tree, tvbuff_t *tvb, int offset, guint8 doi)
{
int old_offset=offset;
- proto_tree *tree = NULL;
- proto_item *item = NULL, *hidden_item;
+ proto_tree *tree;
+ proto_item *item, *hidden_item;
guint8 len, i;
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_pktc_list_of_ciphersuites, tvb, offset, -1, ENC_NA);
- tree = proto_item_add_subtree(item, ett_pktc_list_of_ciphersuites);
- }
-
+ item = proto_tree_add_item(parent_tree, hf_pktc_list_of_ciphersuites, tvb, offset, -1, ENC_NA);
+ tree = proto_item_add_subtree(item, ett_pktc_list_of_ciphersuites);
/* number of ciphersuites */
len=tvb_get_guint8(tvb, offset);
@@ -550,16 +545,14 @@ static void
dissect_pktc_mtafqdn(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
int offset=0;
- proto_tree *pktc_mtafqdn_tree = NULL;
- proto_item *item = NULL;
+ proto_tree *pktc_mtafqdn_tree;
+ proto_item *item;
tvbuff_t *pktc_mtafqdn_tvb;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PKTC");
- if (tree) {
- item = proto_tree_add_item(tree, proto_pktc, tvb, 0, 0, ENC_NA);
- pktc_mtafqdn_tree = proto_item_add_subtree(item, ett_pktc_mtafqdn);
- }
+ item = proto_tree_add_item(tree, proto_pktc, tvb, 0, 0, ENC_NA);
+ pktc_mtafqdn_tree = proto_item_add_subtree(item, ett_pktc_mtafqdn);
col_add_fstr(pinfo->cinfo, COL_INFO, "MTA FQDN %s",
pinfo->srcport == pinfo->match_uint ? "Reply":"Request");
@@ -581,15 +574,13 @@ dissect_pktc(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
guint8 kmmid, doi, version;
int offset=0;
- proto_tree *pktc_tree = NULL;
- proto_item *item = NULL, *hidden_item;
+ proto_tree *pktc_tree;
+ proto_item *item, *hidden_item;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PKTC");
- if (tree) {
- item = proto_tree_add_item(tree, proto_pktc, tvb, 0, 3, ENC_NA);
- pktc_tree = proto_item_add_subtree(item, ett_pktc);
- }
+ item = proto_tree_add_item(tree, proto_pktc, tvb, 0, 3, ENC_NA);
+ pktc_tree = proto_item_add_subtree(item, ett_pktc);
/* key management message id */
kmmid=tvb_get_guint8(tvb, offset);
diff --git a/epan/dissectors/packet-pnrp.c b/epan/dissectors/packet-pnrp.c
index 009ed2684d..7e15422b01 100644
--- a/epan/dissectors/packet-pnrp.c
+++ b/epan/dissectors/packet-pnrp.c
@@ -402,7 +402,6 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
proto_tree *pnrp_header_tree;
proto_item *pnrp_message_tree = NULL;
- proto_item *pnrp_message_item = NULL;
/* Lets add a subtree to our dissection to display the info */
@@ -456,8 +455,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Length must be at least 4, because field_type and data_length are part of data_length information */
if (data_length < 4) {
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset, 4, "Message with invalid length %u (< 4)", data_length);
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree_format(pnrp_tree, tvb, offset, 4, ett_pnrp_message, NULL,
+ "Message with invalid length %u (< 4)", data_length);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
}
@@ -470,9 +469,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* First Field in ACK Message */
case PNRP_HEADER_ACKED:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Message ACK ID: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Message ACK ID: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_headerack, tvb, offset + 4, data_length -4, ENC_BIG_ENDIAN);
@@ -484,9 +482,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* A validate pnrp id follows as found in FLOOD */
case VALIDATE_PNRP_ID:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Validate PNRP ID: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Validate PNRP ID: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* We can have a large number of pnrp IDs here */
@@ -499,9 +496,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* The Flags have different meaning, depending on the message */
case FLAGS_FIELD:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Flags Field: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Flags Field: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
switch (message_type) {
@@ -547,9 +543,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Flood controls found in FLOOD Message */
case FLOOD_CONTROLS:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Flood Control: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Flood Control: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* Reserved 1 - 15 bits */
@@ -568,9 +563,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Solicit Controls found in SOLICIT Message */
case SOLICIT_CONTROLS:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Solicit Controls: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Solicit Controls: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_text(pnrp_message_tree, tvb, offset + 4, 1, "Reserved : %d",tvb_get_guint8(tvb,offset+4));
@@ -582,9 +576,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Lookup controls found in LOOKUP Message */
case LOOKUP_CONTROLS:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Lookup Control: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Lookup Control: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* 2 Bytes of Flags */
@@ -605,9 +598,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Target PNRP ID found in Lookup Message */
case TARGET_PNRP_ID:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Target PNRP ID: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Target PNRP ID: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
dissect_pnrp_ids(tvb, offset+4, data_length-4, pnrp_message_tree);
@@ -619,9 +611,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Extended Payload found in AUTHORITY Message */
case EXTENDED_PAYLOAD:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Extended Payload: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Extended Payload: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* TODO: Do actual parsing */
@@ -632,9 +623,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Pnrp id Array as found in REQUEST & ADVERTISE Message */
case PNRP_ID_ARRAY:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "PNRP ID Array: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "PNRP ID Array: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_idArray_NumEntries, tvb, offset + 4, 2, ENC_BIG_ENDIAN);
@@ -649,9 +639,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* Cert Chain follows as found in AUTHORITY */
case CERT_CHAIN:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "CERT Chain: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "CERT Chain: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_certChain, tvb, offset + 4, data_length-4, ENC_NA);
@@ -672,9 +661,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* classifier: A classifier string follows as found in AUTHORITY */
case CLASSIFIER:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Classifier: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Classifier: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* NumEntries */
@@ -704,9 +692,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* A hashed nonce follows as found in ADVERTISE & SOLICIT */
case HASHED_NONCE:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Hashed Nonce: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Hashed Nonce: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_hashednonce, tvb, offset + 4, data_length-4, ENC_NA);
@@ -719,9 +706,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* A nonce follows as found in REQUEST & INQUIRE */
case NONCE:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Nonce: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Nonce: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_nonce, tvb, offset + 4, data_length-4, ENC_NA);
@@ -733,9 +719,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* split controls as found in AUTHORITY */
case SPLIT_CONTROLS:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Split controls: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Split controls: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* Size of Authority Buffer */
@@ -752,9 +737,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* routing entry: A route entry follows as found in ADVERTISE, INQUIRE, LOOKUP & AUTHORITY */
case ROUTING_ENTRY:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Routing Entry: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Routing Entry: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
dissect_route_entry(tvb,offset+4, tvb_get_ntohs(tvb,offset+2)-4, pnrp_message_tree);
@@ -776,9 +760,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* validate cpa: an encoded CPA structure follows as found in AUTHORITY */
case VALIDATE_CPA:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Validate CPA: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Validate CPA: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* Do the actual parsing in own method */
@@ -793,9 +776,8 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
/* IPV6 Endpoint: an ipv6 endpoint array structure follows as found in LOOKUP */
case IPV6_ENDPOINT_ARRAY:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "IPv6 Endpoint Array: ");
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
+ pnrp_message_tree = proto_tree_add_subtree(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "IPv6 Endpoint Array: ");
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
/* Number of route entries */
@@ -815,10 +797,9 @@ static int dissect_pnrp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, voi
default:
if (tree) {
- pnrp_message_item = proto_tree_add_text(pnrp_tree, tvb, offset,
- data_length, "Type: %s, length: %u",
+ pnrp_message_tree = proto_tree_add_subtree_format(pnrp_tree, tvb, offset,
+ data_length, ett_pnrp_message, NULL, "Type: %s, length: %u",
val_to_str(field_type, fieldID, "Unknown (0x%04x)"), data_length);
- pnrp_message_tree = proto_item_add_subtree(pnrp_message_item, ett_pnrp_message);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_type, tvb, offset , 2, ENC_BIG_ENDIAN);
proto_tree_add_item(pnrp_message_tree, hf_pnrp_message_length, tvb, offset + 2, 2, ENC_BIG_ENDIAN);
if(data_length > 4)
@@ -990,12 +971,12 @@ static void dissect_payload_structure(tvbuff_t *tvb, gint offset, gint length, p
{
guint16 lengthOfData;
/* Add a new Subtree */
- proto_item *pnrp_payload_tree = NULL;
- proto_item *pnrp_payload_item = NULL;
+ proto_item *pnrp_payload_tree;
/* Check if we actually should display something */
- if (0<length ) {
- pnrp_payload_item = proto_tree_add_text(tree, tvb, offset, length, "Payload Structure");
- pnrp_payload_tree = proto_item_add_subtree(pnrp_payload_item, ett_pnrp_message_payloadStructure);
+ if (0>=length )
+ return;
+
+ pnrp_payload_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_pnrp_message_payloadStructure, NULL, "Payload Structure");
/* Dissect the Payload Structure */
/* Payload Type */
@@ -1016,19 +997,17 @@ static void dissect_payload_structure(tvbuff_t *tvb, gint offset, gint length, p
offset += 2;
lengthOfData -=20;
}
- }
}
+
static void dissect_publicKey_structure(tvbuff_t *tvb, gint offset, gint length, proto_tree *tree)
{
guint16 objIDLength;
guint16 cbDataLength;
/* Add a new Subtree */
- proto_item *pnrp_publicKey_tree = NULL;
- proto_item *pnrp_publicKey_item = NULL;
+ proto_tree *pnrp_publicKey_tree;
/* Check if we can safely parse Data */
if (0 < length && 0 <= tvb_reported_length_remaining(tvb, offset+length)) {
- pnrp_publicKey_item = proto_tree_add_text(tree, tvb, offset, length, "CPA Public Key Structure");
- pnrp_publicKey_tree = proto_item_add_subtree(pnrp_publicKey_item, ett_pnrp_message_publicKeyStructure);
+ pnrp_publicKey_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_pnrp_message_publicKeyStructure, NULL, "CPA Public Key Structure");
/* Parsing of Data */
/* Field Length of Structure */
proto_tree_add_text(pnrp_publicKey_tree, tvb, offset,2, "Length of Structure : %d",tvb_get_letohs(tvb,offset));
@@ -1058,12 +1037,11 @@ static void dissect_signature_structure(tvbuff_t *tvb, gint offset, gint length,
{
guint16 signatureLength;
/* Add a new Subtree */
- proto_item *pnrp_signature_tree = NULL;
- proto_item *pnrp_signature_item = NULL;
+ proto_tree *pnrp_signature_tree;
+
/* Check if we can safely parse Data */
if (0 < length && 0 <= tvb_reported_length_remaining(tvb, offset+length)) {
- pnrp_signature_item = proto_tree_add_text(tree, tvb, offset, length, "Signature Structure");
- pnrp_signature_tree = proto_item_add_subtree(pnrp_signature_item, ett_pnrp_message_signatureStructure);
+ pnrp_signature_tree = proto_tree_add_subtree(tree, tvb, offset, length, ett_pnrp_message_signatureStructure, NULL, "Signature Structure");
/* Parsing of Data */
/* Field Length of Structure */
proto_tree_add_text(pnrp_signature_tree, tvb, offset,2, "Length of Structure : %d",tvb_get_letohs(tvb,offset));
diff --git a/epan/dissectors/packet-portmap.c b/epan/dissectors/packet-portmap.c
index 0028ffa02a..87d37b6fa4 100644
--- a/epan/dissectors/packet-portmap.c
+++ b/epan/dissectors/packet-portmap.c
@@ -234,7 +234,7 @@ dissect_dump_entry(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
proto_tree *tree, void* data _U_)
{
int prog, version, proto, port;
- proto_item *ti, *subtree;
+ proto_tree *subtree;
prog = tvb_get_ntohl(tvb, offset+0);
version = tvb_get_ntohl(tvb, offset+4);
@@ -242,10 +242,9 @@ dissect_dump_entry(tvbuff_t *tvb, int offset, packet_info *pinfo _U_,
port = tvb_get_ntohl(tvb, offset+12);
if ( tree )
{
- ti = proto_tree_add_text(tree, tvb, offset, 16,
- "Map Entry: %s (%u) V%d",
+ subtree = proto_tree_add_subtree_format(tree, tvb, offset, 16,
+ ett_portmap_entry, NULL, "Map Entry: %s (%u) V%d",
rpc_prog_name(prog), prog, version);
- subtree = proto_item_add_subtree(ti, ett_portmap_entry);
proto_tree_add_uint_format_value(subtree, hf_portmap_prog, tvb,
offset+0, 4, prog,
@@ -389,17 +388,14 @@ static const value_string portmap2_proc_vals[] = {
static int
dissect_rpcb(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, void* data _U_)
{
- proto_item* rpcb_item = NULL;
- proto_tree* rpcb_tree = NULL;
+ proto_item* rpcb_item;
+ proto_tree* rpcb_tree;
int old_offset = offset;
guint32 prog;
- if (tree) {
- rpcb_item = proto_tree_add_item(tree, hf_portmap_rpcb, tvb,
+ rpcb_item = proto_tree_add_item(tree, hf_portmap_rpcb, tvb,
offset, -1, ENC_NA);
- if (rpcb_item)
- rpcb_tree = proto_item_add_subtree(rpcb_item, ett_portmap_rpcb);
- }
+ rpcb_tree = proto_item_add_subtree(rpcb_item, ett_portmap_rpcb);
prog = tvb_get_ntohl(tvb, offset);
if (rpcb_tree)
diff --git a/epan/dissectors/packet-ppcap.c b/epan/dissectors/packet-ppcap.c
index c298f2f537..af216641d7 100644
--- a/epan/dissectors/packet-ppcap.c
+++ b/epan/dissectors/packet-ppcap.c
@@ -147,7 +147,7 @@ static int dissect_ppcap_payload_data(tvbuff_t *, packet_info *, proto_tree *, i
static void
dissect_ppcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti, *ti1;
+ proto_item *ti;
proto_tree *ppcap_tree, *ppcap_tree1;
guint16 msg_type;
int offset = 0;
@@ -162,9 +162,8 @@ dissect_ppcap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
while (tvb_reported_length_remaining(tvb, offset) > 0)
{
msg_type = tvb_get_ntohs(tvb, offset);
- ti1 = proto_tree_add_text(ppcap_tree, tvb, offset, 2, "%s",
+ ppcap_tree1 = proto_tree_add_subtree(ppcap_tree, tvb, offset, 2, ett_ppcap1, NULL,
val_to_str(msg_type, payload_tag_values, "Unknown PPCAP message type (%u)"));
- ppcap_tree1 = proto_item_add_subtree(ti1, ett_ppcap1);
offset = offset + 2;
switch (msg_type) {
case 1:
diff --git a/epan/dissectors/packet-ppi.c b/epan/dissectors/packet-ppi.c
index e4bb771926..99de3e160d 100644
--- a/epan/dissectors/packet-ppi.c
+++ b/epan/dissectors/packet-ppi.c
@@ -481,16 +481,15 @@ add_ppi_field_header(tvbuff_t *tvb, proto_tree *tree, int *offset)
static void
dissect_80211_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int data_len)
{
- proto_tree *ftree = NULL;
- proto_item *ti = NULL;
+ proto_tree *ftree;
+ proto_item *ti;
ptvcursor_t *csr;
gint rate_kbps;
guint32 common_flags;
guint16 common_frequency;
gchar *chan_str;
- ti = proto_tree_add_text(tree, tvb, offset, data_len, "802.11-Common");
- ftree = proto_item_add_subtree(ti, ett_dot11_common);
+ ftree = proto_tree_add_subtree(tree, tvb, offset, data_len, ett_dot11_common, NULL, "802.11-Common");
add_ppi_field_header(tvb, ftree, &offset);
data_len -= 4; /* Subtract field header length */
@@ -563,7 +562,6 @@ static void
dissect_80211n_mac(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, int data_len, gboolean add_subtree, guint32 *n_mac_flags, guint32 *ampdu_id)
{
proto_tree *ftree = tree;
- proto_item *ti = NULL;
ptvcursor_t *csr;
int subtree_off = add_subtree ? 4 : 0;
@@ -571,8 +569,7 @@ dissect_80211n_mac(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
*ampdu_id = tvb_get_letohl(tvb, offset + 4 + subtree_off);
if (add_subtree) {
- ti = proto_tree_add_text(tree, tvb, offset, data_len, "802.11n MAC");
- ftree = proto_item_add_subtree(ti, ett_dot11n_mac);
+ ftree = proto_tree_add_subtree(tree, tvb, offset, data_len, ett_dot11n_mac, NULL, "802.11n MAC");
add_ppi_field_header(tvb, ftree, &offset);
data_len -= 4; /* Subtract field header length */
}
@@ -608,14 +605,13 @@ dissect_80211n_mac(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int
static void
dissect_80211n_mac_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int offset, int data_len, guint32 *n_mac_flags, guint32 *ampdu_id)
{
- proto_tree *ftree = NULL;
- proto_item *ti = NULL;
+ proto_tree *ftree;
+ proto_item *ti;
ptvcursor_t *csr;
guint16 ext_frequency;
gchar *chan_str;
- ti = proto_tree_add_text(tree, tvb, offset, data_len, "802.11n MAC+PHY");
- ftree = proto_item_add_subtree(ti, ett_dot11n_mac_phy);
+ ftree = proto_tree_add_subtree(tree, tvb, offset, data_len, ett_dot11n_mac_phy, NULL, "802.11n MAC+PHY");
add_ppi_field_header(tvb, ftree, &offset);
data_len -= 4; /* Subtract field header length */
@@ -682,12 +678,10 @@ dissect_80211n_mac_phy(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, int
static void
dissect_aggregation_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, int data_len)
{
- proto_tree *ftree = tree;
- proto_item *ti = NULL;
+ proto_tree *ftree;
ptvcursor_t *csr;
- ti = proto_tree_add_text(tree, tvb, offset, data_len, "Aggregation Extension");
- ftree = proto_item_add_subtree(ti, ett_aggregation_extension);
+ ftree = proto_tree_add_subtree(tree, tvb, offset, data_len, ett_aggregation_extension, NULL, "Aggregation Extension");
add_ppi_field_header(tvb, ftree, &offset);
data_len -= 4; /* Subtract field header length */
@@ -705,12 +699,10 @@ dissect_aggregation_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree
static void
dissect_8023_extension(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, int data_len)
{
- proto_tree *ftree = tree;
- proto_item *ti = NULL;
+ proto_tree *ftree;
ptvcursor_t *csr;
- ti = proto_tree_add_text(tree, tvb, offset, data_len, "802.3 Extension");
- ftree = proto_item_add_subtree(ti, ett_8023_extension);
+ ftree = proto_tree_add_subtree(tree, tvb, offset, data_len, ett_8023_extension, NULL, "802.3 Extension");
add_ppi_field_header(tvb, ftree, &offset);
data_len -= 4; /* Subtract field header length */
@@ -956,9 +948,9 @@ dissect_ppi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (fd_head && tree) {
ft_fdh = fd_head;
/* List our fragments */
- ti = proto_tree_add_text(ppi_tree, tvb, offset, -1, "A-MPDU (%u bytes w/hdrs):", ampdu_len);
+ seg_tree = proto_tree_add_subtree_format(ppi_tree, tvb, offset, -1,
+ ett_ampdu_segments, &ti, "A-MPDU (%u bytes w/hdrs):", ampdu_len);
PROTO_ITEM_SET_GENERATED(ti);
- seg_tree = proto_item_add_subtree(ti, ett_ampdu_segments);
while (ft_fdh) {
if (ft_fdh->tvb_data && ft_fdh->len) {
@@ -998,10 +990,7 @@ dissect_ppi(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
next_tvb = tvb_new_chain(tvb, fd_head->tvb_data);
add_new_data_source(pinfo, next_tvb, mpdu_str);
- if (agg_tree) {
- ti = proto_tree_add_text(agg_tree, next_tvb, 0, -1, "%s", mpdu_str);
- ampdu_tree = proto_item_add_subtree(ti, ett_ampdu_segment);
- }
+ ampdu_tree = proto_tree_add_subtree(agg_tree, next_tvb, 0, -1, ett_ampdu_segment, NULL, mpdu_str);
call_dissector(ieee80211_ht_handle, next_tvb, pinfo, ampdu_tree);
}
fd_head = fd_head->next;
diff --git a/epan/dissectors/packet-ppp.c b/epan/dissectors/packet-ppp.c
index c2e225f558..70989d8ec5 100644
--- a/epan/dissectors/packet-ppp.c
+++ b/epan/dissectors/packet-ppp.c
@@ -1810,13 +1810,12 @@ dissect_lcp_vendor_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf, *ti;
+ proto_item *ti;
guint32 oui;
const gchar *manuf;
oui = tvb_get_ntoh24(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
ti = proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_oui, tvb,
offset + 2, 3, oui, "%02x:%02x:%02x",
@@ -1838,11 +1837,10 @@ dissect_lcp_mru_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u", optp->name,
- tvb_get_ntohs(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %u", optp->name,
+ tvb_get_ntohs(tvb, offset + 2));
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_mru, tvb, offset + 2, 2,
ENC_BIG_ENDIAN);
@@ -1886,9 +1884,8 @@ dissect_lcp_async_map_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
int i;
map = tvb_get_ntohl(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%08x (",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, *optp->subtree_index, &tf, "%s: 0x%08x (",
optp->name, map);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
ti = proto_tree_add_bitmask(field_tree, tvb, offset + 2,
hf_lcp_opt_asyncmap, *optp->subtree_index, asyncmap_fields,
@@ -1919,14 +1916,12 @@ dissect_lcp_authprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint16 protocol;
protocol = tvb_get_ntohs(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
- optp->name, val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"),
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, *optp->subtree_index, NULL,
+ "%s: %s (0x%02x)", optp->name, val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"),
protocol);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_auth_protocol, tvb, offset + 2,
2, ENC_BIG_ENDIAN);
@@ -1953,14 +1948,12 @@ dissect_lcp_qualprot_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint16 protocol;
protocol = tvb_get_ntohs(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s (0x%02x)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, *optp->subtree_index, NULL, "%s: %s (0x%02x)",
optp->name, val_to_str_ext_const(protocol, &ppp_vals_ext, "Unknown"),
protocol);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_quality_protocol, tvb,
offset + 2, 2, ENC_BIG_ENDIAN);
@@ -1976,11 +1969,9 @@ dissect_lcp_magicnumber_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%08x",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length, *optp->subtree_index, NULL, "%s: 0x%08x",
optp->name, tvb_get_ntohl(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_magic_number, tvb, offset + 2,
4, ENC_BIG_ENDIAN);
@@ -1991,15 +1982,13 @@ dissect_lcp_linkqualmon_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint32 reportingperiod;
reportingperiod = tvb_get_ntohl(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length,
- "%s: %u microsecond%s%s", optp->name, reportingperiod,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %u microsecond%s%s", optp->name, reportingperiod,
plurality(reportingperiod, "", "s"),
reportingperiod ? "" : " [illegal]");
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_reportingperiod,
tvb, offset + 2, 4, reportingperiod, "%u microsecond%s%s",
@@ -2020,10 +2009,8 @@ dissect_lcp_simple_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
}
@@ -2033,7 +2020,6 @@ dissect_lcp_fcs_alternatives_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
static const int *fcs_alternatives_fields[] = {
&hf_lcp_opt_fcs_alternatives_ccitt32,
&hf_lcp_opt_fcs_alternatives_ccitt16,
@@ -2041,9 +2027,9 @@ dissect_lcp_fcs_alternatives_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
NULL
};
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: 0x%02x",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: 0x%02x",
optp->name, tvb_get_guint8(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_bitmask(field_tree, tvb, offset + 2,
hf_lcp_opt_fcs_alternatives, *optp->subtree_index,
@@ -2056,14 +2042,13 @@ dissect_lcp_self_describing_pad_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint8 maximum;
maximum = tvb_get_guint8(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u octet%s%s",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %u octet%s%s",
optp->name, maximum, plurality(maximum, "", "s"),
maximum ? "" : " [invalid]");
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_maximum, tvb,
offset + 2, 1, maximum, "%u octet%s%s", maximum,
@@ -2076,14 +2061,13 @@ dissect_lcp_numbered_mode_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint8 window;
window = tvb_get_guint8(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u frame%s%s",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %u frame%s%s",
optp->name, window, plurality(window, "", "s"),
(window == 0 || window > 127) ? " [invalid]" : "");
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_uint_format_value(field_tree, hf_lcp_opt_window, tvb,
offset + 2, 1, window, "%u frame%s%s", window,
@@ -2118,13 +2102,12 @@ dissect_lcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint8 operation;
operation = tvb_get_guint8(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
val_to_str_const(operation, callback_op_vals, "Unknown"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_operation, tvb, offset + 2, 1,
ENC_NA);
@@ -2142,10 +2125,10 @@ dissect_lcp_multilink_mrru_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u", optp->name,
+
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %u", optp->name,
tvb_get_ntohs(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_mrru, tvb, offset + 2, 2,
ENC_BIG_ENDIAN);
@@ -2175,14 +2158,14 @@ dissect_lcp_multilink_ep_disc_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
{
proto_tree *field_tree;
proto_tree *magic_tree;
- proto_item *tf, *tm;
+ proto_item *tm;
guint8 ep_disc_class;
ep_disc_class = tvb_get_guint8(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: Class: %s",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: Class: %s",
optp->name, val_to_str_const(ep_disc_class,
multilink_ep_disc_class_vals, "Unknown"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_ep_disc_class, tvb, offset + 2,
1, ENC_NA);
@@ -2259,13 +2242,12 @@ dissect_lcp_dce_identifier_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint8 mode;
mode = tvb_get_guint8(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
val_to_str_const(mode, dce_id_mode_vals, "Unknown"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_mode, tvb, offset + 2, 1,
ENC_NA);
@@ -2276,10 +2258,8 @@ dissect_lcp_multilink_pp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_unused, tvb, offset + 2, 2,
ENC_NA);
@@ -2290,12 +2270,11 @@ dissect_lcp_bacp_link_discriminator_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %u (0x%04x)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %u (0x%04x)",
optp->name, tvb_get_ntohs(tvb, offset + 2),
tvb_get_ntohs(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_link_discrim, tvb, offset + 2,
2, ENC_BIG_ENDIAN);
@@ -2309,11 +2288,9 @@ dissect_lcp_auth_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint8 id_len;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_id, tvb, offset + 2, 1, ENC_NA);
@@ -2338,7 +2315,6 @@ dissect_lcp_cobs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
static const int *cobs_flags_fields[] = {
&hf_lcp_opt_cobs_flags_res,
&hf_lcp_opt_cobs_flags_pre,
@@ -2346,8 +2322,7 @@ dissect_lcp_cobs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
NULL
};
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_bitmask(field_tree, tvb, offset + 2, hf_lcp_opt_cobs_flags,
*optp->subtree_index, cobs_flags_fields, ENC_NA);
@@ -2358,11 +2333,9 @@ dissect_lcp_prefix_elision_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
guint8 pre_len;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
if (length > 2) {
@@ -2395,10 +2368,8 @@ dissect_lcp_multilink_hdr_fmt_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_code, tvb, offset + 2, 1,
ENC_NA);
@@ -2675,10 +2646,8 @@ dissect_lcp_internationalization_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_lcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_lcp_opt_MIBenum, tvb, offset + 2, 4,
ENC_BIG_ENDIAN);
@@ -2703,13 +2672,12 @@ static void
dissect_ipcp_addrs_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: Src: %s, Dst: %s",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: Src: %s, Dst: %s",
optp->name, tvb_ip_to_str(tvb, offset + 2),
tvb_ip_to_str(tvb, offset + 6));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_src_address, tvb, offset + 2,
4, ENC_BIG_ENDIAN);
@@ -2727,14 +2695,13 @@ static void
dissect_ipcp_compress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
guint16 us;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
val_to_str_const(tvb_get_ntohs(tvb, offset + 2),
ipcp_compress_proto_vals, "Unknown"));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_compress_proto, tvb,
offset + 2, 2, ENC_BIG_ENDIAN);
@@ -2750,15 +2717,13 @@ dissect_ipcp_compress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
offset + 8, 2, ENC_BIG_ENDIAN);
if (length > 10) {
- proto_item *tso;
proto_tree *subopt_tree;
/* suboptions */
offset += 10;
length -= 10;
- tso = proto_tree_add_text(field_tree, tvb, offset, length,
- "Suboptions: (%u byte%s)", length, plurality(length, "", "s"));
- subopt_tree = proto_item_add_subtree(tso, *optp->subtree_index);
+ subopt_tree = proto_tree_add_subtree_format(field_tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "Suboptions: (%u byte%s)", length, plurality(length, "", "s"));
dissect_ip_tcp_options(tvb, offset, length, ipcp_rohc_subopts,
N_IPCP_ROHC_SUBOPTS, -1, &PPP_OPT_TYPES, &ei_ppp_opt_len_invalid, pinfo, subopt_tree, NULL, NULL);
}
@@ -2789,15 +2754,13 @@ dissect_ipcp_compress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
offset + 12, 2, ENC_BIG_ENDIAN);
if ( length > 14 ) {
- proto_item *tso;
proto_tree *subopt_tree;
/* suboptions */
offset += 14;
length -= 14;
- tso = proto_tree_add_text(field_tree, tvb, offset, length,
- "Suboptions: (%u byte%s)", length, plurality(length, "", "s"));
- subopt_tree = proto_item_add_subtree(tso, *optp->subtree_index);
+ subopt_tree = proto_tree_add_subtree_format(field_tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "Suboptions: (%u byte%s)", length, plurality(length, "", "s"));
dissect_ip_tcp_options(tvb, offset, length, ipcp_iphc_subopts,
N_IPCP_IPHC_SUBOPTS, -1, &PPP_OPT_TYPES, &ei_ppp_opt_len_invalid, pinfo, subopt_tree, NULL, NULL);
}
@@ -2830,10 +2793,8 @@ dissect_ipcp_rohc_profiles_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ipcp_opt_rohc_type_len(tvb, offset, field_tree, optp->name);
if (length <= 2)
return;
@@ -2862,10 +2823,8 @@ dissect_ipcp_iphc_simple_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ipcp_opt_iphc_type_len(tvb, offset, field_tree, optp->name);
}
@@ -2874,10 +2833,8 @@ dissect_ipcp_iphc_neghdrcomp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ipcp_opt_iphc_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_iphc_param, tvb, offset + 2, 1,
ENC_NA);
@@ -2887,12 +2844,11 @@ static void
dissect_ipcp_addr_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
tvb_ip_to_str(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_ip_address, tvb, offset + 2, 4,
ENC_BIG_ENDIAN);
@@ -2902,12 +2858,11 @@ static void
dissect_ipcp_mobileipv4_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
tvb_ip_to_str(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_mobilenodehomeaddr, tvb,
offset + 2, 4, ENC_BIG_ENDIAN);
@@ -2917,12 +2872,11 @@ static void
dissect_ipcp_pri_dns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
tvb_ip_to_str(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_pri_dns_address, tvb,
offset + 2, 4, ENC_BIG_ENDIAN);
@@ -2932,12 +2886,11 @@ static void
dissect_ipcp_pri_nbns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
tvb_ip_to_str(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_pri_nbns_address, tvb,
offset + 2, 4, ENC_BIG_ENDIAN);
@@ -2947,12 +2900,11 @@ static void
dissect_ipcp_sec_dns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
tvb_ip_to_str(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_sec_dns_address, tvb,
offset + 2, 4, ENC_BIG_ENDIAN);
@@ -2962,12 +2914,11 @@ static void
dissect_ipcp_sec_nbns_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: %s", optp->name,
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: %s", optp->name,
tvb_ip_to_str(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_ipcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ipcp_opt_sec_nbns_address, tvb,
offset + 2, 4, ENC_BIG_ENDIAN);
@@ -2991,12 +2942,11 @@ static void
dissect_osinlcp_align_npdu_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: Alignment: %u",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ *optp->subtree_index, NULL, "%s: Alignment: %u",
optp->name, tvb_get_guint8(tvb, offset + 2));
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
dissect_osinlcp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_osinlcp_opt_alignment, tvb, offset + 2,
1, ENC_NA);
@@ -3031,13 +2981,12 @@ static void dissect_ccp_oui_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf, *ti;
+ proto_item *ti;
guint32 oui;
const gchar *manuf;
oui = tvb_get_ntoh24(tvb, offset + 2);
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
ti = proto_tree_add_uint_format_value(field_tree, hf_ccp_opt_oui, tvb,
offset + 2, 3, oui, "%02x:%02x:%02x",
@@ -3069,10 +3018,8 @@ static void dissect_ccp_other_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
if (length > 2) {
@@ -3086,7 +3033,6 @@ static void
dissect_ccp_stac_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
const char *stac_ascend = "Stac Electronics LZS (Ascend Proprietary version)";
static const int *check_mode_fields[] = {
@@ -3096,8 +3042,7 @@ dissect_ccp_stac_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
};
if (length == 6) {
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", stac_ascend);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, stac_ascend);
dissect_ccp_opt_type_len(tvb, offset, field_tree, stac_ascend);
/* We don't know how to decode the following 4 octets, since
@@ -3105,8 +3050,7 @@ dissect_ccp_stac_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
proto_tree_add_item(field_tree, hf_ccp_opt_data, tvb, offset + 2,
length - 2, ENC_NA);
} else {
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ccp_opt_history_count, tvb,
@@ -3158,7 +3102,6 @@ static void
dissect_ccp_mppe_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
static const int *supported_bits_fields[] = {
&hf_ccp_opt_supported_bits_h,
@@ -3170,8 +3113,7 @@ dissect_ccp_mppe_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
NULL
};
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_bitmask(field_tree, tvb, offset + 2,
@@ -3184,10 +3126,8 @@ static void dissect_ccp_gfza_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
proto_tree *field_tree;
- proto_item *tf;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ccp_opt_history, tvb, offset + 2, 1,
@@ -3204,7 +3144,6 @@ static void
dissect_ccp_bsdcomp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
static const int *vd_fields[] = {
&hf_ccp_opt_vd_vers,
@@ -3212,8 +3151,7 @@ dissect_ccp_bsdcomp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
NULL
};
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_bitmask(field_tree, tvb, offset + 2, hf_ccp_opt_vd,
@@ -3225,11 +3163,9 @@ static void
dissect_ccp_lzsdcp_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ccp_opt_history_count, tvb,
@@ -3245,11 +3181,9 @@ static void
dissect_ccp_mvrca_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ccp_opt_fe, tvb, offset + 2, 1, ENC_NA);
@@ -3265,11 +3199,9 @@ static void
dissect_ccp_dce_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ccp_opt_mode, tvb, offset + 2, 1,
@@ -3291,12 +3223,10 @@ static void
dissect_ccp_deflate_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
guint8 window;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
window = tvb_get_guint8(tvb, offset + 2);
@@ -3323,11 +3253,9 @@ static const range_string v44lzjh_mode_dict_rvals[] = {
static void dissect_ccp_v44lzjh_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
dissect_ccp_opt_type_len(tvb, offset, field_tree, optp->name);
proto_tree_add_item(field_tree, hf_ccp_opt_mode_dictcount, tvb, offset + 2,
@@ -3355,14 +3283,12 @@ static void
dissect_cbcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
proto_tree *addr_tree;
guint8 addr_type;
guint addr_len;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
proto_tree_add_text(field_tree, tvb, offset + 2, 1, "Callback delay: %u",
tvb_get_guint8(tvb, offset + 2));
@@ -3370,10 +3296,9 @@ dissect_cbcp_callback_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
length -= 3;
while (length > 0) {
- proto_tree_add_text(field_tree, tvb, offset, length,
- "Callback Address");
+ addr_tree = proto_tree_add_subtree(field_tree, tvb, offset, length,
+ ett_cbcp_callback_opt_addr, NULL, "Callback Address");
addr_type = tvb_get_guint8(tvb, offset);
- addr_tree = proto_item_add_subtree(tf, ett_cbcp_callback_opt_addr);
proto_tree_add_text(addr_tree, tvb, offset, 1, "Address Type: %s (%u)",
((addr_type == 1) ? "PSTN/ISDN" : "Other"), addr_type);
offset++;
@@ -3395,11 +3320,9 @@ static void
dissect_bacp_favored_peer_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
proto_tree_add_text(field_tree, tvb, offset + 2, 4, "Magic number: 0x%08x",
tvb_get_ntohl(tvb, offset + 2));
@@ -3409,12 +3332,10 @@ static void
dissect_bap_link_type_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
guint8 link_type;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
proto_tree_add_text(field_tree, tvb, offset + 2, 2, "Link Speed: %u kbps",
tvb_get_ntohs(tvb, offset + 2));
@@ -3427,15 +3348,12 @@ static void
dissect_bap_phone_delta_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- proto_item *ti;
proto_tree *suboption_tree;
guint8 subopt_type;
guint8 subopt_len;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
offset += 2;
length -= 2;
@@ -3443,11 +3361,9 @@ dissect_bap_phone_delta_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
while (length > 0) {
subopt_type = tvb_get_guint8(tvb, offset);
subopt_len = tvb_get_guint8(tvb, offset + 1);
- ti = proto_tree_add_text(field_tree, tvb, offset, subopt_len,
- "Sub-Option (%u byte%s)", subopt_len,
+ suboption_tree = proto_tree_add_subtree_format(field_tree, tvb, offset, subopt_len,
+ ett_bap_phone_delta_subopt, NULL, "Sub-Option (%u byte%s)", subopt_len,
plurality(subopt_len, "", "s"));
- suboption_tree = proto_item_add_subtree(ti,
- ett_bap_phone_delta_subopt);
proto_tree_add_text(suboption_tree, tvb, offset, 1,
"Sub-Option Type: %s (%u)", val_to_str_const(subopt_type,
@@ -3535,12 +3451,10 @@ static void
dissect_bap_call_status_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
guint8 status, action;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s", optp->name);
- field_tree = proto_item_add_subtree(tf, *optp->subtree_index);
+ field_tree = proto_tree_add_subtree(tree, tvb, offset, length, *optp->subtree_index, NULL, optp->name);
status = tvb_get_guint8(tvb, offset + 2);
proto_tree_add_text(field_tree, tvb, offset + 2, 1, "Status: %s (0x%02x)",
@@ -3647,12 +3561,11 @@ dissect_vsncp_pdnaddress_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
{3, "IPv6/IPv4 Address"},
{0, NULL}
};
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ ett_lcp_options, NULL, "%s: (%d byte%s)",
optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
pdnaddtype = tvb_get_guint8(tvb, offset + 2);
proto_tree_add_text(field_tree, tvb, offset + 2, 1,
@@ -3708,12 +3621,11 @@ static void
dissect_vsncp_apname_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ ett_lcp_options, NULL, "%s: (%d byte%s)",
optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
if (length > 2) {
guint8 i = 0;
@@ -3757,14 +3669,13 @@ static void
dissect_vsncp_apn_ambr_opt(const ip_tcp_opt *optp, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
if (tree) {
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ ett_lcp_options, NULL, "%s: (%d byte%s)",
optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
/*de_esm_apn_aggr_max_br(tvb, field_tree, pinfo, offset, length, NULL, 0);*/
proto_tree_add_text(field_tree, tvb, offset, length, "AMBR Data");
@@ -3775,13 +3686,12 @@ static void
dissect_vsncp_ipv6_hsgw_lla_iid_opt(const ip_tcp_opt *optp _U_, tvbuff_t *tvb,
int offset, guint length, packet_info *pinfo _U_, proto_tree *tree, void *data _U_)
{
- proto_item *tf;
proto_tree *field_tree;
if (tree) {
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ ett_lcp_options, NULL, "%s: (%d byte%s)",
optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
proto_tree_add_text(field_tree, tvb, offset, length, "IPv6 interface identifier");
}
@@ -3806,12 +3716,11 @@ dissect_vsncp_pco_opt(const ip_tcp_opt *optp, tvbuff_t *tvb, int offset,
guint8 i = 0;
guint16 pcotype;
guint8 len;
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(tree, tvb, offset, length, "%s: (%d byte%s)",
+ field_tree = proto_tree_add_subtree_format(tree, tvb, offset, length,
+ ett_lcp_options, NULL, "%s: (%d byte%s)",
optp->name, length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_lcp_options);
while (i < (length - 3)) {
pcotype = tvb_get_ntohs(tvb, off);
@@ -3895,12 +3804,10 @@ dissect_cp(tvbuff_t *tvb, int proto_id, int proto_subtree_index,
case CONFNAK:
case CONFREJ:
if (length > 0) {
- proto_item *tf;
proto_tree *field_tree;
- tf = proto_tree_add_text(fh_tree, tvb, offset, length,
- "Options: (%d byte%s)", length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, options_subtree_index);
+ field_tree = proto_tree_add_subtree_format(fh_tree, tvb, offset, length,
+ options_subtree_index, NULL, "Options: (%d byte%s)", length, plurality(length, "", "s"));
dissect_ip_tcp_options(tvb, offset, length, opts, nopts, -1, &PPP_OPT_TYPES,
&ei_ppp_opt_len_invalid, pinfo, field_tree, NULL, NULL);
}
@@ -4087,7 +3994,6 @@ dissect_vsncp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
proto_tree *fh_tree = NULL;
- proto_item *tf;
proto_tree *field_tree;
guint8 code;
guint8 id;
@@ -4122,10 +4028,9 @@ dissect_vsncp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case TERMREQ:
case TERMACK:
if (length > 0) {
- tf = proto_tree_add_text(fh_tree, tvb, offset, length,
- "Options: (%d byte%s)", length,
+ field_tree = proto_tree_add_subtree_format(fh_tree, tvb, offset, length,
+ ett_vsncp_options, NULL, "Options: (%d byte%s)", length,
plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_vsncp_options);
dissect_ip_tcp_options(tvb, offset, length, vsncp_opts, N_VSNCP_OPTS, -1, &PPP_OPT_TYPES,
&ei_ppp_opt_len_invalid, pinfo, field_tree, NULL, NULL);
}
@@ -4202,8 +4107,8 @@ static const value_string bcp_mac_type_vals[] = {
static void
dissect_bcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- proto_item *ti = NULL, *flags_item;
- proto_tree *bcp_tree = NULL, *flags_tree;
+ proto_item *ti, *flags_item;
+ proto_tree *bcp_tree, *flags_tree;
int offset = 0;
guint8 flags;
guint8 mac_type;
@@ -4213,10 +4118,8 @@ dissect_bcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP BCP");
col_clear(pinfo->cinfo, COL_INFO);
- if (tree) {
- ti = proto_tree_add_item(tree, proto_bcp, tvb, 0, -1, ENC_NA);
- bcp_tree = proto_item_add_subtree(ti, ett_bcp);
- }
+ ti = proto_tree_add_item(tree, proto_bcp, tvb, 0, -1, ENC_NA);
+ bcp_tree = proto_item_add_subtree(ti, ett_bcp);
flags = tvb_get_guint8(tvb, offset);
if (flags & BCP_IS_BCONTROL) {
@@ -4348,7 +4251,6 @@ dissect_bap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_item *ti;
proto_tree *fh_tree = NULL;
- proto_item *tf;
proto_tree *field_tree;
guint8 type;
guint8 id;
@@ -4386,9 +4288,8 @@ dissect_bap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
if (length > 0) {
- tf = proto_tree_add_text(fh_tree, tvb, offset, length,
- "Data (%d byte%s)", length, plurality(length, "", "s"));
- field_tree = proto_item_add_subtree(tf, ett_bap_options);
+ field_tree = proto_tree_add_subtree_format(fh_tree, tvb, offset, length,
+ ett_bap_options, NULL, "Data (%d byte%s)", length, plurality(length, "", "s"));
dissect_ip_tcp_options(tvb, offset, length, bap_opts, N_BAP_OPTS, -1, &PPP_OPT_TYPES,
&ei_ppp_opt_len_invalid, pinfo, field_tree, NULL, NULL);
}
@@ -4416,8 +4317,7 @@ dissect_comp_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PPP Comp");
col_set_str(pinfo->cinfo, COL_INFO, "Compressed data");
- if (tree)
- proto_tree_add_item(tree, proto_comp_data, tvb, 0, -1, ENC_NA);
+ proto_tree_add_item(tree, proto_comp_data, tvb, 0, -1, ENC_NA);
}
#endif
@@ -4440,7 +4340,7 @@ dissect_pppmux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
proto_tree *mux_tree, *hdr_tree, *sub_tree, *flag_tree;
proto_tree *info_tree;
- proto_item *ti = NULL, *sub_ti = NULL;
+ proto_item *ti = NULL;
guint8 flags, byte;
guint16 length;
static guint16 pid;
@@ -4486,13 +4386,11 @@ dissect_pppmux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
hdr_length = length_field + pid_field;
- ti = proto_tree_add_text(mux_tree, tvb, offset, length + length_field,
- "PPPMux Sub-frame");
- sub_tree = proto_item_add_subtree(ti, ett_pppmux_subframe);
- sub_ti = proto_tree_add_text(sub_tree, tvb, offset, hdr_length,
- "Header field");
+ sub_tree = proto_tree_add_subtree(mux_tree, tvb, offset, length + length_field,
+ ett_pppmux_subframe, NULL, "PPPMux Sub-frame");
+ hdr_tree = proto_tree_add_subtree(sub_tree, tvb, offset, hdr_length,
+ ett_pppmux_subframe_hdr, NULL, "Header field");
- hdr_tree = proto_item_add_subtree(sub_ti, ett_pppmux_subframe_hdr);
ti = proto_tree_add_text(hdr_tree, tvb, offset, length_field,
"PFF/LXT: 0x%02X", flags);
flag_tree = proto_item_add_subtree(ti, ett_pppmux_subframe_flags);
@@ -4517,9 +4415,8 @@ dissect_pppmux(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
length -= pid_field;
tvb_ensure_bytes_exist (tvb, offset, length);
- sub_ti = proto_tree_add_text(sub_tree, tvb,offset, length,
- "Information Field");
- info_tree = proto_item_add_subtree(sub_ti, ett_pppmux_subframe_info);
+ info_tree = proto_tree_add_subtree(sub_tree, tvb,offset, length,
+ ett_pppmux_subframe_info, NULL, "Information Field");
next_tvb = tvb_new_subset_length(tvb, offset, length);
if (!dissector_try_uint(ppp_subdissector_table, pid, next_tvb, pinfo,
@@ -4641,8 +4538,7 @@ dissect_iphc_crtp_fh(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
/* information field */
- ti = proto_tree_add_text(fh_tree, tvb, 0, length, "Information Field");
- info_tree = proto_item_add_subtree(ti,ett_iphc_crtp_info);
+ info_tree = proto_tree_add_subtree(fh_tree, tvb, 0, length, ett_iphc_crtp_info, NULL, "Information Field");
/* XXX: 1: May trap above; 2: really only need to check for ip_hdr_len+6 ?? */
tvb_ensure_bytes_exist (tvb, 0, hdr_len); /* ip_hdr_len + 8 */
diff --git a/epan/dissectors/packet-ptp.c b/epan/dissectors/packet-ptp.c
index 81f1be08a0..2c0d9d4bb9 100644
--- a/epan/dissectors/packet-ptp.c
+++ b/epan/dissectors/packet-ptp.c
@@ -2329,7 +2329,6 @@ dissect_ptp_v2_timeInterval(tvbuff_t *tvb, guint16 *cur_offset, proto_tree *tree
double time_double;
gint64 time_ns;
guint16 time_subns;
- proto_item *ptptimeInterval_ti;
proto_tree *ptptimeInterval_subtree;
time_ns = tvb_get_ntoh64(tvb, *cur_offset);
@@ -2337,10 +2336,8 @@ dissect_ptp_v2_timeInterval(tvbuff_t *tvb, guint16 *cur_offset, proto_tree *tree
time_ns = time_ns >> 16;
time_subns = tvb_get_ntohs(tvb, *cur_offset+6);
- ptptimeInterval_ti = proto_tree_add_text(tree, tvb, *cur_offset, 8,
- "%s: %f nanoseconds", name, time_double);
-
- ptptimeInterval_subtree = proto_item_add_subtree(ptptimeInterval_ti, ett_ptp_v2_timeInterval);
+ ptptimeInterval_subtree = proto_tree_add_subtree_format(tree, tvb, *cur_offset, 8,
+ ett_ptp_v2_timeInterval, NULL, "%s: %f nanoseconds", name, time_double);
proto_tree_add_uint64_format_value(ptptimeInterval_subtree,
hf_ptp_v2_timeInterval_ns, tvb, *cur_offset, 6, time_ns, "Ns: %" G_GINT64_MODIFIER "d nanoseconds", time_ns);
@@ -2519,7 +2516,6 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint16 tlv_type;
guint16 tlv_length;
guint16 tlv_total_length;
- proto_item *tlv_ti;
proto_tree *ptp_tlv_tree;
/* In 802.1AS there is no origin timestamp in an Announce Message */
@@ -2567,18 +2563,16 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tlv_type = tvb_get_ntohs (tvb, PTP_V2_AN_TLV_OFFSET+tlv_total_length+PTP_V2_AN_TLV_TYPE_OFFSET);
tlv_length = tvb_get_ntohs (tvb, PTP_V2_AN_TLV_OFFSET+tlv_total_length+PTP_V2_AN_TLV_LENGTHFIELD_OFFSET);
- tlv_ti = proto_tree_add_text(
+ ptp_tlv_tree = proto_tree_add_subtree_format(
ptp_tree,
tvb,
PTP_V2_AN_TLV_OFFSET + tlv_total_length,
tlv_length + PTP_V2_AN_TLV_DATA_OFFSET,
- "%s TLV",
+ ett_ptp_v2_tlv, NULL, "%s TLV",
val_to_str_ext(tlv_type,
&ptp_v2_TLV_type_vals_ext,
"Unknown (%u)"));
- ptp_tlv_tree = proto_item_add_subtree(tlv_ti, ett_ptp_v2_tlv);
-
proto_tree_add_item(ptp_tlv_tree,
hf_ptp_v2_an_tlv_tlvtype,
tvb,
@@ -2768,7 +2762,6 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case PTP_V2_FOLLOWUP_MESSAGE:{
guint16 tlv_length;
- proto_item *tlv_ti;
proto_tree *ptp_tlv_tree;
proto_tree_add_item(ptp_tree, hf_ptp_v2_fu_preciseorigintimestamp_seconds, tvb,
@@ -2783,15 +2776,12 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* There are TLV's to be processed */
tlv_length = tvb_get_ntohs (tvb, PTP_AS_FU_TLV_INFORMATION_OFFSET + PTP_AS_FU_TLV_LENGTHFIELD_OFFSET);
- tlv_ti = proto_tree_add_text(
+ ptp_tlv_tree = proto_tree_add_subtree(
ptp_tree,
tvb,
PTP_AS_FU_TLV_INFORMATION_OFFSET,
tlv_length + PTP_AS_FU_TLV_ORGANIZATIONID_OFFSET,
- "%s TLV",
- "Follow Up information");
-
- ptp_tlv_tree = proto_item_add_subtree(tlv_ti, ett_ptp_v2_tlv);
+ ett_ptp_v2_tlv, NULL, "Follow Up information TLV");
proto_tree_add_item(ptp_tlv_tree,
hf_ptp_as_fu_tlv_tlvtype,
@@ -2937,15 +2927,12 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* There are TLV's to be processed */
tlv_length = tvb_get_ntohs (tvb, PTP_AS_SIG_TLV_MESSAGEINTERVALREQUEST_OFFSET + PTP_AS_SIG_TLV_LENGTHFIELD_OFFSET);
- tlv_ti = proto_tree_add_text(
+ ptp_tlv_tree = proto_tree_add_subtree(
ptp_tree,
tvb,
PTP_AS_SIG_TLV_MESSAGEINTERVALREQUEST_OFFSET,
tlv_length + PTP_AS_SIG_TLV_ORGANIZATIONID_OFFSET,
- "%s TLV",
- "Message Interval Request");
-
- ptp_tlv_tree = proto_item_add_subtree(tlv_ti, ett_ptp_v2_tlv);
+ ett_ptp_v2_tlv, NULL, "Message Interval Request TLV");
proto_tree_add_item(ptp_tlv_tree,
hf_ptp_as_sig_tlv_tlvtype,
@@ -3325,7 +3312,6 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
case PTP_V2_MM_ID_FAULT_LOG:
{
guint16 ii, num = 0;
- proto_item *ptpError_ti;
proto_tree *ptpError_subtree;
num = tvb_get_ntohs (tvb, Offset);
@@ -3336,10 +3322,8 @@ dissect_ptp_v2(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
for (ii = 0; ii < num; ii++)
{
- ptpError_ti = proto_tree_add_text(ptp_managementData_tree, tvb, Offset, tvb_get_ntohs (tvb, Offset), "Fault record");
-
- /* (subtree) */
- ptpError_subtree = proto_item_add_subtree(ptpError_ti, ett_ptp_v2_faultRecord);
+ ptpError_subtree = proto_tree_add_subtree(ptp_managementData_tree, tvb, Offset, tvb_get_ntohs (tvb, Offset),
+ ett_ptp_v2_faultRecord, NULL, "Fault record");
proto_tree_add_item(ptpError_subtree, hf_ptp_v2_mm_faultRecordLength, tvb,
Offset, 2, ENC_BIG_ENDIAN);
diff --git a/epan/dissectors/packet-pvfs2.c b/epan/dissectors/packet-pvfs2.c
index 5d97f3ea07..85e05e4b84 100644
--- a/epan/dissectors/packet-pvfs2.c
+++ b/epan/dissectors/packet-pvfs2.c
@@ -1,4 +1,4 @@
-/* packet-pvfs.c
+/* packet-pvfs2.c
* Routines for pvfs2 packet dissection
* By Mike Frisch <mfrisch@platform.com>
* Joint and Several Copyright 2005, Mike Frisch and Platform Computing Inc.
@@ -558,16 +558,14 @@ static int
dissect_pvfs_credentials(tvbuff_t *tvb, proto_tree *parent_tree,
int offset)
{
- proto_item *item;
proto_tree *hcred_tree;
guint32 uid, gid;
uid = tvb_get_letohl(tvb, offset);
gid = tvb_get_letohl(tvb, offset + 4);
- item = proto_tree_add_text(parent_tree, tvb, offset, 8,
- "Credentials (UID: %d, GID: %d)", uid, gid);
- hcred_tree = proto_item_add_subtree(item, ett_pvfs_credentials);
+ hcred_tree = proto_tree_add_subtree_format(parent_tree, tvb, offset, 8,
+ ett_pvfs_credentials, NULL, "Credentials (UID: %d, GID: %d)", uid, gid);
/* UID */
proto_tree_add_item(hcred_tree, hf_pvfs_uid, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -924,15 +922,12 @@ dissect_pvfs_opaque_data(tvbuff_t *tvb, int offset,
string_buffer_print="<EMPTY>";
}
- if (tree) {
- string_item = proto_tree_add_text(tree, tvb,offset+0, -1,
- "%s: %s", proto_registrar_get_name(hfindex),
+ string_item = proto_tree_add_string(tree, hfindex, tvb, offset+0, -1,
string_buffer_print);
- if (string_item)
- string_tree = proto_item_add_subtree(string_item,
+ string_tree = proto_item_add_subtree(string_item,
ett_pvfs_string);
- }
+
if (!fixed_length) {
if (string_tree)
proto_tree_add_text(string_tree, tvb,offset+0,4,
@@ -1056,12 +1051,10 @@ static int
dissect_pvfs_fh(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree *tree, const char *name, guint32 *hash)
{
- proto_item* fitem = NULL;
- proto_tree* ftree = NULL;
+ proto_tree* ftree;
- fitem = proto_tree_add_text(tree, tvb, offset, PVFS2_FH_LENGTH,
- "%s", name);
- ftree = proto_item_add_subtree(fitem, ett_pvfs_fh);
+ ftree = proto_tree_add_subtree(tree, tvb, offset, PVFS2_FH_LENGTH,
+ ett_pvfs_fh, NULL, name);
/* TODO: add fh to file name snooping code here */
@@ -1079,11 +1072,10 @@ static int
dissect_pvfs_handle_extent(tvbuff_t *tvb, proto_tree *tree, int offset,
packet_info *pinfo, guint32 nCount)
{
- proto_item *extent_item;
proto_tree *extent_tree;
- extent_item = proto_tree_add_text(tree, tvb, offset, 8, "Item %d", nCount);
- extent_tree = proto_item_add_subtree(extent_item, ett_pvfs_extent_item);
+ extent_tree = proto_tree_add_subtree_format(tree, tvb, offset, 8,
+ ett_pvfs_extent_item, NULL, "Item %d", nCount);
/* first handle */
offset = dissect_pvfs_fh(tvb, offset, pinfo, extent_tree, "first handle",
@@ -1102,22 +1094,18 @@ dissect_pvfs_handle_extent_array(tvbuff_t *tvb, proto_tree *tree, int offset,
{
guint32 extent_count;
guint32 nCount;
- proto_item *extent_array_item;
proto_tree *extent_array_tree;
/* extent count */
extent_count = tvb_get_letohl(tvb, offset);
- extent_array_item = proto_tree_add_text(tree, tvb, offset, 4,
- "Handle Extent Array (count = %d)", extent_count);
+ extent_array_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+ ett_pvfs_extent_array_tree, NULL, "Handle Extent Array (count = %d)", extent_count);
offset += 4;
if (extent_count > 0)
{
- extent_array_tree = proto_item_add_subtree(extent_array_item,
- ett_pvfs_extent_array_tree);
-
/* Add extent array items */
for (nCount = 0; nCount < extent_count; nCount++)
offset = dissect_pvfs_handle_extent(tvb, extent_array_tree, offset,
@@ -1246,11 +1234,9 @@ dissect_pvfs_object_attr(tvbuff_t *tvb, proto_tree *tree, int offset,
{
gint32 ds_type = 0;
guint32 attrmask = 0;
- proto_item *attr_item;
proto_tree *attr_tree;
- attr_item = proto_tree_add_text(tree, tvb, offset, -1, "Attributes");
- attr_tree = proto_item_add_subtree(attr_item, ett_pvfs_attr_tree);
+ attr_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_pvfs_attr_tree, NULL, "Attributes");
/* UID */
proto_tree_add_item(attr_tree, hf_pvfs_uid, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2228,8 +2214,7 @@ dissect_pvfs2_lookup_path_response(tvbuff_t *tvb, proto_tree *tree,
guint32 nCount = 0;
guint32 handle_count = 0;
guint32 attr_count = 0;
- proto_item *attr_item = NULL;
- proto_tree *attr_tree = NULL;
+ proto_tree *attr_tree;
offset += 4;
@@ -2247,14 +2232,8 @@ dissect_pvfs2_lookup_path_response(tvbuff_t *tvb, proto_tree *tree,
/* array of attributes */
attr_count = tvb_get_letohl(tvb, offset);
- if (tree)
- {
- attr_item = proto_tree_add_text(tree, tvb, offset, 4,
- "Attribute array (total items: %d)", attr_count);
-
- if (attr_item)
- attr_tree = proto_item_add_subtree(attr_item, ett_pvfs_attr);
- }
+ attr_tree = proto_tree_add_subtree_format(tree, tvb, offset, 4,
+ ett_pvfs_attr, NULL, "Attribute array (total items: %d)", attr_count);
offset += 4;
@@ -2340,18 +2319,11 @@ dissect_pvfs2_getconfig_response(tvbuff_t *tvb, proto_tree *parent_tree,
guint32 bytes_processed = 0;
guint32 length_remaining = 0;
const char *ptr = NULL;
- proto_item *item = NULL, *config_item = NULL;
- proto_tree *tree = NULL, *config_tree = NULL;
+ proto_tree *tree, *config_tree = NULL;
/*guint8 truncated = 0;*/
- if (parent_tree)
- {
- item = proto_tree_add_text(parent_tree, tvb, offset, 12,
- "Server Config");
-
- if (item)
- tree = proto_item_add_subtree(item, ett_pvfs_server_config);
- }
+ tree = proto_tree_add_subtree(parent_tree, tvb, offset, 12,
+ ett_pvfs_server_config, NULL, "Server Config");
/* Total number of bytes in server config (incl. entry count) */
total_bytes = tvb_get_letohl(tvb, offset);
@@ -2447,17 +2419,12 @@ dissect_pvfs2_getconfig_response(tvbuff_t *tvb, proto_tree *parent_tree,
if (tmp_entry[1] != '/')
{
/* Opening token, create new tree root */
- config_item = proto_tree_add_text(tree, tvb, offset,
- tmp_entry_length, "%s", tmp_entry);
-
- if (config_item)
- config_tree = proto_item_add_subtree(config_item,
- ett_pvfs_server_config_branch);
+ config_tree = proto_tree_add_subtree(tree, tvb, offset,
+ tmp_entry_length, ett_pvfs_server_config_branch, NULL, tmp_entry);
}
else
{
/* Closing token */
- config_item = NULL;
config_tree = NULL;
}
}
@@ -2576,18 +2543,10 @@ static int
dissect_pvfs_mgmt_perf_stat(tvbuff_t *tvb, proto_tree *tree, int offset,
int nItem)
{
- proto_item *stat_item = NULL;
- proto_tree *stat_tree = NULL;
-
- if (tree)
- {
- stat_item = proto_tree_add_text(tree, tvb, offset, 48,
- "Stat Array - Element %d", nItem);
+ proto_tree *stat_tree;
- if (stat_item)
- stat_tree = proto_item_add_subtree(stat_item,
- ett_pvfs_mgmt_perf_stat);
- }
+ stat_tree = proto_tree_add_subtree_format(tree, tvb, offset, 48,
+ ett_pvfs_mgmt_perf_stat, NULL, "Stat Array - Element %d", nItem);
/* TODO: valid_flag */
proto_tree_add_item(stat_tree, hf_pvfs_mgmt_perf_stat_valid_flag, tvb, offset, 4, ENC_LITTLE_ENDIAN);
@@ -2682,7 +2641,6 @@ dissect_pvfs2_mgmt_dspace_info_list_response(tvbuff_t *tvb, proto_tree *tree,
int offset, packet_info *pinfo)
{
guint32 dspace_info_count, i;
- proto_item *arr_item = NULL;
proto_tree *arr_tree = NULL;
offset += 4;
@@ -2693,13 +2651,9 @@ dissect_pvfs2_mgmt_dspace_info_list_response(tvbuff_t *tvb, proto_tree *tree,
if ((dspace_info_count > 0) && (tree))
{
- arr_item = proto_tree_add_text(tree, tvb, offset,
- dspace_info_count * 40, "dspace_info Array (%d items)",
+ arr_tree = proto_tree_add_subtree_format(tree, tvb, offset,
+ dspace_info_count * 40, ett_pvfs_mgmt_dspace_info, NULL, "dspace_info Array (%d items)",
dspace_info_count);
-
- if (arr_item)
- arr_tree = proto_item_add_subtree(arr_item,
- ett_pvfs_mgmt_dspace_info);
}
for (i = 0; i < dspace_info_count; i++)
@@ -3012,7 +2966,7 @@ dissect_pvfs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
gboolean dissect_other_as_continuation _U_)
{
guint32 mode = 0;
- proto_item *item = NULL, *hitem = NULL;
+ proto_item *item;
proto_tree *pvfs_tree = NULL, *pvfs_htree = NULL;
int offset = 0;
guint64 tag;
@@ -3023,21 +2977,14 @@ dissect_pvfs_common(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree,
col_clear(pinfo->cinfo, COL_INFO);
- if (parent_tree)
- {
- item = proto_tree_add_item(parent_tree, proto_pvfs, tvb, 0, -1, ENC_NA);
-
- if (item)
- pvfs_tree = proto_item_add_subtree(item, ett_pvfs);
- }
+ item = proto_tree_add_item(parent_tree, proto_pvfs, tvb, 0, -1, ENC_NA);
+ pvfs_tree = proto_item_add_subtree(item, ett_pvfs);
proto_tree_add_text(pvfs_tree, tvb, 0, -1, "Version: 2");
/* PVFS packet header is 24 bytes */
- hitem = proto_tree_add_text(pvfs_tree, tvb, 0, BMI_HEADER_SIZE,
- "BMI Header");
- if (hitem)
- pvfs_htree = proto_item_add_subtree(hitem, ett_pvfs_hdr);
+ pvfs_htree = proto_tree_add_subtree(pvfs_tree, tvb, 0, BMI_HEADER_SIZE,
+ ett_pvfs_hdr, NULL, "BMI Header");
/* Magic number */
proto_tree_add_item(pvfs_htree, hf_pvfs_magic_nr, tvb, offset, 4, ENC_LITTLE_ENDIAN);