diff options
author | Michael Mann <mmann78@netscape.net> | 2014-07-05 15:25:32 -0400 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2014-07-05 20:36:36 +0000 |
commit | fc63343a4ebebeb594a162c57bd1b17315a6e4d5 (patch) | |
tree | b0f0c8b8e395a99f9fbbf95edad18b1370786e91 | |
parent | 3f7725174d2c4122b1d159958a56b8d8b928301b (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>
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); |