aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-scsi.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2014-07-08 14:47:17 -0400
committerMichael Mann <mmann78@netscape.net>2014-07-09 00:25:04 +0000
commit6691293a655645dcd98c9cb55618b8e41bef41a4 (patch)
tree495dccc6e708c0f22c129ccbe4dd495a1716f585 /epan/dissectors/packet-scsi.c
parentcfee2019c63f33cff3564c2266c9586c86b61baa (diff)
convert to proto_tree_add_subtree[_format]
Change-Id: I8d66b1bc7dbdfee3d4bf6fd3b3c21c6323b66f44 Reviewed-on: https://code.wireshark.org/review/2946 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-scsi.c')
-rw-r--r--epan/dissectors/packet-scsi.c77
1 files changed, 29 insertions, 48 deletions
diff --git a/epan/dissectors/packet-scsi.c b/epan/dissectors/packet-scsi.c
index 1b1cc514b9..f2d5458432 100644
--- a/epan/dissectors/packet-scsi.c
+++ b/epan/dissectors/packet-scsi.c
@@ -2676,10 +2676,10 @@ dissect_scsi_evpd(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
if (tree) {
pcode = tvb_get_guint8(tvb, offset+1);
plen = tvb_get_guint8(tvb, offset+3);
- ti = proto_tree_add_text(tree, tvb, offset, plen+4, "Page Code: %s",
+ evpd_tree = proto_tree_add_subtree_format(tree, tvb, offset, plen+4,
+ ett_scsi_page, NULL, "Page Code: %s",
val_to_str(pcode, scsi_evpd_pagecode_val,
"Unknown (0x%08x)"));
- evpd_tree = proto_item_add_subtree(ti, ett_scsi_page);
proto_tree_add_item(evpd_tree, hf_scsi_inq_qualifier, tvb, offset,
1, ENC_BIG_ENDIAN);
@@ -2848,13 +2848,11 @@ dissect_scsi_cmddt(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
guint offset, guint tot_len _U_)
{
proto_tree *cmdt_tree;
- proto_item *ti;
guint plen;
if (tree) {
plen = tvb_get_guint8(tvb, offset+5);
- ti = proto_tree_add_text(tree, tvb, offset, plen, "Command Data");
- cmdt_tree = proto_item_add_subtree(ti, ett_scsi_page);
+ cmdt_tree = proto_tree_add_subtree_format(tree, tvb, offset, plen, ett_scsi_page, NULL, "Command Data");
proto_tree_add_item(cmdt_tree, hf_scsi_inq_qualifier, tvb, offset,
1, ENC_BIG_ENDIAN);
@@ -3317,7 +3315,6 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_,
guint16 cscd_desc_list_len, seg_desc_len;
guint32 /*param_list_len,*/ seg_desc_list_len, inline_data_len, i;
proto_tree *cscds_tree = NULL, *dev_tree = NULL, *cscd_tree = NULL, *segs_tree = NULL, *seg_tree = NULL, *seg_param_tree = NULL;
- proto_item *ti;
if (isreq && iscdb) {
proto_tree_add_item(tree, hf_scsi_spc_xcopy_service, tvb, offset, 1, ENC_NA);
@@ -3363,18 +3360,17 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_,
inline_data_len = tvb_get_ntohl(tvb, offset);
offset += 4;
if (cscd_desc_list_len > 0) {
- ti = proto_tree_add_text(tree, tvb, offset, cscd_desc_list_len, "CSCD (Copy Source and Copy Destination) descriptors (%u bytes)", cscd_desc_list_len);
- cscds_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_cscds);
+ cscds_tree = proto_tree_add_subtree_format(tree, tvb, offset, cscd_desc_list_len, ett_scsi_xcopy_cscds, NULL,
+ "CSCD (Copy Source and Copy Destination) descriptors (%u bytes)", cscd_desc_list_len);
i = 1;
while(cscd_desc_list_len > 0) {
cscd_desc_type = tvb_get_guint8(tvb, offset);
if (cscd_desc_type == 0xEA || cscd_desc_type == 0xEB) { /* both types occupy 64 bytes overall, everything else is 32 bytes */
- ti = proto_tree_add_text(cscds_tree, tvb, offset, 64, "CSCD descriptor #%u", i);
+ cscd_tree = proto_tree_add_subtree_format(cscds_tree, tvb, offset, 64, ett_scsi_xcopy_cscd, NULL, "CSCD descriptor #%u", i);
} else {
- ti = proto_tree_add_text(cscds_tree, tvb, offset, 32, "CSCD descriptor #%u", i);
+ cscd_tree = proto_tree_add_subtree_format(cscds_tree, tvb, offset, 32, ett_scsi_xcopy_cscd, NULL, "CSCD descriptor #%u", i);
}
i++;
- cscd_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_cscd);
proto_tree_add_item(cscd_tree, hf_scsi_spc_xcopy_cscd_desc_type_code, tvb, offset, 1, ENC_NA);
offset += 1;
proto_tree_add_bitmask(cscd_tree, tvb, offset, hf_scsi_spc_xcopy_per_dev_type_byte, ett_xcopy_per_dev_type, per_dev_type_bitmask_fields, ENC_NA);
@@ -3400,8 +3396,7 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_,
proto_tree_add_text(cscd_tree, tvb, offset, des_len, "WWN: %s", tvb_fcwwn_to_str(tvb, offset));
}
offset += 20;
- ti = proto_tree_add_text(cscd_tree, tvb, offset, 4, "Device type specific parameters");
- dev_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_dev_params);
+ dev_tree = proto_tree_add_subtree(cscd_tree, tvb, offset, 4, ett_scsi_xcopy_dev_params, NULL, "Device type specific parameters");
if (dev_type == BLOCK_DEV_0 || dev_type == BLOCK_DEV_4 || dev_type == BLOCK_DEV_5 || dev_type == BLOCK_DEV_7 || dev_type == BLOCK_DEV_E) {
proto_tree_add_text(dev_tree, tvb, offset, 1, "Reserved|PAD|Reserved");
offset += 1; /*TODO: dissect this byte */
@@ -3418,14 +3413,14 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_,
}
}
if (seg_desc_list_len > 0) {
- ti = proto_tree_add_text(tree, tvb, offset, seg_desc_list_len, "Segment descriptor list (%u bytes)", seg_desc_list_len);
- segs_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_segs);
+ segs_tree = proto_tree_add_subtree_format(tree, tvb, offset, seg_desc_list_len,
+ ett_scsi_xcopy_segs, NULL, "Segment descriptor list (%u bytes)", seg_desc_list_len);
i = 1;
while(seg_desc_list_len > 0) {
seg_desc_len = tvb_get_ntohs(tvb, offset + 2);
- ti = proto_tree_add_text(segs_tree, tvb, offset, seg_desc_len + 4, "Segment descriptor #%u", i);
+ seg_tree = proto_tree_add_subtree_format(segs_tree, tvb, offset, seg_desc_len + 4,
+ ett_scsi_xcopy_seg, NULL, "Segment descriptor #%u", i);
i++;
- seg_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_seg);
proto_tree_add_item(seg_tree, hf_scsi_spc_xcopy_seg_desc_type, tvb, offset, 1, ENC_NA);
seg_type = tvb_get_guint8(tvb, offset);
offset += 1;
@@ -3438,8 +3433,8 @@ dissect_spc_extcopy(tvbuff_t *tvb, packet_info *pinfo _U_,
offset += 2;
proto_tree_add_item(seg_tree, hf_scsi_spc_xcopy_seg_des_dest_desc_id, tvb, offset, 2, ENC_NA);
offset += 2;
- ti = proto_tree_add_text(seg_tree, tvb, offset, seg_desc_len - 4, "Segment descriptor parameters");
- seg_param_tree = proto_item_add_subtree(ti, ett_scsi_xcopy_seg_param);
+ seg_param_tree = proto_tree_add_subtree(seg_tree, tvb, offset, seg_desc_len - 4,
+ ett_scsi_xcopy_seg_param, NULL, "Segment descriptor parameters");
seg_desc_list_len -= (seg_desc_len + 4);
if (seg_type == BLOCK_TO_BLOCK) {
proto_tree_add_item(seg_param_tree, hf_scsi_reserved_16, tvb, offset, 2, ENC_NA);
@@ -3575,18 +3570,15 @@ dissect_scsi_log_page(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree,
};
guint16 pagelen, pagecode;
guint8 paramlen;
- proto_tree *log_tree = NULL;
- proto_item *ti = NULL;
+ proto_tree *log_tree;
+ proto_item *ti;
guint old_offset = offset;
const log_pages_t *log_page;
pagecode = tvb_get_guint8(tvb, offset) & 0x3f;
- if (tree) {
- ti = proto_tree_add_text(tree, tvb, offset, -1,
- "Log Page: %s", val_to_str(pagecode, scsi_log_page_val, "Unknown (0x%04x)"));
- log_tree = proto_item_add_subtree(ti, ett_scsi_log);
- }
+ log_tree = proto_tree_add_subtree_format(tree, tvb, offset, -1, ett_scsi_log, &ti,
+ "Log Page: %s", val_to_str(pagecode, scsi_log_page_val, "Unknown (0x%04x)"));
/* page code */
proto_tree_add_bitmask(log_tree, tvb, offset, hf_scsi_log_pc_flags, ett_scsi_log_pc, pcflags_fields, ENC_BIG_ENDIAN);
@@ -4287,7 +4279,6 @@ dissect_scsi_modepage(tvbuff_t *tvb, packet_info *pinfo,
guint16 plen;
guint8 pcode, spf, subpcode = 0;
proto_tree *tree;
- proto_item *ti;
const value_string *modepage_val;
int hf_pagecode;
gboolean (*dissect_modepage)(tvbuff_t *, packet_info *, proto_tree *,
@@ -4351,11 +4342,10 @@ dissect_scsi_modepage(tvbuff_t *tvb, packet_info *pinfo,
dissect_modepage = dissect_scsi_spc_modepage;
}
- ti = proto_tree_add_text(scsi_tree, tvb, offset, plen + (spf ? 4 : 2),
- "%s Mode Page",
+ tree = proto_tree_add_subtree_format(scsi_tree, tvb, offset, plen + (spf ? 4 : 2),
+ ett_scsi_page, NULL, "%s Mode Page",
val_to_str(pcode & SCSI_MS_PCODE_BITS,
modepage_val, "Unknown (0x%08x)"));
- tree = proto_item_add_subtree(ti, ett_scsi_page);
proto_tree_add_item(tree, hf_scsi_modepage_ps, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_scsi_modepage_spf, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(tree, hf_pagecode, tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -4979,8 +4969,8 @@ dissect_spc_reportdeviceidentifier(tvbuff_t *tvb _U_, packet_info *pinfo _U_,
void
dissect_scsi_lun(proto_tree *tree, tvbuff_t *tvb, guint offset) {
- proto_item *ti = proto_tree_add_text(tree, tvb, offset, 8, "LUN: ");
- proto_tree *tt = proto_item_add_subtree(ti, ett_scsi_lun);
+ proto_item *ti;
+ proto_tree *tt = proto_tree_add_subtree(tree, tvb, offset, 8, ett_scsi_lun, &ti, "LUN: ");
guint8 address_mode;
guint16 lun = 0;
@@ -5142,11 +5132,8 @@ dissect_spc_mgmt_protocol_in(tvbuff_t *tvb_a, packet_info *pinfo _U_,
if (ctdp) {
proto_tree *tr;
- it = proto_tree_add_text(tree, try_tvb, try_offset,
- 12, "Timeout Descriptor");
-
- tr = proto_item_add_subtree(it,
- ett_timeout_descriptor);
+ tr = proto_tree_add_subtree(tree, try_tvb, try_offset,
+ 12, ett_timeout_descriptor, NULL, "Timeout Descriptor");
proto_tree_add_item(tr, hf_scsi_report_opcodes_tdl,
try_tvb, try_offset, 2, ENC_BIG_ENDIAN);
@@ -5167,11 +5154,9 @@ dissect_spc_mgmt_protocol_in(tvbuff_t *tvb_a, packet_info *pinfo _U_,
while (length >= 20) {
proto_tree *tr;
- it = proto_tree_add_text(tree, try_tvb, try_offset,
- 20, "Command Descriptor: %s",
+ tr = proto_tree_add_subtree_format(tree, try_tvb, try_offset,
+ 20, ett_command_descriptor, NULL, "Command Descriptor: %s",
val_to_str_ext_const(tvb_get_guint8(try_tvb, try_offset+0), csdata->cdb_vals_ext, "Unknown"));
- tr = proto_item_add_subtree(it,
- ett_command_descriptor);
proto_tree_add_item(tr, csdata->hf_opcode,
try_tvb, try_offset+0, 1, ENC_BIG_ENDIAN);
@@ -5196,11 +5181,8 @@ dissect_spc_mgmt_protocol_in(tvbuff_t *tvb_a, packet_info *pinfo _U_,
continue;
}
- it = proto_tree_add_text(tree, try_tvb, try_offset,
- 12, "Timeout Descriptor");
-
- tr = proto_item_add_subtree(it,
- ett_timeout_descriptor);
+ tr = proto_tree_add_subtree(tree, try_tvb, try_offset,
+ 12, ett_timeout_descriptor, NULL, "Timeout Descriptor");
proto_tree_add_item(tr, hf_scsi_report_opcodes_tdl,
try_tvb, try_offset, 2, ENC_BIG_ENDIAN);
@@ -5285,9 +5267,8 @@ dissect_scsi_descriptor_snsinfo(tvbuff_t *tvb, proto_tree *sns_tree, guint offse
desc_type = tvb_get_guint8(tvb, offset);
desc_length = tvb_get_guint8(tvb, offset+1);
desc_end = offset+desc_length+2;
- item = proto_tree_add_text(sns_tree, tvb, offset, desc_length+2, "%s",
+ desc_tree = proto_tree_add_subtree(sns_tree, tvb, offset, desc_length+2, ett_sense_descriptor, NULL,
val_to_str(desc_type, scsi_sense_desc_type_val, "Unknown (0x%02x)"));
- desc_tree = proto_item_add_subtree(item, ett_sense_descriptor);
proto_tree_add_item(desc_tree, hf_scsi_sns_desc_type, tvb, offset, 1, ENC_BIG_ENDIAN);
proto_tree_add_item(desc_tree, hf_scsi_sns_desc_length, tvb, offset+1, 1, ENC_BIG_ENDIAN);
switch (desc_type) {