2006-10-25 00:49:36 +00:00
/* TODO make the contracts require that all functions be called with valid
2006-06-17 05:42:55 +00:00
* pointers for itl and itlq and remove all tests for itl / itlq being NULL
*/
2006-04-03 00:55:21 +00:00
/* TODO audit value parameter for proto_tree_add_boolean() calls */
2002-01-10 01:28:45 +00:00
/* packet-scsi.c
2006-10-25 00:49:36 +00:00
* Routines for decoding SCSI CDBs and responsess
2002-01-10 01:28:45 +00:00
* Author : Dinesh G Dutt ( ddutt @ cisco . com )
*
2006-05-21 04:49:01 +00:00
* Wireshark - Network traffic analyzer
* By Gerald Combs < gerald @ wireshark . org >
2002-01-10 01:28:45 +00:00
* Copyright 2002 Gerald Combs
2002-08-28 21:04:11 +00:00
*
2002-01-10 01:28:45 +00:00
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
2002-08-28 21:04:11 +00:00
*
2002-01-10 01:28:45 +00:00
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
2002-08-28 21:04:11 +00:00
*
2002-01-10 01:28:45 +00:00
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
2012-06-28 22:56:06 +00:00
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA .
2002-01-10 01:28:45 +00:00
*/
/*
* Some Notes on using the SCSI Decoder :
*
2011-07-18 15:52:16 +00:00
* The SCSI decoder has been built right now so that it is invoked directly by the
2002-01-10 01:28:45 +00:00
* SCSI transport layers as compared to the standard mechanism of being invoked
* via a dissector chain . There are multiple reasons for this :
2002-02-13 01:17:58 +00:00
* - The SCSI CDB is typically embedded inside the transport along with other
2002-01-10 01:28:45 +00:00
* header fields that have nothing to do with SCSI . So , it is required to be
2011-07-18 15:52:16 +00:00
* done this way .
2006-05-21 04:49:01 +00:00
* - Originally , Wireshark couldn ' t do filtering on protocol trees that were not
2002-01-10 01:28:45 +00:00
* on the top level .
*
* There are four main routines that are provided :
* o dissect_scsi_cdb - invoked on receiving a SCSI Command
2012-05-07 22:11:34 +00:00
* void dissect_scsi_cdb ( tvbuff_t * , packet_info * , proto_tree * ,
* guint , itlq_nexus_t * , itl_nexus_t * ) ;
2002-01-10 01:28:45 +00:00
* o dissect_scsi_payload - invoked to decode SCSI responses
2012-05-07 22:11:34 +00:00
* void dissect_scsi_payload ( tvbuff_t * , packet_info * , proto_tree * , guint ,
* gboolean , itlq_nexusu_t * , itl_nexus_t * ,
* guint32 relative_offset ) ;
2002-01-10 01:28:45 +00:00
* The final parameter is the length of the response field that is negotiated
* as part of the SCSI transport layer . If this is not tracked by the
* transport , it can be set to 0.
2006-04-07 10:15:15 +00:00
* o dissect_scsi_rsp - invoked to dissect the scsi status code in a response
2002-01-10 01:28:45 +00:00
* SCSI task .
2012-05-07 22:11:34 +00:00
* void dissect_scsi_rsp ( tvbuff_t * , packet_info * , proto_tree * ,
* itlq_nexus_t * , itl_nexus_t * , guint8 ) ;
2002-01-10 01:28:45 +00:00
* o dissect_scsi_snsinfo - invoked to decode the sense data provided in case of
* an error .
2012-05-07 22:11:34 +00:00
* void dissect_scsi_snsinfo ( tvbuff_t * , packet_info * , proto_tree * , guint ,
* guint , itlq_nexus_t * , itl_nexus_t * ) ;
2002-01-10 01:28:45 +00:00
*
* In addition to this , the other requirement made from the transport is to
2006-04-24 08:16:18 +00:00
* provide ITL and ITLQ structures that are persistent .
2006-10-25 00:49:36 +00:00
*
2006-04-24 08:16:18 +00:00
* The ITL structure uniquely identifies a Initiator / Target / Lun combination
2006-10-25 00:49:36 +00:00
* and is among other things used to keep track of the device type for a
2006-04-24 08:16:18 +00:00
* specific LUN .
*
2006-10-25 00:49:36 +00:00
* The ITLQ structure uniquely identifies a specific scsi task and is used to
2006-04-24 08:16:18 +00:00
* keep track of OPCODEs between CDB / DATA / Responses and resp [ onse times .
2002-01-10 01:28:45 +00:00
*
* This decoder attempts to track the type of SCSI device based on the response
* to the Inquiry command . If the trace does not contain an Inquiry command ,
* the decoding of the commands is done as per a user preference . Currently ,
* only SBC ( disks ) and SSC ( tapes ) are the alternatives offered . The basic
* SCSI command set ( SPC - 2 / 3 ) is decoded for all SCSI devices . If there is a
* mixture of devices in the trace , some with Inquiry response and some
* without , the user preference is used only for those devices whose type the
2002-08-28 21:04:11 +00:00
* decoder has not been able to determine .
2002-01-10 01:28:45 +00:00
*
*/
2012-09-20 02:03:38 +00:00
# include "config.h"
2002-01-10 01:28:45 +00:00
# include <glib.h>
2003-09-03 20:58:09 +00:00
# include <epan/packet.h>
2012-05-07 22:11:34 +00:00
# include <epan/strutil.h>
2013-12-23 13:45:07 +00:00
# include <epan/to_str.h>
2004-09-27 22:55:15 +00:00
# include <epan/prefs.h>
2013-09-14 14:33:04 +00:00
# include <epan/wmem/wmem.h>
2006-04-21 11:08:24 +00:00
# include <epan/conversation.h>
2006-04-24 08:16:18 +00:00
# include <epan/tap.h>
2006-10-13 22:25:35 +00:00
# include <epan/reassemble.h>
2013-08-08 17:25:03 +00:00
# include <epan/expert.h>
2002-01-10 01:28:45 +00:00
# include "packet-scsi.h"
2006-10-11 10:38:59 +00:00
# include "packet-fc.h"
2006-09-29 10:40:51 +00:00
# include "packet-scsi-osd.h"
2006-10-30 12:18:29 +00:00
# include "packet-scsi-mmc.h"
2006-11-27 11:00:06 +00:00
# include "packet-scsi-sbc.h"
2006-11-22 10:12:59 +00:00
# include "packet-scsi-ssc.h"
2006-11-23 09:21:16 +00:00
# include "packet-scsi-smc.h"
2002-01-10 01:28:45 +00:00
2013-12-11 20:04:37 +00:00
void proto_register_scsi ( void ) ;
void proto_reg_handoff_scsi ( void ) ;
2010-12-10 15:49:33 +00:00
static int proto_scsi = - 1 ;
static int hf_scsi_inq_control_vendor_specific = - 1 ;
static int hf_scsi_inq_control_reserved = - 1 ;
static int hf_scsi_inq_control_naca = - 1 ;
static int hf_scsi_inq_control_obs1 = - 1 ;
static int hf_scsi_inq_control_obs2 = - 1 ;
static int hf_scsi_inq_control = - 1 ;
static int hf_scsi_control_vendor_specific = - 1 ;
static int hf_scsi_control_reserved = - 1 ;
static int hf_scsi_control_naca = - 1 ;
static int hf_scsi_control_obs1 = - 1 ;
static int hf_scsi_control_obs2 = - 1 ;
2012-05-07 22:11:34 +00:00
int hf_scsi_control = - 1 ;
int hf_scsi_alloclen16 = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_alloclen32 = - 1 ;
static int hf_scsi_time = - 1 ;
static int hf_scsi_request_frame = - 1 ;
static int hf_scsi_response_frame = - 1 ;
static int hf_scsi_status = - 1 ;
static int hf_scsi_spcopcode = - 1 ;
static int hf_scsi_inquiry_flags = - 1 ;
static int hf_scsi_inquiry_evpd_page = - 1 ;
static int hf_scsi_inquiry_cmdt_page = - 1 ;
static int hf_scsi_alloclen = - 1 ;
static int hf_scsi_paramlen = - 1 ;
static int hf_scsi_paramlen16 = - 1 ;
static int hf_scsi_modesel_flags = - 1 ;
static int hf_scsi_modesns_pc = - 1 ;
2013-01-29 13:53:16 +00:00
static int hf_scsi_modepage_ps = - 1 ;
static int hf_scsi_modepage_spf = - 1 ;
static int hf_scsi_modepage_plen = - 1 ;
static int hf_scsi_modepage_tcmos = - 1 ;
static int hf_scsi_modepage_scsip = - 1 ;
static int hf_scsi_modepage_ialuae = - 1 ;
static int hf_scsi_modepage_icp = - 1 ;
static int hf_scsi_modepage_msdl = - 1 ;
2012-07-24 02:00:50 +00:00
static int hf_scsi_spc_pagecode = - 1 ;
static int hf_scsi_spc_subpagecode = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_sbcpagecode = - 1 ;
static int hf_scsi_sscpagecode = - 1 ;
static int hf_scsi_smcpagecode = - 1 ;
static int hf_scsi_mmcpagecode = - 1 ;
static int hf_scsi_modesns_flags = - 1 ;
static int hf_scsi_persresvin_svcaction = - 1 ;
static int hf_scsi_persresvout_svcaction = - 1 ;
static int hf_scsi_persresv_scope = - 1 ;
static int hf_scsi_persresv_type = - 1 ;
static int hf_scsi_persresvout_reskey = - 1 ;
static int hf_scsi_persresvout_sareskey = - 1 ;
static int hf_scsi_persresvout_obsolete = - 1 ;
static int hf_scsi_persresvout_control = - 1 ;
2013-08-05 15:55:10 +00:00
static int hf_scsi_persresvout_rel_tpi = - 1 ;
static int hf_scsi_persresvout_transportid_len = - 1 ;
static int hf_scsi_persresvout_transportid = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_persresv_control_rsvd = - 1 ;
static int hf_scsi_persresv_control_rsvd1 = - 1 ;
static int hf_scsi_persresv_control_rsvd2 = - 1 ;
static int hf_scsi_persresv_control_spec_i_pt = - 1 ;
static int hf_scsi_persresv_control_all_tg_pt = - 1 ;
static int hf_scsi_persresv_control_aptpl = - 1 ;
static int hf_scsi_persresv_control_unreg = - 1 ;
static int hf_scsi_release_flags = - 1 ;
static int hf_scsi_release_thirdpartyid = - 1 ;
static int hf_scsi_select_report = - 1 ;
static int hf_scsi_inq_add_len = - 1 ;
static int hf_scsi_inq_peripheral = - 1 ;
static int hf_scsi_inq_qualifier = - 1 ;
static int hf_scsi_inq_vendor_id = - 1 ;
static int hf_scsi_inq_product_id = - 1 ;
static int hf_scsi_inq_product_rev = - 1 ;
static int hf_scsi_inq_vendor_specific = - 1 ;
static int hf_scsi_inq_version_desc = - 1 ;
static int hf_scsi_inq_devtype = - 1 ;
static int hf_scsi_inq_rmb = - 1 ;
static int hf_scsi_inq_version = - 1 ;
2012-07-27 05:09:13 +00:00
static int hf_scsi_lun_address_mode = - 1 ;
static int hf_scsi_lun = - 1 ;
static int hf_scsi_bus = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_modesns_errrep = - 1 ;
static int hf_scsi_modesns_tst = - 1 ;
static int hf_scsi_modesns_qmod = - 1 ;
static int hf_scsi_modesns_qerr = - 1 ;
static int hf_scsi_modesns_rac = - 1 ;
static int hf_scsi_modesns_tas = - 1 ;
static int hf_scsi_protocol = - 1 ;
static int hf_scsi_sns_errtype = - 1 ;
static int hf_scsi_snskey = - 1 ;
static int hf_scsi_snsinfo = - 1 ;
static int hf_scsi_addlsnslen = - 1 ;
static int hf_scsi_asc = - 1 ;
static int hf_scsi_ascascq = - 1 ;
static int hf_scsi_ascq = - 1 ;
static int hf_scsi_fru = - 1 ;
static int hf_scsi_sksv = - 1 ;
2013-06-09 16:51:42 +00:00
static int hf_scsi_sks_info = - 1 ;
2013-06-12 05:15:45 +00:00
static int hf_scsi_sks_fp_cd = - 1 ;
static int hf_scsi_sks_fp_bpv = - 1 ;
static int hf_scsi_sks_fp_bit = - 1 ;
static int hf_scsi_sks_fp_field = - 1 ;
2013-06-11 21:22:58 +00:00
static int hf_scsi_sns_desc_type = - 1 ;
static int hf_scsi_sns_desc_length = - 1 ;
2013-06-12 14:20:36 +00:00
static int hf_scsi_sns_osd_object_not_initiated = - 1 ;
static int hf_scsi_sns_osd_object_completed = - 1 ;
static int hf_scsi_sns_osd_object_validation = - 1 ;
static int hf_scsi_sns_osd_object_cmd_cap_v = - 1 ;
static int hf_scsi_sns_osd_object_command = - 1 ;
static int hf_scsi_sns_osd_object_imp_st_att = - 1 ;
static int hf_scsi_sns_osd_object_sa_cap_v = - 1 ;
static int hf_scsi_sns_osd_object_set_att = - 1 ;
static int hf_scsi_sns_osd_object_ga_cap_v = - 1 ;
static int hf_scsi_sns_osd_object_get_att = - 1 ;
static int hf_scsi_sns_osd_partition_id = - 1 ;
static int hf_scsi_sns_osd_object_id = - 1 ;
2013-08-07 04:28:35 +00:00
static int hf_scsi_sns_osd_attr_page = - 1 ;
static int hf_scsi_sns_osd_attr_number = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_inq_reladrflags = - 1 ;
static int hf_scsi_inq_reladr = - 1 ;
static int hf_scsi_inq_linked = - 1 ;
2012-09-13 01:28:57 +00:00
static int hf_scsi_inq_trandis = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_inq_cmdque = - 1 ;
static int hf_scsi_inq_bqueflags = - 1 ;
static int hf_scsi_inq_bque = - 1 ;
static int hf_scsi_inq_encserv = - 1 ;
static int hf_scsi_inq_multip = - 1 ;
static int hf_scsi_inq_mchngr = - 1 ;
2012-09-13 01:28:57 +00:00
static int hf_scsi_inq_ackreqq = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_inq_sccsflags = - 1 ;
static int hf_scsi_inq_sccs = - 1 ;
static int hf_scsi_inq_acc = - 1 ;
static int hf_scsi_inq_tpc = - 1 ;
static int hf_scsi_inq_protect = - 1 ;
static int hf_scsi_inq_tpgs = - 1 ;
static int hf_scsi_inq_acaflags = - 1 ;
static int hf_scsi_inq_rmbflags = - 1 ;
static int hf_scsi_inq_normaca = - 1 ;
static int hf_scsi_inq_hisup = - 1 ;
static int hf_scsi_inq_aerc = - 1 ;
static int hf_scsi_inq_trmtsk = - 1 ;
static int hf_scsi_inq_rdf = - 1 ;
static int hf_scsi_persresv_key = - 1 ;
static int hf_scsi_persresv_scopeaddr = - 1 ;
static int hf_scsi_add_cdblen = - 1 ;
static int hf_scsi_svcaction = - 1 ;
static int hf_scsi_wb_mode = - 1 ;
static int hf_scsi_wb_bufferid = - 1 ;
static int hf_scsi_wb_bufoffset = - 1 ;
static int hf_scsi_paramlen24 = - 1 ;
static int hf_scsi_senddiag_st_code = - 1 ;
static int hf_scsi_senddiag_pf = - 1 ;
static int hf_scsi_senddiag_st = - 1 ;
static int hf_scsi_senddiag_devoff = - 1 ;
static int hf_scsi_senddiag_unitoff = - 1 ;
static int hf_scsi_fragments = - 1 ;
static int hf_scsi_fragment = - 1 ;
static int hf_scsi_fragment_overlap = - 1 ;
static int hf_scsi_fragment_overlap_conflict = - 1 ;
static int hf_scsi_fragment_multiple_tails = - 1 ;
static int hf_scsi_fragment_too_long_fragment = - 1 ;
static int hf_scsi_fragment_error = - 1 ;
2011-01-30 21:01:07 +00:00
static int hf_scsi_fragment_count = - 1 ;
2010-12-10 15:49:33 +00:00
static int hf_scsi_reassembled_in = - 1 ;
static int hf_scsi_reassembled_length = - 1 ;
static int hf_scsi_log_ppc_flags = - 1 ;
static int hf_scsi_log_pc_flags = - 1 ;
static int hf_scsi_log_parameter_ptr = - 1 ;
static int hf_scsi_log_ppc = - 1 ;
static int hf_scsi_log_pcr = - 1 ;
static int hf_scsi_log_sp = - 1 ;
static int hf_scsi_log_pagecode = - 1 ;
static int hf_scsi_log_pc = - 1 ;
static int hf_scsi_log_page_length = - 1 ;
static int hf_scsi_log_parameter_code = - 1 ;
static int hf_scsi_log_param_len = - 1 ;
static int hf_scsi_log_param_flags = - 1 ;
static int hf_scsi_log_param_data = - 1 ;
static int hf_scsi_log_pf_du = - 1 ;
static int hf_scsi_log_pf_ds = - 1 ;
static int hf_scsi_log_pf_tsd = - 1 ;
static int hf_scsi_log_pf_etc = - 1 ;
static int hf_scsi_log_pf_tmc = - 1 ;
static int hf_scsi_log_pf_lbin = - 1 ;
static int hf_scsi_log_pf_lp = - 1 ;
static int hf_scsi_log_ta_rw = - 1 ;
static int hf_scsi_log_ta_ww = - 1 ;
static int hf_scsi_log_ta_he = - 1 ;
static int hf_scsi_log_ta_media = - 1 ;
static int hf_scsi_log_ta_rf = - 1 ;
static int hf_scsi_log_ta_wf = - 1 ;
static int hf_scsi_log_ta_ml = - 1 ;
static int hf_scsi_log_ta_ndg = - 1 ;
static int hf_scsi_log_ta_wp = - 1 ;
static int hf_scsi_log_ta_nr = - 1 ;
static int hf_scsi_log_ta_cm = - 1 ;
static int hf_scsi_log_ta_uf = - 1 ;
static int hf_scsi_log_ta_rmcf = - 1 ;
static int hf_scsi_log_ta_umcf = - 1 ;
static int hf_scsi_log_ta_mcicf = - 1 ;
static int hf_scsi_log_ta_fe = - 1 ;
static int hf_scsi_log_ta_rof = - 1 ;
static int hf_scsi_log_ta_tdcol = - 1 ;
static int hf_scsi_log_ta_nml = - 1 ;
static int hf_scsi_log_ta_cn = - 1 ;
static int hf_scsi_log_ta_cp = - 1 ;
static int hf_scsi_log_ta_ecm = - 1 ;
static int hf_scsi_log_ta_ict = - 1 ;
static int hf_scsi_log_ta_rr = - 1 ;
static int hf_scsi_log_ta_dpie = - 1 ;
static int hf_scsi_log_ta_cff = - 1 ;
static int hf_scsi_log_ta_psf = - 1 ;
static int hf_scsi_log_ta_pc = - 1 ;
static int hf_scsi_log_ta_dm = - 1 ;
static int hf_scsi_log_ta_hwa = - 1 ;
static int hf_scsi_log_ta_hwb = - 1 ;
static int hf_scsi_log_ta_if = - 1 ;
static int hf_scsi_log_ta_em = - 1 ;
static int hf_scsi_log_ta_dwf = - 1 ;
static int hf_scsi_log_ta_drhu = - 1 ;
static int hf_scsi_log_ta_drtm = - 1 ;
static int hf_scsi_log_ta_drvo = - 1 ;
static int hf_scsi_log_ta_pefa = - 1 ;
static int hf_scsi_log_ta_dire = - 1 ;
static int hf_scsi_log_ta_lost = - 1 ;
static int hf_scsi_log_ta_tduau = - 1 ;
static int hf_scsi_log_ta_tsawf = - 1 ;
static int hf_scsi_log_ta_tsarf = - 1 ;
static int hf_scsi_log_ta_nsod = - 1 ;
static int hf_scsi_log_ta_lofa = - 1 ;
static int hf_scsi_log_ta_uuf = - 1 ;
static int hf_scsi_log_ta_aif = - 1 ;
static int hf_scsi_log_ta_fwf = - 1 ;
static int hf_scsi_log_ta_wmicf = - 1 ;
static int hf_scsi_log_ta_wmoa = - 1 ;
2013-04-01 15:29:49 +00:00
static int hf_scsi_sbc_threshold_exponent = - 1 ;
2012-03-31 04:45:33 +00:00
static int hf_scsi_sbc_lbpu = - 1 ;
static int hf_scsi_sbc_lbpws = - 1 ;
static int hf_scsi_sbc_lbpws10 = - 1 ;
static int hf_scsi_sbc_lbprz = - 1 ;
static int hf_scsi_sbc_anc_sup = - 1 ;
static int hf_scsi_sbc_dp = - 1 ;
static int hf_scsi_sbc_ptype = - 1 ;
2012-05-07 22:11:34 +00:00
static int hf_scsi_block_limits_wsnz = - 1 ;
static int hf_scsi_block_limits_mcawl = - 1 ;
static int hf_scsi_block_limits_otlg = - 1 ;
static int hf_scsi_block_limits_mtl = - 1 ;
static int hf_scsi_block_limits_otl = - 1 ;
static int hf_scsi_block_limits_mpl = - 1 ;
static int hf_scsi_block_limits_mulc = - 1 ;
static int hf_scsi_block_limits_mubdc = - 1 ;
static int hf_scsi_block_limits_oug = - 1 ;
static int hf_scsi_block_limits_ugavalid = - 1 ;
static int hf_scsi_block_limits_uga = - 1 ;
static int hf_scsi_block_limits_mwsl = - 1 ;
2012-09-02 21:46:50 +00:00
static int hf_scsi_prevent_allow_flags = - 1 ;
static int hf_scsi_prevent_allow_prevent = - 1 ;
2013-05-18 16:26:26 +00:00
static int hf_scsi_mpi_service_action = - 1 ;
static int hf_scsi_report_opcodes_rctd = - 1 ;
static int hf_scsi_report_opcodes_options = - 1 ;
static int hf_scsi_report_opcodes_requested_o = - 1 ;
static int hf_scsi_report_opcodes_requested_sa = - 1 ;
static int hf_scsi_report_opcodes_cdl = - 1 ;
static int hf_scsi_report_opcodes_sa = - 1 ;
static int hf_scsi_report_opcodes_ctdp = - 1 ;
2013-05-19 14:45:12 +00:00
static int hf_scsi_report_opcodes_ctdp_one = - 1 ;
2013-05-18 16:26:26 +00:00
static int hf_scsi_report_opcodes_servactv = - 1 ;
static int hf_scsi_report_opcodes_cdb_length = - 1 ;
2013-05-19 14:45:12 +00:00
static int hf_scsi_report_opcodes_support = - 1 ;
static int hf_scsi_report_opcodes_cdb_usage_data = - 1 ;
2013-05-27 01:09:49 +00:00
static int hf_scsi_report_opcodes_tdl = - 1 ;
static int hf_scsi_report_opcodes_npt = - 1 ;
static int hf_scsi_report_opcodes_rct = - 1 ;
2013-05-27 03:44:06 +00:00
static int hf_scsi_inquiry_bdc_mrr = - 1 ;
static int hf_scsi_inquiry_bdc_pt = - 1 ;
static int hf_scsi_inquiry_bdc_wabereq = - 1 ;
static int hf_scsi_inquiry_bdc_wacereq = - 1 ;
static int hf_scsi_inquiry_bdc_nff = - 1 ;
static int hf_scsi_inquiry_bdc_fuab = - 1 ;
static int hf_scsi_inquiry_bdc_vbuls = - 1 ;
2013-08-08 17:25:03 +00:00
/* Generated from convert_proto_tree_add_text.pl */
static int hf_scsi_smc_modepage_first_storage_element_address = - 1 ;
static int hf_scsi_smc_modepage_first_medium_transport_element_address = - 1 ;
static int hf_scsi_ssc2_modepage_dde = - 1 ;
static int hf_scsi_inq_cmddt_version = - 1 ;
static int hf_scsi_mmc5_modepage_number_of_volume_levels_supported = - 1 ;
static int hf_scsi_ssc2_modepage_dce = - 1 ;
static int hf_scsi_modesel_block_descriptor_length16 = - 1 ;
static int hf_scsi_mmc5_modepage_audio_pause_length = - 1 ;
static int hf_scsi_spc_modepage_idle_condition_timer = - 1 ;
static int hf_scsi_blockdescs_block_length24 = - 1 ;
static int hf_scsi_spc_modepage_report_count = - 1 ;
static int hf_scsi_spc_modepage_ready_aer_holdoff_period = - 1 ;
static int hf_scsi_sbc_modepage_non_cache_segment_size = - 1 ;
static int hf_scsi_blockdescs_no_of_blocks64 = - 1 ;
static int hf_scsi_spc_modepage_gltsd = - 1 ;
static int hf_scsi_smc_modepage_st_ne_dt = - 1 ;
static int hf_scsi_modesel_dev_sbc_medium_type = - 1 ;
static int hf_scsi_inq_evpd_devid_identifier_type = - 1 ;
2013-08-15 02:23:53 +00:00
static int hf_scsi_inq_evpd_identifier_number = - 1 ;
2013-08-08 17:25:03 +00:00
static int hf_scsi_sbc_modepage_write_retry_count = - 1 ;
static int hf_scsi_spc_modepage_buffer_empty_ratio = - 1 ;
static int hf_scsi_ssc2_modepage_partition_size = - 1 ;
static int hf_scsi_mmc5_modepage_initiator_application_code = - 1 ;
static int hf_scsi_sbc_modepage_demand_read_retention_priority = - 1 ;
static int hf_scsi_smc_modepage_dt_dt = - 1 ;
static int hf_scsi_sbc_modepage_ssec = - 1 ;
static int hf_scsi_smc_modepage_number_of_medium_transport_elements = - 1 ;
static int hf_scsi_mmc5_modepage_copy_management_revision_support = - 1 ;
static int hf_scsi_ssc2_modepage_maximum_additional_partitions = - 1 ;
static int hf_scsi_blockdescs_density_code = - 1 ;
static int hf_scsi_ssc2_modepage_write_object_buffer_full_ratio = - 1 ;
static int hf_scsi_spc_modepage_rr_tov = - 1 ;
static int hf_scsi_inq_cmddt_support = - 1 ;
static int hf_scsi_mmc5_modepage_packet_size = - 1 ;
static int hf_scsi_ssc2_modepage_fdp = - 1 ;
static int hf_scsi_spc_modepage_autoload_mode = - 1 ;
static int hf_scsi_mmc5_modepage_rw_in_lead_in = - 1 ;
static int hf_scsi_spc_modepage_perf = - 1 ;
static int hf_scsi_inq_evpd_devid_association = - 1 ;
static int hf_scsi_smc_modepage_stordt = - 1 ;
static int hf_scsi_smc_modepage_ie_dt = - 1 ;
static int hf_scsi_spc_modepage_disable_queuing = - 1 ;
static int hf_scsi_sbc_modepage_maximum_pre_fetch_ceiling = - 1 ;
static int hf_scsi_persresvin_generation_number = - 1 ;
static int hf_scsi_ssc2_modepage_read_object_buffer_empty_ratio = - 1 ;
static int hf_scsi_spc_modepage_extended_self_test_completion_time = - 1 ;
static int hf_scsi_smc_modepage_number_of_import_export_elements = - 1 ;
static int hf_scsi_smc_modepage_number_of_storage_elements = - 1 ;
static int hf_scsi_sbc_modepage_landing_zone_cyl = - 1 ;
static int hf_scsi_smc_modepage_mt_ne_dt = - 1 ;
static int hf_scsi_mmc5_modepage_loading_mechanism_type = - 1 ;
static int hf_scsi_smc_modepage_mt_dt = - 1 ;
static int hf_scsi_smc_modepage_first_import_export_element_address = - 1 ;
static int hf_scsi_mmc5_modepage_link_size = - 1 ;
static int hf_scsi_ssc2_modepage_decompression_algorithm = - 1 ;
static int hf_scsi_reportluns_lun_list_length = - 1 ;
static int hf_scsi_spc_modepage_idle = - 1 ;
static int hf_scsi_spc_modepage_emdp = - 1 ;
static int hf_scsi_inq_evpd_devid_code_set = - 1 ;
static int hf_scsi_modesel_longlba = - 1 ;
static int hf_scsi_mmc5_modepage_bufe = - 1 ;
static int hf_scsi_ssc2_modepage_select_data_compression_algorithm = - 1 ;
static int hf_scsi_mmc5_modepage_rotation_control_selected = - 1 ;
static int hf_scsi_mmc5_modepage_sub_header_byte = - 1 ;
static int hf_scsi_spc_modepage_rr_tov_units = - 1 ;
static int hf_scsi_mmc5_modepage_vendor_specific = - 1 ;
static int hf_scsi_modesel_block_descriptor_length8 = - 1 ;
static int hf_scsi_smc_modepage_ie_ne_dt = - 1 ;
static int hf_scsi_modesel_device_specific_parameter = - 1 ;
static int hf_scsi_spc_modepage_connect_time_limit = - 1 ;
static int hf_scsi_sbc_modepage_medium_rotation_rate = - 1 ;
static int hf_scsi_inq_evpd_devid_identifier_length = - 1 ;
static int hf_scsi_blockdescs_no_of_blocks32 = - 1 ;
static int hf_scsi_inq_evpd_devid_identifier_str = - 1 ;
static int hf_scsi_sns_valid = - 1 ;
static int hf_scsi_mmc5_modepage_dvd_ram_read = - 1 ;
static int hf_scsi_ssc2_modepage_gap_size = - 1 ;
static int hf_scsi_smc_modepage_first_data_transfer_element_address = - 1 ;
static int hf_scsi_mmc5_modepage_wrparam_multi_session = - 1 ;
static int hf_scsi_mmc5_modepage_num_write_speed_performance = - 1 ;
static int hf_scsi_mmc5_modepage_buf = - 1 ;
static int hf_scsi_mmc5_modepage_lba_space = - 1 ;
static int hf_scsi_mmc5_modepage_data_block_type = - 1 ;
static int hf_scsi_ssc2_modepage_additional_partitions_defined = - 1 ;
static int hf_scsi_spc_modepage_dtfd = - 1 ;
static int hf_scsi_spc_modepage_disconnect_time_limit = - 1 ;
static int hf_scsi_sbc_modepage_read_retry_count = - 1 ;
static int hf_scsi_mmc5_modepage_length = - 1 ;
static int hf_scsi_sns_filemark = - 1 ;
static int hf_scsi_sbc_modepage_alternate_tracks_per_zone = - 1 ;
static int hf_scsi_ssc2_modepage_eod_defined = - 1 ;
static int hf_scsi_mmc5_modepage_media_catalog_number = - 1 ;
static int hf_scsi_mmc5_modepage_current_write_speed_selected = - 1 ;
static int hf_scsi_inq_evpd_devid_identifier_bytes = - 1 ;
static int hf_scsi_spc_modepage_interval_timer = - 1 ;
static int hf_scsi_ssc2_modepage_oir = - 1 ;
static int hf_scsi_sbc_modepage_correction_span = - 1 ;
static int hf_scsi_mmc5_modepage_session_format = - 1 ;
static int hf_scsi_sbc_modepage_minimum_pre_fetch = - 1 ;
static int hf_scsi_spc_modepage_maximum_burst_size = - 1 ;
static int hf_scsi_ssc2_modepage_partition_units = - 1 ;
static int hf_scsi_sbc_modepage_cache_segment_size = - 1 ;
static int hf_scsi_blockdescs_block_length32 = - 1 ;
static int hf_scsi_sbc_modepage_number_of_cylinders = - 1 ;
static int hf_scsi_sbc_modepage_alternate_tracks_per_lu = - 1 ;
static int hf_scsi_inq_evpd_page_length = - 1 ;
static int hf_scsi_sbc_modepage_starting_cyl_pre_compensation = - 1 ;
static int hf_scsi_sbc_modepage_head_offset_count = - 1 ;
static int hf_scsi_sbc_modepage_ic = - 1 ;
static int hf_scsi_modesel_mode_data_length16 = - 1 ;
static int hf_scsi_sbc_modepage_maximum_pre_fetch = - 1 ;
static int hf_scsi_smc_modepage_number_of_data_transfer_elements = - 1 ;
static int hf_scsi_ssc2_modepage_object_buffer_size_at_early_warning = - 1 ;
static int hf_scsi_mmc5_modepage_buffer_size_supported = - 1 ;
static int hf_scsi_persresvin_additional_length = - 1 ;
static int hf_scsi_ssc2_modepage_obr = - 1 ;
static int hf_scsi_spc_modepage_swp = - 1 ;
static int hf_scsi_inq_evpd_supported_page = - 1 ;
static int hf_scsi_sbc_modepage_awre = - 1 ;
static int hf_scsi_smc_modepage_dt_ne_dt = - 1 ;
static int hf_scsi_mmc5_modepage_read_bar_code = - 1 ;
static int hf_scsi_ssc2_modepage_media_format_recognition = - 1 ;
static int hf_scsi_sns_command_specific_information = - 1 ;
static int hf_scsi_ssc2_modepage_write_delay_time = - 1 ;
static int hf_scsi_sbc_modepage_track_skew_factor = - 1 ;
static int hf_scsi_spc_modepage_standby_condition_timer = - 1 ;
static int hf_scsi_sbc_modepage_interleave = - 1 ;
static int hf_scsi_sbc_modepage_alternate_sectors_per_zone = - 1 ;
static int hf_scsi_sbc_modepage_rotational_offset = - 1 ;
static int hf_scsi_spc_modepage_buffer_full_ratio = - 1 ;
static int hf_scsi_sbc_modepage_number_of_heads = - 1 ;
static int hf_scsi_sbc_modepage_sectors_per_track = - 1 ;
static int hf_scsi_sbc_modepage_recovery_time_limit = - 1 ;
static int hf_scsi_sbc_modepage_tracks_per_zone = - 1 ;
static int hf_scsi_spc_modepage_first_burst_size = - 1 ;
static int hf_scsi_inq_evpd_product_serial_number = - 1 ;
static int hf_scsi_sbc_modepage_cylinder_skew_factor = - 1 ;
static int hf_scsi_sbc_modepage_data_bytes_per_physical_sector = - 1 ;
static int hf_scsi_ssc2_modepage_compression_algorithm = - 1 ;
static int hf_scsi_ssc2_modepage_caf = - 1 ;
static int hf_scsi_sbc_modepage_starting_cyl_reduced_write_current = - 1 ;
static int hf_scsi_inq_cmddt_cdb_size = - 1 ;
static int hf_scsi_mmc5_modepage_international_standard_recording_code = - 1 ;
static int hf_scsi_spc_modepage_bus_inactivity_limit = - 1 ;
static int hf_scsi_sbc_modepage_disable_pre_fetch_xfer_len = - 1 ;
static int hf_scsi_spc_modepage_busy_timeout_period = - 1 ;
static int hf_scsi_sbc_modepage_fsw = - 1 ;
static int hf_scsi_ssc2_modepage_active_partition = - 1 ;
static int hf_scsi_modesel_mode_data_length8 = - 1 ;
static int hf_scsi_smc_modepage_st_dt = - 1 ;
static int hf_scsi_sbc_modepage_number_of_cache_segments = - 1 ;
static int hf_scsi_blockdescs_no_of_blocks24 = - 1 ;
static int hf_scsi_sbc_modepage_data_strobe_offset_count = - 1 ;
static int hf_scsi_modesel_medium_type = - 1 ;
static int hf_scsi_sbc_modepage_device_step_rate = - 1 ;
static int hf_scsi_mmc5_modepage_dvd_ram_write = - 1 ;
static int hf_scsi_mmc5_modepage_track_mode = - 1 ;
static int hf_scsi_smc_modepage_mt_ne_mt = - 1 ;
static int hf_scsi_smc_modepage_dt_mt = - 1 ;
static int hf_scsi_mmc5_modepage_eject = - 1 ;
static int hf_scsi_mmc5_modepage_mode_2_form2 = - 1 ;
static int hf_scsi_sbc_modepage_dra = - 1 ;
static int hf_scsi_mmc5_modepage_dvd_rom_write = - 1 ;
static int hf_scsi_sbc_modepage_eer = - 1 ;
static int hf_scsi_mmc5_modepage_cd_da_cmds_supported = - 1 ;
static int hf_scsi_smc_modepage_ie_ne_mt = - 1 ;
static int hf_scsi_mmc5_modepage_rw_deinterleaved_corrected = - 1 ;
static int hf_scsi_sbc_modepage_vendor_specific = - 1 ;
static int hf_scsi_spc_modepage_report_log_exception_condition = - 1 ;
static int hf_scsi_mmc5_modepage_c2_pointers_supported = - 1 ;
static int hf_scsi_mmc5_modepage_ls_v = - 1 ;
static int hf_scsi_sbc_modepage_tb = - 1 ;
static int hf_scsi_sbc_modepage_write_retention_priority = - 1 ;
static int hf_scsi_smc_modepage_mt_ne_ie = - 1 ;
static int hf_scsi_ssc2_modepage_prmwp = - 1 ;
static int hf_scsi_sbc_modepage_surf = - 1 ;
static int hf_scsi_sns_ili = - 1 ;
static int hf_scsi_smc_modepage_mt_ie = - 1 ;
static int hf_scsi_sbc_modepage_rcd = - 1 ;
static int hf_scsi_mmc5_modepage_composite = - 1 ;
static int hf_scsi_sbc_modepage_wce = - 1 ;
static int hf_scsi_mmc5_modepage_method_2 = - 1 ;
static int hf_scsi_ssc2_modepage_clear = - 1 ;
static int hf_scsi_sbc_modepage_lbcss = - 1 ;
static int hf_scsi_mmc5_modepage_cd_r_read = - 1 ;
static int hf_scsi_spc_modepage_test = - 1 ;
static int hf_scsi_ssc2_modepage_rsmk = - 1 ;
static int hf_scsi_spc_modepage_rha = - 1 ;
static int hf_scsi_mmc5_modepage_lsbf = - 1 ;
static int hf_scsi_mmc5_modepage_cd_rw_write = - 1 ;
static int hf_scsi_mmc5_modepage_wrparam_test_write = - 1 ;
static int hf_scsi_ssc2_modepage_eeg = - 1 ;
static int hf_scsi_mmc5_modepage_digital_port2 = - 1 ;
static int hf_scsi_mmc5_modepage_copy = - 1 ;
static int hf_scsi_sbc_modepage_abpf = - 1 ;
static int hf_scsi_spc_modepage_alwi = - 1 ;
static int hf_scsi_mmc5_modepage_bckf = - 1 ;
static int hf_scsi_ssc2_modepage_dsp = - 1 ;
static int hf_scsi_mmc5_modepage_mode_2_form1 = - 1 ;
static int hf_scsi_smc_modepage_stormt = - 1 ;
static int hf_scsi_mmc5_modepage_mmcap_test_write = - 1 ;
static int hf_scsi_smc_modepage_st_mt = - 1 ;
static int hf_scsi_ssc2_modepage_sew = - 1 ;
static int hf_scsi_ssc2_modepage_psum = - 1 ;
static int hf_scsi_mmc5_modepage_dvd_r_read = - 1 ;
static int hf_scsi_ssc2_modepage_asocwp = - 1 ;
static int hf_scsi_smc_modepage_st_ie = - 1 ;
static int hf_scsi_mmc5_modepage_cd_rw_read = - 1 ;
static int hf_scsi_spc_modepage_standby = - 1 ;
static int hf_scsi_spc_modepage_ewasc = - 1 ;
static int hf_scsi_sbc_modepage_arre = - 1 ;
static int hf_scsi_smc_modepage_st_st = - 1 ;
static int hf_scsi_ssc2_modepage_swp = - 1 ;
static int hf_scsi_smc_modepage_storie = - 1 ;
static int hf_scsi_mmc5_modepage_fp = - 1 ;
static int hf_scsi_ssc2_modepage_red = - 1 ;
static int hf_scsi_ssc2_modepage_active_format = - 1 ;
static int hf_scsi_mmc5_modepage_mmcap_multi_session = - 1 ;
static int hf_scsi_mmc5_modepage_lock_state = - 1 ;
static int hf_scsi_mmc5_modepage_side_change_capable = - 1 ;
static int hf_scsi_mmc5_modepage_dvd_rom_read = - 1 ;
static int hf_scsi_sns_eom = - 1 ;
static int hf_scsi_sbc_modepage_rc = - 1 ;
static int hf_scsi_mmc5_modepage_lock = - 1 ;
static int hf_scsi_sbc_modepage_per = - 1 ;
static int hf_scsi_ssc2_modepage_socf = - 1 ;
static int hf_scsi_sbc_modepage_mf = - 1 ;
static int hf_scsi_smc_modepage_ie_st = - 1 ;
static int hf_scsi_mmc5_modepage_digital_port1 = - 1 ;
static int hf_scsi_sbc_modepage_hsec = - 1 ;
static int hf_scsi_sbc_modepage_cap = - 1 ;
static int hf_scsi_smc_modepage_st_ne_ie = - 1 ;
static int hf_scsi_spc_modepage_logerr = - 1 ;
static int hf_scsi_sbc_modepage_rmb = - 1 ;
static int hf_scsi_mmc5_modepage_prevent_jumper = - 1 ;
static int hf_scsi_smc_modepage_ie_mt = - 1 ;
static int hf_scsi_mmc5_modepage_changer_supports_disc_present = - 1 ;
static int hf_scsi_mmc5_modepage_cd_r_write = - 1 ;
static int hf_scsi_ssc2_modepage_addp = - 1 ;
static int hf_scsi_mmc5_modepage_dvd_r_write = - 1 ;
static int hf_scsi_spc_modepage_dexcpt = - 1 ;
static int hf_scsi_spc_modepage_ebf = - 1 ;
static int hf_scsi_mmc5_modepage_write_type = - 1 ;
static int hf_scsi_spc_modepage_fab = - 1 ;
static int hf_scsi_smc_modepage_ie_ne_st = - 1 ;
static int hf_scsi_ssc2_modepage_baml = - 1 ;
static int hf_scsi_smc_modepage_storst = - 1 ;
static int hf_scsi_sbc_modepage_dte = - 1 ;
static int hf_scsi_mmc5_modepage_separate_volume_levels = - 1 ;
static int hf_scsi_mmc5_modepage_isrc = - 1 ;
static int hf_scsi_smc_modepage_dt_ne_mt = - 1 ;
static int hf_scsi_mmc5_modepage_audio_play = - 1 ;
static int hf_scsi_mmc5_modepage_separate_channel_mute = - 1 ;
static int hf_scsi_ssc2_modepage_rew = - 1 ;
static int hf_scsi_sbc_modepage_dcr = - 1 ;
static int hf_scsi_smc_modepage_dt_ie = - 1 ;
static int hf_scsi_ssc2_modepage_avc = - 1 ;
static int hf_scsi_sbc_modepage_size = - 1 ;
static int hf_scsi_mmc5_modepage_rw_supported = - 1 ;
static int hf_scsi_spc_modepage_dtipe = - 1 ;
static int hf_scsi_mmc5_modepage_sw_slot_selection = - 1 ;
static int hf_scsi_ssc2_modepage_pofm = - 1 ;
static int hf_scsi_spc_modepage_dlm = - 1 ;
static int hf_scsi_spc_modepage_plpb = - 1 ;
static int hf_scsi_smc_modepage_st_ne_st = - 1 ;
static int hf_scsi_smc_modepage_dt_ne_st = - 1 ;
static int hf_scsi_smc_modepage_st_ne_mt = - 1 ;
static int hf_scsi_ssc2_modepage_robo = - 1 ;
static int hf_scsi_spc_modepage_faa = - 1 ;
static int hf_scsi_spc_modepage_ddis = - 1 ;
static int hf_scsi_mmc5_modepage_cd_da_stream_is_accurate = - 1 ;
static int hf_scsi_ssc2_modepage_bam = - 1 ;
static int hf_scsi_spc_modepage_fac = - 1 ;
static int hf_scsi_smc_modepage_mt_st = - 1 ;
static int hf_scsi_smc_modepage_ie_ie = - 1 ;
static int hf_scsi_smc_modepage_dt_ne_ie = - 1 ;
static int hf_scsi_ssc2_modepage_lois = - 1 ;
static int hf_scsi_spc_modepage_dtoli = - 1 ;
static int hf_scsi_sbc_modepage_disc = - 1 ;
static int hf_scsi_smc_modepage_ie_ne_ie = - 1 ;
static int hf_scsi_smc_modepage_mt_ne_st = - 1 ;
static int hf_scsi_ssc2_modepage_dcc = - 1 ;
static int hf_scsi_mmc5_modepage_rck = - 1 ;
static int hf_scsi_smc_modepage_mt_mt = - 1 ;
static int hf_scsi_smc_modepage_dt_st = - 1 ;
static int hf_scsi_ssc2_modepage_rewind_on_reset = - 1 ;
static int hf_scsi_mmc5_modepage_upc = - 1 ;
static int hf_scsi_ssc2_modepage_idp = - 1 ;
static int hf_scsi_ssc2_modepage_perswp = - 1 ;
2013-12-23 13:45:07 +00:00
static int hf_scsi_spc_xcopy_service = - 1 ;
static int hf_scsi_spc_recv_copy_service = - 1 ;
static int hf_scsi_spc_xcopy_param_list_len = - 1 ;
static int hf_scsi_spc_xcopy_param_list_format = - 1 ;
static int hf_scsi_spc_xcopy_cscd_desc_list_len = - 1 ;
static int hf_scsi_spc_xcopy_head_cscd_desc_list_len = - 1 ;
static int hf_scsi_spc_xcopy_head_cscd_desc_type_code = - 1 ;
static int hf_scsi_spc_xcopy_cscd_desc_type_code = - 1 ;
static int hf_scsi_spc_xcopy_inline_data_len = - 1 ;
static int hf_scsi_spc_xcopy_seg_desc_list_len = - 1 ;
static int hf_scsi_spc_xcopy_list_id = - 1 ;
static int hf_scsi_spc_xcopy_rel_init_port_id = - 1 ;
static int hf_scsi_spc_xcopy_per_dev_type_byte = - 1 ;
static int hf_scsi_spc_xcopy_per_dev_type = - 1 ;
static int hf_scsi_spc_xcopy_lu_type = - 1 ;
static int hf_scsi_spc_xcopy_disk_block_len = - 1 ;
static int hf_scsi_spc_xcopy_cscd_desc_code_set = - 1 ;
static int hf_scsi_spc_xcopy_cscd_desc_assoc = - 1 ;
static int hf_scsi_spc_xcopy_cscd_desc_des_type = - 1 ;
static int hf_scsi_spc_xcopy_cscd_desc_des_len = - 1 ;
static int hf_scsi_spc_xcopy_seg_desc_type = - 1 ;
static int hf_scsi_spc_xcopy_seg_desc_dc = - 1 ;
static int hf_scsi_spc_xcopy_seg_desc_cat = - 1 ;
static int hf_scsi_spc_xcopy_seg_des_src_desc_id = - 1 ;
static int hf_scsi_spc_xcopy_seg_des_dest_desc_id = - 1 ;
static int hf_scsi_spc_xcopy_num_of_blocks = - 1 ;
static int hf_scsi_spc_xcopy_param_list_id_usage = - 1 ;
static int hf_scsi_spc_xcopy_param_str = - 1 ;
static int hf_scsi_spc_xcopy_param_priority = - 1 ;
static int hf_scsi_spc_xcopy_param_byte = - 1 ;
static int hf_scsi_spc_xcopy_source_lba = - 1 ;
static int hf_scsi_spc_xcopy_dest_lba = - 1 ;
static int hf_scsi_recv_copy_max_cscd_desc_count = - 1 ;
static int hf_scsi_recv_copy_max_seg_desc_count = - 1 ;
static int hf_scsi_recv_copy_max_desc_list_len = - 1 ;
static int hf_scsi_recv_copy_max_seg_len = - 1 ;
static int hf_scsi_recv_copy_max_inline_data_len = - 1 ;
static int hf_scsi_recv_copy_held_data_limit = - 1 ;
static int hf_scsi_recv_copy_max_stream_dev_trans_size = - 1 ;
static int hf_scsi_recv_copy_snlid = - 1 ;
static int hf_scsi_recv_copy_avail_data = - 1 ;
static int hf_scsi_recv_copy_total_con_copies = - 1 ;
static int hf_scsi_recv_copy_max_con_copies = - 1 ;
static int hf_scsi_recv_copy_data_seg_gran = - 1 ;
static int hf_scsi_recv_copy_inline_data_gran = - 1 ;
static int hf_scsi_recv_copy_held_data_gran = - 1 ;
static int hf_scsi_recv_copy_implemented_desc_list_len = - 1 ;
2014-11-18 01:04:30 +00:00
static int hf_scsi_segment_descriptor_length = - 1 ;
static int hf_scsi_designator = - 1 ;
static int hf_scsi_wwn = - 1 ;
static int hf_scsi_inline_data = - 1 ;
2013-12-23 13:45:07 +00:00
static int hf_scsi_reserved_8 = - 1 ;
static int hf_scsi_reserved_16 = - 1 ;
static int hf_scsi_reserved_24 = - 1 ;
static int hf_scsi_reserved_32 = - 1 ;
static int hf_scsi_reserved_64 = - 1 ;
2010-12-10 15:49:33 +00:00
static gint ett_scsi = - 1 ;
static gint ett_scsi_page = - 1 ;
2012-05-07 22:11:34 +00:00
gint ett_scsi_control = - 1 ;
2010-12-06 22:00:08 +00:00
static gint ett_scsi_inq_control = - 1 ;
2006-11-27 14:50:23 +00:00
static gint ett_scsi_inq_peripheral = - 1 ;
2006-04-03 00:55:21 +00:00
static gint ett_scsi_inq_acaflags = - 1 ;
2006-11-27 14:50:23 +00:00
static gint ett_scsi_inq_rmbflags = - 1 ;
2006-04-03 01:44:56 +00:00
static gint ett_scsi_inq_sccsflags = - 1 ;
2006-04-03 02:40:07 +00:00
static gint ett_scsi_inq_bqueflags = - 1 ;
2006-04-03 03:19:52 +00:00
static gint ett_scsi_inq_reladrflags = - 1 ;
2007-02-05 09:39:36 +00:00
static gint ett_scsi_log = - 1 ;
2007-02-03 22:03:39 +00:00
static gint ett_scsi_log_ppc = - 1 ;
static gint ett_scsi_log_pc = - 1 ;
2007-02-05 09:39:36 +00:00
static gint ett_scsi_log_param = - 1 ;
2006-10-13 22:25:35 +00:00
static gint ett_scsi_fragments = - 1 ;
2010-12-10 15:49:33 +00:00
static gint ett_scsi_fragment = - 1 ;
static gint ett_persresv_control = - 1 ;
2012-07-27 05:09:13 +00:00
static gint ett_scsi_lun = - 1 ;
2012-09-02 21:46:50 +00:00
static gint ett_scsi_prevent_allow = - 1 ;
2013-05-18 16:26:26 +00:00
static gint ett_command_descriptor = - 1 ;
2013-05-27 01:09:49 +00:00
static gint ett_timeout_descriptor = - 1 ;
2013-06-11 21:22:58 +00:00
static gint ett_sense_descriptor = - 1 ;
2013-06-12 14:20:36 +00:00
static gint ett_sense_osd_not_initiated = - 1 ;
static gint ett_sense_osd_completed = - 1 ;
2013-12-23 13:45:07 +00:00
static gint ett_xcopy_per_dev_type = - 1 ;
static gint ett_xcopy_param_byte = - 1 ;
static gint ett_scsi_xcopy_cscds = - 1 ;
static gint ett_scsi_xcopy_cscd = - 1 ;
static gint ett_scsi_xcopy_dev_params = - 1 ;
static gint ett_scsi_xcopy_segs = - 1 ;
static gint ett_scsi_xcopy_seg = - 1 ;
static gint ett_scsi_xcopy_seg_param = - 1 ;
2014-11-18 01:04:30 +00:00
static gint ett_scsi_cscd_desc = - 1 ;
2006-03-13 10:29:00 +00:00
2013-08-08 17:25:03 +00:00
/* Generated from convert_proto_tree_add_text.pl */
static expert_field ei_scsi_unknown_scsi_exchange = EI_INIT ;
static expert_field ei_scsi_product_data_goes_past_end_of_page = EI_INIT ;
static expert_field ei_scsi_unknown_page = EI_INIT ;
static expert_field ei_scsi_no_dissection_for_service_action = EI_INIT ;
2014-11-18 01:04:30 +00:00
static expert_field ei_scsi_unknown_serv_action = EI_INIT ;
2013-08-08 17:25:03 +00:00
2006-04-24 08:16:18 +00:00
static int scsi_tap = - 1 ;
2006-10-13 22:25:35 +00:00
/* Defragment of SCSI DATA IN/OUT */
2006-10-14 01:44:29 +00:00
static gboolean scsi_defragment = FALSE ;
2006-10-13 22:25:35 +00:00
2013-03-22 23:59:54 +00:00
static reassembly_table scsi_reassembly_table ;
2006-10-13 22:25:35 +00:00
2010-12-06 22:00:08 +00:00
/*
2011-01-16 20:51:21 +00:00
* Required by all commands
2010-12-06 22:00:08 +00:00
*/
const int * cdb_control_fields [ 6 ] = {
& hf_scsi_control_vendor_specific ,
& hf_scsi_control_reserved ,
& hf_scsi_control_naca ,
& hf_scsi_control_obs1 ,
& hf_scsi_control_obs2 ,
NULL
} ;
2006-10-13 22:25:35 +00:00
static void
scsi_defragment_init ( void )
{
2013-03-22 23:59:54 +00:00
reassembly_table_init ( & scsi_reassembly_table ,
& addresses_reassembly_table_functions ) ;
2006-10-13 22:25:35 +00:00
}
static const fragment_items scsi_frag_items = {
2007-03-26 21:16:21 +00:00
& ett_scsi_fragment ,
& ett_scsi_fragments ,
& hf_scsi_fragments ,
& hf_scsi_fragment ,
& hf_scsi_fragment_overlap ,
& hf_scsi_fragment_overlap_conflict ,
& hf_scsi_fragment_multiple_tails ,
& hf_scsi_fragment_too_long_fragment ,
& hf_scsi_fragment_error ,
2011-01-30 21:01:07 +00:00
& hf_scsi_fragment_count ,
2007-03-26 21:16:21 +00:00
& hf_scsi_reassembled_in ,
2010-02-02 16:01:52 +00:00
& hf_scsi_reassembled_length ,
2012-09-07 02:09:59 +00:00
/* Reassembled data field */
NULL ,
2007-03-26 21:16:21 +00:00
" fragments "
2006-10-13 22:25:35 +00:00
} ;
2002-02-12 23:52:34 +00:00
typedef guint32 scsi_cmnd_type ;
typedef guint32 scsi_device_type ;
2002-08-20 03:21:42 +00:00
/* Valid SCSI Command Types */
2007-02-11 00:20:37 +00:00
# define SCSI_CMND_SPC 1
2006-12-10 13:52:30 +00:00
# define SCSI_CMND_SBC 2
2007-02-11 00:20:37 +00:00
# define SCSI_CMND_SSC 3
# define SCSI_CMND_SMC 4
2005-05-28 05:42:39 +00:00
# define SCSI_CMND_MMC 5
2002-02-12 23:52:34 +00:00
2002-08-21 07:15:00 +00:00
/* SPC and SPC-2 Commands */
2007-02-11 00:45:15 +00:00
static const value_string scsi_spc_vals [ ] = {
2013-12-12 19:26:55 +00:00
/* 0x00 */ { SCSI_SPC_TESTUNITRDY , " Test Unit Ready " } ,
/* 0x03 */ { SCSI_SPC_REQSENSE , " Request Sense " } ,
/* 0x12 */ { SCSI_SPC_INQUIRY , " Inquiry " } ,
/* 0x15 */ { SCSI_SPC_MODESELECT6 , " Mode Select(6) " } ,
/* 0x16 */ { SCSI_SPC_RESERVE6 , " Reserve(6) " } ,
/* 0x17 */ { SCSI_SPC_RELEASE6 , " Release(6) " } ,
/* 0x18 */ { SCSI_SPC_COPY , " Copy " } ,
/* 0x1A */ { SCSI_SPC_MODESENSE6 , " Mode Sense(6) " } ,
/* 0x1C */ { SCSI_SPC_RCVDIAGRESULTS , " Receive Diagnostics Results " } ,
/* 0x1D */ { SCSI_SPC_SENDDIAG , " Send Diagnostic " } ,
/* 0x1E */ { SCSI_SPC_PREVMEDREMOVAL , " Prevent/Allow Medium Removal " } ,
/* 0x39 */ { SCSI_SPC_COMPARE , " Compare " } ,
/* 0x3A */ { SCSI_SPC_COPY_AND_VERIFY , " Copy And Verify " } ,
/* 0x3B */ { SCSI_SPC_WRITEBUFFER , " Write Buffer " } ,
/* 0x3C */ { SCSI_SPC_READBUFFER , " Read Buffer " } ,
/* 0x40 */ { SCSI_SPC_CHANGE_DEFINITION , " Change Definition " } ,
/* 0x4C */ { SCSI_SPC_LOGSELECT , " Log Select " } ,
/* 0x4D */ { SCSI_SPC_LOGSENSE , " Log Sense " } ,
/* 0x55 */ { SCSI_SPC_MODESELECT10 , " Mode Select(10) " } ,
/* 0x56 */ { SCSI_SPC_RESERVE10 , " Reserve(10) " } ,
/* 0x57 */ { SCSI_SPC_RELEASE10 , " Release(10) " } ,
/* 0x5A */ { SCSI_SPC_MODESENSE10 , " Mode Sense(10) " } ,
/* 0x5E */ { SCSI_SPC_PERSRESVIN , " Persistent Reserve In " } ,
/* 0x5F */ { SCSI_SPC_PERSRESVOUT , " Persistent Reserve Out " } ,
/* 0x7F */ { SCSI_SPC_VARLENCDB , " Variable Length CDB " } ,
/* 0x83 */ { SCSI_SPC_EXTCOPY , " Extended Copy " } ,
2013-12-23 13:45:07 +00:00
/* 0x84 */ { SCSI_SPC_RECVCOPY , " Receive Copy " } ,
2013-12-12 19:26:55 +00:00
/* 0x84 */ { SCSI_SPC_RCVCOPYRESULTS , " Receive Copy Results " } ,
/* 0x86 */ { SCSI_SPC_ACCESS_CONTROL_IN , " Access Control In " } ,
/* 0x87 */ { SCSI_SPC_ACCESS_CONTROL_OUT , " Access Control Out " } ,
/* 0xA0 */ { SCSI_SPC_REPORTLUNS , " Report LUNs " } ,
/* 0xA3 */ { SCSI_SPC_MGMT_PROTOCOL_IN , " Mgmt Protocol In " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2013-12-12 19:26:55 +00:00
static value_string_ext scsi_spc_vals_ext = VALUE_STRING_EXT_INIT ( scsi_spc_vals ) ;
2002-02-12 23:52:34 +00:00
2012-07-27 05:09:13 +00:00
static const value_string scsi_lun_address_mode_vals [ ] = {
{ 0 , " Single Level LUN Structure " } ,
{ 1 , " Flat Space Addressing Method " } ,
{ 3 , " Extended Logical Unit Addressing " } ,
{ 0 , NULL }
} ;
2012-03-31 04:45:33 +00:00
static const value_string provisioning_vals [ ] = {
{ 0 , " No provisioning " } ,
2014-03-10 19:04:30 +00:00
{ 1 , " Resource provisioned " } ,
2012-03-31 04:45:33 +00:00
{ 2 , " Thin provisioned " } ,
{ 0 , NULL } ,
} ;
2006-11-22 10:12:59 +00:00
2007-02-05 09:39:36 +00:00
static const value_string log_flags_tmc_vals [ ] = {
2008-12-17 00:08:38 +00:00
{ 0 , " Every update of the cumulative value " } ,
2008-12-20 00:09:02 +00:00
{ 1 , " Cumulative value equal to threshold value " } ,
{ 2 , " Cumulative value not equal to threshold value " } ,
{ 3 , " Cumulative value greater than threshold value " } ,
2007-02-05 09:39:36 +00:00
{ 0 , NULL } ,
} ;
2002-02-12 23:52:34 +00:00
2005-05-14 17:12:45 +00:00
static const value_string scsi_select_report_val [ ] = {
2010-12-10 15:49:33 +00:00
{ 0 , " Select All LUNs " } ,
2005-05-14 17:12:45 +00:00
{ 1 , " Select Well-Known LUNs " } ,
{ 2 , " Select All LUNs accessible to this I_T nexus " } ,
{ 0 , NULL } ,
} ;
2003-07-09 03:42:55 +00:00
# define SCSI_EVPD_SUPPPG 0x00
# define SCSI_EVPD_DEVSERNUM 0x80
# define SCSI_EVPD_OPER 0x81
# define SCSI_EVPD_ASCIIOPER 0x82
# define SCSI_EVPD_DEVID 0x83
2006-03-04 10:10:48 +00:00
# define SCSI_EVPD_BLKLIMITS 0xb0
2013-05-27 03:44:06 +00:00
# define SCSI_EVPD_BLKDEVCHAR 0xb1
2012-03-31 04:45:33 +00:00
# define SCSI_EVPD_LBP 0xb2
2003-07-09 03:42:55 +00:00
2002-02-12 23:52:34 +00:00
static const value_string scsi_evpd_pagecode_val [ ] = {
2003-07-09 03:42:55 +00:00
{ SCSI_EVPD_SUPPPG , " Supported Vital Product Data Pages " } ,
{ 0x01 , " ASCII Information Page " } ,
{ 0x02 , " ASCII Information Page " } ,
{ 0x03 , " ASCII Information Page " } ,
{ 0x04 , " ASCII Information Page " } ,
{ 0x05 , " ASCII Information Page " } ,
{ 0x06 , " ASCII Information Page " } ,
{ 0x07 , " ASCII Information Page " } ,
/* XXX - 0x01 through 0x7F are all ASCII information pages */
{ SCSI_EVPD_DEVSERNUM , " Unit Serial Number Page " } ,
{ SCSI_EVPD_OPER , " Implemented Operating Definition Page " } ,
{ SCSI_EVPD_ASCIIOPER , " ASCII Implemented Operating Definition Page " } ,
2012-09-07 02:09:59 +00:00
{ SCSI_EVPD_DEVID , " Device Identification Page " } ,
2006-03-04 10:10:48 +00:00
{ SCSI_EVPD_BLKLIMITS , " Block Limits Page " } ,
2013-05-27 03:44:06 +00:00
{ SCSI_EVPD_BLKDEVCHAR , " Block Device Characteristics " } ,
{ SCSI_EVPD_LBP , " Logical Block Provisioning Page " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2013-08-13 05:19:48 +00:00
static const value_string mrr_val [ ] = {
{ 0x0 , " Media rotation speed not reported " } ,
{ 0x1 , " Non-rotating media " } ,
/* 0x2 - 0x400 - reserved */
{ 5400 , " 5,400 RPM " } ,
{ 7200 , " 7,200 RPM " } ,
{ 10000 , " 10,000 RPM " } ,
{ 15000 , " 15,000 RPM " } ,
{ 0 , NULL } ,
} ;
2007-02-03 22:03:39 +00:00
static const value_string scsi_log_pc_val [ ] = {
2002-02-12 23:52:34 +00:00
{ 0 , " Threshold Values " } ,
{ 1 , " Cumulative Values " } ,
{ 2 , " Default Threshold Values " } ,
{ 3 , " Default Cumulative Values " } ,
{ 0 , NULL } ,
} ;
2007-02-05 09:39:36 +00:00
/* TapeAlert page : read warning flag */
static void
log_parameter_2e_0001 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_rw , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 09:39:36 +00:00
}
2007-02-05 11:31:21 +00:00
/* TapeAlert page : write warning flag */
static void
log_parameter_2e_0002 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_ww , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : hard error flag */
static void
log_parameter_2e_0003 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_he , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : media flag */
static void
log_parameter_2e_0004 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_media , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : read failure flag */
static void
log_parameter_2e_0005 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_rf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : write failure flag */
static void
log_parameter_2e_0006 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_wf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : media life flag */
static void
log_parameter_2e_0007 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_ml , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : not data grade flag */
static void
log_parameter_2e_0008 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_ndg , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : write protect flag */
static void
log_parameter_2e_0009 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_wp , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : no removal flag */
static void
log_parameter_2e_000a ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_nr , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : cleaning media flag */
static void
log_parameter_2e_000b ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_cm , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : unsupported format flag */
static void
log_parameter_2e_000c ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_uf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : removable mechanical cartridge failure flag */
static void
log_parameter_2e_000d ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_rmcf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : unrecoverable mechanical cartridge failure flag */
static void
log_parameter_2e_000e ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_umcf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : memory chip in cartridge failure flag */
static void
log_parameter_2e_000f ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_mcicf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : forced eject flag */
static void
log_parameter_2e_0010 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_fe , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : read only format flag */
static void
log_parameter_2e_0011 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_rof , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : tape directory corrupted on load flag */
static void
log_parameter_2e_0012 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_tdcol , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : nearing media life flag */
static void
log_parameter_2e_0013 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_nml , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : clean now flag */
static void
log_parameter_2e_0014 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_cn , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : clean periodic flag */
static void
log_parameter_2e_0015 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_cp , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : expired cleaning media flag */
static void
log_parameter_2e_0016 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_ecm , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : invalid cleaning tape flag */
static void
log_parameter_2e_0017 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_ict , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : retention requested flag */
static void
log_parameter_2e_0018 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_rr , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : dual port interface error flag */
static void
log_parameter_2e_0019 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_dpie , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : cooling fan failure flag */
static void
log_parameter_2e_001a ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_cff , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : power supply failure flag */
static void
log_parameter_2e_001b ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_psf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : power consumption flag */
static void
log_parameter_2e_001c ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_pc , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : drive maintenance flag */
static void
log_parameter_2e_001d ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_dm , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : hardware a flag */
static void
log_parameter_2e_001e ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_hwa , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : hardware b flag */
static void
log_parameter_2e_001f ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_hwb , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : interface flag */
static void
log_parameter_2e_0020 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_if , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : eject media flag */
static void
log_parameter_2e_0021 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_em , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : download failed flag */
static void
log_parameter_2e_0022 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_dwf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : drive humidity flag */
static void
log_parameter_2e_0023 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_drhu , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : drive temperature flag */
static void
log_parameter_2e_0024 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_drtm , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : drive voltage flag */
static void
log_parameter_2e_0025 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_drvo , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : periodic failure flag */
static void
log_parameter_2e_0026 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_pefa , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
2008-12-20 00:09:02 +00:00
/* TapeAlert page : diagnostics required flag */
2007-02-05 11:31:21 +00:00
static void
log_parameter_2e_0027 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_dire , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : lost statistics flag */
static void
log_parameter_2e_0032 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_lost , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : tape directory invalid at unload flag */
static void
log_parameter_2e_0033 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_tduau , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : tape system area write failure flag */
static void
log_parameter_2e_0034 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_tsawf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : tape system area read failure flag */
static void
log_parameter_2e_0035 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_tsarf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : no start of data flag */
static void
log_parameter_2e_0036 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_nsod , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : loading failure flag */
static void
log_parameter_2e_0037 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_lofa , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : unrecoverable unload failure flag */
static void
log_parameter_2e_0038 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_uuf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : automatic interface failure flag */
static void
log_parameter_2e_0039 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_aif , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : firmware failure flag */
static void
log_parameter_2e_003a ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_fwf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : worm medium integrity check failed flag */
static void
log_parameter_2e_003b ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_wmicf , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
/* TapeAlert page : worm medium overwrite attempted flag */
static void
log_parameter_2e_003c ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree )
{
2011-10-10 00:39:31 +00:00
proto_tree_add_item ( tree , hf_scsi_log_ta_wmoa , tvb , 0 , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 11:31:21 +00:00
}
2007-02-05 09:39:36 +00:00
typedef void ( * log_parameter_dissector ) ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ) ;
typedef struct _log_page_parameters_t {
2010-12-10 15:49:33 +00:00
guint32 number ;
2012-04-09 18:44:10 +00:00
const char * name ;
2007-02-05 09:39:36 +00:00
log_parameter_dissector dissector ;
} log_page_parameters_t ;
static const log_page_parameters_t tape_alert_log_parameters [ ] = {
2010-12-10 15:49:33 +00:00
{ 0x0001 , " Read Warning " , log_parameter_2e_0001 } ,
2007-02-05 11:31:21 +00:00
{ 0x0002 , " write warning " , log_parameter_2e_0002 } ,
{ 0x0003 , " hard error " , log_parameter_2e_0003 } ,
{ 0x0004 , " media " , log_parameter_2e_0004 } ,
{ 0x0005 , " read failure " , log_parameter_2e_0005 } ,
{ 0x0006 , " write failure " , log_parameter_2e_0006 } ,
{ 0x0007 , " media life " , log_parameter_2e_0007 } ,
{ 0x0008 , " not data grade " , log_parameter_2e_0008 } ,
{ 0x0009 , " write protect " , log_parameter_2e_0009 } ,
{ 0x000a , " no removal " , log_parameter_2e_000a } ,
{ 0x000b , " cleaning media " , log_parameter_2e_000b } ,
{ 0x000c , " unsupported format " , log_parameter_2e_000c } ,
{ 0x000d , " removable mechanical cartridge failure " , log_parameter_2e_000d } ,
{ 0x000e , " unrecoverable mechanical cartridge failure " , log_parameter_2e_000e } ,
{ 0x000f , " memory chip in cartridge failure " , log_parameter_2e_000f } ,
{ 0x0010 , " forced eject " , log_parameter_2e_0010 } ,
{ 0x0011 , " read only format " , log_parameter_2e_0011 } ,
{ 0x0012 , " tape directory corrupted on load " , log_parameter_2e_0012 } ,
{ 0x0013 , " nearing media life " , log_parameter_2e_0013 } ,
{ 0x0014 , " clean now " , log_parameter_2e_0014 } ,
{ 0x0015 , " clean periodic " , log_parameter_2e_0015 } ,
{ 0x0016 , " expired cleaning media " , log_parameter_2e_0016 } ,
{ 0x0017 , " invalid cleaning tape " , log_parameter_2e_0017 } ,
{ 0x0018 , " retention requested " , log_parameter_2e_0018 } ,
{ 0x0019 , " dual port interface error " , log_parameter_2e_0019 } ,
{ 0x001a , " cooling fan failure " , log_parameter_2e_001a } ,
{ 0x001b , " power supply failure " , log_parameter_2e_001b } ,
{ 0x001c , " power consumption " , log_parameter_2e_001c } ,
{ 0x001d , " drive maintenance " , log_parameter_2e_001d } ,
{ 0x001e , " hardware a " , log_parameter_2e_001e } ,
{ 0x001f , " hardware b " , log_parameter_2e_001f } ,
{ 0x0020 , " interface " , log_parameter_2e_0020 } ,
{ 0x0021 , " eject media " , log_parameter_2e_0021 } ,
{ 0x0022 , " download failed " , log_parameter_2e_0022 } ,
{ 0x0023 , " drive humidity " , log_parameter_2e_0023 } ,
{ 0x0024 , " drive temperature " , log_parameter_2e_0024 } ,
{ 0x0025 , " drive voltage " , log_parameter_2e_0025 } ,
{ 0x0026 , " periodic failure " , log_parameter_2e_0026 } ,
2008-12-20 00:09:02 +00:00
{ 0x0027 , " diagnostics required " , log_parameter_2e_0027 } ,
2007-02-05 11:31:21 +00:00
{ 0x0032 , " lost statistics " , log_parameter_2e_0032 } ,
{ 0x0033 , " tape directory invalid at unload " , log_parameter_2e_0033 } ,
{ 0x0034 , " tape system area write failure " , log_parameter_2e_0034 } ,
{ 0x0035 , " tape system area read failure " , log_parameter_2e_0035 } ,
{ 0x0036 , " no start of data " , log_parameter_2e_0036 } ,
{ 0x0037 , " loading failure " , log_parameter_2e_0037 } ,
{ 0x0038 , " unrecoverable unload failure " , log_parameter_2e_0038 } ,
{ 0x0039 , " automatic interface failure " , log_parameter_2e_0039 } ,
{ 0x003a , " firmware failure " , log_parameter_2e_003a } ,
{ 0x003b , " worm medium integrity check failed " , log_parameter_2e_003b } ,
{ 0x003c , " worm medium overwrite attempted " , log_parameter_2e_003c } ,
2007-02-05 09:39:36 +00:00
{ 0 , NULL , NULL }
} ;
typedef struct _log_pages_t {
2010-12-10 15:49:33 +00:00
guint32 page ;
2007-02-05 09:39:36 +00:00
const log_page_parameters_t * parameters ;
} log_pages_t ;
2010-12-10 15:49:33 +00:00
# define LOG_PAGE_TAPE_ALERT 0x2e
2007-02-03 22:03:39 +00:00
static const value_string scsi_log_page_val [ ] = {
2007-02-03 16:21:21 +00:00
{ 0x00 , " Supported Log Pages " } ,
{ 0x01 , " Buffer Overrun/Underrun Page " } ,
{ 0x02 , " Error Counter (write) Page " } ,
{ 0x03 , " Error Counter (read) Page " } ,
{ 0x04 , " Error Counter (read reverse) Page " } ,
{ 0x05 , " Error Counter (verify) Page " } ,
{ 0x06 , " Non-medium Error Page " } ,
{ 0x07 , " Last n Error Events Page " } ,
{ 0x08 , " Format Status Log Page " } ,
{ 0x0B , " Last n Deferred Errors or Async Events Page " } ,
{ 0x0C , " Sequential-Access Device Log Page " } ,
{ 0x0D , " Temperature Page " } ,
{ 0x0E , " Start-Stop Cycle Counter Page " } ,
{ 0x0F , " Application Client Page " } ,
2002-02-12 23:52:34 +00:00
{ 0x10 , " Self-test Results Page " } ,
2007-02-03 16:21:21 +00:00
{ 0x11 , " DTD Status Log Page " } ,
2007-02-05 09:39:36 +00:00
{ LOG_PAGE_TAPE_ALERT , " Tape-Alert Log Page (SSC) " } ,
2007-02-03 16:21:21 +00:00
{ 0x2f , " Informational Exceptions Log Page " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2007-02-05 09:39:36 +00:00
static const log_pages_t log_pages [ ] = {
2010-12-10 15:49:33 +00:00
{ LOG_PAGE_TAPE_ALERT , tape_alert_log_parameters } ,
{ 0 , NULL }
2007-02-05 09:39:36 +00:00
} ;
2002-02-12 23:52:34 +00:00
static const value_string scsi_modesns_pc_val [ ] = {
{ 0 , " Current Values " } ,
{ 1 , " Changeable Values " } ,
{ 2 , " Default Values " } ,
{ 3 , " Saved Values " } ,
{ 0 , NULL } ,
} ;
2007-02-11 00:45:15 +00:00
# define SCSI_SPC_MODEPAGE_CTL 0x0A
# define SCSI_SPC_MODEPAGE_DISCON 0x02
2002-08-21 07:15:00 +00:00
# define SCSI_SCSI2_MODEPAGE_PERDEV 0x09 /* Obsolete in SPC-2; generic in SCSI-2 */
2007-02-11 00:45:15 +00:00
# define SCSI_SPC_MODEPAGE_INFOEXCP 0x1C
# define SCSI_SPC_MODEPAGE_PWR 0x1A
# define SCSI_SPC_MODEPAGE_LUN 0x18
# define SCSI_SPC_MODEPAGE_PORT 0x19
# define SCSI_SPC_MODEPAGE_VEND 0x00
static const value_string scsi_spc_modepage_val [ ] = {
{ SCSI_SPC_MODEPAGE_CTL , " Control " } ,
{ SCSI_SPC_MODEPAGE_DISCON , " Disconnect-Reconnect " } ,
{ SCSI_SCSI2_MODEPAGE_PERDEV , " Peripheral Device " } ,
{ SCSI_SPC_MODEPAGE_INFOEXCP , " Informational Exceptions Control " } ,
{ SCSI_SPC_MODEPAGE_PWR , " Power Condition " } ,
{ SCSI_SPC_MODEPAGE_LUN , " Protocol Specific LUN " } ,
{ SCSI_SPC_MODEPAGE_PORT , " Protocol-Specific Port " } ,
{ SCSI_SPC_MODEPAGE_VEND , " Vendor Specific Page " } ,
{ 0x3F , " Return All Mode Pages " } ,
2002-08-21 07:15:00 +00:00
{ 0 , NULL } ,
} ;
2006-12-10 13:52:30 +00:00
# define SCSI_SBC_MODEPAGE_RDWRERR 0x01
# define SCSI_SBC_MODEPAGE_FMTDEV 0x03
# define SCSI_SBC_MODEPAGE_DISKGEOM 0x04
# define SCSI_SBC_MODEPAGE_FLEXDISK 0x05
# define SCSI_SBC_MODEPAGE_VERERR 0x07
# define SCSI_SBC_MODEPAGE_CACHE 0x08
# define SCSI_SBC_MODEPAGE_MEDTYPE 0x0B
# define SCSI_SBC_MODEPAGE_NOTPART 0x0C
# define SCSI_SBC_MODEPAGE_XORCTL 0x10
static const value_string scsi_sbc_modepage_val [ ] = {
{ SCSI_SBC_MODEPAGE_RDWRERR , " Read/Write Error Recovery " } ,
{ SCSI_SBC_MODEPAGE_FMTDEV , " Format Device " } ,
{ SCSI_SBC_MODEPAGE_DISKGEOM , " Rigid Disk Geometry " } ,
{ SCSI_SBC_MODEPAGE_FLEXDISK , " Flexible Disk " } ,
{ SCSI_SBC_MODEPAGE_VERERR , " Verify Error Recovery " } ,
{ SCSI_SBC_MODEPAGE_CACHE , " Caching " } ,
{ SCSI_SBC_MODEPAGE_MEDTYPE , " Medium Types Supported " } ,
{ SCSI_SBC_MODEPAGE_NOTPART , " Notch & Partition " } ,
{ SCSI_SBC_MODEPAGE_XORCTL , " XOR Control " } ,
2002-08-21 07:15:00 +00:00
{ 0x3F , " Return All Mode Pages " } ,
{ 0 , NULL } ,
} ;
# define SCSI_SSC2_MODEPAGE_DATACOMP 0x0F /* data compression */
# define SCSI_SSC2_MODEPAGE_DEVCONF 0x10 /* device configuration */
# define SCSI_SSC2_MODEPAGE_MEDPAR1 0x11 /* medium partition (1) */
# define SCSI_SSC2_MODEPAGE_MEDPAR2 0x12 /* medium partition (2) */
# define SCSI_SSC2_MODEPAGE_MEDPAR3 0x13 /* medium partition (3) */
# define SCSI_SSC2_MODEPAGE_MEDPAR4 0x14 /* medium partition (4) */
static const value_string scsi_ssc2_modepage_val [ ] = {
{ SCSI_SSC2_MODEPAGE_DATACOMP , " Data Compression " } ,
{ SCSI_SSC2_MODEPAGE_DEVCONF , " Device Configuration " } ,
{ SCSI_SSC2_MODEPAGE_MEDPAR1 , " Medium Partition (1) " } ,
{ SCSI_SSC2_MODEPAGE_MEDPAR2 , " Medium Partition (2) " } ,
{ SCSI_SSC2_MODEPAGE_MEDPAR3 , " Medium Partition (3) " } ,
{ SCSI_SSC2_MODEPAGE_MEDPAR4 , " Medium Partition (4) " } ,
{ 0x3F , " Return All Mode Pages " } ,
{ 0 , NULL } ,
} ;
2007-02-11 00:20:37 +00:00
# define SCSI_SMC_MODEPAGE_EAA 0x1D /* element address assignment */
# define SCSI_SMC_MODEPAGE_TRANGEOM 0x1E /* transport geometry parameters */
# define SCSI_SMC_MODEPAGE_DEVCAP 0x1F /* device capabilities */
2002-08-21 07:15:00 +00:00
2007-02-11 00:20:37 +00:00
static const value_string scsi_smc_modepage_val [ ] = {
{ SCSI_SMC_MODEPAGE_EAA , " Element Address Assignment " } ,
{ SCSI_SMC_MODEPAGE_TRANGEOM , " Transport Geometry Parameters " } ,
{ SCSI_SMC_MODEPAGE_DEVCAP , " Device Capabilities " } ,
2002-08-21 07:15:00 +00:00
{ 0x3F , " Return All Mode Pages " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2006-03-13 06:23:59 +00:00
# define SCSI_MMC5_MODEPAGE_MRW 0x03 /* MRW */
# define SCSI_MMC5_MODEPAGE_WRPARAM 0x05 /* Write Parameters */
2006-03-06 20:06:05 +00:00
# define SCSI_MMC3_MODEPAGE_MMCAP 0x2A /* device capabilities */
static const value_string scsi_mmc5_modepage_val [ ] = {
2006-03-13 06:23:59 +00:00
{ SCSI_MMC5_MODEPAGE_MRW , " MRW " } ,
{ SCSI_MMC5_MODEPAGE_WRPARAM , " Write Parameters " } ,
{ SCSI_MMC3_MODEPAGE_MMCAP , " MM Capabilities and Mechanical Status " } ,
2006-03-06 20:06:05 +00:00
{ 0x3F , " Return All Mode Pages " } ,
{ 0 , NULL } ,
} ;
2007-02-11 00:45:15 +00:00
# define SCSI_SPC_RESVIN_SVCA_RDKEYS 0
# define SCSI_SPC_RESVIN_SVCA_RDRESV 1
2012-12-18 04:02:57 +00:00
# define SCSI_SPC_RESVIN_SVCA_RPTCAP 2
# define SCSI_SPC_RESVIN_SVCA_FULL 3
2002-02-12 23:52:34 +00:00
static const value_string scsi_persresvin_svcaction_val [ ] = {
2007-02-11 00:45:15 +00:00
{ SCSI_SPC_RESVIN_SVCA_RDKEYS , " Read Keys " } ,
{ SCSI_SPC_RESVIN_SVCA_RDRESV , " Read Reservation " } ,
2012-12-18 04:02:57 +00:00
{ SCSI_SPC_RESVIN_SVCA_RPTCAP , " Report Capabilities " } ,
{ SCSI_SPC_RESVIN_SVCA_FULL , " Read Full Status " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2014-11-25 20:24:23 +00:00
# define SCSI_PR_REGISTER 0
# define SCSI_PR_RESERVE 1
# define SCSI_PR_RELEASE 2
# define SCSI_PR_CLEAR 3
# define SCSI_PR_PREEMPT 4
# define SCSI_PR_PREEM_ABORT 5
# define SCSI_PR_REG_IGNORE 6
# define SCSI_PR_REG_MOVE 7
# define SCSI_PR_REPLACE_LOST 8
2002-02-12 23:52:34 +00:00
static const value_string scsi_persresvout_svcaction_val [ ] = {
2014-11-25 20:24:23 +00:00
{ SCSI_PR_REGISTER , " Register " } ,
{ SCSI_PR_RESERVE , " Reserve " } ,
{ SCSI_PR_RELEASE , " Release " } ,
{ SCSI_PR_CLEAR , " Clear " } ,
{ SCSI_PR_PREEMPT , " Preempt " } ,
{ SCSI_PR_PREEM_ABORT , " Preempt & Abort " } ,
{ SCSI_PR_REG_IGNORE , " Register & Ignore Existing Key " } ,
{ SCSI_PR_REG_MOVE , " Register & Move " } ,
{ SCSI_PR_REPLACE_LOST , " Replace Lost Reservation " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
static const value_string scsi_persresv_scope_val [ ] = {
{ 0 , " LU Scope " } ,
{ 1 , " Obsolete " } ,
{ 2 , " Element Scope " } ,
{ 0 , NULL } ,
} ;
static const value_string scsi_persresv_type_val [ ] = {
{ 1 , " Write Excl " } ,
{ 3 , " Excl Access " } ,
{ 5 , " Write Excl, Registrants Only " } ,
2010-12-01 23:30:06 +00:00
{ 6 , " Excl Access, Registrants Only " } ,
{ 7 , " Write Excl, All Registrants " } ,
{ 8 , " Excl Access, All Registrants " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2003-03-08 08:02:20 +00:00
static const value_string scsi_qualifier_val [ ] = {
{ 0x0 , " Device type is connected to logical unit " } ,
{ 0x1 , " Device type is supported by server but is not connected to logical unit " } ,
{ 0x3 , " Device type is not supported by server " } ,
2005-08-28 03:05:53 +00:00
{ 0 , NULL }
2003-03-08 08:02:20 +00:00
} ;
2002-02-12 23:52:34 +00:00
static const value_string scsi_devtype_val [ ] = {
{ SCSI_DEV_SBC , " Direct Access Device " } ,
{ SCSI_DEV_SSC , " Sequential Access Device " } ,
{ SCSI_DEV_PRNT , " Printer " } ,
{ SCSI_DEV_PROC , " Processor " } ,
{ SCSI_DEV_WORM , " WORM " } ,
2003-03-08 08:02:20 +00:00
{ SCSI_DEV_CDROM , " CD-ROM " } ,
2002-02-12 23:52:34 +00:00
{ SCSI_DEV_SCAN , " Scanner " } ,
{ SCSI_DEV_OPTMEM , " Optical Memory " } ,
{ SCSI_DEV_SMC , " Medium Changer " } ,
{ SCSI_DEV_COMM , " Communication " } ,
{ SCSI_DEV_RAID , " Storage Array " } ,
{ SCSI_DEV_SES , " Enclosure Services " } ,
{ SCSI_DEV_RBC , " Simplified Block Device " } ,
2003-03-08 08:02:20 +00:00
{ SCSI_DEV_OCRW , " Optical Card Reader/Writer " } ,
{ SCSI_DEV_OSD , " Object-based Storage Device " } ,
{ SCSI_DEV_ADC , " Automation/Drive Interface " } ,
{ 0x1E , " Well known logical unit " } ,
{ SCSI_DEV_NOLUN , " Unknown or no device type " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
static const enum_val_t scsi_devtype_options [ ] = {
2012-05-07 22:11:34 +00:00
{ " block " , " Block Device " , SCSI_DEV_SBC } ,
{ " sequential " , " Sequential Device " , SCSI_DEV_SSC } ,
{ " objectbased " , " Object Based Storage Device " , SCSI_DEV_OSD } ,
{ " mediumchanger " , " Medium Changer Device " , SCSI_DEV_SMC } ,
{ " cdrom " , " Multimedia Device " , SCSI_DEV_CDROM } ,
2004-05-24 02:25:21 +00:00
{ NULL , NULL , - 1 } ,
2002-02-12 23:52:34 +00:00
} ;
static const value_string scsi_inquiry_vers_val [ ] = {
2012-05-07 22:11:34 +00:00
{ 0x00 , " No Compliance to any Standard " } ,
{ 0x02 , " Compliance to ANSI X3.131:1994 " } ,
{ 0x03 , " Compliance to ANSI X3.301:1997 " } ,
{ 0x04 , " Compliance to SPC-2 " } ,
2013-08-15 02:23:53 +00:00
{ 0x05 , " Compliance to SPC-3 " } ,
{ 0x06 , " Compliance to SPC-4 " } ,
2002-02-12 23:52:34 +00:00
{ 0x80 , " Compliance to ISO/IEC 9316:1995 " } ,
{ 0x82 , " Compliance to ISO/IEC 9316:1995 and to ANSI X3.131:1994 " } ,
{ 0x83 , " Compliance to ISO/IEC 9316:1995 and to ANSI X3.301:1997 " } ,
{ 0x84 , " Compliance to ISO/IEC 9316:1995 and SPC-2 " } ,
{ 0 , NULL } ,
} ;
2003-07-09 03:42:55 +00:00
static const value_string scsi_modesense_medtype_sbc_val [ ] = {
{ 0x00 , " Default " } ,
{ 0x01 , " Flexible disk, single-sided; unspecified medium " } ,
{ 0x02 , " Flexible disk, double-sided; unspecified medium " } ,
{ 0x05 , " Flexible disk, single-sided, single density; 200mm/8in diameter " } ,
{ 0x06 , " Flexible disk, double-sided, single density; 200mm/8in diameter " } ,
{ 0x09 , " Flexible disk, single-sided, double density; 200mm/8in diameter " } ,
{ 0x0A , " Flexible disk, double-sided, double density; 200mm/8in diameter " } ,
{ 0x0D , " Flexible disk, single-sided, single density; 130mm/5.25in diameter " } ,
{ 0x12 , " Flexible disk, double-sided, single density; 130mm/5.25in diameter " } ,
{ 0x16 , " Flexible disk, single-sided, double density; 130mm/5.25in diameter " } ,
{ 0x1A , " Flexible disk, double-sided, double density; 130mm/5.25in diameter " } ,
{ 0x1E , " Flexible disk, double-sided; 90mm/3.5in diameter " } ,
{ 0x40 , " Direct-access magnetic tape, 12 tracks " } ,
{ 0x44 , " Direct-access magnetic tape, 24 tracks " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
static const value_string scsi_verdesc_val [ ] = {
2007-10-03 16:22:50 +00:00
{ 0x0000 , " Version Descriptor Not Supported or No Standard Identified " } ,
2006-04-03 20:12:24 +00:00
{ 0x0020 , " SAM (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x003B , " SAM T10/0994-D revision 18 " } ,
{ 0x003C , " SAM ANSI INCITS 270-1996 " } ,
2002-02-12 23:52:34 +00:00
{ 0x0040 , " SAM-2 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x0054 , " SAM-2 T10/1157-D revision 23 " } ,
{ 0x0055 , " SAM-2 T10/1157-D revision 24 " } ,
{ 0x005C , " SAM-2 ANSI INCITS 366-2003 " } ,
2013-06-11 05:06:36 +00:00
{ 0x005E , " SAM-2 ISO/IEC 14776-412 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0060 , " SAM-3 (no version claimed) " } ,
{ 0x0062 , " SAM-3 T10/1561-D revision 7 " } ,
{ 0x0075 , " SAM-3 T10/1561-D revision 13 " } ,
{ 0x0076 , " SAM-3 T10/1561-D revision 14 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0077 , " SAM-3 ANSI INCITS 402-2005 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0080 , " SAM-4 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0087 , " SAM-4 T10/1683-D revision 13 " } ,
{ 0x008B , " SAM-4 T10/1683-D revision 14 " } ,
{ 0x0090 , " SAM-4 ANSI INCITS 447-2008 " } ,
{ 0x0092 , " SAM-4 ISO/IEC 14776-414 " } ,
{ 0x00A0 , " SAM-5 (no version claimed) " } ,
{ 0x00A2 , " SAM-5 T10/2104-D revision 4 " } ,
2006-04-03 20:12:24 +00:00
{ 0x0120 , " SPC (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x013B , " SPC T10/0995-D revision 11a " } ,
{ 0x013C , " SPC ANSI INCITS 301-1997 " } ,
{ 0x0140 , " MMC (no version claimed) " } ,
{ 0x015B , " MMC T10/1048-D revision 10a " } ,
{ 0x015C , " MMC ANSI INCITS 304-1997 " } ,
{ 0x0160 , " SCC (no version claimed) " } ,
{ 0x017B , " SCC T10/1047-D revision 06c " } ,
{ 0x017C , " SCC ANSI INCITS 276-1997 " } ,
2002-02-12 23:52:34 +00:00
{ 0x0180 , " SBC (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x019B , " SBC T10/0996-D revision 08c " } ,
{ 0x019C , " SBC ANSI INCITS 306-1998 " } ,
{ 0x01A0 , " SMC (no version claimed) " } ,
{ 0x01BB , " SMC T10/0999-D revision 10a " } ,
{ 0x01BC , " SMC ANSI INCITS 314-1998 " } ,
2013-06-11 05:06:36 +00:00
{ 0x01BE , " SMC ISO/IEC 14776-351 " } ,
2007-10-03 16:22:50 +00:00
{ 0x01C0 , " SES (no version claimed) " } ,
{ 0x01DB , " SES T10/1212-D revision 08b " } ,
{ 0x01DC , " SES ANSI INCITS 305-1998 " } ,
{ 0x01DD , " SES T10/1212 revision 08b w/ Amendment ANSI INCITS.305/AM1-2000 " } ,
{ 0x01DE , " SES ANSI INCITS 305-1998 w/ Amendment ANSI INCITS.305/AM1-2000 " } ,
{ 0x01E0 , " SCC-2 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x01FB , " SCC-2 T10/1125-D revision 4 " } ,
2007-10-03 16:22:50 +00:00
{ 0x01FC , " SCC-2 ANSI INCITS 318-1998 " } ,
{ 0x0200 , " SSC (no version claimed) " } ,
{ 0x0201 , " SSC T10/0997-D revision 17 " } ,
{ 0x0207 , " SSC T10/0997-D revision 22 " } ,
{ 0x021C , " SSC ANSI INCITS 335-2000 " } ,
{ 0x0220 , " RBC (no version claimed) " } ,
{ 0x0238 , " RBC T10/1240-D revision 10a " } ,
{ 0x023C , " RBC ANSI INCITS 330-2000 " } ,
{ 0x0240 , " MMC-2 (no version claimed) " } ,
{ 0x0255 , " MMC-2 T10/1228-D revision 11 " } ,
{ 0x025B , " MMC-2 T10/1228-D revision 11a " } ,
{ 0x025C , " MMC-2 ANSI INCITS 333-2000 " } ,
2002-02-12 23:52:34 +00:00
{ 0x0260 , " SPC-2 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x0267 , " SPC-2 T10/1236-D revision 12 " } ,
{ 0x0269 , " SPC-2 T10/1236-D revision 18 " } ,
{ 0x0275 , " SPC-2 T10/1236-D revision 19 " } ,
{ 0x0276 , " SPC-2 T10/1236-D revision 20 " } ,
{ 0x0277 , " SPC-2 ANSI INCITS 351-2001 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0278 , " SPC-2 ISO/IEC 14776-452 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0280 , " OCRW (no version claimed) " } ,
{ 0x029E , " OCRW ISO/IEC 14776-381 " } ,
{ 0x02A0 , " MMC-3 (no version claimed) " } ,
{ 0x02B5 , " MMC-3 T10/1363-D revision 9 " } ,
{ 0x02B6 , " MMC-3 T10/1363-D revision 10g " } ,
{ 0x02B8 , " MMC-3 ANSI INCITS 360-2002 " } ,
{ 0x02E0 , " SMC-2 (no version claimed) " } ,
{ 0x02F5 , " SMC-2 T10/1383-D revision 5 " } ,
{ 0x02FC , " SMC-2 T10/1383-D revision 6 " } ,
{ 0x02FD , " SMC-2 T10/1383-D revision 7 " } ,
{ 0x02FE , " SMC-2 ANSI INCITS 382-2004 " } ,
2002-02-12 23:52:34 +00:00
{ 0x0300 , " SPC-3 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x0301 , " SPC-3 T10/1416-D revision 7 " } ,
{ 0x0307 , " SPC-3 T10/1416-D revision 21 " } ,
{ 0x030F , " SPC-3 T10/1416-D revision 22 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0312 , " SPC-3 T10/1416-D revision 23 " } ,
{ 0x0314 , " SPC-3 ANSI INCITS 408-2005 " } ,
{ 0x0316 , " SPC-3 ISO/IEC 14776-453 " } ,
2006-04-03 20:12:24 +00:00
{ 0x0320 , " SBC-2 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x0322 , " SBC-2 T10/1417-D revision 5a " } ,
{ 0x0324 , " SBC-2 T10/1417-D revision 15 " } ,
{ 0x033B , " SBC-2 T10/1417-D revision 16 " } ,
2013-06-11 05:06:36 +00:00
{ 0x033D , " SBC-2 ANSI INCITS 405-2005 " } ,
{ 0x033E , " SBC-2 ISO/IEC 14776-322 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0340 , " OSD (no version claimed) " } ,
{ 0x0341 , " OSD T10/1355-D revision 0 " } ,
{ 0x0342 , " OSD T10/1355-D revision 7a " } ,
{ 0x0343 , " OSD T10/1355-D revision 8 " } ,
{ 0x0344 , " OSD T10/1355-D revision 9 " } ,
{ 0x0355 , " OSD T10/1355-D revision 10 " } ,
{ 0x0356 , " OSD ANSI INCITS 400-2004 " } ,
{ 0x0360 , " SSC-2 (no version claimed) " } ,
{ 0x0374 , " SSC-2 T10/1434-D revision 7 " } ,
{ 0x0375 , " SSC-2 T10/1434-D revision 9 " } ,
{ 0x037D , " SSC-2 ANSI INCITS 380-2003 " } ,
{ 0x0380 , " BCC (no version claimed) " } ,
{ 0x03A0 , " MMC-4 (no version claimed) " } ,
{ 0x03B0 , " MMC-4 T10/1545-D revision 5 " } ,
2013-06-11 05:06:36 +00:00
{ 0x03B1 , " MMC-4 T10/1545-D revision 5a " } ,
2007-10-03 16:22:50 +00:00
{ 0x03BD , " MMC-4 T10/1545-D revision 3 " } ,
{ 0x03BE , " MMC-4 T10/1545-D revision 3d " } ,
2013-06-11 05:06:36 +00:00
{ 0x03BF , " MMC-4 ANSI INCITS 401-2005 " } ,
2007-10-03 16:22:50 +00:00
{ 0x03C0 , " ADC (no version claimed) " } ,
{ 0x03D5 , " ADC T10/1558-D revision 6 " } ,
{ 0x03D6 , " ADC T10/1558-D revision 7 " } ,
2013-06-11 05:06:36 +00:00
{ 0x03D7 , " ADC ANSI INCITS 403-2005 " } ,
2007-10-03 16:22:50 +00:00
{ 0x03E0 , " SES-2 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x03E1 , " SES-2 T10/1559-D revision 16 " } ,
{ 0x03E7 , " SES-2 T10/1559-D revision 19 " } ,
{ 0x03EB , " SES-2 T10/1559-D revision 20 " } ,
{ 0x03F0 , " SES-2 ANSI INCITS 448-2008 " } ,
{ 0x03F2 , " SES-2 ISO/IEC 14776-372 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0400 , " SSC-3 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0403 , " SSC-3 T10/1611-D revision 04a " } ,
{ 0x0407 , " SSC-3 T10/1611-D revision 5 " } ,
{ 0x0409 , " SSC-3 ANSI INCITS 467-2011 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0420 , " MMC-5 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x042F , " MMC-5 T10/1675-D revision 3 " } ,
{ 0x0431 , " MMC-5 T10/1675-D revision 03b " } ,
{ 0x0432 , " MMC-5 T10/1675-D revision 4 " } ,
{ 0x0434 , " MMC-5 ANSI INCITS 430-2007 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0440 , " OSD-2 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0444 , " OSD-2 T10/1729-D revision 4 " } ,
{ 0x0446 , " OSD-2 T10/1729-D revision 5 " } ,
{ 0x0448 , " OSD-2 ANSI INCITS 458-2011 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0460 , " SPC-4 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0461 , " SPC-4 T10/BSR INCITS 513 revision 16 " } ,
{ 0x0462 , " SPC-4 T10/BSR INCITS 513 revision 18 " } ,
{ 0x0463 , " SPC-4 T10/BSR INCITS 513 revision 23 " } ,
{ 0x0466 , " SPC-4 T10/BSR INCITS 513 revision 36 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0480 , " SMC-3 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0482 , " SMC-3 T10/1730-D revision 15 " } ,
{ 0x0484 , " SMC-3 T10/1730-D revision 16 " } ,
{ 0x0486 , " SMC-3 ANSI INCITS 484-2012 " } ,
2007-10-03 16:22:50 +00:00
{ 0x04A0 , " ADC-2 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x04A7 , " ADC-2 T10/1741-D revision 7 " } ,
{ 0x04AA , " ADC-2 T10/1741-D revision 8 " } ,
{ 0x04AC , " ADC-2 ANSI INCITS 441-2008 " } ,
{ 0x04C0 , " SBC-3 (no version claimed) " } ,
{ 0x04C3 , " SBC-3 T10/BSR INCITS 514 revision 35 " } ,
{ 0x04E0 , " MMC-6 (no version claimed) " } ,
{ 0x04E3 , " MMC-6 T10/1836-D revision 02b " } ,
{ 0x04E5 , " MMC-6 T10/1836-D revision 02g " } ,
{ 0x04E6 , " MMC-6 ANSI INCITS 468-2010 " } ,
{ 0x04E7 , " MMC-6 ANSI INCITS 468-2010 + MMC-6/AM1 ANSI " } ,
{ 0x0500 , " ADC-3 (no version claimed) " } ,
{ 0x0502 , " ADC-3 T10/1895-D revision 4 " } ,
{ 0x0504 , " ADC-3 T10/1895-D revision 5 " } ,
{ 0x0506 , " ADC-3 T10/1895-D revision 05a " } ,
{ 0x050A , " ADC-3 ANSI INCITS 497-2012 " } ,
{ 0x0520 , " SSC-4 (no version claimed) " } ,
{ 0x0523 , " SSC-4 T10/BSR INCITS 516 revision 2 " } ,
{ 0x0560 , " OSD-3 (no version claimed) " } ,
{ 0x0580 , " SES-3 (no version claimed) " } ,
{ 0x05A0 , " SSC-5 (no version claimed) " } ,
{ 0x05C0 , " SPC-5 (no version claimed) " } ,
{ 0x05E0 , " SFSC (no version claimed) " } ,
{ 0x0600 , " SBC-4 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x0820 , " SSA-TL2 (no version claimed) " } ,
{ 0x083B , " SSA-TL2 T10.1/1147-D revision 05b " } ,
{ 0x083C , " SSA-TL2 ANSI INCITS 308-1998 " } ,
{ 0x0840 , " SSA-TL1 (no version claimed) " } ,
{ 0x085B , " SSA-TL1 T10.1/0989-D revision 10b " } ,
{ 0x085C , " SSA-TL1 ANSI INCITS 295-1996 " } ,
{ 0x0860 , " SSA-S3P (no version claimed) " } ,
{ 0x087B , " SSA-S3P T10.1/1051-D revision 05b " } ,
{ 0x087C , " SSA-S3P ANSI INCITS 309-1998 " } ,
{ 0x0880 , " SSA-S2P (no version claimed) " } ,
{ 0x089B , " SSA-S2P T10.1/1121-D revision 07b " } ,
{ 0x089C , " SSA-S2P ANSI INCITS 294-1996 " } ,
{ 0x08A0 , " SIP (no version claimed) " } ,
{ 0x08BB , " SIP T10/0856-D revision 10 " } ,
{ 0x08BC , " SIP ANSI INCITS 292-1997 " } ,
{ 0x08C0 , " FCP (no version claimed) " } ,
{ 0x08DB , " FCP T10/0993-D revision 12 " } ,
{ 0x08DC , " FCP ANSI INCITS 269-1996 " } ,
{ 0x08E0 , " SBP-2 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x08FB , " SBP-2 T10/1155-D revision 4 " } ,
{ 0x08FC , " SBP-2 ANSI INCITS 325-1998 " } ,
2006-04-03 20:12:24 +00:00
{ 0x0900 , " FCP-2 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x0901 , " FCP-2 T10/1144-D revision 4 " } ,
{ 0x0915 , " FCP-2 T10/1144-D revision 7 " } ,
{ 0x0916 , " FCP-2 T10/1144-D revision 7a " } ,
{ 0x0917 , " FCP-2 ANSI INCITS 350-2003 " } ,
{ 0x0918 , " FCP-2 T10/1144-D revision 8 " } ,
{ 0x0920 , " SST (no version claimed) " } ,
{ 0x0935 , " SST T10/1380-D revision 8b " } ,
{ 0x0940 , " SRP (no version claimed) " } ,
{ 0x0954 , " SRP T10/1415-D revision 10 " } ,
{ 0x0955 , " SRP T10/1415-D revision 16a " } ,
{ 0x095C , " SRP ANSI INCITS 365-2002 " } ,
2002-02-12 23:52:34 +00:00
{ 0x0960 , " iSCSI (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x0980 , " SBP-3 (no version claimed) " } ,
{ 0x0982 , " SBP-3 T10/1467-D revision 1f " } ,
{ 0x0994 , " SBP-3 T10/1467-D revision 3 " } ,
{ 0x099A , " SBP-3 T10/1467-D revision 4 " } ,
{ 0x099B , " SBP-3 T10/1467-D revision 5 " } ,
{ 0x099C , " SBP-3 ANSI INCITS 375-2004 " } ,
{ 0x09C0 , " ADP (no version claimed) " } ,
{ 0x09E0 , " ADT (no version claimed) " } ,
{ 0x09F9 , " ADT T10/1557-D revision 11 " } ,
{ 0x09FA , " ADT T10/1557-D revision 14 " } ,
2013-06-11 05:06:36 +00:00
{ 0x09FD , " ADT ANSI INCITS 406-2005 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0A00 , " FCP-3 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0A07 , " FCP-3 T10/1560-D revision 3f " } ,
{ 0x0A0F , " FCP-3 T10/1560-D revision 4 " } ,
{ 0x0A11 , " FCP-3 ANSI INCITS 416-2006 " } ,
{ 0x0A1C , " FCP-3 ISO/IEC 14776-223 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0A20 , " ADT-2 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0A22 , " ADT-2 T10/1742-D revision 6 " } ,
{ 0x0A27 , " ADT-2 T10/1742-D revision 8 " } ,
{ 0x0A28 , " ADT-2 T10/1742-D revision 9 " } ,
{ 0x0A2B , " ADT-2 ANSI INCITS 472-2011 " } ,
{ 0x0A40 , " FCP-4 (no version claimed) " } ,
{ 0x0A42 , " FCP-4 T10/1828-D revision 1 " } ,
{ 0x0A44 , " FCP-4 T10/1828-D revision 2 " } ,
{ 0x0A45 , " FCP-4 T10/1828-D revision 02b " } ,
{ 0x0A46 , " FCP-4 ANSI INCITS 481-2012 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0AA0 , " SPI (no version claimed) " } ,
{ 0x0AB9 , " SPI T10/0855-D revision 15a " } ,
{ 0x0ABA , " SPI ANSI INCITS 253-1995 " } ,
{ 0x0ABB , " SPI T10/0855-D revision 15a with SPI Amnd revision 3a " } ,
{ 0x0ABC , " SPI ANSI INCITS 253-1995 with SPI Amnd ANSI INCITS 253/AM1-1998 " } ,
{ 0x0AC0 , " Fast-20 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0ADB , " Fast-20 T10/1071 revision 6 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0ADC , " Fast-20 ANSI INCITS 277-1996 " } ,
{ 0x0AE0 , " SPI-2 (no version claimed) " } ,
{ 0x0AFB , " SPI-2 T10/1142-D revision 20b " } ,
{ 0x0AFC , " SPI-2 ANSI INCITS 302-1999 " } ,
{ 0x0B00 , " SPI-3 (no version claimed) " } ,
{ 0x0B18 , " SPI-3 T10/1302-D revision 10 " } ,
{ 0x0B19 , " SPI-3 T10/1302-D revision 13a " } ,
{ 0x0B1A , " SPI-3 T10/1302-D revision 14 " } ,
{ 0x0B1C , " SPI-3 ANSI INCITS 336-2000 " } ,
{ 0x0B20 , " EPI (no version claimed) " } ,
{ 0x0B3B , " EPI T10/1134 revision 16 " } ,
{ 0x0B3C , " EPI ANSI INCITS TR-23 1999 " } ,
{ 0x0B40 , " SPI-4 (no version claimed) " } ,
{ 0x0B54 , " SPI-4 T10/1365-D revision 7 " } ,
{ 0x0B55 , " SPI-4 T10/1365-D revision 9 " } ,
{ 0x0B56 , " SPI-4 ANSI INCITS 362-2002 " } ,
{ 0x0B59 , " SPI-4 T10/1365-D revision 10 " } ,
{ 0x0B60 , " SPI-5 (no version claimed) " } ,
{ 0x0B79 , " SPI-5 T10/1525-D revision 3 " } ,
{ 0x0B7A , " SPI-5 T10/1525-D revision 5 " } ,
{ 0x0B7B , " SPI-5 T10/1525-D revision 6 " } ,
{ 0x0B7C , " SPI-5 ANSI INCITS 367-2003 " } ,
{ 0x0BE0 , " SAS (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0BE1 , " SAS T10/1562-D revision 1 " } ,
{ 0x0BF5 , " SAS T10/1562-D revision 3 " } ,
{ 0x0BFA , " SAS T10/1562-D revision 4 " } ,
{ 0x0BFB , " SAS T10/1562-D revision 4 " } ,
{ 0x0BFC , " SAS T10/1562-D revision 5 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0BFD , " SAS ANSI INCITS 376-2003 " } ,
{ 0x0C00 , " SAS-1.1 (no version claimed) " } ,
{ 0x0C07 , " SAS-1.1 T10/1601-D revision 9 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0C0F , " SAS-1.1 T10/1601-D revision 10 " } ,
{ 0x0C11 , " SAS-1.1 ANSI INCITS 417-2006 " } ,
{ 0x0C12 , " SAS-1.1 ISO/IEC 14776-151 " } ,
{ 0x0C20 , " SAS-2 (no version claimed) " } ,
{ 0x0C23 , " SAS-2 T10/1760-D revision 14 " } ,
{ 0x0C27 , " SAS-2 T10/1760-D revision 15 " } ,
{ 0x0C28 , " SAS-2 T10/1760-D revision 16 " } ,
{ 0x0C2A , " SAS-2 ANSI INCITS 457-2010 " } ,
{ 0x0C40 , " SAS-2.1 (no version claimed) " } ,
{ 0x0C48 , " SAS-2.1 T10/2125-D revision 4 " } ,
{ 0x0C4A , " SAS-2.1 T10/2125-D revision 6 " } ,
{ 0x0C4B , " SAS-2.1 T10/2125-D revision 7 " } ,
{ 0x0C4E , " SAS-2.1 ANSI INCITS 478-2011 " } ,
{ 0x0C60 , " SAS-3 (no version claimed) " } ,
{ 0x0C63 , " SAS-3 T10/BSR INCITS 519 revision 05a " } ,
2007-10-03 16:22:50 +00:00
{ 0x0D20 , " FC-PH (no version claimed) " } ,
{ 0x0D3B , " FC-PH ANSI INCITS 230-1994 " } ,
{ 0x0D3C , " FC-PH ANSI INCITS 230-1994 with Amnd 1 ANSI INCITS 230/AM1-1996 " } ,
{ 0x0D40 , " FC-AL (no version claimed) " } ,
{ 0x0D5C , " FC-AL ANSI INCITS 272-1996 " } ,
{ 0x0D60 , " FC-AL-2 (no version claimed) " } ,
{ 0x0D61 , " FC-AL-2 T11/1133-D revision 7.0 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0D63 , " FC-AL-2 ANSI INCITS 332-1999 with AM1-2003 & AM2-2006 " } ,
{ 0x0D64 , " FC-AL-2 ANSI INCITS 332-1999 with Amnd 2 AM2-2006 " } ,
{ 0x0D65 , " FC-AL-2 ISO/IEC 14165-122 with AM1 & AM2 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0D7C , " FC-AL-2 ANSI INCITS 332-1999 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0D7D , " FC-AL-2 ANSI INCITS 332-1999 with Amnd 1 AM1-2003 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0D80 , " FC-PH-3 (no version claimed) " } ,
{ 0x0D9C , " FC-PH-3 ANSI INCITS 303-1998 " } ,
{ 0x0DA0 , " FC-FS (no version claimed) " } ,
{ 0x0DB7 , " FC-FS T11/1331-D revision 1.2 " } ,
{ 0x0DB8 , " FC-FS T11/1331-D revision 1.7 " } ,
{ 0x0DBC , " FC-FS ANSI INCITS 373-2003 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0DBD , " FC-FS ISO/IEC 14165-251 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0DC0 , " FC-PI (no version claimed) " } ,
{ 0x0DDC , " FC-PI ANSI INCITS 352-2002 " } ,
{ 0x0DE0 , " FC-PI-2 (no version claimed) " } ,
{ 0x0DE2 , " FC-PI-2 T11/1506-D revision 5.0 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0DE4 , " FC-PI-2 ANSI INCITS 404-2006 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0E00 , " FC-FS-2 (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0E02 , " FC-FS-2 ANSI INCITS 242-2007 " } ,
{ 0x0E03 , " FC-FS-2 ANSI INCITS 242-2007 with AM1 ANSI INCITS 242/AM1-2007 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0E20 , " FC-LS (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x0E21 , " FC-LS T11/1620-D revision 1.62 " } ,
{ 0x0E29 , " FC-LS ANSI INCITS 433-2007 " } ,
2007-10-03 16:22:50 +00:00
{ 0x0E40 , " FC-SP (no version claimed) " } ,
{ 0x0E42 , " FC-SP T11/1570-D revision 1.6 " } ,
2013-06-11 05:06:36 +00:00
{ 0x0E45 , " FC-SP ANSI INCITS 426-2007 " } ,
{ 0x0E60 , " FC-PI-3 (no version claimed) " } ,
{ 0x0E62 , " FC-PI-3 T11/1625-D revision 2.0 " } ,
{ 0x0E68 , " FC-PI-3 T11/1625-D revision 2.1 " } ,
{ 0x0E6A , " FC-PI-3 T11/1625-D revision 4.0 " } ,
{ 0x0E6E , " FC-PI-3 ANSI INCITS 460-2011 " } ,
{ 0x0E80 , " FC-PI-4 (no version claimed) " } ,
{ 0x0E82 , " FC-PI-4 T11/1647-D revision 8.0 " } ,
{ 0x0E88 , " FC-PI-4 ANSI INCITS 450-2009 " } ,
{ 0x0EA0 , " FC 10GFC (no version claimed) " } ,
{ 0x0EA2 , " FC 10GFC ANSI INCITS 364-2003 " } ,
{ 0x0EA3 , " FC 10GFC ISO/IEC 14165-116 " } ,
{ 0x0EA5 , " FC 10GFC ISO/IEC 14165-116 with AM1 " } ,
{ 0x0EA6 , " FC 10GFC ANSI INCITS 364-2003 with AM1 ANSI INCITS 364/AM1-2007 " } ,
{ 0x0EC0 , " FC-SP-2 (no version claimed) " } ,
{ 0x0EE0 , " FC-FS-3 (no version claimed) " } ,
{ 0x0EE2 , " FC-FS-3 T11/1861-D revision 0.9 " } ,
{ 0x0EE7 , " FC-FS-3 T11/1861-D revision 1.0 " } ,
{ 0x0EE9 , " FC-FS-3 T11/1861-D revision 1.10 " } ,
{ 0x0EEB , " FC-FS-3 ANSI INCITS 470-2011 " } ,
{ 0x0F00 , " FC-LS-2 (no version claimed) " } ,
{ 0x0F03 , " FC-LS-2 T11/2103-D revision 2.11 " } ,
{ 0x0F05 , " FC-LS-2 T11/2103-D revision 2.21 " } ,
{ 0x0F07 , " FC-LS-2 ANSI INCITS 477-2011 " } ,
{ 0x0F20 , " FC-PI-5 (no version claimed) " } ,
{ 0x0F27 , " FC-PI-5 T11/2118-D revision 2.00 " } ,
{ 0x0F28 , " FC-PI-5 T11/2118-D revision 3.00 " } ,
{ 0x0F2A , " FC-PI-5 T11/2118-D revision 6.00 " } ,
{ 0x0F2B , " FC-PI-5 T11/2118-D revision 6.10 " } ,
{ 0x0F2E , " FC-PI-5 ANSI INCITS 479-2011 " } ,
{ 0x0F40 , " FC-PI-6 (no version claimed) " } ,
{ 0x0F60 , " FC-FS-4 (no version claimed) " } ,
{ 0x0F80 , " FC-LS-3 (no version claimed) " } ,
{ 0x12A0 , " FC-SCM (no version claimed) " } ,
{ 0x12A3 , " FC-SCM T11/1824DT revision 1.0 " } ,
{ 0x12A5 , " FC-SCM T11/1824DT revision 1.1 " } ,
{ 0x12A7 , " FC-SCM T11/1824DT revision 1.4 " } ,
{ 0x12AA , " FC-SCM INCITS TR-47 2012 " } ,
{ 0x12C0 , " FC-DA-2 (no version claimed) " } ,
{ 0x12C3 , " FC-DA-2 T11/1870DT revision 1.04 " } ,
{ 0x12C5 , " FC-DA-2 T11/1870DT revision 1.06 " } ,
{ 0x12C9 , " FC-DA-2 INCITS TR-49 2012 " } ,
2007-10-03 16:22:50 +00:00
{ 0x12E0 , " FC-DA (no version claimed) " } ,
{ 0x12E2 , " FC-DA T11/1513-DT revision 3.1 " } ,
2013-06-11 05:06:36 +00:00
{ 0x12E8 , " FC-DA ANSI INCITS TR-36 2004 " } ,
{ 0x12E9 , " FC-DA ISO/IEC 14165-341 " } ,
2007-10-03 16:22:50 +00:00
{ 0x1300 , " FC-Tape (no version claimed) " } ,
{ 0x1301 , " FC-Tape T11/1315 revision 1.16 " } ,
{ 0x131B , " FC-Tape T11/1315 revision 1.17 " } ,
{ 0x131C , " FC-Tape ANSI INCITS TR-24 1999 " } ,
2006-04-03 20:12:24 +00:00
{ 0x1320 , " FC-FLA (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x133B , " FC-FLA T11/1235 revision 7 " } ,
{ 0x133C , " FC-FLA ANSI INCITS TR-20 1998 " } ,
2006-04-03 20:12:24 +00:00
{ 0x1340 , " FC-PLDA (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x135B , " FC-PLDA T11/1162 revision 2.1 " } ,
{ 0x135C , " FC-PLDA ANSI INCITS TR-19 1998 " } ,
{ 0x1360 , " SSA-PH2 (no version claimed) " } ,
{ 0x137B , " SSA-PH2 T10.1/1145-D revision 09c " } ,
{ 0x137C , " SSA-PH2 ANSI INCITS 293-1996 " } ,
2013-06-11 21:22:58 +00:00
{ 0x1380 , " SSA-PH3 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x139B , " SSA-PH3 T10.1/1146-D revision 05b " } ,
{ 0x139C , " SSA-PH3 ANSI INCITS 307-1998 " } ,
{ 0x14A0 , " IEEE 1394 (no version claimed) " } ,
{ 0x14BD , " ANSI IEEE 1394-1995 " } ,
{ 0x14C0 , " IEEE 1394a (no version claimed) " } ,
{ 0x14E0 , " IEEE 1394b (no version claimed) " } ,
{ 0x15E0 , " ATA/ATAPI-6 (no version claimed) " } ,
{ 0x15FD , " ATA/ATAPI-6 ANSI INCITS 361-2002 " } ,
{ 0x1600 , " ATA/ATAPI-7 (no version claimed) " } ,
{ 0x1602 , " ATA/ATAPI-7 T13/1532-D revision 3 " } ,
2013-06-11 05:06:36 +00:00
{ 0x161C , " ATA/ATAPI-7 ANSI INCITS 397-2005 " } ,
{ 0x161E , " ATA/ATAPI-7 ISO/IEC 24739 " } ,
{ 0x1620 , " ATA/ATAPI-8 ATA8-AAM (no version claimed) " } ,
{ 0x1621 , " ATA/ATAPI-8 ATA8-APT Parallel Transport (no version claimed) " } ,
{ 0x1622 , " ATA/ATAPI-8 ATA8-AST Serial Transport (no version claimed) " } ,
{ 0x1623 , " ATA/ATAPI-8 ATA8-ACS ATA/ATAPI Command Set (no version claimed) " } ,
{ 0x1628 , " ATA/ATAPI-8 ATA8-AAM ANSI INCITS 451-2008 " } ,
{ 0x162A , " ATA/ATAPI-8 ATA8-ACS ANSI INCITS 452-2009 w/Amendment 1 " } ,
2007-10-03 16:22:50 +00:00
{ 0x1728 , " Universal Serial Bus Specification, Revision 1.1 " } ,
{ 0x1729 , " Universal Serial Bus Specification, Revision 2.0 " } ,
{ 0x1730 , " USB Mass Storage Class Bulk-Only Transport, Revision 1.0 " } ,
2013-06-11 05:06:36 +00:00
{ 0x1740 , " UAS (no version claimed) " } ,
{ 0x1743 , " UAS T10/2095-D revision 2 " } ,
{ 0x1747 , " UAS T10/2095-D revision 4 " } ,
{ 0x1748 , " UAS ANSI INCITS 471-2010 " } ,
{ 0x1761 , " ACS-2 (no version claimed) " } ,
{ 0x1762 , " ACS-2 ANSI INCITS 482-2013 " } ,
{ 0x1765 , " ACS-3 (no version claimed) " } ,
{ 0x1780 , " UAS-2 (no version claimed) " } ,
2007-10-03 16:22:50 +00:00
{ 0x1EA0 , " SAT (no version claimed) " } ,
2013-06-11 05:06:36 +00:00
{ 0x1EA7 , " SAT T10/1711-D revision 8 " } ,
{ 0x1EAB , " SAT T10/1711-D revision 9 " } ,
{ 0x1EAD , " SAT ANSI INCITS 431-2007 " } ,
{ 0x1EC0 , " SAT-2 (no version claimed) " } ,
{ 0x1EC4 , " SAT-2 T10/1826-D revision 6 " } ,
{ 0x1EC8 , " SAT-2 T10/1826-D revision 9 " } ,
{ 0x1ECA , " SAT-2 ANSI INCITS 465-2010 " } ,
{ 0x1EE0 , " SAT-3 (no version claimed) " } ,
{ 0x1EE2 , " SAT-3 T10/BSR INCITS 517 revision 4 " } ,
{ 0x1F00 , " SAT-4 (no version claimed) " } ,
{ 0x20A0 , " SPL (no version claimed) " } ,
{ 0x20A3 , " SPL T10/2124-D revision 6a " } ,
{ 0x20A5 , " SPL T10/2124-D revision 7 " } ,
{ 0x20A7 , " SPL ANSI INCITS 476-2011 " } ,
{ 0x20A8 , " SPL ANSI INCITS 476-2011 + SPL AM1 INCITS 476/AM1 2012 " } ,
{ 0x20C0 , " SPL-2 (no version claimed) " } ,
{ 0x20C2 , " SPL-2 T10/BSR INCITS 505 revision 4 " } ,
{ 0x20C4 , " SPL-2 T10/BSR INCITS 505 revision 5 " } ,
{ 0x20E0 , " SPL-3 (no version claimed) " } ,
{ 0x21E0 , " SOP (no version claimed) " } ,
{ 0x21E4 , " SOP T10/BSR INCITS 489 revision 4 " } ,
{ 0x2200 , " PQI (no version claimed) " } ,
{ 0x2204 , " PQI T10/BSR INCITS 490 revision 6 " } ,
{ 0x2220 , " SOP-2 (no version claimed) " } ,
{ 0x2240 , " PQI-2 (no version claimed) " } ,
{ 0xFFC0 , " IEEE 1667 (no version claimed) " } ,
{ 0xFFC1 , " IEEE 1667-2006 " } ,
{ 0xFFC2 , " IEEE 1667-2009 " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2010-10-29 17:48:39 +00:00
static value_string_ext scsi_verdesc_val_ext = VALUE_STRING_EXT_INIT ( scsi_verdesc_val ) ;
2002-02-12 23:52:34 +00:00
/* Command Support Data "Support" field definitions */
static const value_string scsi_cmdt_supp_val [ ] = {
{ 0 , " Data not currently available " } ,
{ 1 , " SCSI Command not supported " } ,
{ 2 , " Reserved " } ,
{ 3 , " SCSI Command supported in conformance with a SCSI standard " } ,
{ 4 , " Vendor Specific " } ,
{ 5 , " SCSI Command supported in a vendor specific manner " } ,
{ 6 , " Vendor Specific " } ,
{ 7 , " Reserved " } ,
{ 0 , NULL } ,
} ;
2010-12-10 15:49:33 +00:00
# define CODESET_BINARY 1
# define CODESET_ASCII 2
2013-08-15 02:23:53 +00:00
# define CODESET_UTF8 3
2003-04-16 19:43:11 +00:00
2006-11-23 09:21:16 +00:00
const value_string scsi_devid_codeset_val [ ] = {
2003-04-16 19:43:11 +00:00
{ 0 , " Reserved " } ,
{ CODESET_BINARY , " Identifier field contains binary values " } ,
{ CODESET_ASCII , " Identifier field contains ASCII graphic codes " } ,
2013-10-13 19:56:52 +00:00
{ CODESET_UTF8 , " Identifier field contains UTF-8 codes " } ,
2003-04-16 19:43:11 +00:00
{ 0 , NULL } ,
2002-02-12 23:52:34 +00:00
} ;
static const value_string scsi_devid_assoc_val [ ] = {
{ 0 , " Identifier is associated with addressed logical/physical device " } ,
{ 1 , " Identifier is associated with the port that received the request " } ,
2013-08-15 02:23:53 +00:00
{ 2 , " Identifier is associated with the SCSI target devices that contains the logical/physical device " } ,
2002-02-12 23:52:34 +00:00
{ 0 , NULL } ,
} ;
2013-08-15 02:23:53 +00:00
# define DEVID_TYPE_VEND_ID_VEND_SPEC_ID 1
2014-03-10 19:04:30 +00:00
# define DEVID_TYPE_WWN 3
2013-08-15 02:23:53 +00:00
2006-11-23 09:21:16 +00:00
const value_string scsi_devid_idtype_val [ ] = {
2002-02-12 23:52:34 +00:00
{ 0 , " Vendor-specific ID (non-globally unique) " } ,
2013-08-15 02:23:53 +00:00
{ DEVID_TYPE_VEND_ID_VEND_SPEC_ID , " Vendor-ID + vendor-specific ID (globally unique) " } ,
2002-02-12 23:52:34 +00:00
{ 2 , " EUI-64 ID " } ,
2014-03-10 19:04:30 +00:00
{ DEVID_TYPE_WWN , " WWN " } ,
2002-02-12 23:52:34 +00:00
{ 4 , " 4-byte Binary Number/Reserved " } ,
{ 0 , NULL } ,
} ;
static const value_string scsi_modesns_mrie_val [ ] = {
{ 0 , " No Reporting of Informational Exception Condition " } ,
{ 1 , " Asynchronous Error Reporting " } ,
{ 2 , " Generate Unit Attention " } ,
{ 3 , " Conditionally Generate Recovered Error " } ,
{ 4 , " Unconditionally Generate Recovered Error " } ,
{ 5 , " Generate No Sense " } ,
{ 6 , " Only Report Informational Exception Condition on Request " } ,
{ 0 , NULL } ,
} ;
static const value_string scsi_modesns_tst_val [ ] = {
{ 0 , " Task Set Per LU For All Initiators " } ,
{ 1 , " Task Set Per Initiator Per LU " } ,
{ 0 , NULL } ,
} ;
static const value_string scsi_modesns_qmod_val [ ] = {
{ 0 , " Restricted reordering " } ,
{ 1 , " Unrestricted reordering " } ,
{ 0 , NULL } ,
} ;
static const true_false_string scsi_modesns_qerr_val = {
" All blocked tasks shall be aborted on CHECK CONDITION " ,
" Blocked tasks shall resume after ACA/CA is cleared " ,
} ;
2010-12-10 15:49:33 +00:00
static const true_false_string scsi_spec_i_pt_tfs = {
" Specify Initiator Ports is set " ,
" Specify Initiator Ports is not set "
} ;
static const true_false_string scsi_all_tg_pt_tfs = {
" All Target Ports is set " ,
" All Target Ports is not set "
} ;
static const true_false_string scsi_aptpl_tfs = {
" Active Persist Through Power Loss is set " ,
2011-01-16 20:51:21 +00:00
" Active Persist Through Power Loss is not set "
2010-12-10 15:49:33 +00:00
} ;
2010-12-06 22:00:08 +00:00
static const true_false_string scsi_naca_tfs = {
" Normal ACA is set " ,
" Normal ACA is not set "
} ;
2006-04-03 00:55:21 +00:00
static const true_false_string normaca_tfs = {
" NormACA is SUPPORTED " ,
" Normaca is NOT supported " ,
} ;
2006-04-03 01:44:56 +00:00
static const true_false_string sccs_tfs = {
" SCC is SUPPORTED " ,
" Scc is NOT supported " ,
} ;
static const true_false_string acc_tfs = {
" Access Control Coordinator is SUPPORTED " ,
" Access control coordinator NOT supported " ,
} ;
2006-04-03 02:40:07 +00:00
static const true_false_string bque_tfs = {
" BQUE is SUPPORTED " ,
" Bque is NOT supported " ,
} ;
static const true_false_string encserv_tfs = {
" Enclosed Services is SUPPORTED " ,
" Enclosed services is NOT supported " ,
} ;
2006-04-03 03:19:52 +00:00
static const true_false_string reladr_tfs = {
" Relative Addressing mode is SUPPORTED " ,
" Relative addressing mode is NOT supported " ,
} ;
2013-10-23 06:29:11 +00:00
#if 0
2006-04-03 20:12:24 +00:00
static const true_false_string sync_tfs = {
" Synchronous data transfer is SUPPORTED " ,
" Synchronous data transfer is NOT supported " ,
} ;
2013-10-23 06:29:11 +00:00
# endif
2006-04-03 20:12:24 +00:00
2006-04-03 03:19:52 +00:00
static const true_false_string linked_tfs = {
" Linked Commands are SUPPORTED " ,
" Linked commands are NOT supported " ,
} ;
static const true_false_string cmdque_tfs = {
" Command queuing is SUPPORTED " ,
" Command queuing is NOT supported " ,
2006-04-03 02:40:07 +00:00
} ;
static const true_false_string multip_tfs = {
" This is a MULTIPORT device " ,
" This is NOT a multiport device " ,
} ;
static const true_false_string mchngr_tfs = {
" This device is attached to a MEDIUMCHANGER " ,
" This is a normal device " ,
} ;
2006-04-03 01:44:56 +00:00
static const true_false_string tpc_tfs = {
" Third Party Copy is SUPPORTED " ,
" Third party copy is NOT supported " ,
} ;
static const true_false_string protect_tfs = {
" Protection Information is SUPPORTED " ,
" Protection information NOT supported " ,
} ;
2006-04-03 00:55:21 +00:00
static const true_false_string hisup_tfs = {
" Hierarchical Addressing Mode is SUPPORTED " ,
" Hierarchical addressing mode is NOT supported " ,
} ;
static const true_false_string aerc_tfs = {
" Async Event Reporting Capability is SUPPORTED " ,
" Async event reporting capability is NOT supported " ,
} ;
static const true_false_string trmtsk_tfs = {
" Terminate Task management functions are SUPPORTED " ,
" Terminate task management functions are NOT supported " ,
} ;
2005-05-14 17:41:07 +00:00
static const true_false_string scsi_removable_val = {
" This is a REMOVABLE device " ,
" This device is NOT removable " ,
} ;
2002-02-12 23:52:34 +00:00
static const true_false_string scsi_modesns_tas_val = {
" Terminated tasks aborted without informing initiators " ,
" Tasks aborted by another initiator terminated with TASK ABORTED " ,
} ;
static const true_false_string scsi_modesns_rac_val = {
" Report a CHECK CONDITION Instead of Long Busy Condition " ,
" Long Busy Conditions Maybe Reported " ,
} ;
/* SCSI Transport Protocols */
# define SCSI_PROTO_FCP 0
# define SCSI_PROTO_iSCSI 5
static const value_string scsi_proto_val [ ] = {
{ 0 , " FCP " } ,
{ 5 , " iSCSI " } ,
{ 0 , NULL } ,
} ;
static const value_string scsi_fcp_rrtov_val [ ] = {
{ 0 , " No Timer Specified " } ,
{ 1 , " 0.001 secs " } ,
{ 3 , " 0.1 secs " } ,
{ 5 , " 10 secs " } ,
{ 0 , NULL } ,
} ;
static const value_string scsi_sensekey_val [ ] = {
{ 0x0 , " No Sense " } ,
{ 0x1 , " Recovered Error " } ,
{ 0x2 , " Not Ready " } ,
{ 0x3 , " Medium Error " } ,
{ 0x4 , " Hardware Error " } ,
{ 0x5 , " Illegal Request " } ,
{ 0x6 , " Unit Attention " } ,
{ 0x7 , " Data Protection " } ,
{ 0x8 , " Blank Check " } ,
{ 0x9 , " Vendor Specific " } ,
{ 0xA , " Copy Aborted " } ,
{ 0xB , " Command Aborted " } ,
{ 0xC , " Obsolete Error Code " } ,
{ 0xD , " Overflow Command " } ,
{ 0xE , " Miscompare " } ,
{ 0xF , " Reserved " } ,
{ 0 , NULL } ,
} ;
2013-06-11 21:22:58 +00:00
static const value_string scsi_sense_desc_type_val [ ] = {
{ 0x00 , " Information " } ,
{ 0x01 , " Command specific information " } ,
{ 0x02 , " Sense key specific " } ,
{ 0x03 , " Field replaceable unit " } ,
{ 0x04 , " Stream commands " } ,
{ 0x05 , " Block commands " } ,
{ 0x06 , " OSD object identification " } ,
{ 0x07 , " OSD response integrity check value " } ,
{ 0x08 , " OSD attribute identification " } ,
{ 0x09 , " ATA Status " } ,
{ 0x0A , " Another progress indication " } ,
{ 0x0B , " User data segment referral " } ,
{ 0x0C , " Forwarded sense data " } ,
{ 0 , NULL } ,
} ;
2013-06-12 05:15:45 +00:00
static const value_string scsi_sense_sks_fp_cd_val [ ] = {
{ 0 , " illegal parameter in the Data-Out buffer " } ,
{ 1 , " illegal parameter in the CDB " } ,
{ 0 , NULL } ,
} ;
2002-02-12 23:52:34 +00:00
static const value_string scsi_sns_errtype_val [ ] = {
{ 0x70 , " Current Error " } ,
{ 0x71 , " Deferred Error " } ,
2006-03-04 10:10:48 +00:00
{ 0x72 , " Current Error " } ,
{ 0x73 , " Deferred Error " } ,
2002-02-12 23:52:34 +00:00
{ 0x7F , " Vendor Specific " } ,
{ 0 , NULL } ,
} ;
2013-12-26 09:54:12 +00:00
/* All can be found @ http://www.t10.org/lists/asc-alph.txt or http://www.t10.org/lists/asc-num.txt */
2010-10-29 17:48:39 +00:00
static const value_string scsi_asc_val [ ] = {
2002-02-12 23:52:34 +00:00
{ 0x0000 , " No Additional Sense Information " } ,
2006-09-28 15:57:54 +00:00
{ 0x0001 , " Filemark Detected " } ,
{ 0x0002 , " End Of Partition/Medium Detected " } ,
{ 0x0003 , " Setmark Detected " } ,
{ 0x0004 , " Beginning Of Partition Detected " } ,
2013-07-03 16:42:00 +00:00
{ 0x0005 , " End Of Data Detected " } ,
{ 0x0006 , " I/O Process Terminated " } ,
2002-02-12 23:52:34 +00:00
{ 0x0016 , " Operation In Progress " } ,
{ 0x0017 , " Cleaning Requested " } ,
2006-09-28 15:57:54 +00:00
{ 0x0018 , " Erase Operation In Progress " } ,
{ 0x0019 , " Locate Operation In Progress " } ,
{ 0x001A , " Rewind Operation In Progress " } ,
{ 0x001B , " Set Capacity Operation In Progress " } ,
{ 0x001C , " Verify operation in progress " } ,
2002-02-12 23:52:34 +00:00
{ 0x0100 , " No Index/Sector Signal " } ,
{ 0x0200 , " No Seek Complete " } ,
{ 0x0300 , " Peripheral Device Write Fault " } ,
{ 0x0400 , " Logical Unit Not Ready, Cause Not Reportable " } ,
{ 0x0401 , " Logical Unit Is In Process Of Becoming Ready " } ,
{ 0x0402 , " Logical Unit Not Ready, Initializing Cmd. Required " } ,
{ 0x0403 , " Logical Unit Not Ready, Manual Intervention Required " } ,
{ 0x0404 , " Logical Unit Not Ready, Format In Progress " } ,
{ 0x0405 , " Logical Unit Not Ready, Rebuild In Progress " } ,
{ 0x0406 , " Logical Unit Not Ready, Recalculation In Progress " } ,
{ 0x0407 , " Logical Unit Not Ready, Operation In Progress " } ,
{ 0x0409 , " Logical Unit Not Ready, Self-Test In Progress " } ,
{ 0x0500 , " Logical Unit Does Not Respond To Selection " } ,
{ 0x0600 , " No Reference Position Found " } ,
{ 0x0700 , " Multiple Peripheral Devices Selected " } ,
{ 0x0800 , " Logical Unit Communication Failure " } ,
{ 0x0801 , " Logical Unit Communication Time-Out " } ,
{ 0x0802 , " Logical Unit Communication Parity Error " } ,
{ 0x0803 , " Logical Unit Communication Crc Error (Ultra-Dma/32) " } ,
{ 0x0804 , " Unreachable Copy Target " } ,
{ 0x0900 , " Track Following Error " } ,
{ 0x0904 , " Head Select Fault " } ,
{ 0x0A00 , " Error Log Overflow " } ,
{ 0x0B00 , " Warning " } ,
{ 0x0B01 , " Warning - Specified Temperature Exceeded " } ,
{ 0x0B02 , " Warning - Enclosure Degraded " } ,
{ 0x0C02 , " Write Error - Auto Reallocation Failed " } ,
{ 0x0C03 , " Write Error - Recommend Reassignment " } ,
{ 0x0C04 , " Compression Check Miscompare Error " } ,
{ 0x0C05 , " Data Expansion Occurred During Compression " } ,
{ 0x0C06 , " Block Not Compressible " } ,
{ 0x0D00 , " Error Detected By Third Party Temporary Initiator " } ,
{ 0x0D01 , " Third Party Device Failure " } ,
{ 0x0D02 , " Copy Target Device Not Reachable " } ,
{ 0x0D03 , " Incorrect Copy Target Device Type " } ,
{ 0x0D04 , " Copy Target Device Data Underrun " } ,
{ 0x0D05 , " Copy Target Device Data Overrun " } ,
{ 0x1000 , " Id Crc Or Ecc Error " } ,
{ 0x1100 , " Unrecovered Read Error " } ,
{ 0x1101 , " Read Retries Exhausted " } ,
{ 0x1102 , " Error Too Long To Correct " } ,
{ 0x1103 , " Multiple Read Errors " } ,
{ 0x1104 , " Unrecovered Read Error - Auto Reallocate Failed " } ,
{ 0x110A , " Miscorrected Error " } ,
{ 0x110B , " Unrecovered Read Error - Recommend Reassignment " } ,
{ 0x110C , " Unrecovered Read Error - Recommend Rewrite The Data " } ,
{ 0x110D , " De-Compression Crc Error " } ,
{ 0x110E , " Cannot Decompress Using Declared Algorithm " } ,
{ 0x1200 , " Address Mark Not Found For Id Field " } ,
{ 0x1300 , " Address Mark Not Found For Data Field " } ,
{ 0x1400 , " Recorded Entity Not Found " } ,
{ 0x1401 , " Record Not Found " } ,
{ 0x1405 , " Record Not Found - Recommend Reassignment " } ,
{ 0x1406 , " Record Not Found - Data Auto-Reallocated " } ,
{ 0x1500 , " Random Positioning Error " } ,
{ 0x1501 , " Mechanical Positioning Error " } ,
{ 0x1502 , " Positioning Error Detected By Read Of Medium " } ,
{ 0x1600 , " Data Synchronization Mark Error " } ,
{ 0x1601 , " Data Sync Error - Data Rewritten " } ,
{ 0x1602 , " Data Sync Error - Recommend Rewrite " } ,
{ 0x1603 , " Data Sync Error - Data Auto-Reallocated " } ,
{ 0x1604 , " Data Sync Error - Recommend Reassignment " } ,
{ 0x1700 , " Recovered Data With No Error Correction Applied " } ,
{ 0x1701 , " Recovered Data With Retries " } ,
{ 0x1702 , " Recovered Data With Positive Head Offset " } ,
{ 0x1703 , " Recovered Data With Negative Head Offset " } ,
{ 0x1705 , " Recovered Data Using Previous Sector Id " } ,
{ 0x1706 , " Recovered Data Without Ecc - Data Auto-Reallocated " } ,
{ 0x1707 , " Recovered Data Without Ecc - Recommend Reassignment " } ,
{ 0x1708 , " Recovered Data Without Ecc - Recommend Rewrite " } ,
{ 0x1709 , " Recovered Data Without Ecc - Data Rewritten " } ,
{ 0x1800 , " Recovered Data With Error Correction Applied " } ,
{ 0x1801 , " Recovered Data With Error Corr. & Retries Applied " } ,
{ 0x1802 , " Recovered Data - Data Auto-Reallocated " } ,
{ 0x1805 , " Recovered Data - Recommend Reassignment " } ,
{ 0x1806 , " Recovered Data - Recommend Rewrite " } ,
{ 0x1807 , " Recovered Data With Ecc - Data Rewritten " } ,
{ 0x1900 , " List Error " } ,
{ 0x1901 , " List Not Available " } ,
{ 0x1902 , " List Error In Primary List " } ,
{ 0x1903 , " List Error In Grown List " } ,
{ 0x1A00 , " Parameter List Length Error " } ,
{ 0x1B00 , " Synchronous Data Transfer Error " } ,
{ 0x1C00 , " Defect List Not Found " } ,
{ 0x1C01 , " Primary Defect List Not Found " } ,
{ 0x1C02 , " Grown Defect List Not Found " } ,
{ 0x1D00 , " Miscompare During Verify Operation " } ,
{ 0x1E00 , " Recovered Id With Ecc Correction " } ,
{ 0x1F00 , " Defect List Transfer " } ,
{ 0x2000 , " Invalid Command Operation Code " } ,
{ 0x2100 , " Logical Block Address Out Of Range " } ,
{ 0x2101 , " Invalid Element Address " } ,
{ 0x2400 , " Invalid Field In Cdb " } ,
{ 0x2401 , " Cdb Decryption Error " } ,
{ 0x2500 , " Logical Unit Not Supported " } ,
{ 0x2600 , " Invalid Field In Parameter List " } ,
{ 0x2601 , " Parameter Not Supported " } ,
{ 0x2602 , " Parameter Value Invalid " } ,
{ 0x2603 , " Threshold Parameters Not Supported " } ,
{ 0x2604 , " Invalid Release Of Persistent Reservation " } ,
{ 0x2605 , " Data Decryption Error " } ,
{ 0x2606 , " Too Many Target Descriptors " } ,
{ 0x2607 , " Unsupported Target Descriptor Type Code " } ,
{ 0x2608 , " Too Many Segment Descriptors " } ,
{ 0x2609 , " Unsupported Segment Descriptor Type Code " } ,
{ 0x260A , " Unexpected Inexact Segment " } ,
{ 0x260B , " Inline Data Length Exceeded " } ,
{ 0x260C , " Invalid Operation For Copy Source Or Destination " } ,
{ 0x260D , " Copy Segment Granularity Violation " } ,
{ 0x2700 , " Write Protected " } ,
{ 0x2701 , " Hardware Write Protected " } ,
{ 0x2702 , " Logical Unit Software Write Protected " } ,
{ 0x2800 , " Not Ready To Ready Change, Medium May Have Changed " } ,
{ 0x2801 , " Import Or Export Element Accessed " } ,
{ 0x2900 , " Power On, Reset, Or Bus Device Reset Occurred " } ,
{ 0x2901 , " Power On Occurred " } ,
{ 0x2902 , " Scsi Bus Reset Occurred " } ,
{ 0x2903 , " Bus Device Reset Function Occurred " } ,
{ 0x2904 , " Device Internal Reset " } ,
{ 0x2905 , " Transceiver Mode Changed To Single-Ended " } ,
{ 0x2906 , " Transceiver Mode Changed To Lvd " } ,
{ 0x2A00 , " Parameters Changed " } ,
{ 0x2A01 , " Mode Parameters Changed " } ,
{ 0x2A02 , " Log Parameters Changed " } ,
{ 0x2A03 , " Reservations Preempted " } ,
{ 0x2A04 , " Reservations Released " } ,
{ 0x2A05 , " Registrations Preempted " } ,
{ 0x2B00 , " Copy Cannot Execute Since Host Cannot Disconnect " } ,
{ 0x2C00 , " Command Sequence Error " } ,
2013-07-23 10:37:01 +00:00
{ 0x2C0A , " Partition or Collection Contains User Objects " } ,
2002-02-12 23:52:34 +00:00
{ 0x2F00 , " Commands Cleared By Another Initiator " } ,
{ 0x3000 , " Incompatible Medium Installed " } ,
{ 0x3001 , " Cannot Read Medium - Unknown Format " } ,
{ 0x3002 , " Cannot Read Medium - Incompatible Format " } ,
{ 0x3003 , " Cleaning Cartridge Installed " } ,
{ 0x3004 , " Cannot Write Medium - Unknown Format " } ,
{ 0x3005 , " Cannot Write Medium - Incompatible Format " } ,
{ 0x3006 , " Cannot Format Medium - Incompatible Medium " } ,
{ 0x3007 , " Cleaning Failure " } ,
{ 0x3100 , " Medium Format Corrupted " } ,
{ 0x3101 , " Format Command Failed " } ,
{ 0x3200 , " No Defect Spare Location Available " } ,
{ 0x3201 , " Defect List Update Failure " } ,
{ 0x3400 , " Enclosure Failure " } ,
{ 0x3500 , " Enclosure Services Failure " } ,
{ 0x3501 , " Unsupported Enclosure Function " } ,
{ 0x3502 , " Enclosure Services Unavailable " } ,
{ 0x3503 , " Enclosure Services Transfer Failure " } ,
{ 0x3504 , " Enclosure Services Transfer Refused " } ,
{ 0x3700 , " Rounded Parameter " } ,
2013-12-26 09:54:12 +00:00
{ 0x3807 , " Thin Provisioning Soft Threshold Reached " } ,
2002-02-12 23:52:34 +00:00
{ 0x3900 , " Saving Parameters Not Supported " } ,
{ 0x3A00 , " Medium Not Present " } ,
{ 0x3A01 , " Medium Not Present - Tray Closed " } ,
{ 0x3A02 , " Medium Not Present - Tray Open " } ,
{ 0x3A03 , " Medium Not Present - Loadable " } ,
{ 0x3A04 , " Medium Not Present - Medium Auxiliary Memory Accessible " } ,
{ 0x3B0D , " Medium Destination Element Full " } ,
{ 0x3B0E , " Medium Source Element Empty " } ,
{ 0x3B11 , " Medium Magazine Not Accessible " } ,
{ 0x3B12 , " Medium Magazine Removed " } ,
{ 0x3B13 , " Medium Magazine Inserted " } ,
{ 0x3B14 , " Medium Magazine Locked " } ,
{ 0x3B15 , " Medium Magazine Unlocked " } ,
{ 0x3D00 , " Invalid Bits In Identify Message " } ,
{ 0x3E00 , " Logical Unit Has Not Self-Configured Yet " } ,
{ 0x3E01 , " Logical Unit Failure " } ,
{ 0x3E02 , " Timeout On Logical Unit " } ,
{ 0x3E03 , " Logical Unit Failed Self-Test " } ,
{ 0x3E04 , " Logical Unit Unable To Update Self-Test Log " } ,
{ 0x3F00 , " Target Operating Conditions Have Changed " } ,
{ 0x3F01 , " Microcode Has Been Changed " } ,
{ 0x3F02 , " Changed Operating Definition " } ,
{ 0x3F03 , " Inquiry Data Has Changed " } ,
{ 0x3F04 , " Component Device Attached " } ,
{ 0x3F05 , " Device Identifier Changed " } ,
{ 0x3F06 , " Redundancy Group Created Or Modified " } ,
{ 0x3F07 , " Redundancy Group Deleted " } ,
{ 0x3F08 , " Spare Created Or Modified " } ,
{ 0x3F09 , " Spare Deleted " } ,
{ 0x3F0A , " Volume Set Created Or Modified " } ,
{ 0x3F0B , " Volume Set Deleted " } ,
{ 0x3F0C , " Volume Set Deassigned " } ,
{ 0x3F0D , " Volume Set Reassigned " } ,
{ 0x3F0E , " Reported Luns Data Has Changed " } ,
{ 0x3F0F , " Echo Buffer Overwritten " } ,
{ 0x3F10 , " Medium Loadable " } ,
{ 0x3F11 , " Medium Auxiliary Memory Accessible " } ,
{ 0x4200 , " Self-Test Failure (Should Use 40 Nn) " } ,
{ 0x4300 , " Message Error " } ,
{ 0x4400 , " Internal Target Failure " } ,
{ 0x4500 , " Select Or Reselect Failure " } ,
{ 0x4600 , " Unsuccessful Soft Reset " } ,
{ 0x4700 , " Scsi Parity Error " } ,
{ 0x4701 , " Data Phase Crc Error Detected " } ,
{ 0x4702 , " Scsi Parity Error Detected During St Data Phase " } ,
{ 0x4703 , " Information Unit Crc Error Detected " } ,
{ 0x4704 , " Asynchronous Information Protection Error Detected " } ,
{ 0x4800 , " Initiator Detected Error Message Received " } ,
{ 0x4900 , " Invalid Message Error " } ,
{ 0x4A00 , " Command Phase Error " } ,
{ 0x4B00 , " Data Phase Error " } ,
{ 0x4C00 , " Logical Unit Failed Self-Configuration " } ,
{ 0x4D00 , " Tagged Overlapped Commands (Nn = Queue Tag) " } ,
{ 0x4E00 , " Overlapped Commands Attempted " } ,
{ 0x5300 , " Media Load Or Eject Failed " } ,
{ 0x5302 , " Medium Removal Prevented " } ,
{ 0x5501 , " System Buffer Full " } ,
{ 0x5502 , " Insufficient Reservation Resources " } ,
{ 0x5503 , " Insufficient Resources " } ,
{ 0x5504 , " Insufficient Registration Resources " } ,
{ 0x5A00 , " Operator Request Or State Change Input " } ,
{ 0x5A01 , " Operator Medium Removal Request " } ,
{ 0x5A02 , " Operator Selected Write Protect " } ,
{ 0x5A03 , " Operator Selected Write Permit " } ,
{ 0x5B00 , " Log Exception " } ,
{ 0x5B01 , " Threshold Condition Met " } ,
{ 0x5B02 , " Log Counter At Maximum " } ,
{ 0x5B03 , " Log List Codes Exhausted " } ,
{ 0x5C00 , " Change " } ,
{ 0x5C02 , " Synchronized " } ,
{ 0x5D00 , " Failure Prediction Threshold Exceeded " } ,
{ 0x5D10 , " Failure General Hard Drive Failure " } ,
{ 0x5D11 , " Failure Drive Error Rate Too High " } ,
{ 0x5D12 , " Failure Data Error Rate Too High " } ,
{ 0x5D13 , " Failure Seek Error Rate Too High " } ,
{ 0x5D14 , " Failure Too Many Block Reassigns " } ,
{ 0x5D15 , " Failure Access Times Too High " } ,
{ 0x5D16 , " Failure Start Unit Times Too High " } ,
{ 0x5D17 , " Failure Channel Parametrics " } ,
{ 0x5D18 , " Failure Controller Detected " } ,
{ 0x5D19 , " Failure Throughput Performance " } ,
{ 0x5D1A , " Failure Seek Time Performance " } ,
{ 0x5D1B , " Failure Spin-Up Retry Count " } ,
{ 0x5D1C , " Failure Drive Calibration Retry " } ,
{ 0x5D20 , " Failure General Hard Drive Failure " } ,
{ 0x5D21 , " Failure Drive Error Rate Too High " } ,
{ 0x5D22 , " Failure Data Error Rate Too High " } ,
{ 0x5D23 , " Failure Seek Error Rate Too High " } ,
{ 0x5D24 , " Failure Too Many Block Reassigns " } ,
{ 0x5D25 , " Failure Access Times Too High " } ,
{ 0x5D26 , " Failure Start Unit Times Too High " } ,
{ 0x5D27 , " Failure Channel Parametrics " } ,
{ 0x5D28 , " Failure Controller Detected " } ,
{ 0x5D29 , " Failure Throughput Performance " } ,
{ 0x5D2A , " Failure Seek Time Performance " } ,
{ 0x5D2B , " Failure Spin-Up Retry Count " } ,
{ 0x5D2C , " Failure Drive Calibration Retry " } ,
{ 0x5D30 , " Impending Failure General Hard Drive " } ,
{ 0x5D31 , " Impending Failure Drive Error Rate Too High " } ,
{ 0x5D32 , " Impending Failure Data Error Rate Too High " } ,
{ 0x5D33 , " Impending Failure Seek Error Rate Too High " } ,
{ 0x5D34 , " Impending Failure Too Many Block Reassigns " } ,
{ 0x5D35 , " Impending Failure Access Times Too High " } ,
{ 0x5D36 , " Impending Failure Start Unit Times Too High " } ,
{ 0x5D37 , " Impending Failure Channel Parametrics " } ,
{ 0x5D38 , " Impending Failure Controller Detected " } ,
{ 0x5D39 , " Impending Failure Throughput Performance " } ,
{ 0x5D3A , " Impending Failure Seek Time Performance " } ,
{ 0x5D3B , " Impending Failure Spin-Up Retry Count " } ,
{ 0x5D3C , " Impending Failure Drive Calibration Retry " } ,
{ 0x5D40 , " Failure General Hard Drive Failure " } ,
{ 0x5D41 , " Failure Drive Error Rate Too High " } ,
{ 0x5D42 , " Failure Data Error Rate Too High " } ,
{ 0x5D43 , " Failure Seek Error Rate Too High " } ,
{ 0x5D44 , " Failure Too Many Block Reassigns " } ,
{ 0x5D45 , " Failure Access Times Too High " } ,
{ 0x5D46 , " Failure Start Unit Times Too High " } ,
{ 0x5D47 , " Failure Channel Parametrics " } ,
{ 0x5D48 , " Failure Controller Detected " } ,
{ 0x5D49 , " Failure Throughput Performance " } ,
{ 0x5D4A , " Failure Seek Time Performance " } ,
{ 0x5D4B , " Failure Spin-Up Retry Count " } ,
{ 0x5D4C , " Failure Drive Calibration Retry Count " } ,
{ 0x5D50 , " Failure General Hard Drive Failure " } ,
{ 0x5D51 , " Failure Drive Error Rate Too High " } ,
{ 0x5D52 , " Failure Data Error Rate Too High " } ,
{ 0x5D53 , " Failure Seek Error Rate Too High " } ,
{ 0x5D54 , " Failure Too Many Block Reassigns " } ,
{ 0x5D55 , " Failure Access Times Too High " } ,
{ 0x5D56 , " Failure Start Unit Times Too High " } ,
{ 0x5D57 , " Failure Channel Parametrics " } ,
{ 0x5D58 , " Failure Controller Detected " } ,
{ 0x5D59 , " Failure Throughput Performance " } ,
{ 0x5D5A , " Failure Seek Time Performance " } ,
{ 0x5D5B , " Failure Spin-Up Retry Count " } ,
{ 0x5D5C , " Failure Drive Calibration Retry Count " } ,
{ 0x5D60 , " Failure General Hard Drive Failure " } ,
{ 0x5D61 , " Failure Drive Error Rate Too High " } ,
{ 0x5D62 , " Failure Data Error Rate Too High " } ,
{ 0x5D63 , " Failure Seek Error Rate Too High " } ,
{ 0x5D64 , " Failure Too Many Block Reassigns " } ,
{ 0x5D65 , " Failure Access Times Too High " } ,
{ 0x5D66 , " Failure Start Unit Times Too High " } ,
{ 0x5D67 , " Failure Channel Parametrics " } ,
{ 0x5D68 , " Failure Controller Detected " } ,
{ 0x5D69 , " Failure Throughput Performance " } ,
{ 0x5D6A , " Failure Seek Time Performance " } ,
{ 0x5D6B , " Failure Spin-Up Retry Count " } ,
{ 0x5D6C , " Failure Drive Calibration Retry Count " } ,
{ 0x5DFF , " Failure Prediction Threshold Exceeded (False) " } ,
{ 0x5E00 , " Low Power Condition On " } ,
{ 0x5E01 , " Idle Condition Activated By Timer " } ,
{ 0x5E02 , " Standby Condition Activated By Timer " } ,
{ 0x5E03 , " Idle Condition Activated By Command " } ,
{ 0x5E04 , " Standby Condition Activated By Command " } ,
{ 0x6500 , " Voltage Fault " } ,
{ 0 , NULL } ,
} ;
2010-10-29 17:48:39 +00:00
value_string_ext scsi_asc_val_ext = VALUE_STRING_EXT_INIT ( scsi_asc_val ) ;
2002-02-12 23:52:34 +00:00
/* SCSI Status Codes */
const value_string scsi_status_val [ ] = {
{ 0x00 , " Good " } ,
{ 0x02 , " Check Condition " } ,
{ 0x04 , " Condition Met " } ,
{ 0x08 , " Busy " } ,
{ 0x10 , " Intermediate " } ,
{ 0x14 , " Intermediate Condition Met " } ,
{ 0x18 , " Reservation Conflict " } ,
{ 0x28 , " Task Set Full " } ,
{ 0x30 , " ACA Active " } ,
{ 0x40 , " Task Aborted " } ,
{ 0 , NULL } ,
} ;
2003-10-28 03:57:49 +00:00
const value_string scsi_wb_mode_val [ ] = {
{ 0x0 , " Write combined header and data " } ,
{ 0x1 , " Vendor specific " } ,
{ 0x2 , " Write data " } ,
{ 0x3 , " Reserved " } ,
{ 0x4 , " Download microcode " } ,
{ 0x5 , " Download microcode and save " } ,
{ 0x6 , " Download microcode with offsets " } ,
{ 0x7 , " Download microcode with offsets and save " } ,
{ 0x8 , " Reserved " } ,
{ 0x9 , " Reserved " } ,
{ 0xA , " Echo buffer " } ,
{ 0 , NULL } ,
} ;
const value_string scsi_senddiag_st_code_val [ ] = {
{ 0 , " " } ,
{ 0x1 , " Start short self-test in background " } ,
{ 0x2 , " Start extended self-test in background " } ,
{ 0x3 , " Reserved " } ,
{ 0x4 , " Abort background self-test " } ,
{ 0x5 , " Foreground short self-test " } ,
{ 0x6 , " Foreground extended self-test " } ,
{ 0x7 , " Reserved " } ,
{ 0 , NULL } ,
} ;
const true_false_string scsi_senddiag_pf_val = {
" Vendor-specific Page Format " ,
" Standard Page Format " ,
} ;
2002-01-10 01:28:45 +00:00
static gint scsi_def_devtype = SCSI_DEV_SBC ;
2006-04-22 02:16:52 +00:00
typedef struct _cmdset_t {
2012-05-07 22:11:34 +00:00
int hf_opcode ;
2013-12-12 19:26:55 +00:00
value_string_ext * cdb_vals_ext ;
2012-05-07 22:11:34 +00:00
scsi_cdb_table_t * cdb_table ;
2006-04-22 02:16:52 +00:00
} cmdset_t ;
2005-05-28 03:37:16 +00:00
2006-04-22 02:16:52 +00:00
static cmdset_t * get_cmdset_data ( itlq_nexus_t * itlq , itl_nexus_t * itl ) ;
2002-01-10 01:28:45 +00:00
2006-04-22 02:16:52 +00:00
static dissector_handle_t data_handle ;
2002-01-10 01:28:45 +00:00
static void
2012-05-07 22:11:34 +00:00
dissect_scsi_evpd ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , guint tot_len _U_ )
2002-01-10 01:28:45 +00:00
{
proto_tree * evpd_tree ;
proto_item * ti ;
2012-05-07 22:11:34 +00:00
guint pcode , plen , i , idlen ;
2013-08-15 02:23:53 +00:00
guint8 codeset , identifier_type ;
2002-01-10 01:28:45 +00:00
if ( tree ) {
2012-05-07 22:11:34 +00:00
pcode = tvb_get_guint8 ( tvb , offset + 1 ) ;
plen = tvb_get_guint8 ( tvb , offset + 3 ) ;
2014-07-08 18:47:17 +00:00
evpd_tree = proto_tree_add_subtree_format ( tree , tvb , offset , plen + 4 ,
ett_scsi_page , NULL , " Page Code: %s " ,
2012-05-07 22:11:34 +00:00
val_to_str ( pcode , scsi_evpd_pagecode_val ,
" Unknown (0x%08x) " ) ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_inq_qualifier , tvb , offset ,
1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_inq_devtype , tvb , offset ,
1 , ENC_BIG_ENDIAN ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_evpd_page , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_page_length , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
offset + = 4 ;
switch ( pcode ) {
case SCSI_EVPD_SUPPPG :
for ( i = 0 ; i < plen ; i + + ) {
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_supported_page , tvb , offset + i , 1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
break ;
case SCSI_EVPD_DEVID :
2013-08-15 02:23:53 +00:00
i = 0 ;
2003-03-05 20:25:59 +00:00
while ( plen ! = 0 ) {
2013-08-15 02:23:53 +00:00
i + + ;
2012-05-07 22:11:34 +00:00
codeset = tvb_get_guint8 ( tvb , offset ) & 0x0F ;
2013-08-15 02:23:53 +00:00
ti = proto_tree_add_uint ( evpd_tree , hf_scsi_inq_evpd_identifier_number , tvb , offset , 0 , i ) ;
PROTO_ITEM_SET_GENERATED ( ti ) ;
2014-12-13 17:52:20 +00:00
ti = proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_devid_code_set , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2003-04-16 19:43:11 +00:00
plen - = 1 ;
offset + = 1 ;
if ( plen < 1 ) {
2013-08-08 17:25:03 +00:00
expert_add_info ( pinfo , ti , & ei_scsi_product_data_goes_past_end_of_page ) ;
2003-04-16 19:43:11 +00:00
break ;
}
2013-08-15 02:23:53 +00:00
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_devid_association , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-08-15 02:23:53 +00:00
identifier_type = tvb_get_guint8 ( tvb , offset ) ;
2014-12-13 17:52:20 +00:00
ti = proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_devid_identifier_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2003-04-16 19:43:11 +00:00
plen - = 1 ;
offset + = 1 ;
/* Skip reserved byte */
if ( plen < 1 ) {
2013-08-08 17:25:03 +00:00
expert_add_info ( pinfo , ti , & ei_scsi_product_data_goes_past_end_of_page ) ;
2003-04-16 19:43:11 +00:00
break ;
}
plen - = 1 ;
offset + = 1 ;
if ( plen < 1 ) {
2013-08-08 17:25:03 +00:00
expert_add_info ( pinfo , ti , & ei_scsi_product_data_goes_past_end_of_page ) ;
2003-03-05 20:25:59 +00:00
break ;
}
2012-05-07 22:11:34 +00:00
idlen = tvb_get_guint8 ( tvb , offset ) ;
2014-12-13 17:52:20 +00:00
ti = proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_devid_identifier_length , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2003-04-16 19:43:11 +00:00
plen - = 1 ;
offset + = 1 ;
2003-03-05 20:25:59 +00:00
if ( idlen ! = 0 ) {
2003-04-16 19:43:11 +00:00
if ( plen < idlen ) {
2013-08-08 17:25:03 +00:00
expert_add_info ( pinfo , ti , & ei_scsi_product_data_goes_past_end_of_page ) ;
2003-04-16 19:43:11 +00:00
break ;
}
if ( codeset = = CODESET_ASCII ) {
2013-08-15 02:23:53 +00:00
if ( identifier_type = = DEVID_TYPE_VEND_ID_VEND_SPEC_ID ) {
proto_tree_add_item ( evpd_tree , hf_scsi_inq_vendor_id , tvb , offset , 8 , ENC_ASCII | ENC_NA ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_devid_identifier_str , tvb , offset + 8 , idlen - 8 , ENC_NA | ENC_ASCII ) ;
} else {
proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_devid_identifier_str , tvb , offset , idlen , ENC_NA | ENC_ASCII ) ;
}
2014-03-10 19:04:30 +00:00
} else if ( codeset = = CODESET_BINARY & & identifier_type = = DEVID_TYPE_WWN ) {
2014-11-18 01:04:30 +00:00
proto_tree_add_string ( evpd_tree , hf_scsi_wwn , tvb , offset , plen , tvb_fcwwn_to_str ( tvb , offset ) ) ;
2003-04-16 19:43:11 +00:00
} else {
/*
* XXX - decode this based on the identifier type ,
* if the codeset is CODESET_BINARY ?
*/
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_devid_identifier_bytes , tvb , offset , idlen , ENC_NA ) ;
2003-04-16 19:43:11 +00:00
}
plen - = idlen ;
offset + = idlen ;
2003-03-05 07:41:24 +00:00
}
2002-01-10 01:28:45 +00:00
}
break ;
case SCSI_EVPD_DEVSERNUM :
2003-05-26 22:36:49 +00:00
if ( plen > 0 ) {
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inq_evpd_product_serial_number , tvb , offset , plen , ENC_NA | ENC_ASCII ) ;
2003-05-19 03:23:12 +00:00
}
2012-04-20 07:34:53 +00:00
break ;
2013-05-27 03:44:06 +00:00
case SCSI_EVPD_BLKDEVCHAR :
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_bdc_mrr , tvb ,
2013-06-11 21:33:48 +00:00
offset , 2 , ENC_BIG_ENDIAN ) ;
2013-05-27 03:44:06 +00:00
offset + = 2 ;
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_bdc_pt , tvb ,
2013-06-11 21:33:48 +00:00
offset , 1 , ENC_BIG_ENDIAN ) ;
2013-05-27 03:44:06 +00:00
offset + = 1 ;
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_bdc_wabereq , tvb ,
2013-06-11 21:33:48 +00:00
offset , 1 , ENC_BIG_ENDIAN ) ;
2013-05-27 03:44:06 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_bdc_wacereq , tvb ,
2013-06-11 21:33:48 +00:00
offset , 1 , ENC_BIG_ENDIAN ) ;
2013-05-27 03:44:06 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_bdc_nff , tvb ,
2013-06-11 21:33:48 +00:00
offset , 1 , ENC_BIG_ENDIAN ) ;
2013-05-27 03:44:06 +00:00
offset + = 1 ;
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_bdc_fuab , tvb ,
2013-06-11 21:33:48 +00:00
offset , 1 , ENC_BIG_ENDIAN ) ;
2013-05-27 03:44:06 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_inquiry_bdc_vbuls , tvb ,
2013-06-11 21:33:48 +00:00
offset , 1 , ENC_BIG_ENDIAN ) ;
2013-06-29 21:59:25 +00:00
/*offset += 1;*/
2013-06-11 21:33:48 +00:00
break ;
2012-05-07 22:11:34 +00:00
case SCSI_EVPD_BLKLIMITS :
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_wsnz , tvb , offset , 1 , ENC_NA ) ;
offset + = 1 ;
2012-04-20 07:34:53 +00:00
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_mcawl , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2012-05-07 22:11:34 +00:00
offset + = 1 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_otlg , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_mtl , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_otl , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_mpl , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_mulc , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_mubdc , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_oug , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_ugavalid , tvb , offset , 1 , ENC_NA ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_uga , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2012-04-20 07:34:53 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_block_limits_mwsl , tvb , offset , 8 , ENC_BIG_ENDIAN ) ;
2013-03-17 19:25:08 +00:00
/*offset += 8;*/
2012-04-20 07:34:53 +00:00
2012-03-31 04:45:33 +00:00
break ;
case SCSI_EVPD_LBP :
2013-04-01 15:29:49 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_threshold_exponent , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2012-05-07 22:11:34 +00:00
offset + = 1 ;
2012-03-31 04:45:33 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_lbpu , tvb , offset , 1 , ENC_NA ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_lbpws , tvb , offset , 1 , ENC_NA ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_lbpws10 , tvb , offset , 1 , ENC_NA ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_lbprz , tvb , offset , 1 , ENC_NA ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_anc_sup , tvb , offset , 1 , ENC_NA ) ;
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_dp , tvb , offset , 1 , ENC_NA ) ;
offset + = 1 ;
2012-03-31 04:45:33 +00:00
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( evpd_tree , hf_scsi_sbc_ptype , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-03-17 19:25:08 +00:00
/*offset += 1;*/
2012-03-31 04:45:33 +00:00
2002-01-10 01:28:45 +00:00
break ;
}
}
}
static void
2012-05-07 22:11:34 +00:00
dissect_scsi_cmddt ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , guint tot_len _U_ )
2002-01-10 01:28:45 +00:00
{
proto_tree * cmdt_tree ;
2012-05-07 22:11:34 +00:00
guint plen ;
2002-01-10 01:28:45 +00:00
if ( tree ) {
2012-05-07 22:11:34 +00:00
plen = tvb_get_guint8 ( tvb , offset + 5 ) ;
2014-07-08 18:47:17 +00:00
cmdt_tree = proto_tree_add_subtree_format ( tree , tvb , offset , plen , ett_scsi_page , NULL , " Command Data " ) ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( cmdt_tree , hf_scsi_inq_qualifier , tvb , offset ,
1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( cmdt_tree , hf_scsi_inq_devtype , tvb , offset ,
1 , ENC_BIG_ENDIAN ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( cmdt_tree , hf_scsi_inq_cmddt_support , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( cmdt_tree , hf_scsi_inq_cmddt_version , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( cmdt_tree , hf_scsi_inq_cmddt_cdb_size , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
}
2006-04-03 00:55:21 +00:00
2010-12-10 15:49:33 +00:00
# define SCSI_INQ_ACAFLAGS_AERC 0x80
# define SCSI_INQ_ACAFLAGS_TRMTSK 0x40
# define SCSI_INQ_ACAFLAGS_NORMACA 0x20
# define SCSI_INQ_ACAFLAGS_HISUP 0x10
2006-04-03 00:55:21 +00:00
static const value_string inq_rdf_vals [ ] = {
2012-09-13 01:28:57 +00:00
{ 2 , " SPC-2/SPC-3/SPC-4 " } ,
2007-03-26 21:16:21 +00:00
{ 0 , NULL }
2006-04-03 00:55:21 +00:00
} ;
2010-12-10 15:49:33 +00:00
# define SCSI_INQ_SCCSFLAGS_SCCS 0x80
# define SCSI_INQ_SCCSFLAGS_ACC 0x40
# define SCSI_INQ_SCCSFLAGS_TPC 0x08
# define SCSI_INQ_SCCSFLAGS_PROTECT 0x01
2006-04-03 01:44:56 +00:00
static const value_string inq_tpgs_vals [ ] = {
2008-12-17 00:08:38 +00:00
{ 0 , " Asymmetric LU Access not supported " } ,
{ 1 , " Implicit Asymmetric LU Access supported " } ,
2007-03-26 21:16:21 +00:00
{ 2 , " Explicit LU Access supported " } ,
{ 3 , " Both Implicit and Explicit LU Access supported " } ,
{ 0 , NULL }
2006-04-03 01:44:56 +00:00
} ;
2012-09-13 01:28:57 +00:00
/* This dissects byte 5 of the SPC/SPC-2/SPC-3/SPC-4 standard INQ data */
2006-04-03 01:44:56 +00:00
static int
2012-09-13 01:28:57 +00:00
dissect_spc_inq_sccsflags ( tvbuff_t * tvb , int offset , proto_tree * tree , int version )
2006-04-03 01:44:56 +00:00
{
2012-09-13 01:28:57 +00:00
static const int * sccs_fields_spc2 [ ] = {
& hf_scsi_inq_sccs ,
NULL
} ;
static const int * sccs_fields_spc3 [ ] = {
& hf_scsi_inq_sccs ,
& hf_scsi_inq_acc ,
& hf_scsi_inq_tpgs ,
& hf_scsi_inq_tpc ,
& hf_scsi_inq_protect ,
NULL
} ;
2006-04-03 01:44:56 +00:00
2012-09-13 01:28:57 +00:00
switch ( version ) {
case 3 : /* SPC */
break ;
case 4 : /* SPC-2 */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_sccsflags , ett_scsi_inq_sccsflags , sccs_fields_spc2 , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
break ;
2012-09-13 01:28:57 +00:00
case 5 : /* SPC-3 */
case 6 : /* SPC-4 */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_sccsflags , ett_scsi_inq_sccsflags , sccs_fields_spc3 , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
break ;
2012-09-13 01:28:57 +00:00
default : /* including version 0 : claims conformance to no standard */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_sccsflags , ett_scsi_inq_sccsflags , sccs_fields_spc3 , ENC_BIG_ENDIAN ) ;
2007-03-26 21:16:21 +00:00
}
2006-04-03 01:44:56 +00:00
2012-09-13 01:28:57 +00:00
offset + = 1 ;
2007-03-26 21:16:21 +00:00
return offset ;
2006-04-03 01:44:56 +00:00
}
2006-04-03 02:40:07 +00:00
2010-12-10 15:49:33 +00:00
# define SCSI_INQ_BQUEFLAGS_BQUE 0x80
# define SCSI_INQ_BQUEFLAGS_ENCSERV 0x40
# define SCSI_INQ_BQUEFLAGS_MULTIP 0x10
# define SCSI_INQ_BQUEFLAGS_MCHNGR 0x08
2012-09-13 01:28:57 +00:00
# define SCSI_INQ_BQUEFLAGS_ACKREQQ 0x04
2006-04-03 02:40:07 +00:00
2012-09-13 01:28:57 +00:00
/* This dissects byte 6 of the SPC/SPC-2/SPC-3/SPC-4 standard INQ data */
2006-04-03 02:40:07 +00:00
static int
2012-09-13 01:28:57 +00:00
dissect_spc_inq_bqueflags ( tvbuff_t * tvb , int offset , proto_tree * tree , int version )
2006-04-03 02:40:07 +00:00
{
2012-09-13 01:28:57 +00:00
static const int * bqe_fields_spc [ ] = {
& hf_scsi_inq_encserv ,
& hf_scsi_inq_multip ,
& hf_scsi_inq_mchngr ,
& hf_scsi_inq_ackreqq ,
NULL
} ;
static const int * bqe_fields_spc2 [ ] = {
& hf_scsi_inq_bque ,
& hf_scsi_inq_encserv ,
& hf_scsi_inq_multip ,
& hf_scsi_inq_mchngr ,
NULL
} ;
static const int * bqe_fields_spc4 [ ] = {
& hf_scsi_inq_bque ,
& hf_scsi_inq_encserv ,
& hf_scsi_inq_multip ,
NULL
} ;
2006-04-03 02:40:07 +00:00
2012-09-13 01:28:57 +00:00
switch ( version ) {
case 3 : /* SPC */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_bqueflags , ett_scsi_inq_bqueflags , bqe_fields_spc , ENC_BIG_ENDIAN ) ;
break ;
case 4 : /* SPC-2 */
case 5 : /* SPC-3 */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_bqueflags , ett_scsi_inq_bqueflags , bqe_fields_spc2 , ENC_BIG_ENDIAN ) ;
break ;
case 6 : /* SPC-4 */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_bqueflags , ett_scsi_inq_bqueflags , bqe_fields_spc4 , ENC_BIG_ENDIAN ) ;
break ;
default : /* including version 0 : claims conformance to no standard */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_bqueflags , ett_scsi_inq_bqueflags , bqe_fields_spc4 , ENC_BIG_ENDIAN ) ;
break ;
2007-03-26 21:16:21 +00:00
}
2006-04-03 02:40:07 +00:00
2007-03-26 21:16:21 +00:00
offset + = 1 ;
return offset ;
2006-04-03 02:40:07 +00:00
}
2010-12-10 15:49:33 +00:00
# define SCSI_INQ_RELADRFLAGS_RELADR 0x80
# define SCSI_INQ_RELADRFLAGS_LINKED 0x08
2012-09-13 01:28:57 +00:00
# define SCSI_INQ_RELADRFLAGS_TRANDIS 0x04
2010-12-10 15:49:33 +00:00
# define SCSI_INQ_RELADRFLAGS_CMDQUE 0x02
2006-04-03 03:19:52 +00:00
2012-09-13 01:28:57 +00:00
/* This dissects byte 7 of the SPC/SPC-2/SPC-3/SPC-4 standard INQ data */
2006-04-03 03:19:52 +00:00
static int
2012-09-13 01:28:57 +00:00
dissect_spc_inq_reladrflags ( tvbuff_t * tvb , int offset , proto_tree * tree , int version )
2006-04-03 03:19:52 +00:00
{
2012-09-13 01:28:57 +00:00
static const int * reladr_fields_spc [ ] = {
& hf_scsi_inq_reladr ,
& hf_scsi_inq_linked ,
& hf_scsi_inq_trandis ,
& hf_scsi_inq_cmdque ,
NULL
} ;
static const int * reladr_fields_spc2 [ ] = {
& hf_scsi_inq_reladr ,
& hf_scsi_inq_linked ,
& hf_scsi_inq_cmdque ,
NULL
} ;
static const int * reladr_fields_spc3 [ ] = {
& hf_scsi_inq_linked ,
& hf_scsi_inq_cmdque ,
NULL
} ;
static const int * reladr_fields_spc4 [ ] = {
& hf_scsi_inq_cmdque ,
NULL
} ;
2006-04-03 03:19:52 +00:00
2012-09-13 01:28:57 +00:00
switch ( version ) {
case 3 : /* SPC */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_reladrflags , ett_scsi_inq_reladrflags , reladr_fields_spc , ENC_BIG_ENDIAN ) ;
break ;
case 4 : /* SPC-2 */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_reladrflags , ett_scsi_inq_reladrflags , reladr_fields_spc2 , ENC_BIG_ENDIAN ) ;
break ;
case 5 : /* SPC-3 */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_reladrflags , ett_scsi_inq_reladrflags , reladr_fields_spc3 , ENC_BIG_ENDIAN ) ;
break ;
case 6 : /* SPC-4 */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_reladrflags , ett_scsi_inq_reladrflags , reladr_fields_spc4 , ENC_BIG_ENDIAN ) ;
break ;
default : /* including version 0 : claims conformance to no standard */
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_inq_reladrflags , ett_scsi_inq_reladrflags , reladr_fields_spc4 , ENC_BIG_ENDIAN ) ;
2007-03-26 21:16:21 +00:00
}
2006-04-03 03:19:52 +00:00
2007-03-26 21:16:21 +00:00
offset + = 1 ;
return offset ;
2006-04-03 03:19:52 +00:00
}
2006-04-03 02:40:07 +00:00
2013-12-23 13:45:07 +00:00
static const int * peripheral_fields [ ] = {
& hf_scsi_inq_qualifier ,
& hf_scsi_inq_devtype ,
NULL
} ;
2006-09-29 10:40:51 +00:00
void
2014-04-16 22:45:45 +00:00
dissect_spc_inquiry ( tvbuff_t * tvb_a , packet_info * pinfo ,
proto_tree * tree , guint offset_a , gboolean isreq ,
2012-05-07 22:11:34 +00:00
gboolean iscdb , guint32 payload_len ,
scsi_task_data_t * cdata )
2002-01-10 01:28:45 +00:00
{
2012-09-13 01:28:57 +00:00
guint8 flags , i , version ;
2007-04-13 17:16:24 +00:00
2010-12-06 22:00:08 +00:00
static const int * inq_control_fields [ ] = {
& hf_scsi_inq_control_vendor_specific ,
& hf_scsi_inq_control_reserved ,
& hf_scsi_inq_control_naca ,
& hf_scsi_inq_control_obs1 ,
& hf_scsi_inq_control_obs2 ,
NULL
} ;
2012-09-13 01:28:57 +00:00
static const int * aca_fields_spc [ ] = {
& hf_scsi_inq_aerc , /* obsolete in spc3 and forward */
2012-05-07 22:11:34 +00:00
& hf_scsi_inq_trmtsk , /* obsolete in spc2 and forward */
& hf_scsi_inq_normaca ,
& hf_scsi_inq_hisup ,
& hf_scsi_inq_rdf ,
NULL
2006-11-27 14:50:23 +00:00
} ;
2012-09-13 01:28:57 +00:00
static const int * aca_fields_spc2 [ ] = {
& hf_scsi_inq_aerc , /* obsolete in spc3 and forward */
& hf_scsi_inq_normaca ,
& hf_scsi_inq_hisup ,
& hf_scsi_inq_rdf ,
NULL
} ;
static const int * aca_fields_spc3 [ ] = {
& hf_scsi_inq_normaca ,
& hf_scsi_inq_hisup ,
& hf_scsi_inq_rdf ,
NULL
} ;
2006-11-27 14:50:23 +00:00
static const int * rmb_fields [ ] = {
2007-03-26 21:16:21 +00:00
& hf_scsi_inq_rmb ,
2012-05-07 22:11:34 +00:00
NULL
2006-11-27 14:50:23 +00:00
} ;
2002-01-10 01:28:45 +00:00
2012-05-07 22:11:34 +00:00
if ( ! isreq & & ( ( cdata = = NULL ) | | ! ( cdata - > itlq - > flags & 0x3 ) )
2014-06-19 17:18:16 +00:00
& & ( tvb_length_remaining ( tvb_a , offset_a ) > = 1 ) ) {
2002-08-20 03:21:42 +00:00
/*
2012-05-07 22:11:34 +00:00
* INQUIRY response with device type information ; add device type
* to list of known devices & their types if not already known .
*/
if ( cdata & & cdata - > itl ) {
2014-04-16 22:45:45 +00:00
cdata - > itl - > cmdset = tvb_get_guint8 ( tvb_a , offset_a ) & SCSI_DEV_BITS ;
2003-03-05 07:41:24 +00:00
}
2002-03-31 20:28:41 +00:00
}
2002-08-20 03:21:42 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2014-04-16 22:45:45 +00:00
flags = tvb_get_guint8 ( tvb_a , offset_a ) ;
2006-04-02 22:50:46 +00:00
if ( cdata ) {
2006-04-22 02:16:52 +00:00
cdata - > itlq - > flags = flags ;
2002-01-10 01:28:45 +00:00
}
2002-08-28 21:04:11 +00:00
2014-04-16 22:45:45 +00:00
proto_tree_add_uint_format ( tree , hf_scsi_inquiry_flags , tvb_a , offset_a , 1 ,
2012-05-07 22:11:34 +00:00
flags , " CMDT = %u, EVPD = %u " ,
flags & 0x2 , flags & 0x1 ) ;
2002-01-10 01:28:45 +00:00
if ( flags & 0x1 ) {
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_inquiry_evpd_page , tvb_a , offset_a + 1 ,
2012-05-07 22:11:34 +00:00
1 , ENC_BIG_ENDIAN ) ;
2013-05-27 03:13:31 +00:00
2013-06-11 21:33:48 +00:00
col_add_fstr ( pinfo - > cinfo , COL_INFO , " %s " ,
2014-04-16 22:45:45 +00:00
val_to_str ( tvb_get_guint8 ( tvb_a , offset_a + 1 ) ,
2013-06-11 21:33:48 +00:00
scsi_evpd_pagecode_val ,
" Unknown VPD 0x%02x " ) ) ;
} else if ( flags & 0x2 ) {
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_inquiry_cmdt_page , tvb_a , offset_a + 1 ,
2012-05-07 22:11:34 +00:00
1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_alloclen16 , tvb_a , offset_a + 2 , 2 , ENC_BIG_ENDIAN ) ;
2007-03-26 21:16:21 +00:00
/* we need the alloc_len in the response */
2012-05-07 22:11:34 +00:00
if ( cdata ) {
2014-04-16 22:45:45 +00:00
cdata - > itlq - > alloc_len = tvb_get_ntohs ( tvb_a , offset_a + 2 ) ;
2007-03-26 21:16:21 +00:00
}
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , tvb_a , offset_a + 4 , hf_scsi_inq_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_inq_control , inq_control_fields , ENC_BIG_ENDIAN ) ;
2006-04-02 22:50:46 +00:00
} else if ( ! isreq ) {
2007-03-26 21:16:21 +00:00
if ( ! cdata ) {
return ;
}
2006-04-02 22:50:46 +00:00
2006-04-22 02:16:52 +00:00
if ( cdata - > itlq - > flags & 0x1 ) {
2014-04-16 22:45:45 +00:00
dissect_scsi_evpd ( tvb_a , pinfo , tree , offset_a , payload_len ) ;
2007-03-26 21:16:21 +00:00
return ;
}
if ( cdata - > itlq - > flags & 0x2 ) {
2014-04-16 22:45:45 +00:00
dissect_scsi_cmddt ( tvb_a , pinfo , tree , offset_a , payload_len ) ;
2007-03-26 21:16:21 +00:00
return ;
}
2006-04-02 22:50:46 +00:00
2007-03-26 21:16:21 +00:00
/* These pdus are sometimes truncated by SCSI allocation length
2012-05-07 22:11:34 +00:00
* in the CDB
*/
2014-04-16 22:45:45 +00:00
TRY_SCSI_CDB_ALLOC_LEN ( cdata - > itlq - > alloc_len ) ; /* (defines/initializes try_tvb & try_offset) */
2006-04-02 22:50:46 +00:00
2007-03-26 21:16:21 +00:00
/* Qualifier and DeviceType */
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , try_tvb , try_offset , hf_scsi_inq_peripheral , ett_scsi_inq_peripheral , peripheral_fields , ENC_BIG_ENDIAN ) ;
try_offset + = 1 ;
2002-01-10 01:28:45 +00:00
2007-03-26 21:16:21 +00:00
/* RMB */
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , try_tvb , try_offset , hf_scsi_inq_rmbflags , ett_scsi_inq_rmbflags , rmb_fields , ENC_BIG_ENDIAN ) ;
try_offset + = 1 ;
2006-04-02 22:50:46 +00:00
2007-03-26 21:16:21 +00:00
/* Version */
2014-04-16 22:45:45 +00:00
version = tvb_get_guint8 ( try_tvb , try_offset ) ;
proto_tree_add_item ( tree , hf_scsi_inq_version , try_tvb , try_offset , 1 , ENC_BIG_ENDIAN ) ;
try_offset + = 1 ;
2006-04-02 22:50:46 +00:00
2007-03-26 21:16:21 +00:00
/* aca flags */
2013-01-29 13:53:16 +00:00
switch ( version ) {
case 3 : /* SPC */
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , try_tvb , try_offset , hf_scsi_inq_acaflags , ett_scsi_inq_acaflags , aca_fields_spc , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
break ;
case 4 : /* SPC-2 */
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , try_tvb , try_offset , hf_scsi_inq_acaflags , ett_scsi_inq_acaflags , aca_fields_spc2 , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
break ;
case 5 : /* SPC-3 */
case 6 : /* SPC-4 */
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , try_tvb , try_offset , hf_scsi_inq_acaflags , ett_scsi_inq_acaflags , aca_fields_spc3 , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
break ;
default : /* including version 0 : claims conformance to no standard */
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , try_tvb , try_offset , hf_scsi_inq_acaflags , ett_scsi_inq_acaflags , aca_fields_spc3 , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
}
2014-04-16 22:45:45 +00:00
try_offset + = 1 ;
2006-04-02 22:50:46 +00:00
2007-03-26 21:16:21 +00:00
/* Additional Length */
2014-04-16 22:45:45 +00:00
SET_SCSI_DATA_END ( tvb_get_guint8 ( try_tvb , try_offset ) + try_offset ) ;
proto_tree_add_item ( tree , hf_scsi_inq_add_len , try_tvb , try_offset , 1 , ENC_BIG_ENDIAN ) ;
try_offset + = 1 ;
2006-04-02 22:50:46 +00:00
2007-03-26 21:16:21 +00:00
/* sccs flags */
2014-04-16 22:45:45 +00:00
try_offset = dissect_spc_inq_sccsflags ( try_tvb , try_offset , tree , version ) ;
2006-04-03 01:44:56 +00:00
2007-03-26 21:16:21 +00:00
/* bque flags */
2014-04-16 22:45:45 +00:00
try_offset = dissect_spc_inq_bqueflags ( try_tvb , try_offset , tree , version ) ;
2006-04-03 02:40:07 +00:00
2007-03-26 21:16:21 +00:00
/* reladdr flags */
2014-04-16 22:45:45 +00:00
try_offset = dissect_spc_inq_reladrflags ( try_tvb , try_offset , tree , version ) ;
2006-04-03 02:40:07 +00:00
2007-03-26 21:16:21 +00:00
/* vendor id */
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_inq_vendor_id , try_tvb , try_offset , 8 , ENC_ASCII | ENC_NA ) ;
try_offset + = 8 ;
2006-04-03 03:19:52 +00:00
2007-03-26 21:16:21 +00:00
/* product id */
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_inq_product_id , try_tvb , try_offset , 16 , ENC_ASCII | ENC_NA ) ;
try_offset + = 16 ;
2006-04-03 08:20:54 +00:00
2007-03-26 21:16:21 +00:00
/* product revision level */
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_inq_product_rev , try_tvb , try_offset , 4 , ENC_ASCII | ENC_NA ) ;
try_offset + = 4 ;
2006-04-03 08:20:54 +00:00
2007-03-26 21:16:21 +00:00
/* vendor specific, 20 bytes */
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_inq_vendor_specific , try_tvb , try_offset , 20 , ENC_NA ) ;
try_offset + = 20 ;
2006-04-03 08:20:54 +00:00
2007-03-26 21:16:21 +00:00
/* reserved */
2014-04-16 22:45:45 +00:00
try_offset + = 2 ;
2006-04-03 08:20:54 +00:00
2007-03-26 21:16:21 +00:00
/* version descriptors */
2012-05-07 22:11:34 +00:00
for ( i = 0 ; i < 8 ; i + + ) {
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_inq_version_desc , try_tvb , try_offset , 2 , ENC_BIG_ENDIAN ) ;
try_offset + = 2 ;
2007-03-26 21:16:21 +00:00
}
2006-04-02 22:50:46 +00:00
2007-03-26 21:16:21 +00:00
END_TRY_SCSI_CDB_ALLOC_LEN ;
2002-01-10 01:28:45 +00:00
}
}
2013-12-23 13:45:07 +00:00
# define XCOPY_LID1 0
# define XCOPY_LID4 1
static const value_string extcopy_service_vals [ ] = {
{ XCOPY_LID1 , " Extended Copy (LID1) " } ,
{ XCOPY_LID4 , " Extended Copy (LID4) " } ,
{ 0 , NULL }
} ;
# define RECV_COPY_PARAMS 0x3
static const value_string recv_copy_service_vals [ ] = {
{ 0x6 , " Receive Copy Data (LID4) " } ,
{ 0x1 , " Receive Copy Data (LID1) " } ,
{ RECV_COPY_PARAMS , " Receive Copy Parameters " } ,
{ 0x4 , " Receive Copy Failure details " } ,
{ 0x5 , " Receive Copy Status (LID4) " } ,
{ 0x0 , " Receive Copy Status (LID1) " } ,
{ 0 , NULL }
} ;
2013-12-26 09:54:22 +00:00
#if 0
2013-12-23 13:45:07 +00:00
static const value_string cscd_desc_type_code_vals [ ] = {
{ 0xE0 , " Fibre Channel N_Port_Name CSCD descriptor " } ,
{ 0xE1 , " Fibre Channel N_Port_ID CSCD descriptor " } ,
{ 0xE2 , " Fibre Channel N_Port_ID With N_Port_Name Checking CSCD descriptor " } ,
{ 0xE3 , " Parallel Interface T_L CSCD descriptor " } ,
{ 0xE4 , " Identification Descriptor CSCD descriptor " } ,
{ 0xFF , " Extension descriptor " } ,
{ 0 , NULL }
} ;
2013-12-26 09:54:22 +00:00
# endif
2013-12-23 13:45:07 +00:00
static const int * per_dev_type_bitmask_fields [ ] = {
& hf_scsi_spc_xcopy_lu_type ,
& hf_scsi_spc_xcopy_per_dev_type ,
NULL
} ;
static const int * xcopy_param_list_bits [ ] = {
& hf_scsi_spc_xcopy_param_str ,
& hf_scsi_spc_xcopy_param_list_id_usage ,
& hf_scsi_spc_xcopy_param_priority ,
NULL
} ;
# define BLOCK_DEV_0 0x0
# define BLOCK_DEV_4 0x4
# define BLOCK_DEV_5 0x5
# define BLOCK_DEV_7 0x7
# define BLOCK_DEV_E 0xE
static const value_string per_dev_type_vals [ ] = {
{ BLOCK_DEV_0 , " Block devices " } ,
{ 0x1 , " Sequential access devices " } ,
{ 0x3 , " Processor devices " } ,
{ BLOCK_DEV_4 , " Block devices " } ,
{ BLOCK_DEV_5 , " Block devices " } ,
{ BLOCK_DEV_7 , " Block devices " } ,
{ BLOCK_DEV_E , " Block devices " } ,
{ 0 , NULL }
} ;
static const value_string lu_type_vals [ ] = {
{ 0 , " Logical Unit Number " } ,
{ 1 , " Proxy Token " } ,
{ 2 , " Reserved " } ,
{ 3 , " Reserved " } ,
{ 0 , NULL }
} ;
# define BLOCK_TO_BLOCK 2
static const range_string desc_type_rval [ ] = {
{ 0x0 , 0x0 , " Block to stream " } ,
{ 0x1 , 0x1 , " Stream to block " } ,
{ BLOCK_TO_BLOCK , BLOCK_TO_BLOCK , " Block to block " } ,
{ 0x3 , 0x3 , " Stream to stream " } ,
{ 0x4 , 0x4 , " Inline to stream " } ,
{ 0x5 , 0x5 , " Embedded to strem " } ,
{ 0x6 , 0x6 , " Stream to discard " } ,
{ 0x7 , 0x7 , " Verify CSCD " } ,
{ 0x0 , 0xBF , " Segment descriptors " } ,
{ 0xC , 0xDF , " Vendor-specific descriptors " } ,
{ 0xE0 , 0xE0 , " Fibre Channel N_Port_Name CSCD descriptor " } ,
{ 0xE1 , 0xE1 , " Fibre Channel N_Port_ID CSCD descriptor " } ,
{ 0xE2 , 0xE2 , " Fibre Channel N_Port_ID With N_Port_Name Checking CSCD descriptor " } ,
{ 0xE3 , 0xE3 , " Parallel Interface T_L CSCD descriptor " } ,
{ 0xE4 , 0xE4 , " Identification Descriptor CSCD descriptor " } ,
{ 0xE5 , 0xFE , " CSCD descriptors " } ,
{ 0xFF , 0xFF , " CSCD descriptor extension " } ,
{ 0 , 0 , NULL }
} ;
2006-11-22 10:12:59 +00:00
void
2013-12-23 15:35:07 +00:00
dissect_spc_extcopy ( tvbuff_t * tvb , packet_info * pinfo _U_ ,
proto_tree * tree , guint offset ,
gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata )
2002-01-10 01:28:45 +00:00
{
2013-12-23 15:25:05 +00:00
guint16 serv_action ;
guint8 cscd_desc_type , dev_type , des_len , code_set , des_type , seg_type ;
2013-12-23 13:45:07 +00:00
guint16 cscd_desc_list_len , seg_desc_len ;
2013-12-26 09:54:31 +00:00
guint32 /*param_list_len,*/ seg_desc_list_len , inline_data_len , i ;
2014-11-18 01:04:30 +00:00
proto_tree * cscds_tree = NULL , * dev_tree = NULL , * cscd_tree = NULL , * segs_tree = NULL ,
* seg_tree = NULL , * seg_param_tree = NULL , * cscd_desc_tree ;
2013-12-23 13:45:07 +00:00
if ( isreq & & iscdb ) {
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_service , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
serv_action = tvb_get_guint8 ( tvb , offset ) & 0x1F ;
if ( cdata ) {
cdata - > itlq - > flags = serv_action ;
}
offset + = 1 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_64 , tvb , offset , 8 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 8 ;
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_param_list_len , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2013-12-26 09:54:31 +00:00
/*param_list_len = tvb_get_ntohl(tvb, offset); */
2013-12-23 13:45:07 +00:00
offset + = 4 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_control ,
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2013-12-26 09:54:31 +00:00
/*offset += 1;*/
/*offset += (param_list_len - 15);*/
2013-12-23 13:45:07 +00:00
} else {
if ( cdata ) {
serv_action = cdata - > itlq - > flags ;
}
else {
return ;
}
if ( serv_action = = XCOPY_LID1 ) {
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_list_id , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_spc_xcopy_param_byte , ett_xcopy_param_byte , xcopy_param_list_bits , ENC_NA ) ;
offset + = 1 ;
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_cscd_desc_list_len , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
cscd_desc_list_len = tvb_get_ntohs ( tvb , offset ) ;
offset + = 2 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_32 , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 4 ;
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_seg_desc_list_len , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
seg_desc_list_len = tvb_get_ntohl ( tvb , offset ) ;
offset + = 4 ;
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_inline_data_len , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
inline_data_len = tvb_get_ntohl ( tvb , offset ) ;
offset + = 4 ;
if ( cscd_desc_list_len > 0 ) {
2014-07-08 18:47:17 +00:00
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 ) ;
2013-12-23 13:45:07 +00:00
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 */
2014-07-08 18:47:17 +00:00
cscd_tree = proto_tree_add_subtree_format ( cscds_tree , tvb , offset , 64 , ett_scsi_xcopy_cscd , NULL , " CSCD descriptor #%u " , i ) ;
2013-12-23 13:45:07 +00:00
} else {
2014-07-08 18:47:17 +00:00
cscd_tree = proto_tree_add_subtree_format ( cscds_tree , tvb , offset , 32 , ett_scsi_xcopy_cscd , NULL , " CSCD descriptor #%u " , i ) ;
2013-12-23 13:45:07 +00:00
}
i + + ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( cscd_tree , hf_scsi_spc_xcopy_cscd_desc_type_code , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
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 ) ;
dev_type = tvb_get_guint8 ( tvb , offset ) & 0x1F ;
offset + = 1 ;
proto_tree_add_item ( cscd_tree , hf_scsi_spc_xcopy_rel_init_port_id , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
2014-11-18 01:04:30 +00:00
cscd_desc_tree = proto_tree_add_subtree ( cscd_tree , tvb , offset , 24 , ett_scsi_cscd_desc , NULL , " CSCD descriptor parameters " ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( cscd_desc_tree , hf_scsi_spc_xcopy_cscd_desc_code_set , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
code_set = tvb_get_guint8 ( tvb , offset ) & 0x0F ;
offset + = 1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( cscd_desc_tree , hf_scsi_spc_xcopy_cscd_desc_assoc , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( cscd_desc_tree , hf_scsi_spc_xcopy_cscd_desc_des_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
des_type = tvb_get_guint8 ( tvb , offset ) & 0x0F ;
offset + = 1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( cscd_desc_tree , hf_scsi_reserved_8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( cscd_desc_tree , hf_scsi_spc_xcopy_cscd_desc_des_len , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
des_len = tvb_get_guint8 ( tvb , offset ) ;
offset + = 1 ;
2014-11-18 01:04:30 +00:00
proto_tree_add_bytes_format ( cscd_desc_tree , hf_scsi_designator , tvb , offset , 20 , NULL , " Designator (20 bytes, zero padded, used length %u) " , des_len ) ;
2014-03-10 19:04:30 +00:00
if ( code_set = = CODESET_BINARY & & des_type = = DEVID_TYPE_WWN ) { /* des_type 3 = WWN */
2014-11-18 01:04:30 +00:00
proto_tree_add_string ( cscd_desc_tree , hf_scsi_wwn , tvb , offset , des_len , tvb_fcwwn_to_str ( tvb , offset ) ) ;
2013-12-23 13:45:07 +00:00
}
offset + = 20 ;
2014-07-08 18:47:17 +00:00
dev_tree = proto_tree_add_subtree ( cscd_tree , tvb , offset , 4 , ett_scsi_xcopy_dev_params , NULL , " Device type specific parameters " ) ;
2013-12-23 13:45:07 +00:00
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 ) {
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( dev_tree , hf_scsi_reserved_8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ; /*TODO: dissect this byte */
proto_tree_add_item ( dev_tree , hf_scsi_spc_xcopy_disk_block_len , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
offset + = 3 ;
} else {
offset + = 4 ;
}
cscd_desc_list_len - = 32 ;
if ( cscd_desc_type = = 0xEA | | cscd_desc_type = = 0xEB ) { /* both types occupy 64 bytes overall, everything else is 32 bytes */
offset + = 32 ;
cscd_desc_list_len - = 32 ;
}
}
}
if ( seg_desc_list_len > 0 ) {
2014-07-08 18:47:17 +00:00
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 ) ;
2013-12-23 13:45:07 +00:00
i = 1 ;
while ( seg_desc_list_len > 0 ) {
seg_desc_len = tvb_get_ntohs ( tvb , offset + 2 ) ;
2014-07-08 18:47:17 +00:00
seg_tree = proto_tree_add_subtree_format ( segs_tree , tvb , offset , seg_desc_len + 4 ,
ett_scsi_xcopy_seg , NULL , " Segment descriptor #%u " , i ) ;
2013-12-23 13:45:07 +00:00
i + + ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( seg_tree , hf_scsi_spc_xcopy_seg_desc_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
seg_type = tvb_get_guint8 ( tvb , offset ) ;
offset + = 1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( seg_tree , hf_scsi_spc_xcopy_seg_desc_dc , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( seg_tree , hf_scsi_spc_xcopy_seg_desc_cat , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
2014-11-18 01:04:30 +00:00
proto_tree_add_item ( seg_tree , hf_scsi_segment_descriptor_length , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 2 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( seg_tree , hf_scsi_spc_xcopy_seg_des_src_desc_id , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 2 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( seg_tree , hf_scsi_spc_xcopy_seg_des_dest_desc_id , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 2 ;
2014-07-08 18:47:17 +00:00
seg_param_tree = proto_tree_add_subtree ( seg_tree , tvb , offset , seg_desc_len - 4 ,
ett_scsi_xcopy_seg_param , NULL , " Segment descriptor parameters " ) ;
2013-12-23 13:45:07 +00:00
seg_desc_list_len - = ( seg_desc_len + 4 ) ;
if ( seg_type = = BLOCK_TO_BLOCK ) {
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( seg_param_tree , hf_scsi_reserved_16 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 2 ;
proto_tree_add_item ( seg_param_tree , hf_scsi_spc_xcopy_num_of_blocks , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
proto_tree_add_item ( seg_param_tree , hf_scsi_spc_xcopy_source_lba , tvb , offset , 8 , ENC_BIG_ENDIAN ) ;
offset + = 8 ;
proto_tree_add_item ( seg_param_tree , hf_scsi_spc_xcopy_dest_lba , tvb , offset , 8 , ENC_BIG_ENDIAN ) ;
offset + = 8 ;
} else {
offset + = ( seg_desc_len - 4 ) ;
}
}
}
if ( inline_data_len > 0 ) {
2014-11-18 01:04:30 +00:00
proto_tree_add_item ( tree , hf_scsi_inline_data , tvb , offset , inline_data_len , ENC_NA ) ;
2013-12-26 09:54:31 +00:00
/*offset += inline_data_len;*/
2013-12-23 13:45:07 +00:00
}
} else if ( serv_action = = XCOPY_LID4 ) {
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_param_list_format , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-26 09:54:31 +00:00
offset + = 1 ;
2013-12-23 13:45:07 +00:00
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_spc_xcopy_param_byte , ett_xcopy_param_byte , xcopy_param_list_bits , ENC_NA ) ;
2013-12-26 09:54:31 +00:00
offset + = 1 ;
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_head_cscd_desc_list_len , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 2 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_head_cscd_desc_type_code , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-26 09:54:31 +00:00
/*offset += 1;*/
2013-12-23 13:45:07 +00:00
}
}
}
void dissect_spc_recvcopy ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ ,
proto_tree * tree _U_ , guint offset _U_ ,
gboolean isreq _U_ , gboolean iscdb _U_ ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
{
2013-12-23 15:25:05 +00:00
guint16 serv_action ;
guint8 imp_desc_list_len ;
2002-08-28 21:04:11 +00:00
2013-12-23 13:45:07 +00:00
if ( isreq & & iscdb ) {
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_recv_copy_service , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
serv_action = tvb_get_guint8 ( tvb , offset ) & 0x1F ;
if ( cdata ) {
cdata - > itlq - > flags = serv_action ;
}
offset + = 1 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_64 , tvb , offset , 8 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 8 ;
proto_tree_add_item ( tree , hf_scsi_alloclen32 , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_control ,
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
offset + = 1 ;
} else {
if ( cdata ) {
serv_action = cdata - > itlq - > flags ;
}
else {
return ;
}
if ( serv_action = = RECV_COPY_PARAMS ) {
proto_tree_add_item ( tree , hf_scsi_recv_copy_avail_data , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_recv_copy_snlid , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_24 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 3 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_max_cscd_desc_count , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_max_seg_desc_count , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_max_desc_list_len , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_max_seg_len , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_max_inline_data_len , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_held_data_limit , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_max_stream_dev_trans_size , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_16 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 2 ;
proto_tree_add_item ( tree , hf_scsi_recv_copy_total_con_copies , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
offset + = 2 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_recv_copy_max_con_copies , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_recv_copy_data_seg_gran , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_recv_copy_inline_data_gran , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_recv_copy_held_data_gran , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
2014-09-19 01:18:34 +00:00
proto_tree_add_item ( tree , hf_scsi_reserved_24 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 3 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_recv_copy_implemented_desc_list_len , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
imp_desc_list_len = tvb_get_guint8 ( tvb , offset ) ;
offset + = 1 ;
while ( imp_desc_list_len > 0 ) {
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_xcopy_cscd_desc_type_code , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-12-23 13:45:07 +00:00
offset + = 1 ;
imp_desc_list_len - - ;
}
} else {
2014-11-18 01:04:30 +00:00
proto_tree_add_expert_format ( tree , pinfo , & ei_scsi_unknown_serv_action , tvb , offset , 0 , " Unknown serv_action %u " , serv_action ) ;
2013-12-23 13:45:07 +00:00
}
}
2002-01-10 01:28:45 +00:00
}
2013-12-23 13:45:07 +00:00
2007-02-05 09:39:36 +00:00
static int
2012-05-07 22:11:34 +00:00
dissect_scsi_log_page ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset )
2007-02-05 09:39:36 +00:00
{
static const int * pcflags_fields [ ] = {
2007-03-26 21:16:21 +00:00
& hf_scsi_log_pagecode ,
2012-05-07 22:11:34 +00:00
NULL
2007-02-05 09:39:36 +00:00
} ;
static const int * paramflags_fields [ ] = {
& hf_scsi_log_pf_du ,
& hf_scsi_log_pf_ds ,
& hf_scsi_log_pf_tsd ,
& hf_scsi_log_pf_etc ,
& hf_scsi_log_pf_tmc ,
& hf_scsi_log_pf_lbin ,
& hf_scsi_log_pf_lp ,
2007-03-26 21:16:21 +00:00
NULL
2007-02-05 09:39:36 +00:00
} ;
guint16 pagelen , pagecode ;
guint8 paramlen ;
2014-07-08 18:47:17 +00:00
proto_tree * log_tree ;
proto_item * ti ;
2012-05-07 22:11:34 +00:00
guint old_offset = offset ;
2007-02-05 09:39:36 +00:00
const log_pages_t * log_page ;
2012-05-07 22:11:34 +00:00
pagecode = tvb_get_guint8 ( tvb , offset ) & 0x3f ;
2007-02-05 09:39:36 +00:00
2014-07-08 18:47:17 +00:00
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) " ) ) ;
2007-02-05 09:39:36 +00:00
/* page code */
2011-10-24 19:57:53 +00:00
proto_tree_add_bitmask ( log_tree , tvb , offset , hf_scsi_log_pc_flags , ett_scsi_log_pc , pcflags_fields , ENC_BIG_ENDIAN ) ;
2007-02-05 09:39:36 +00:00
offset + = 1 ;
/* reserved byte */
offset + = 1 ;
/* page length */
2012-05-07 22:11:34 +00:00
pagelen = tvb_get_ntohs ( tvb , offset ) ;
2011-10-06 03:35:44 +00:00
proto_tree_add_item ( log_tree , hf_scsi_log_page_length , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-02-05 09:39:36 +00:00
offset + = 2 ;
/* find the appropriate log page */
2012-05-07 22:11:34 +00:00
for ( log_page = log_pages ; log_page ; log_page + + ) {
if ( log_page - > parameters = = NULL ) {
log_page = NULL ;
2007-02-05 09:39:36 +00:00
break ;
}
2012-05-07 22:11:34 +00:00
if ( log_page - > page = = pagecode ) {
2007-02-05 09:39:36 +00:00
break ;
}
}
/* loop over all parameters */
2012-05-07 22:11:34 +00:00
while ( offset < ( old_offset + 4 + pagelen ) ) {
const log_page_parameters_t * log_parameter = NULL ;
2007-02-05 09:39:36 +00:00
guint16 log_param ;
/* parameter code */
2012-05-07 22:11:34 +00:00
log_param = tvb_get_ntohs ( tvb , offset ) ;
2011-10-06 03:35:44 +00:00
proto_tree_add_item ( log_tree , hf_scsi_log_parameter_code , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2007-02-05 09:39:36 +00:00
offset + = 2 ;
/* flags */
2011-10-24 19:57:53 +00:00
proto_tree_add_bitmask ( log_tree , tvb , offset , hf_scsi_log_param_flags , ett_scsi_log_param , paramflags_fields , ENC_BIG_ENDIAN ) ;
2007-02-05 09:39:36 +00:00
offset + = 1 ;
/* parameter length */
2012-05-07 22:11:34 +00:00
paramlen = tvb_get_guint8 ( tvb , offset ) ;
2011-10-06 03:35:44 +00:00
proto_tree_add_item ( log_tree , hf_scsi_log_param_len , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2007-02-05 09:39:36 +00:00
offset + = 1 ;
/* find the log parameter */
2012-05-07 22:11:34 +00:00
if ( log_page ) {
for ( log_parameter = log_page - > parameters ; log_parameter ; log_parameter + + ) {
if ( log_parameter - > dissector = = NULL ) {
log_parameter = NULL ;
2007-02-05 09:39:36 +00:00
break ;
}
2012-05-07 22:11:34 +00:00
if ( log_parameter - > number = = log_param ) {
2007-02-05 09:39:36 +00:00
break ;
}
}
}
/* parameter data */
2012-05-07 22:11:34 +00:00
if ( paramlen ) {
if ( log_parameter & & log_parameter - > dissector ) {
2007-02-05 09:39:36 +00:00
tvbuff_t * param_tvb ;
2014-06-19 17:18:16 +00:00
param_tvb = tvb_new_subset ( tvb , offset , MIN ( tvb_length_remaining ( tvb , offset ) , paramlen ) , paramlen ) ;
2007-02-05 09:39:36 +00:00
log_parameter - > dissector ( param_tvb , pinfo , log_tree ) ;
} else {
/* We did not have a dissector for this page/parameter so
* just display it as data .
*/
2011-10-05 00:25:09 +00:00
proto_tree_add_item ( log_tree , hf_scsi_log_param_data , tvb , offset , paramlen , ENC_NA ) ;
2007-02-05 09:39:36 +00:00
}
offset + = paramlen ;
}
}
proto_item_set_len ( ti , offset - old_offset ) ;
return offset ;
}
2006-09-29 10:40:51 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_logselect ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
2007-02-03 22:03:39 +00:00
static const int * ppcflags_fields [ ] = {
2007-03-26 21:16:21 +00:00
& hf_scsi_log_pcr ,
2012-05-07 22:11:34 +00:00
& hf_scsi_log_sp ,
NULL
2007-02-03 22:03:39 +00:00
} ;
static const int * pcflags_fields [ ] = {
2007-03-26 21:16:21 +00:00
& hf_scsi_log_pc ,
2012-05-07 22:11:34 +00:00
NULL
2007-02-03 22:03:39 +00:00
} ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_log_ppc_flags ,
2012-05-07 22:11:34 +00:00
ett_scsi_log_ppc , ppcflags_fields , ENC_BIG_ENDIAN ) ;
2011-10-24 19:57:53 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 1 , hf_scsi_log_pc_flags , ett_scsi_log_pc , pcflags_fields , ENC_BIG_ENDIAN ) ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_paramlen16 , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
else {
}
}
2007-02-03 22:03:39 +00:00
static const true_false_string scsi_log_pcr_tfs = {
" Reset all parameters to default values " ,
" Do not reset log parameters "
} ;
static const true_false_string scsi_log_ppc_tfs = {
2007-02-03 16:21:21 +00:00
" Return only parameters that have changed since last LOG SELECT/SENSE " ,
" Return parameters even if they are unchanged "
} ;
2007-02-03 22:03:39 +00:00
static const true_false_string scsi_log_sp_tfs = {
2007-02-03 16:21:21 +00:00
" Device shall save all log parameters " ,
" Device should not save any of the logged parameters "
} ;
2006-09-29 10:40:51 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_logsense ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
2007-02-03 16:21:21 +00:00
static const int * ppcflags_fields [ ] = {
2007-03-26 21:16:21 +00:00
& hf_scsi_log_ppc ,
& hf_scsi_log_sp ,
NULL
2007-02-03 16:21:21 +00:00
} ;
static const int * pcflags_fields [ ] = {
2007-03-26 21:16:21 +00:00
& hf_scsi_log_pc ,
& hf_scsi_log_pagecode ,
NULL
2007-02-03 16:21:21 +00:00
} ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset , hf_scsi_log_ppc_flags ,
2012-05-07 22:11:34 +00:00
ett_scsi_log_ppc , ppcflags_fields , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 1 , hf_scsi_log_pc_flags ,
2012-05-07 22:11:34 +00:00
ett_scsi_log_pc , pcflags_fields , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_log_parameter_ptr , tvb , offset + 4 ,
2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_alloclen16 , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2007-02-03 16:21:21 +00:00
} else if ( ! isreq ) {
2007-03-26 21:16:21 +00:00
if ( ! cdata ) {
return ;
}
dissect_scsi_log_page ( tvb , pinfo , tree , offset ) ;
2002-01-10 01:28:45 +00:00
}
}
2006-03-07 10:25:42 +00:00
static void
2012-05-07 22:11:34 +00:00
dissect_scsi_blockdescs ( tvbuff_t * tvb , packet_info * pinfo _U_ ,
2006-03-07 10:25:42 +00:00
proto_tree * scsi_tree ,
2005-08-11 08:15:52 +00:00
scsi_task_data_t * cdata , gboolean longlba )
2002-08-20 03:21:42 +00:00
{
2012-05-07 22:11:34 +00:00
int offset = 0 ;
2005-08-11 08:15:52 +00:00
/* without cdata there is no point in continuing */
if ( ! cdata )
2006-03-07 10:25:42 +00:00
return ;
2005-08-11 08:15:52 +00:00
2014-06-19 17:18:16 +00:00
while ( tvb_length_remaining ( tvb , offset ) > 0 ) {
2002-08-20 03:21:42 +00:00
if ( longlba ) {
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 8 )
2006-03-07 10:25:42 +00:00
return ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_no_of_blocks64 , tvb , offset , 8 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 8 ;
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 1 )
2006-03-07 10:25:42 +00:00
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_density_code , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 1 ;
2006-03-07 10:25:42 +00:00
2002-08-20 03:21:42 +00:00
/* 3 reserved bytes */
offset + = 3 ;
2006-03-07 10:25:42 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 4 )
2006-03-07 10:25:42 +00:00
return ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_block_length32 , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 4 ;
} else {
2006-05-05 22:01:45 +00:00
if ( ( cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) = = SCSI_DEV_SBC ) {
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 4 )
2006-03-07 10:25:42 +00:00
return ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_no_of_blocks32 , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 4 ;
2007-03-26 21:16:21 +00:00
offset + + ; /* reserved */
2006-03-07 10:25:42 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 3 )
2006-03-07 10:25:42 +00:00
return ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_block_length24 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 3 ;
} else {
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 1 )
2006-03-07 10:25:42 +00:00
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_density_code , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 1 ;
2006-03-07 10:25:42 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 3 )
2006-03-07 10:25:42 +00:00
return ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_no_of_blocks24 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 3 ;
2007-03-26 21:16:21 +00:00
offset + + ; /* reserved */
2006-03-07 10:25:42 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 3 )
2006-03-07 10:25:42 +00:00
return ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_blockdescs_block_length24 , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
2002-08-20 03:21:42 +00:00
offset + = 3 ;
}
}
}
}
2002-08-21 07:15:00 +00:00
static gboolean
2012-05-07 22:11:34 +00:00
dissect_scsi_spc_modepage ( tvbuff_t * tvb , packet_info * pinfo _U_ ,
2012-07-24 02:00:50 +00:00
proto_tree * tree , guint offset , guint8 pcode , guint8 spf , guint8 subpcode )
2002-01-10 01:28:45 +00:00
{
2002-08-21 07:15:00 +00:00
guint8 flags , proto ;
2002-01-10 01:28:45 +00:00
switch ( pcode ) {
2007-02-11 00:45:15 +00:00
case SCSI_SPC_MODEPAGE_CTL :
2012-07-24 02:00:50 +00:00
if ( ! spf ) {
/* standard page for control */
proto_tree_add_item ( tree , hf_scsi_modesns_tst , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_gltsd , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_report_log_exception_condition , tvb , offset + 2 , 1 , ENC_NA ) ;
2012-07-24 02:00:50 +00:00
proto_tree_add_item ( tree , hf_scsi_modesns_qmod , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_modesns_qerr , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_disable_queuing , tvb , offset + 3 , 1 , ENC_NA ) ;
2012-07-24 02:00:50 +00:00
proto_tree_add_item ( tree , hf_scsi_modesns_rac , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_modesns_tas , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_swp , tvb , offset + 4 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_autoload_mode , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_ready_aer_holdoff_period , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_uint ( tree , hf_scsi_spc_modepage_busy_timeout_period , tvb , offset + 8 , 2 ,
2012-07-24 02:00:50 +00:00
tvb_get_ntohs ( tvb , offset + 8 ) * 100 ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_extended_self_test_completion_time , tvb , offset + 10 , 2 , ENC_BIG_ENDIAN ) ;
2012-07-24 02:00:50 +00:00
} else {
switch ( subpcode ) {
case 1 :
/* control extension subpage */
proto_item_append_text ( tree , " Control Extension " ) ;
2013-01-29 13:53:16 +00:00
/* TCMOS SCSIP IALUAE */
2012-07-24 02:00:50 +00:00
proto_tree_add_item ( tree , hf_scsi_modepage_tcmos , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_modepage_scsip , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_modepage_ialuae , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
/* Initial Command Priority */
2012-07-24 02:00:50 +00:00
proto_tree_add_item ( tree , hf_scsi_modepage_icp , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
2013-01-29 13:53:16 +00:00
/* Maximum Sense Data Length */
2012-07-24 02:00:50 +00:00
proto_tree_add_item ( tree , hf_scsi_modepage_msdl , tvb , offset + 6 , 1 , ENC_BIG_ENDIAN ) ;
break ;
}
}
2002-01-10 01:28:45 +00:00
break ;
2007-02-11 00:45:15 +00:00
case SCSI_SPC_MODEPAGE_DISCON :
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_buffer_full_ratio , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_buffer_empty_ratio , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_bus_inactivity_limit , tvb , offset + 4 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_disconnect_time_limit , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_connect_time_limit , tvb , offset + 8 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_uint ( tree , hf_scsi_spc_modepage_maximum_burst_size , tvb , offset + 10 , 2 ,
2012-05-07 22:11:34 +00:00
tvb_get_ntohs ( tvb , offset + 10 ) * 512 ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_emdp , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_faa , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_fab , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_fac , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_uint ( tree , hf_scsi_spc_modepage_first_burst_size , tvb , offset + 14 , 2 ,
2012-05-07 22:11:34 +00:00
tvb_get_ntohs ( tvb , offset + 14 ) * 512 ) ;
2002-01-10 01:28:45 +00:00
break ;
2007-02-11 00:45:15 +00:00
case SCSI_SPC_MODEPAGE_INFOEXCP :
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset + 2 ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_perf , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_ebf , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_ewasc , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_dexcpt , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_test , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_logerr , tvb , offset + 2 , 1 , ENC_NA ) ;
2002-01-10 01:28:45 +00:00
if ( ! ( ( flags & 0x10 ) > > 4 ) & & ( ( flags & 0x08 ) > > 3 ) ) {
2008-05-15 12:54:27 +00:00
proto_item * hidden_item ;
2012-05-07 22:11:34 +00:00
hidden_item = proto_tree_add_item ( tree , hf_scsi_modesns_errrep , tvb ,
offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2008-05-15 12:54:27 +00:00
PROTO_ITEM_SET_HIDDEN ( hidden_item ) ;
2002-01-10 01:28:45 +00:00
}
else {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_modesns_errrep , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_interval_timer , tvb , offset + 4 , 4 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_report_count , tvb , offset + 8 , 4 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
break ;
2007-02-11 00:45:15 +00:00
case SCSI_SPC_MODEPAGE_PWR :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_idle , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_standby , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_uint ( tree , hf_scsi_spc_modepage_idle_condition_timer , tvb , offset + 4 , 2 ,
2012-05-07 22:11:34 +00:00
tvb_get_ntohs ( tvb , offset + 4 ) * 100 ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_uint ( tree , hf_scsi_spc_modepage_standby_condition_timer , tvb , offset + 6 , 2 ,
2012-05-07 22:11:34 +00:00
tvb_get_ntohs ( tvb , offset + 6 ) * 100 ) ;
2002-01-10 01:28:45 +00:00
break ;
2007-02-11 00:45:15 +00:00
case SCSI_SPC_MODEPAGE_LUN :
2002-08-21 07:15:00 +00:00
return FALSE ;
2007-02-11 00:45:15 +00:00
case SCSI_SPC_MODEPAGE_PORT :
2012-05-07 22:11:34 +00:00
proto = tvb_get_guint8 ( tvb , offset + 2 ) & 0x0F ;
proto_tree_add_item ( tree , hf_scsi_protocol , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
if ( proto = = SCSI_PROTO_FCP ) {
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_dtfd , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_plpb , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_ddis , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_dlm , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_rha , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_alwi , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_dtipe , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_dtoli , tvb , offset + 3 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_spc_modepage_rr_tov_units , tvb , offset + 6 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_spc_modepage_rr_tov , tvb , offset + 7 , 1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
else if ( proto = = SCSI_PROTO_iSCSI ) {
2002-08-21 07:15:00 +00:00
return FALSE ;
2002-01-10 01:28:45 +00:00
}
else {
2002-08-21 07:15:00 +00:00
return FALSE ;
2002-01-10 01:28:45 +00:00
}
break ;
2002-08-21 07:15:00 +00:00
case SCSI_SCSI2_MODEPAGE_PERDEV :
return FALSE ;
default :
return FALSE ;
}
return TRUE ;
}
static gboolean
2012-05-07 22:11:34 +00:00
dissect_scsi_sbc_modepage ( tvbuff_t * tvb , packet_info * pinfo _U_ ,
2012-07-24 02:00:50 +00:00
proto_tree * tree , guint offset , guint8 pcode , guint8 spf _U_ , guint8 subpcode _U_ )
2002-08-21 07:15:00 +00:00
{
switch ( pcode ) {
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_FMTDEV :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_tracks_per_zone , tvb , offset + 2 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_alternate_sectors_per_zone , tvb , offset + 4 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_alternate_tracks_per_zone , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_alternate_tracks_per_lu , tvb , offset + 8 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_sectors_per_track , tvb , offset + 10 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_data_bytes_per_physical_sector , tvb , offset + 12 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_interleave , tvb , offset + 14 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_track_skew_factor , tvb , offset + 16 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_cylinder_skew_factor , tvb , offset + 18 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_ssec , tvb , offset + 20 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_hsec , tvb , offset + 20 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_rmb , tvb , offset + 20 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_surf , tvb , offset + 20 , 1 , ENC_NA ) ;
2002-01-10 01:28:45 +00:00
break ;
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_RDWRERR :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_awre , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_arre , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_tb , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_rc , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_eer , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_per , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_dte , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_dcr , tvb , offset + 2 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_read_retry_count , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_correction_span , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_head_offset_count , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_data_strobe_offset_count , tvb , offset + 6 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_write_retry_count , tvb , offset + 8 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_recovery_time_limit , tvb , offset + 10 , 2 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
break ;
2012-05-07 22:11:34 +00:00
case SCSI_SBC_MODEPAGE_DISKGEOM :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_number_of_cylinders , tvb , offset + 2 , 3 , ENC_BIG_ENDIAN ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_number_of_heads , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_starting_cyl_pre_compensation , tvb , offset + 6 , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_starting_cyl_reduced_write_current , tvb , offset + 9 , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_device_step_rate , tvb , offset + 12 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_landing_zone_cyl , tvb , offset + 14 , 3 , ENC_BIG_ENDIAN ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_rotational_offset , tvb , offset + 18 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_medium_rotation_rate , tvb , offset + 20 , 2 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
break ;
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_FLEXDISK :
2002-08-21 07:15:00 +00:00
return FALSE ;
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_VERERR :
2002-08-21 07:15:00 +00:00
return FALSE ;
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_CACHE :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_ic , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_abpf , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_cap , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_disc , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_size , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_wce , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_mf , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_rcd , tvb , offset + 2 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_demand_read_retention_priority , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_write_retention_priority , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_disable_pre_fetch_xfer_len , tvb , offset + 4 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_minimum_pre_fetch , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_maximum_pre_fetch , tvb , offset + 8 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_maximum_pre_fetch_ceiling , tvb , offset + 10 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_fsw , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_lbcss , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_dra , tvb , offset + 12 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_vendor_specific , tvb , offset + 12 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_number_of_cache_segments , tvb , offset + 13 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_cache_segment_size , tvb , offset + 14 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_sbc_modepage_non_cache_segment_size , tvb , offset + 17 , 3 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
break ;
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_MEDTYPE :
2002-08-21 07:15:00 +00:00
return FALSE ;
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_NOTPART :
2002-08-21 07:15:00 +00:00
return FALSE ;
2006-12-10 13:52:30 +00:00
case SCSI_SBC_MODEPAGE_XORCTL :
2002-08-21 07:15:00 +00:00
return FALSE ;
default :
return FALSE ;
}
return TRUE ;
}
static const value_string compression_algorithm_vals [ ] = {
2007-03-26 21:16:21 +00:00
{ 0x00 , " No algorithm selected " } ,
{ 0x01 , " Default algorithm " } ,
{ 0x03 , " IBM ALDC with 512-byte buffer " } ,
{ 0x04 , " IBM ALDC with 1024-byte buffer " } ,
{ 0x05 , " IBM ALDC with 2048-byte buffer " } ,
{ 0x10 , " IBM IDRC " } ,
{ 0x20 , " DCLZ " } ,
{ 0xFF , " Unregistered algorithm " } ,
{ 0 , NULL }
2002-08-21 07:15:00 +00:00
} ;
static gboolean
2012-05-07 22:11:34 +00:00
dissect_scsi_ssc2_modepage ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ ,
proto_tree * tree _U_ , guint offset _U_ ,
2012-07-24 02:00:50 +00:00
guint8 pcode , guint8 spf _U_ , guint8 subpcode _U_ )
2002-08-21 07:15:00 +00:00
{
switch ( pcode ) {
case SCSI_SSC2_MODEPAGE_DATACOMP :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_dce , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_dcc , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_dde , tvb , offset + 3 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_red , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_compression_algorithm , tvb , offset + 4 , 4 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_decompression_algorithm , tvb , offset + 8 , 4 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
break ;
2002-08-21 07:15:00 +00:00
case SCSI_SSC2_MODEPAGE_DEVCONF :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_caf , tvb , offset + 2 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_active_format , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_active_partition , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_write_object_buffer_full_ratio , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_read_object_buffer_empty_ratio , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_uint_format_value ( tree , hf_scsi_ssc2_modepage_write_delay_time , tvb , offset + 6 , 2 ,
tvb_get_ntohs ( tvb , offset + 6 ) , " %u 100ms " ,
2012-05-07 22:11:34 +00:00
tvb_get_ntohs ( tvb , offset + 6 ) ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_obr , tvb , offset + 8 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_lois , tvb , offset + 8 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_rsmk , tvb , offset + 8 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_avc , tvb , offset + 8 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_socf , tvb , offset + 8 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_robo , tvb , offset + 8 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_rew , tvb , offset + 8 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_gap_size , tvb , offset + 9 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_eod_defined , tvb , offset + 10 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_eeg , tvb , offset + 10 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_sew , tvb , offset + 10 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_swp , tvb , offset + 10 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_baml , tvb , offset + 10 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_bam , tvb , offset + 10 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_object_buffer_size_at_early_warning , tvb , offset + 11 , 3 , ENC_BIG_ENDIAN ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_select_data_compression_algorithm , tvb , offset + 14 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_oir , tvb , offset + 15 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_rewind_on_reset , tvb , offset + 15 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_asocwp , tvb , offset + 15 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_perswp , tvb , offset + 15 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_prmwp , tvb , offset + 15 , 1 , ENC_NA ) ;
2006-03-04 10:10:48 +00:00
break ;
2002-08-21 07:15:00 +00:00
case SCSI_SSC2_MODEPAGE_MEDPAR1 :
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_maximum_additional_partitions , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_additional_partitions_defined , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_fdp , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_dsp , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_idp , tvb , offset + 4 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_psum , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_pofm , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_clear , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_addp , tvb , offset + 4 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_media_format_recognition , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_partition_units , tvb , offset + 6 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_ssc2_modepage_partition_size , tvb , offset + 8 , 2 , ENC_BIG_ENDIAN ) ;
2007-03-26 21:16:21 +00:00
break ;
2002-08-21 07:15:00 +00:00
case SCSI_SSC2_MODEPAGE_MEDPAR2 :
return FALSE ;
case SCSI_SSC2_MODEPAGE_MEDPAR3 :
return FALSE ;
case SCSI_SSC2_MODEPAGE_MEDPAR4 :
return FALSE ;
default :
return FALSE ;
}
return TRUE ;
}
2006-03-06 20:06:05 +00:00
static gboolean
2012-05-07 22:11:34 +00:00
dissect_scsi_mmc5_modepage ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ ,
2012-07-24 02:00:50 +00:00
proto_tree * tree _U_ , guint offset _U_ , guint8 pcode , guint8 spf _U_ , guint8 subpcode _U_ )
2006-03-06 20:06:05 +00:00
{
2012-05-07 22:11:34 +00:00
guint8 flags ;
guint8 i ;
2006-03-17 06:26:14 +00:00
2006-03-06 20:06:05 +00:00
switch ( pcode ) {
2006-03-17 06:26:14 +00:00
case SCSI_MMC5_MODEPAGE_MRW :
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_lba_space , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2006-03-17 06:26:14 +00:00
break ;
case SCSI_MMC5_MODEPAGE_WRPARAM :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_bufe , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_ls_v , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_wrparam_test_write , tvb , offset + 2 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_write_type , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_wrparam_multi_session , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_fp , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_copy , tvb , offset + 3 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_track_mode , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_data_block_type , tvb , offset + 4 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_link_size , tvb , offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_initiator_application_code , tvb , offset + 7 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_session_format , tvb , offset + 8 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_packet_size , tvb , offset + 10 , 4 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_audio_pause_length , tvb , offset + 14 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_media_catalog_number , tvb , offset + 16 , 16 , ENC_NA | ENC_ASCII ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_international_standard_recording_code , tvb , offset + 32 , 16 , ENC_NA | ENC_ASCII ) ;
2006-03-17 06:26:14 +00:00
for ( i = 0 ; i < 4 ; i + + ) {
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset + 48 + i ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_uint_format ( tree , hf_scsi_mmc5_modepage_sub_header_byte , tvb , offset + 48 + i , 1 , flags ,
" Sub-header Byte %u: %u " , i , flags ) ;
2006-03-17 06:26:14 +00:00
}
2012-05-07 22:11:34 +00:00
if ( 0x36 = = tvb_get_guint8 ( tvb , offset + 1 ) )
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_vendor_specific , tvb , offset + 52 , 4 , ENC_BIG_ENDIAN ) ;
2006-03-17 06:26:14 +00:00
break ;
2006-03-06 20:06:05 +00:00
case SCSI_MMC3_MODEPAGE_MMCAP :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_dvd_ram_read , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_dvd_r_read , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_dvd_rom_read , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_method_2 , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_cd_rw_read , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_cd_r_read , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_dvd_ram_write , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_dvd_r_write , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_dvd_rom_write , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_mmcap_test_write , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_cd_rw_write , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_cd_r_write , tvb , offset + 3 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_buf , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_mmcap_multi_session , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_mode_2_form2 , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_mode_2_form1 , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_digital_port2 , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_digital_port1 , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_composite , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_audio_play , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_read_bar_code , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_upc , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_isrc , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_c2_pointers_supported , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_rw_deinterleaved_corrected , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_rw_supported , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_cd_da_stream_is_accurate , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_cd_da_cmds_supported , tvb , offset + 5 , 1 , ENC_NA ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_loading_mechanism_type , tvb , offset + 6 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_eject , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_prevent_jumper , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_lock_state , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_lock , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_rw_in_lead_in , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_side_change_capable , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_sw_slot_selection , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_changer_supports_disc_present , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_separate_channel_mute , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_separate_volume_levels , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_number_of_volume_levels_supported , tvb , offset + 10 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_buffer_size_supported , tvb , offset + 12 , 2 , ENC_BIG_ENDIAN ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_length , tvb , offset + 17 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_lsbf , tvb , offset + 17 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_rck , tvb , offset + 17 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_bckf , tvb , offset + 17 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_copy_management_revision_support , tvb , offset + 22 , 2 , ENC_BIG_ENDIAN ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_rotation_control_selected , tvb , offset + 27 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_current_write_speed_selected , tvb , offset + 28 , 2 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_mmc5_modepage_num_write_speed_performance , tvb , offset + 30 , 2 , ENC_BIG_ENDIAN ) ;
2006-03-06 20:06:05 +00:00
break ;
default :
return FALSE ;
}
return TRUE ;
}
2002-08-21 07:15:00 +00:00
static gboolean
2012-05-07 22:11:34 +00:00
dissect_scsi_smc_modepage ( tvbuff_t * tvb , packet_info * pinfo _U_ ,
2012-07-24 02:00:50 +00:00
proto_tree * tree , guint offset , guint8 pcode , guint8 spf _U_ , guint8 subpcode _U_ )
2002-08-21 07:15:00 +00:00
{
guint8 param_list_len ;
switch ( pcode ) {
2007-02-11 00:20:37 +00:00
case SCSI_SMC_MODEPAGE_EAA :
2014-09-08 01:12:08 +00:00
param_list_len = tvb_get_guint8 ( tvb , offset + 1 ) ;
2002-08-21 07:15:00 +00:00
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_first_medium_transport_element_address , tvb , offset + 2 , 2 , ENC_BIG_ENDIAN ) ;
2002-08-21 07:15:00 +00:00
param_list_len - = 2 ;
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_number_of_medium_transport_elements , tvb , offset + 4 , 2 , ENC_BIG_ENDIAN ) ;
2002-08-21 07:15:00 +00:00
param_list_len - = 2 ;
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_first_storage_element_address , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2002-08-21 07:15:00 +00:00
param_list_len - = 2 ;
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_number_of_storage_elements , tvb , offset + 8 , 2 , ENC_BIG_ENDIAN ) ;
2002-08-21 07:15:00 +00:00
param_list_len - = 2 ;
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_first_import_export_element_address , tvb , offset + 10 , 2 , ENC_BIG_ENDIAN ) ;
2002-08-21 07:15:00 +00:00
param_list_len - = 2 ;
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_number_of_import_export_elements , tvb , offset + 12 , 2 , ENC_BIG_ENDIAN ) ;
2002-08-21 07:15:00 +00:00
param_list_len - = 2 ;
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_first_data_transfer_element_address , tvb , offset + 14 , 2 , ENC_BIG_ENDIAN ) ;
2002-08-21 07:15:00 +00:00
param_list_len - = 2 ;
if ( param_list_len < 2 )
break ;
2014-09-08 01:12:08 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_number_of_data_transfer_elements , tvb , offset + 16 , 2 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
break ;
2007-02-11 00:20:37 +00:00
case SCSI_SMC_MODEPAGE_TRANGEOM :
2002-08-21 07:15:00 +00:00
return FALSE ;
2007-02-11 00:20:37 +00:00
case SCSI_SMC_MODEPAGE_DEVCAP :
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_smc_modepage_stordt , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_storie , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_storst , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_stormt , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_dt , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_ie , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_st , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_mt , tvb , offset + 4 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_dt , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_ie , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_st , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_mt , tvb , offset + 5 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_dt , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_ie , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_st , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_mt , tvb , offset + 6 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_dt , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_ie , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_st , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_mt , tvb , offset + 7 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_ne_dt , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_ne_ie , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_ne_st , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_mt_ne_mt , tvb , offset + 12 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_ne_dt , tvb , offset + 13 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_ne_ie , tvb , offset + 13 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_ne_st , tvb , offset + 13 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_st_ne_mt , tvb , offset + 13 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_ne_dt , tvb , offset + 14 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_ne_ie , tvb , offset + 14 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_ne_st , tvb , offset + 14 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_ie_ne_mt , tvb , offset + 14 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_ne_dt , tvb , offset + 15 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_ne_ie , tvb , offset + 15 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_ne_st , tvb , offset + 15 , 1 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_smc_modepage_dt_ne_mt , tvb , offset + 15 , 1 , ENC_NA ) ;
2002-01-10 01:28:45 +00:00
break ;
default :
2002-08-21 07:15:00 +00:00
return FALSE ;
}
return TRUE ;
}
static guint
2012-05-07 22:11:34 +00:00
dissect_scsi_modepage ( tvbuff_t * tvb , packet_info * pinfo ,
proto_tree * scsi_tree , guint offset ,
scsi_device_type devtype )
2002-08-21 07:15:00 +00:00
{
2012-07-24 02:00:50 +00:00
guint16 plen ;
2013-01-29 13:53:16 +00:00
guint8 pcode , spf , subpcode = 0 ;
2012-05-07 22:11:34 +00:00
proto_tree * tree ;
2002-08-21 07:15:00 +00:00
const value_string * modepage_val ;
2012-05-07 22:11:34 +00:00
int hf_pagecode ;
2002-08-21 07:15:00 +00:00
gboolean ( * dissect_modepage ) ( tvbuff_t * , packet_info * , proto_tree * ,
2012-07-24 02:00:50 +00:00
guint , guint8 , guint8 , guint8 ) ;
2002-08-21 07:15:00 +00:00
2012-07-24 02:00:50 +00:00
pcode = tvb_get_guint8 ( tvb , offset ) & SCSI_MS_PCODE_BITS ;
spf = tvb_get_guint8 ( tvb , offset ) & 0x40 ;
if ( spf ) {
subpcode = tvb_get_guint8 ( tvb , offset + 1 ) ;
plen = tvb_get_ntohs ( tvb , offset + 2 ) ;
} else {
plen = tvb_get_guint8 ( tvb , offset + 1 ) ;
}
2002-08-21 07:15:00 +00:00
2013-03-29 00:26:23 +00:00
if ( try_val_to_str ( pcode & SCSI_MS_PCODE_BITS ,
2012-05-07 22:11:34 +00:00
scsi_spc_modepage_val ) = = NULL ) {
2002-08-21 07:15:00 +00:00
/*
* This isn ' t a generic mode page that applies to all SCSI
* device types ; try to interpret it based on what we deduced ,
* or were told , the device type is .
*/
switch ( devtype ) {
case SCSI_DEV_SBC :
2006-12-10 13:52:30 +00:00
modepage_val = scsi_sbc_modepage_val ;
2002-08-21 07:15:00 +00:00
hf_pagecode = hf_scsi_sbcpagecode ;
2006-12-10 13:52:30 +00:00
dissect_modepage = dissect_scsi_sbc_modepage ;
2002-08-21 07:15:00 +00:00
break ;
case SCSI_DEV_SSC :
modepage_val = scsi_ssc2_modepage_val ;
hf_pagecode = hf_scsi_sscpagecode ;
dissect_modepage = dissect_scsi_ssc2_modepage ;
break ;
case SCSI_DEV_SMC :
2007-02-11 00:20:37 +00:00
modepage_val = scsi_smc_modepage_val ;
2002-08-21 07:15:00 +00:00
hf_pagecode = hf_scsi_smcpagecode ;
2007-02-11 00:20:37 +00:00
dissect_modepage = dissect_scsi_smc_modepage ;
2002-08-21 07:15:00 +00:00
break ;
2006-03-06 20:06:05 +00:00
case SCSI_DEV_CDROM :
modepage_val = scsi_mmc5_modepage_val ;
hf_pagecode = hf_scsi_mmcpagecode ;
dissect_modepage = dissect_scsi_mmc5_modepage ;
break ;
2002-08-21 07:15:00 +00:00
default :
/*
* The " val_to_str() " lookup will fail in this table
2013-03-29 00:26:23 +00:00
* ( it failed in " try_val_to_str() " ) , so it ' ll return
2002-08-21 07:15:00 +00:00
* " Unknown (XXX) " , which is what we want .
*/
2007-02-11 00:45:15 +00:00
modepage_val = scsi_spc_modepage_val ;
2012-07-24 02:00:50 +00:00
hf_pagecode = hf_scsi_spc_pagecode ;
2007-02-11 00:45:15 +00:00
dissect_modepage = dissect_scsi_spc_modepage ;
2002-08-21 07:15:00 +00:00
break ;
2010-12-10 15:49:33 +00:00
}
2002-08-21 07:15:00 +00:00
} else {
2007-02-11 00:45:15 +00:00
modepage_val = scsi_spc_modepage_val ;
2012-07-24 02:00:50 +00:00
hf_pagecode = hf_scsi_spc_pagecode ;
2007-02-11 00:45:15 +00:00
dissect_modepage = dissect_scsi_spc_modepage ;
2002-08-21 07:15:00 +00:00
}
2012-07-24 02:00:50 +00:00
2014-07-08 18:47:17 +00:00
tree = proto_tree_add_subtree_format ( scsi_tree , tvb , offset , plen + ( spf ? 4 : 2 ) ,
ett_scsi_page , NULL , " %s Mode Page " ,
2012-05-07 22:11:34 +00:00
val_to_str ( pcode & SCSI_MS_PCODE_BITS ,
modepage_val , " Unknown (0x%08x) " ) ) ;
2012-07-24 02:00:50 +00:00
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 ) ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_pagecode , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2012-07-24 02:00:50 +00:00
if ( spf ) {
proto_tree_add_item ( tree , hf_scsi_spc_subpagecode , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_modepage_plen , tvb , offset + 2 , 2 , ENC_BIG_ENDIAN ) ;
2012-09-07 02:09:59 +00:00
} else {
2012-07-24 02:00:50 +00:00
proto_tree_add_item ( tree , hf_scsi_modepage_plen , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
}
2002-08-21 07:15:00 +00:00
2012-05-07 22:11:34 +00:00
if ( ! tvb_bytes_exist ( tvb , offset , plen ) ) {
2007-03-26 21:16:21 +00:00
/* XXX - why not just drive on and throw an exception? */
2002-08-21 07:15:00 +00:00
return ( plen + 2 ) ;
}
2002-08-28 21:04:11 +00:00
2003-03-05 07:41:24 +00:00
if ( ! ( * dissect_modepage ) ( tvb , pinfo , tree , offset ,
2012-07-24 02:00:50 +00:00
pcode , spf , subpcode ) ) {
2013-08-08 17:25:03 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_scsi_unknown_page , tvb , offset + 2 , plen ) ;
2002-01-10 01:28:45 +00:00
}
return ( plen + 2 ) ;
}
2006-11-22 10:12:59 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_modeselect6 ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len , scsi_task_data_t * cdata )
2002-01-10 01:28:45 +00:00
{
2012-05-07 22:11:34 +00:00
guint8 flags ;
guint plen ;
2013-08-08 18:03:29 +00:00
gint desclen ;
2006-03-07 10:25:42 +00:00
tvbuff_t * blockdesc_tvb ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_uint_format ( tree , hf_scsi_modesel_flags , tvb , offset , 1 ,
flags , " PF = %u, SP = %u " , flags & 0x10 ,
flags & 0x1 ) ;
proto_tree_add_item ( tree , hf_scsi_paramlen , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
else {
/* Mode Parameter has the following format:
* Mode Parameter Header
* - Mode Data Len , Medium Type , Dev Specific Parameter ,
* Blk Desc Len
* Block Descriptor ( s )
* - Number of blocks , density code , block length
* Page ( s )
* - Page code , Page length , Page Parameters
*/
2002-08-19 13:06:43 +00:00
if ( payload_len < 1 )
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_mode_data_length8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
payload_len - = 1 ;
/* The mode data length is reserved for MODE SELECT, so we just
use the payload length . */
if ( payload_len < 1 )
return ;
2006-05-05 22:01:45 +00:00
switch ( cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) {
2003-07-09 03:42:55 +00:00
case SCSI_DEV_SBC :
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_dev_sbc_medium_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2003-07-09 03:42:55 +00:00
break ;
default :
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_medium_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2003-07-09 03:42:55 +00:00
break ;
}
2002-08-19 13:06:43 +00:00
offset + = 1 ;
payload_len - = 1 ;
if ( payload_len < 1 )
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_device_specific_parameter , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
payload_len - = 1 ;
if ( payload_len < 1 )
return ;
2012-05-07 22:11:34 +00:00
desclen = tvb_get_guint8 ( tvb , offset ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_block_descriptor_length8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
payload_len - = 1 ;
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) > 0 ) {
blockdesc_tvb = tvb_new_subset ( tvb , offset , MIN ( tvb_length_remaining ( tvb , offset ) , desclen ) , desclen ) ;
2012-05-07 22:11:34 +00:00
dissect_scsi_blockdescs ( blockdesc_tvb , pinfo , tree , cdata , FALSE ) ;
2006-03-07 10:25:42 +00:00
}
2002-08-20 03:21:42 +00:00
offset + = desclen ;
payload_len - = desclen ;
2002-08-19 13:06:43 +00:00
2002-01-10 01:28:45 +00:00
/* offset points to the start of the mode page */
2012-05-07 22:11:34 +00:00
while ( ( payload_len > 0 ) & & tvb_bytes_exist ( tvb , offset , 2 ) ) {
plen = dissect_scsi_modepage ( tvb , pinfo , tree , offset , cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) ;
2002-01-10 01:28:45 +00:00
offset + = plen ;
2002-08-19 13:06:43 +00:00
payload_len - = plen ;
2002-01-10 01:28:45 +00:00
}
}
}
2006-09-29 10:40:51 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_modeselect10 ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len , scsi_task_data_t * cdata )
2002-01-10 01:28:45 +00:00
{
2012-05-07 22:11:34 +00:00
guint8 flags ;
gboolean longlba ;
2013-08-08 18:03:29 +00:00
gint desclen ;
2012-05-07 22:11:34 +00:00
guint plen ;
2006-03-07 10:25:42 +00:00
tvbuff_t * blockdesc_tvb ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_uint_format ( tree , hf_scsi_modesel_flags , tvb , offset , 1 ,
flags , " PF = %u, SP = %u " , flags & 0x10 ,
flags & 0x1 ) ;
proto_tree_add_item ( tree , hf_scsi_paramlen16 , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
else {
/* Mode Parameter has the following format:
* Mode Parameter Header
* - Mode Data Len , Medium Type , Dev Specific Parameter ,
* Blk Desc Len
* Block Descriptor ( s )
* - Number of blocks , density code , block length
* Page ( s )
* - Page code , Page length , Page Parameters
*/
2002-08-19 13:06:43 +00:00
if ( payload_len < 1 )
return ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_mode_data_length16 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 2 ;
payload_len - = 2 ;
/* The mode data length is reserved for MODE SELECT, so we just
use the payload length . */
if ( payload_len < 1 )
return ;
2012-05-07 22:11:34 +00:00
if ( ! cdata - > itl )
2006-04-21 22:00:38 +00:00
return ;
2006-05-05 22:01:45 +00:00
switch ( cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) {
2003-07-09 03:42:55 +00:00
case SCSI_DEV_SBC :
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_dev_sbc_medium_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2003-07-09 03:42:55 +00:00
break ;
default :
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_medium_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2003-07-09 03:42:55 +00:00
break ;
}
2002-08-19 13:06:43 +00:00
offset + = 1 ;
payload_len - = 1 ;
if ( payload_len < 1 )
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_device_specific_parameter , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
payload_len - = 1 ;
if ( payload_len < 1 )
return ;
2012-05-07 22:11:34 +00:00
longlba = tvb_get_guint8 ( tvb , offset ) & 0x1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_longlba , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2010-12-10 15:49:33 +00:00
offset + = 2 ; /* skip LongLBA byte and reserved byte */
2002-08-19 13:06:43 +00:00
payload_len - = 2 ;
if ( payload_len < 1 )
return ;
2012-05-07 22:11:34 +00:00
desclen = tvb_get_ntohs ( tvb , offset ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_block_descriptor_length16 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2004-05-13 21:56:19 +00:00
offset + = 2 ;
payload_len - = 2 ;
2002-08-19 13:06:43 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) > 0 ) {
blockdesc_tvb = tvb_new_subset ( tvb , offset , MIN ( tvb_length_remaining ( tvb , offset ) , desclen ) , desclen ) ;
2012-05-07 22:11:34 +00:00
dissect_scsi_blockdescs ( blockdesc_tvb , pinfo , tree , cdata , longlba ) ;
2006-03-07 10:25:42 +00:00
}
2002-08-20 03:21:42 +00:00
offset + = desclen ;
payload_len - = desclen ;
2002-08-19 13:06:43 +00:00
2002-01-10 01:28:45 +00:00
/* offset points to the start of the mode page */
2012-05-07 22:11:34 +00:00
while ( ( payload_len > 0 ) & & tvb_bytes_exist ( tvb , offset , 2 ) ) {
plen = dissect_scsi_modepage ( tvb , pinfo , tree , offset , cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) ;
2002-08-19 13:06:43 +00:00
offset + = plen ;
payload_len - = plen ;
2002-01-10 01:28:45 +00:00
}
}
}
2002-08-21 07:15:00 +00:00
static void
2012-05-07 22:11:34 +00:00
dissect_scsi_pagecode ( tvbuff_t * tvb , packet_info * pinfo _U_ ,
proto_tree * tree , guint offset ,
scsi_task_data_t * cdata )
2002-08-21 07:15:00 +00:00
{
guint8 pcode ;
2012-05-07 22:11:34 +00:00
int hf_pagecode ;
2002-08-21 07:15:00 +00:00
2005-08-11 08:15:52 +00:00
/* unless we have cdata there is not much point in continuing */
if ( ! cdata )
return ;
2012-05-07 22:11:34 +00:00
pcode = tvb_get_guint8 ( tvb , offset ) ;
2013-03-29 00:26:23 +00:00
if ( try_val_to_str ( pcode & SCSI_MS_PCODE_BITS ,
2012-05-07 22:11:34 +00:00
scsi_spc_modepage_val ) = = NULL ) {
2002-08-21 07:15:00 +00:00
/*
* This isn ' t a generic mode page that applies to all SCSI
* device types ; try to interpret it based on what we deduced ,
* or were told , the device type is .
*/
2006-05-05 22:01:45 +00:00
switch ( cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) {
2002-08-21 07:15:00 +00:00
case SCSI_DEV_SBC :
hf_pagecode = hf_scsi_sbcpagecode ;
break ;
case SCSI_DEV_SSC :
hf_pagecode = hf_scsi_sscpagecode ;
break ;
case SCSI_DEV_SMC :
hf_pagecode = hf_scsi_smcpagecode ;
break ;
2006-03-06 20:06:05 +00:00
case SCSI_DEV_CDROM :
hf_pagecode = hf_scsi_mmcpagecode ;
break ;
2002-08-21 07:15:00 +00:00
default :
2012-07-24 02:00:50 +00:00
hf_pagecode = hf_scsi_spc_pagecode ;
2002-08-21 07:15:00 +00:00
break ;
2007-03-26 21:16:21 +00:00
}
2002-08-21 07:15:00 +00:00
} else {
2012-07-24 02:00:50 +00:00
hf_pagecode = hf_scsi_spc_pagecode ;
2002-08-21 07:15:00 +00:00
}
2012-05-07 22:11:34 +00:00
proto_tree_add_uint ( tree , hf_pagecode , tvb , offset , 1 , pcode ) ;
2002-08-21 07:15:00 +00:00
}
2006-11-22 10:12:59 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_modesense6 ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len , scsi_task_data_t * cdata )
2002-01-10 01:28:45 +00:00
{
2012-05-07 22:11:34 +00:00
guint8 flags ;
guint plen ;
gint tot_len , desclen ;
2006-03-07 10:25:42 +00:00
tvbuff_t * blockdesc_tvb ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_uint_format ( tree , hf_scsi_modesns_flags , tvb , offset , 1 ,
flags , " DBD = %u " , flags & 0x8 ) ;
proto_tree_add_item ( tree , hf_scsi_modesns_pc , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
dissect_scsi_pagecode ( tvb , pinfo , tree , offset + 1 , cdata ) ;
proto_tree_add_item ( tree , hf_scsi_alloclen , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
else {
/* Mode sense response has the following format:
* Mode Parameter Header
* - Mode Data Len , Medium Type , Dev Specific Parameter ,
* Blk Desc Len
* Block Descriptor ( s )
* - Number of blocks , density code , block length
* Page ( s )
* - Page code , Page length , Page Parameters
*/
2012-05-07 22:11:34 +00:00
tot_len = tvb_get_guint8 ( tvb , offset ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_mode_data_length8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
2002-01-10 01:28:45 +00:00
/* The actual payload is the min of the length in the response & the
* space allocated by the initiator as specified in the request .
2002-08-19 13:06:43 +00:00
*
* XXX - the payload length includes the length field , so we
* really should subtract the length of the length field from
* the payload length - but can it really be zero here ?
2002-01-10 01:28:45 +00:00
*/
2006-03-07 10:25:42 +00:00
if ( payload_len & & ( tot_len > ( gint ) payload_len ) )
2002-01-10 01:28:45 +00:00
tot_len = payload_len ;
2002-08-19 13:06:43 +00:00
if ( tot_len < 1 )
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_medium_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
tot_len - = 1 ;
if ( tot_len < 1 )
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_device_specific_parameter , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
tot_len - = 1 ;
if ( tot_len < 1 )
return ;
2012-05-07 22:11:34 +00:00
desclen = tvb_get_guint8 ( tvb , offset ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_block_descriptor_length8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
tot_len - = 1 ;
2006-03-09 16:00:33 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) > 0 ) {
blockdesc_tvb = tvb_new_subset ( tvb , offset , MIN ( tvb_length_remaining ( tvb , offset ) , desclen ) , desclen ) ;
2012-05-07 22:11:34 +00:00
dissect_scsi_blockdescs ( blockdesc_tvb , pinfo , tree , cdata , FALSE ) ;
2006-03-07 10:25:42 +00:00
}
2002-08-20 03:21:42 +00:00
offset + = desclen ;
tot_len - = desclen ;
2002-08-19 13:06:43 +00:00
2002-01-10 01:28:45 +00:00
/* offset points to the start of the mode page */
2012-05-07 22:11:34 +00:00
while ( ( tot_len > 0 ) & & tvb_bytes_exist ( tvb , offset , 2 ) ) {
plen = dissect_scsi_modepage ( tvb , pinfo , tree , offset , cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) ;
2002-08-19 13:06:43 +00:00
offset + = plen ;
tot_len - = plen ;
2002-01-10 01:28:45 +00:00
}
}
}
2006-09-29 10:40:51 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_modesense10 ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len , scsi_task_data_t * cdata )
2002-01-10 01:28:45 +00:00
{
2012-05-07 22:11:34 +00:00
guint8 flags ;
gboolean longlba ;
gint tot_len , desclen ;
guint plen ;
2006-03-07 10:25:42 +00:00
tvbuff_t * blockdesc_tvb ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_uint_format ( tree , hf_scsi_modesns_flags , tvb , offset , 1 ,
flags , " LLBAA = %u, DBD = %u " , flags & 0x10 ,
flags & 0x8 ) ;
proto_tree_add_item ( tree , hf_scsi_modesns_pc , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
dissect_scsi_pagecode ( tvb , pinfo , tree , offset + 1 , cdata ) ;
proto_tree_add_item ( tree , hf_scsi_alloclen16 , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
else {
/* Mode sense response has the following format:
* Mode Parameter Header
* - Mode Data Len , Medium Type , Dev Specific Parameter ,
* Blk Desc Len
* Block Descriptor ( s )
* - Number of blocks , density code , block length
* Page ( s )
* - Page code , Page length , Page Parameters
*/
2012-05-07 22:11:34 +00:00
tot_len = tvb_get_ntohs ( tvb , offset ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_mode_data_length16 , tvb , offset , 2 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 2 ;
/* The actual payload is the min of the length in the response & the
* space allocated by the initiator as specified in the request .
*
* XXX - the payload length includes the length field , so we
* really should subtract the length of the length field from
* the payload length - but can it really be zero here ?
*/
2006-03-07 10:25:42 +00:00
if ( payload_len & & ( tot_len > ( gint ) payload_len ) )
2002-03-31 20:28:41 +00:00
tot_len = payload_len ;
2002-08-19 13:06:43 +00:00
if ( tot_len < 1 )
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_medium_type , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
tot_len - = 1 ;
if ( tot_len < 1 )
return ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_device_specific_parameter , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-08-19 13:06:43 +00:00
offset + = 1 ;
tot_len - = 1 ;
if ( tot_len < 1 )
return ;
2012-05-07 22:11:34 +00:00
longlba = tvb_get_guint8 ( tvb , offset ) & 0x1 ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_longlba , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2010-12-10 15:49:33 +00:00
offset + = 2 ; /* skip LongLBA byte and reserved byte */
2002-08-19 13:06:43 +00:00
tot_len - = 2 ;
if ( tot_len < 1 )
return ;
2012-05-07 22:11:34 +00:00
desclen = tvb_get_guint8 ( tvb , offset ) ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( tree , hf_scsi_modesel_block_descriptor_length8 , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2004-05-13 21:56:19 +00:00
offset + = 2 ;
tot_len - = 2 ;
2002-08-19 13:06:43 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) > 0 ) {
blockdesc_tvb = tvb_new_subset ( tvb , offset , MIN ( tvb_length_remaining ( tvb , offset ) , desclen ) , desclen ) ;
2012-05-07 22:11:34 +00:00
dissect_scsi_blockdescs ( blockdesc_tvb , pinfo , tree , cdata , longlba ) ;
2006-03-07 10:25:42 +00:00
}
2002-08-20 03:21:42 +00:00
offset + = desclen ;
tot_len - = desclen ;
2002-08-19 13:06:43 +00:00
2002-01-10 01:28:45 +00:00
/* offset points to the start of the mode page */
2012-05-07 22:11:34 +00:00
while ( ( tot_len > 0 ) & & tvb_bytes_exist ( tvb , offset , 2 ) ) {
plen = dissect_scsi_modepage ( tvb , pinfo , tree , offset , cdata - > itl - > cmdset & SCSI_CMDSET_MASK ) ;
2002-08-19 13:06:43 +00:00
offset + = plen ;
tot_len - = plen ;
2002-01-10 01:28:45 +00:00
}
}
}
2006-10-30 12:18:29 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_preventallowmediaremoval ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2006-03-13 06:23:59 +00:00
{
if ( isreq & & iscdb ) {
2012-09-02 21:46:50 +00:00
static const int * prevent_allow_fields [ ] = {
& hf_scsi_prevent_allow_prevent ,
NULL
} ;
guint8 flags ;
proto_tree_add_bitmask ( tree , tvb , offset + 3 , hf_scsi_prevent_allow_flags ,
ett_scsi_prevent_allow , prevent_allow_fields , ENC_BIG_ENDIAN ) ;
flags = tvb_get_guint8 ( tvb , offset + 3 ) ;
if ( flags & 0x01 ) {
col_append_str ( pinfo - > cinfo , COL_INFO , " PREVENT " ) ;
2013-01-29 13:53:16 +00:00
} else {
2012-09-02 21:46:50 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO , " ALLOW " ) ;
}
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2006-03-13 06:23:59 +00:00
}
}
2006-09-29 10:40:51 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_persistentreservein ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len , scsi_task_data_t * cdata )
2002-01-10 01:28:45 +00:00
{
2005-07-30 02:09:59 +00:00
guint16 flags ;
2012-05-07 22:11:34 +00:00
int numrec , i ;
guint len ;
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvin_svcaction , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_alloclen16 , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
/* We store the service action since we want to interpret the data */
2012-05-07 22:11:34 +00:00
cdata - > itlq - > flags = tvb_get_guint8 ( tvb , offset ) ;
2002-01-10 01:28:45 +00:00
}
else {
if ( cdata ) {
2006-04-22 02:16:52 +00:00
flags = cdata - > itlq - > flags ;
2002-01-10 01:28:45 +00:00
}
else {
flags = 0xFF ;
}
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvin_generation_number , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
2012-05-07 22:11:34 +00:00
len = tvb_get_ntohl ( tvb , offset + 4 ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvin_additional_length , tvb , offset + 4 , 4 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
len = ( payload_len > len ) ? len : payload_len ;
2002-08-28 21:04:11 +00:00
2007-02-11 00:45:15 +00:00
if ( ( flags & 0x1F ) = = SCSI_SPC_RESVIN_SVCA_RDKEYS ) {
2007-03-26 21:16:21 +00:00
/* XXX - what if len is < 8? That may be illegal, but
that doesn ' t make it impossible . . . . */
2007-01-26 17:06:17 +00:00
numrec = len / 8 ;
2002-01-10 01:28:45 +00:00
offset + = 8 ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
for ( i = 0 ; i < numrec ; i + + ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_persresv_key , tvb , offset ,
8 , ENC_NA ) ;
2007-01-26 17:06:17 +00:00
offset + = 8 ;
2002-01-10 01:28:45 +00:00
}
}
2013-08-05 15:55:10 +00:00
else if ( ( flags & 0x1F ) = = SCSI_SPC_RESVIN_SVCA_RDRESV & & len ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_persresv_key , tvb , offset + 8 ,
8 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_persresv_scopeaddr , tvb ,
2013-08-05 15:55:10 +00:00
offset + 16 , 4 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_persresv_scope , tvb , offset + 21 ,
2012-05-07 22:11:34 +00:00
1 , ENC_BIG_ENDIAN ) ;
2013-08-05 15:55:10 +00:00
proto_tree_add_item ( tree , hf_scsi_persresv_type , tvb , offset + 21 ,
2012-05-07 22:11:34 +00:00
1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
}
}
2006-09-29 10:40:51 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_persistentreserveout ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
2014-11-25 20:24:23 +00:00
guint8 svcaction ;
2002-01-10 01:28:45 +00:00
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2014-11-25 20:24:23 +00:00
svcaction = tvb_get_guint8 ( tvb , offset ) & 0x1F ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvout_svcaction , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2014-11-25 20:24:23 +00:00
/* type and scope are ignored for REGISTER, REGISTER AND IGNORE EXISTING KEY, CLEAR service actions */
if ( svcaction ! = SCSI_PR_REGISTER & & svcaction ! = SCSI_PR_REG_IGNORE & & svcaction ! = SCSI_PR_CLEAR ) {
proto_tree_add_item ( tree , hf_scsi_persresv_scope , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_persresv_type , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
}
2013-08-05 15:55:10 +00:00
proto_tree_add_item ( tree , hf_scsi_paramlen16 , tvb , offset + 4 , 4 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2010-12-10 15:49:33 +00:00
/* We store the service action since we want to interpret the params */
2012-05-07 22:11:34 +00:00
cdata - > itlq - > flags = tvb_get_guint8 ( tvb , offset ) ;
2010-12-10 15:49:33 +00:00
}
else if ( isreq & & ! iscdb ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvout_reskey , tvb , offset ,
8 , ENC_NA ) ;
proto_tree_add_item ( tree , hf_scsi_persresvout_sareskey , tvb ,
offset + 8 , 8 , ENC_NA ) ;
2010-12-10 15:49:33 +00:00
if ( cdata - > itlq - > flags = = 0x07 ) {
2013-08-05 15:55:10 +00:00
/* Service action REGISTER AND MOVE */
2010-12-10 15:49:33 +00:00
const int * persresv_fields [ ] = {
& hf_scsi_persresv_control_rsvd ,
& hf_scsi_persresv_control_unreg ,
& hf_scsi_persresv_control_aptpl ,
NULL
} ;
2013-08-05 15:55:10 +00:00
guint32 tid_len = tvb_get_ntohl ( tvb , offset + 20 ) ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvout_obsolete , tvb ,
offset + 16 , 1 , ENC_NA ) ;
2011-01-16 20:51:21 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 17 ,
2012-05-07 22:11:34 +00:00
hf_scsi_persresvout_control , ett_persresv_control ,
persresv_fields , ENC_BIG_ENDIAN ) ;
2013-08-05 15:55:10 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvout_rel_tpi , tvb ,
2014-09-19 01:18:34 +00:00
offset + 18 , 2 , ENC_BIG_ENDIAN ) ;
2013-08-05 15:55:10 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvout_transportid_len , tvb ,
2014-09-19 01:18:34 +00:00
offset + 20 , 4 , ENC_BIG_ENDIAN ) ;
2013-08-05 15:55:10 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvout_transportid , tvb ,
offset + 24 , tid_len , ENC_NA ) ;
2010-12-10 15:49:33 +00:00
}
else {
2013-08-05 15:55:10 +00:00
/* Other service actions than REGISTER AND MOVE. */
2010-12-10 15:49:33 +00:00
const int * persresv_fields [ ] = {
& hf_scsi_persresv_control_rsvd1 ,
& hf_scsi_persresv_control_spec_i_pt ,
& hf_scsi_persresv_control_all_tg_pt ,
& hf_scsi_persresv_control_rsvd2 ,
& hf_scsi_persresv_control_aptpl ,
NULL
} ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_persresvout_obsolete , tvb ,
offset + 16 , 4 , ENC_NA ) ;
2011-01-16 20:51:21 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 20 ,
2012-05-07 22:11:34 +00:00
hf_scsi_persresvout_control , ett_persresv_control ,
persresv_fields , ENC_BIG_ENDIAN ) ;
2010-12-10 15:49:33 +00:00
}
2002-01-10 01:28:45 +00:00
}
else {
}
}
2006-11-22 10:12:59 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_release6 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
}
2006-11-23 09:21:16 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_release10 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
guint8 flags ;
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_uint_format ( tree , hf_scsi_release_flags , tvb , offset , 1 ,
flags ,
" Flags: 3rd Party ID = %u, LongID = %u " ,
flags & 0x10 , flags & 0x2 ) ;
2002-01-10 01:28:45 +00:00
if ( ( flags & 0x12 ) = = 0x10 ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_release_thirdpartyid , tvb ,
offset + 2 , 1 , ENC_NA ) ;
2002-01-10 01:28:45 +00:00
}
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_paramlen16 , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
}
static void
2012-05-07 22:11:34 +00:00
dissect_spc_reportdeviceidentifier ( tvbuff_t * tvb _U_ , packet_info * pinfo _U_ ,
proto_tree * tree _U_ ,
guint offset _U_ , gboolean isreq _U_ , gboolean iscdb _U_ ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
}
2012-07-27 05:09:13 +00:00
void
dissect_scsi_lun ( proto_tree * tree , tvbuff_t * tvb , guint offset ) {
2014-07-08 18:47:17 +00:00
proto_item * ti ;
proto_tree * tt = proto_tree_add_subtree ( tree , tvb , offset , 8 , ett_scsi_lun , & ti , " LUN: " ) ;
2012-07-27 05:09:13 +00:00
guint8 address_mode ;
guint16 lun = 0 ;
address_mode = tvb_get_guint8 ( tvb , offset ) > > 6 ;
proto_tree_add_item ( tt , hf_scsi_lun_address_mode , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
switch ( address_mode ) {
case 0 :
proto_tree_add_item ( tt , hf_scsi_bus , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
lun = tvb_get_guint8 ( tvb , offset + 1 ) ;
proto_tree_add_uint ( tt , hf_scsi_lun , tvb , offset + 1 , 1 , lun ) ;
break ;
case 1 :
lun = tvb_get_ntohs ( tvb , offset ) & 0x3fff ;
proto_tree_add_uint ( tt , hf_scsi_lun , tvb , offset , 2 , lun ) ;
break ;
/*
This mode is complex . Lets implement it if / once we see this mode used in the wild .
case 3 :
break ;
*/
}
proto_item_append_text ( ti , " %d (%s) " , lun , val_to_str ( address_mode , scsi_lun_address_mode_vals , " Unknown Address Mode:%d " ) ) ;
}
2006-09-29 10:40:51 +00:00
void
2014-04-16 22:45:45 +00:00
dissect_spc_reportluns ( tvbuff_t * tvb_a , packet_info * pinfo _U_ ,
proto_tree * tree , guint offset_a ,
2012-05-07 22:11:34 +00:00
gboolean isreq , gboolean iscdb , guint payload_len _U_ ,
scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
2012-05-07 22:11:34 +00:00
gint listlen ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_select_report , tvb_a , offset_a + 1 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_alloclen32 , tvb_a , offset_a + 5 , 4 , ENC_BIG_ENDIAN ) ;
2012-05-07 22:11:34 +00:00
if ( cdata ) {
2014-04-16 22:45:45 +00:00
cdata - > itlq - > alloc_len = tvb_get_ntohl ( tvb_a , offset_a + 5 ) ;
2007-03-26 21:16:21 +00:00
}
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , tvb_a , offset_a + 10 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2006-04-05 07:25:57 +00:00
} else if ( ! isreq ) {
2007-03-26 21:16:21 +00:00
if ( ! cdata ) {
return ;
}
2006-04-05 07:25:57 +00:00
2014-04-16 22:45:45 +00:00
TRY_SCSI_CDB_ALLOC_LEN ( cdata - > itlq - > alloc_len ) ; /* (defines/initializes try_tvb & try_offset) */
listlen = tvb_get_ntohl ( try_tvb , try_offset ) ;
proto_tree_add_item ( tree , hf_scsi_reportluns_lun_list_length , try_tvb , try_offset , 4 , ENC_BIG_ENDIAN ) ;
try_offset + = 8 ;
2006-03-09 16:00:33 +00:00
2012-05-07 22:11:34 +00:00
while ( listlen > 0 ) {
2014-04-16 22:45:45 +00:00
dissect_scsi_lun ( tree , try_tvb , try_offset ) ;
try_offset + = 8 ;
2006-04-05 07:25:57 +00:00
listlen - = 8 ;
2002-01-10 01:28:45 +00:00
}
2007-03-26 21:16:21 +00:00
END_TRY_SCSI_CDB_ALLOC_LEN ;
2002-01-10 01:28:45 +00:00
}
}
2013-05-18 16:26:26 +00:00
const value_string mpi_action_vals [ ] = {
{ MPI_MANAGEMENT_PROTOCOL_IN , " Management Protocol In " } ,
{ MPI_REPORT_SUPPORTED_OPERATION_CODES , " Report Supported Opcodes " } ,
{ 0 , NULL }
} ;
2013-05-19 14:24:31 +00:00
const value_string report_opcodes_options_vals [ ] = {
{ 0 , " Report ALL opcodes " } ,
{ 1 , " Report ONE opcode, NO service action " } ,
{ 2 , " Report ONE opcode, WITH service action " } ,
{ 0 , NULL }
} ;
2013-05-18 16:26:26 +00:00
void
2014-04-16 22:45:45 +00:00
dissect_spc_mgmt_protocol_in ( tvbuff_t * tvb_a , packet_info * pinfo _U_ ,
proto_tree * tree , guint offset_a ,
2013-06-11 21:33:48 +00:00
gboolean isreq , gboolean iscdb ,
guint payload_len _U_ ,
scsi_task_data_t * cdata _U_ )
2013-05-18 16:26:26 +00:00
{
2013-06-11 21:33:48 +00:00
guint8 service_action ;
2013-05-18 16:26:26 +00:00
if ( isreq & & iscdb ) {
2014-04-16 22:45:45 +00:00
service_action = tvb_get_guint8 ( tvb_a , offset_a ) & 0x1F ;
2013-06-11 21:33:48 +00:00
if ( cdata ) {
cdata - > itlq - > flags = service_action ;
2013-06-13 13:51:19 +00:00
}
2013-06-11 21:33:48 +00:00
col_append_str ( pinfo - > cinfo , COL_INFO ,
val_to_str ( service_action , mpi_action_vals , " Unknown " ) ) ;
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_mpi_service_action , tvb_a ,
offset_a , 1 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:33:48 +00:00
switch ( service_action ) {
case MPI_REPORT_SUPPORTED_OPERATION_CODES :
proto_tree_add_item ( tree , hf_scsi_report_opcodes_rctd ,
2014-04-16 22:45:45 +00:00
tvb_a , offset_a + 1 , 1 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tree , hf_scsi_report_opcodes_options ,
2014-04-16 22:45:45 +00:00
tvb_a , offset_a + 1 , 1 , ENC_BIG_ENDIAN ) ;
if ( cdata & & ( tvb_get_guint8 ( tvb_a , offset_a + 1 ) & 0x07 ) ) {
2013-06-11 21:33:48 +00:00
/* Need the one-command parameter format */
cdata - > itlq - > flags | = 0x80 ;
}
proto_tree_add_item ( tree , hf_scsi_report_opcodes_requested_o ,
2014-04-16 22:45:45 +00:00
tvb_a , offset_a + 2 , 1 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tree , hf_scsi_report_opcodes_requested_sa ,
2014-04-16 22:45:45 +00:00
tvb_a , offset_a + 3 , 2 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:33:48 +00:00
2014-04-16 22:45:45 +00:00
proto_tree_add_item ( tree , hf_scsi_alloclen32 , tvb_a ,
offset_a + 5 , 4 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:33:48 +00:00
if ( cdata ) {
2014-04-16 22:45:45 +00:00
cdata - > itlq - > alloc_len = tvb_get_ntohl ( tvb_a , offset_a + 5 ) ;
2013-06-11 21:33:48 +00:00
}
break ;
default :
2014-04-16 22:45:45 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_scsi_no_dissection_for_service_action , tvb_a , offset_a + 1 , 8 ) ;
2013-06-11 21:33:48 +00:00
}
2014-04-16 22:45:45 +00:00
proto_tree_add_bitmask ( tree , tvb_a , offset_a + 10 , hf_scsi_control ,
2013-06-11 21:33:48 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2013-05-18 16:26:26 +00:00
} else if ( ! isreq ) {
proto_item * it ;
2013-06-11 21:33:48 +00:00
int length ;
cmdset_t * csdata ;
int ctdp ;
2013-05-18 16:26:26 +00:00
if ( ! cdata | | ! cdata - > itlq | | ! cdata - > itl ) {
return ;
}
2013-06-11 21:33:48 +00:00
csdata = get_cmdset_data ( cdata - > itlq , cdata - > itl ) ;
2013-05-18 16:26:26 +00:00
2014-04-16 22:45:45 +00:00
it = proto_tree_add_uint ( tree , hf_scsi_mpi_service_action , tvb_a , 0 , 0 , cdata - > itlq - > flags & 0x7f ) ;
2013-05-18 16:26:26 +00:00
PROTO_ITEM_SET_GENERATED ( it ) ;
2014-04-16 22:45:45 +00:00
TRY_SCSI_CDB_ALLOC_LEN ( cdata - > itlq - > alloc_len ) ; /* (defines/initializes try_tvb & try_offset) */
2013-05-18 16:26:26 +00:00
switch ( cdata - > itlq - > flags & 0x7f ) {
2013-06-11 21:33:48 +00:00
case MPI_REPORT_SUPPORTED_OPERATION_CODES :
if ( cdata - > itlq - > flags & 0x80 ) {
/* one-command format */
proto_tree_add_item ( tree , hf_scsi_report_opcodes_ctdp_one ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
ctdp = tvb_get_guint8 ( try_tvb , try_offset + 1 ) & 0x80 ;
2013-05-19 14:45:12 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tree , hf_scsi_report_opcodes_support ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
2013-05-19 14:45:12 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tree , hf_scsi_report_opcodes_cdb_length ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 2 , 2 , ENC_BIG_ENDIAN ) ;
length = tvb_get_ntohs ( try_tvb , try_offset + 2 ) ;
2013-05-19 14:45:12 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tree , hf_scsi_report_opcodes_cdb_usage_data ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 4 , length , ENC_NA ) ;
2013-05-19 14:45:12 +00:00
2013-06-11 21:33:48 +00:00
if ( ctdp ) {
proto_tree * tr ;
2013-05-27 01:09:49 +00:00
2014-07-08 18:47:17 +00:00
tr = proto_tree_add_subtree ( tree , try_tvb , try_offset ,
12 , ett_timeout_descriptor , NULL , " Timeout Descriptor " ) ;
2013-05-27 01:09:49 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_tdl ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset , 2 , ENC_BIG_ENDIAN ) ;
2013-05-27 01:09:49 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_npt ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 4 , 4 , ENC_BIG_ENDIAN ) ;
2013-05-27 01:09:49 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_rct ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 8 , 4 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:33:48 +00:00
}
} else {
/* all commands format */
proto_tree_add_item ( tree , hf_scsi_report_opcodes_cdl ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 0 , 4 , ENC_BIG_ENDIAN ) ;
length = tvb_get_ntohl ( try_tvb , try_offset ) ;
try_offset + = 4 ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
while ( length > = 20 ) {
proto_tree * tr ;
2013-05-18 16:26:26 +00:00
2014-07-08 18:47:17 +00:00
tr = proto_tree_add_subtree_format ( tree , try_tvb , try_offset ,
20 , ett_command_descriptor , NULL , " Command Descriptor: %s " ,
2014-04-16 22:45:45 +00:00
val_to_str_ext_const ( tvb_get_guint8 ( try_tvb , try_offset + 0 ) , csdata - > cdb_vals_ext , " Unknown " ) ) ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , csdata - > hf_opcode ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 0 , 1 , ENC_BIG_ENDIAN ) ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_sa ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 2 , 2 , ENC_BIG_ENDIAN ) ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_ctdp ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
ctdp = tvb_get_guint8 ( try_tvb , try_offset + 5 ) & 0x02 ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_servactv ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 5 , 1 , ENC_BIG_ENDIAN ) ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_cdb_length ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2013-05-18 16:26:26 +00:00
2014-04-16 22:45:45 +00:00
try_offset + = 8 ;
2013-06-11 21:33:48 +00:00
length - = 8 ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
if ( ! ctdp ) {
continue ;
}
2013-05-18 16:26:26 +00:00
2014-07-08 18:47:17 +00:00
tr = proto_tree_add_subtree ( tree , try_tvb , try_offset ,
12 , ett_timeout_descriptor , NULL , " Timeout Descriptor " ) ;
2013-05-27 01:09:49 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_tdl ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset , 2 , ENC_BIG_ENDIAN ) ;
2013-05-27 01:09:49 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_npt ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 4 , 4 , ENC_BIG_ENDIAN ) ;
2013-05-27 01:09:49 +00:00
2013-06-11 21:33:48 +00:00
proto_tree_add_item ( tr , hf_scsi_report_opcodes_rct ,
2014-04-16 22:45:45 +00:00
try_tvb , try_offset + 8 , 4 , ENC_BIG_ENDIAN ) ;
2013-05-18 16:26:26 +00:00
2014-04-16 22:45:45 +00:00
try_offset + = 12 ;
2013-06-11 21:33:48 +00:00
length - = 12 ;
2013-05-18 16:26:26 +00:00
2013-06-11 21:33:48 +00:00
}
}
break ;
default :
2014-04-16 22:45:45 +00:00
proto_tree_add_expert ( tree , pinfo , & ei_scsi_no_dissection_for_service_action , try_tvb , try_offset + 1 , 8 ) ;
2013-06-11 21:33:48 +00:00
}
2013-05-18 16:26:26 +00:00
END_TRY_SCSI_CDB_ALLOC_LEN ;
}
}
2006-03-04 10:10:48 +00:00
static void
2013-06-12 05:15:45 +00:00
dissect_scsi_sns_specific_info ( tvbuff_t * tvb , proto_tree * sns_tree , guint offset , guint8 sense_key ) {
guint8 valid = tvb_get_guint8 ( tvb , offset ) & 0x80 ;
proto_tree_add_item ( sns_tree , hf_scsi_sksv , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( sns_tree , hf_scsi_sks_info , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
if ( sense_key = = 5 & & valid ) {
/*illegal request*/
proto_tree_add_item ( sns_tree , hf_scsi_sks_fp_cd , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( sns_tree , hf_scsi_sks_fp_bpv , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( sns_tree , hf_scsi_sks_fp_bit , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( sns_tree , hf_scsi_sks_fp_field , tvb , offset , 3 , ENC_BIG_ENDIAN ) ;
}
}
static void
dissect_scsi_fix_snsinfo ( tvbuff_t * tvb , proto_tree * sns_tree , guint offset ) {
2008-05-15 12:54:27 +00:00
proto_item * hidden_item ;
2012-05-07 22:11:34 +00:00
guint8 flags ;
2014-12-13 17:52:20 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_sns_valid , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:22:58 +00:00
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset + 2 ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_sns_filemark , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( sns_tree , hf_scsi_sns_eom , tvb , offset + 2 , 1 , ENC_NA ) ;
proto_tree_add_item ( sns_tree , hf_scsi_sns_ili , tvb , offset + 2 , 1 , ENC_NA ) ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_snskey , tvb , offset + 2 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( sns_tree , hf_scsi_snsinfo , tvb , offset + 3 , 4 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( sns_tree , hf_scsi_addlsnslen , tvb , offset + 7 , 1 , ENC_BIG_ENDIAN ) ;
2013-08-08 17:25:03 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_sns_command_specific_information , tvb , offset + 8 , 4 , ENC_NA ) ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_ascascq , tvb , offset + 12 , 2 , ENC_BIG_ENDIAN ) ;
hidden_item = proto_tree_add_item ( sns_tree , hf_scsi_asc , tvb , offset + 12 , 1 , ENC_BIG_ENDIAN ) ;
2008-05-15 12:54:27 +00:00
PROTO_ITEM_SET_HIDDEN ( hidden_item ) ;
2012-05-07 22:11:34 +00:00
hidden_item = proto_tree_add_item ( sns_tree , hf_scsi_ascq , tvb , offset + 13 , 1 , ENC_BIG_ENDIAN ) ;
2008-05-15 12:54:27 +00:00
PROTO_ITEM_SET_HIDDEN ( hidden_item ) ;
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_fru , tvb , offset + 14 , 1 , ENC_BIG_ENDIAN ) ;
2013-06-12 05:15:45 +00:00
dissect_scsi_sns_specific_info ( tvb , sns_tree , offset + 15 , flags & 0x0F ) ;
2006-03-04 10:10:48 +00:00
}
2012-11-20 03:17:46 +00:00
static void
dissect_scsi_descriptor_snsinfo ( tvbuff_t * tvb , proto_tree * sns_tree , guint offset )
{
2013-06-12 05:15:45 +00:00
guint8 additional_length , sense_key ;
2013-06-11 21:22:58 +00:00
guint end ;
2012-11-20 03:17:46 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_snskey , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( sns_tree , hf_scsi_ascascq , tvb , offset + 2 , 2 , ENC_BIG_ENDIAN ) ;
2013-06-11 21:22:58 +00:00
proto_tree_add_item ( sns_tree , hf_scsi_addlsnslen , tvb , offset + 7 , 1 , ENC_BIG_ENDIAN ) ;
2013-06-12 05:15:45 +00:00
sense_key = tvb_get_guint8 ( tvb , offset + 1 ) & 0xF ;
2013-06-11 21:22:58 +00:00
additional_length = tvb_get_guint8 ( tvb , offset + 7 ) ;
end = offset + 7 + additional_length ;
offset + = 8 ;
while ( offset < end - 2 ) {
2013-08-07 04:28:35 +00:00
guint8 desc_type , desc_length , desc_end ;
2013-06-11 21:22:58 +00:00
proto_item * item ;
proto_tree * desc_tree ;
desc_type = tvb_get_guint8 ( tvb , offset ) ;
desc_length = tvb_get_guint8 ( tvb , offset + 1 ) ;
2013-08-07 04:28:35 +00:00
desc_end = offset + desc_length + 2 ;
2014-07-08 18:47:17 +00:00
desc_tree = proto_tree_add_subtree ( sns_tree , tvb , offset , desc_length + 2 , ett_sense_descriptor , NULL ,
2013-06-13 13:51:19 +00:00
val_to_str ( desc_type , scsi_sense_desc_type_val , " Unknown (0x%02x) " ) ) ;
2013-06-11 21:22:58 +00:00
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 ) {
case 2 :
/*sense key specific*/
if ( desc_length = = 6 ) {
2013-06-12 05:15:45 +00:00
dissect_scsi_sns_specific_info ( tvb , desc_tree , offset + 4 , sense_key ) ;
2013-06-11 21:22:58 +00:00
}
break ;
2013-06-12 14:20:36 +00:00
case 6 :
/*OSD object identification*/
if ( desc_length = = 0x1e ) {
static const int * command_functions [ ] = {
& hf_scsi_sns_osd_object_validation ,
& hf_scsi_sns_osd_object_cmd_cap_v ,
& hf_scsi_sns_osd_object_command ,
& hf_scsi_sns_osd_object_imp_st_att ,
& hf_scsi_sns_osd_object_sa_cap_v ,
& hf_scsi_sns_osd_object_set_att ,
& hf_scsi_sns_osd_object_ga_cap_v ,
& hf_scsi_sns_osd_object_get_att ,
NULL
} ;
proto_tree_add_bitmask ( desc_tree , tvb , offset + 8 , hf_scsi_sns_osd_object_not_initiated , ett_sense_osd_not_initiated , command_functions , ENC_BIG_ENDIAN ) ;
2013-07-23 10:36:52 +00:00
proto_tree_add_bitmask ( desc_tree , tvb , offset + 12 , hf_scsi_sns_osd_object_completed , ett_sense_osd_completed , command_functions , ENC_BIG_ENDIAN ) ;
2013-06-12 14:20:36 +00:00
proto_tree_add_item ( desc_tree , hf_scsi_sns_osd_partition_id , tvb , offset + 16 , 8 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( desc_tree , hf_scsi_sns_osd_object_id , tvb , offset + 24 , 8 , ENC_BIG_ENDIAN ) ;
}
break ;
2013-08-07 04:28:35 +00:00
case 8 :
/*OSD attribute identification*/
offset + = 4 ;
while ( offset + 8 < = desc_end ) {
const attribute_page_numbers_t * apn ;
guint32 page , number ;
page = tvb_get_ntohl ( tvb , offset ) ;
proto_tree_add_item ( desc_tree , hf_scsi_sns_osd_attr_page , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
offset + = 4 ;
number = tvb_get_ntohl ( tvb , offset ) ;
item = proto_tree_add_item ( desc_tree , hf_scsi_sns_osd_attr_number , tvb , offset , 4 , ENC_BIG_ENDIAN ) ;
apn = osd_lookup_attribute ( page , number ) ;
offset + = 4 ;
if ( apn ) {
proto_item_append_text ( item , " (%s) " , apn - > name ) ;
} else {
proto_item_append_text ( item , " (Unknown) " ) ;
}
}
2013-06-11 21:22:58 +00:00
default :
break ;
}
offset + = desc_length + 2 ;
}
2012-11-20 03:17:46 +00:00
}
2013-12-11 20:04:37 +00:00
static void
2012-11-20 03:17:46 +00:00
dissect_scsi_sense ( tvbuff_t * tvb , proto_tree * sns_tree , guint offset )
{
guint8 sense_type ;
proto_tree_add_item ( sns_tree , hf_scsi_sns_errtype , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
sense_type = tvb_get_guint8 ( tvb , offset ) & 0x7f ;
switch ( sense_type ) {
case 0x70 :
case 0x71 :
dissect_scsi_fix_snsinfo ( tvb , sns_tree , offset ) ;
2013-01-29 13:53:16 +00:00
break ;
2012-11-20 03:17:46 +00:00
case 0x72 :
case 0x73 :
dissect_scsi_descriptor_snsinfo ( tvb , sns_tree , offset ) ;
2013-01-29 13:53:16 +00:00
break ;
2012-11-20 03:17:46 +00:00
}
}
2006-10-30 12:18:29 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_requestsense ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_alloclen , tvb , offset + 3 , 1 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2012-11-20 03:17:46 +00:00
} else if ( ! isreq ) {
dissect_scsi_sense ( tvb , tree , offset ) ;
2002-01-10 01:28:45 +00:00
}
}
2006-11-22 10:12:59 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_reserve6 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
}
2006-11-23 09:21:16 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_reserve10 ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
guint8 flags ;
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
flags = tvb_get_guint8 ( tvb , offset ) ;
proto_tree_add_uint_format ( tree , hf_scsi_release_flags , tvb , offset , 1 ,
flags ,
" Flags: 3rd Party ID = %u, LongID = %u " ,
flags & 0x10 , flags & 0x2 ) ;
2002-01-10 01:28:45 +00:00
if ( ( flags & 0x12 ) = = 0x10 ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_release_thirdpartyid , tvb ,
offset + 2 , 1 , ENC_NA ) ;
2002-01-10 01:28:45 +00:00
}
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_paramlen16 , tvb , offset + 6 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
}
2006-10-30 12:18:29 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_testunitready ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
2007-04-13 17:16:24 +00:00
guint offset , gboolean isreq , gboolean iscdb ,
2005-05-28 03:37:16 +00:00
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-01-10 01:28:45 +00:00
{
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( isreq & & iscdb ) {
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
}
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
2006-11-22 10:12:59 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_senddiagnostic ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb _U_ ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2003-10-28 03:57:49 +00:00
{
if ( ! tree & & ! isreq )
return ;
2012-09-24 19:42:12 +00:00
proto_tree_add_item ( tree , hf_scsi_senddiag_st_code , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_senddiag_pf , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_senddiag_st , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_senddiag_devoff , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_senddiag_unitoff , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_paramlen16 , tvb , offset + 2 , 2 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 4 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2003-10-28 03:57:49 +00:00
}
2006-10-30 12:18:29 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_spc_writebuffer ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb _U_ ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2003-10-28 03:57:49 +00:00
{
if ( ! tree & & ! isreq )
return ;
2012-09-24 19:42:12 +00:00
proto_tree_add_item ( tree , hf_scsi_wb_mode , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_wb_bufferid , tvb , offset + 1 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_wb_bufoffset , tvb , offset + 2 , 3 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_paramlen24 , tvb , offset + 5 , 3 , ENC_BIG_ENDIAN ) ;
2010-12-06 22:00:08 +00:00
proto_tree_add_bitmask ( tree , tvb , offset + 8 , hf_scsi_control ,
2012-05-07 22:11:34 +00:00
ett_scsi_control , cdb_control_fields , ENC_BIG_ENDIAN ) ;
2003-10-28 03:57:49 +00:00
}
2002-03-12 11:30:45 +00:00
static void
2012-05-07 22:11:34 +00:00
dissect_scsi_varlencdb ( tvbuff_t * tvb , packet_info * pinfo _U_ , proto_tree * tree ,
guint offset , gboolean isreq , gboolean iscdb ,
guint payload_len _U_ , scsi_task_data_t * cdata _U_ )
2002-03-12 11:30:45 +00:00
{
if ( ! tree )
return ;
2002-08-28 21:04:11 +00:00
2002-03-12 11:30:45 +00:00
if ( isreq & & iscdb ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( tree , hf_scsi_control , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_add_cdblen , tvb , offset + 6 , 1 , ENC_BIG_ENDIAN ) ;
proto_tree_add_item ( tree , hf_scsi_svcaction , tvb , offset + 7 , 2 , ENC_BIG_ENDIAN ) ;
2002-03-31 20:28:41 +00:00
2002-03-12 11:30:45 +00:00
}
}
2002-08-21 07:15:00 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_scsi_rsp ( tvbuff_t * tvb , packet_info * pinfo ,
proto_tree * tree , itlq_nexus_t * itlq , itl_nexus_t * itl ,
guint8 scsi_status )
2002-08-21 07:15:00 +00:00
{
2012-05-07 22:11:34 +00:00
proto_item * ti ;
proto_tree * scsi_tree = NULL ;
cmdset_t * csdata ;
2006-04-24 08:16:18 +00:00
scsi_task_data_t * cdata ;
2013-09-14 14:33:04 +00:00
cdata = wmem_new ( wmem_packet_scope ( ) , scsi_task_data_t ) ;
2012-05-07 22:11:34 +00:00
cdata - > itl = itl ;
cdata - > itlq = itlq ;
cdata - > type = SCSI_PDU_TYPE_RSP ;
2006-04-24 08:16:18 +00:00
tap_queue_packet ( scsi_tap , pinfo , cdata ) ;
2006-04-22 04:42:07 +00:00
2012-05-07 22:11:34 +00:00
csdata = get_cmdset_data ( itlq , itl ) ; /* will g_assert if itlq is null */
2005-02-17 12:07:45 +00:00
/* Nothing really to do here, just print some stuff passed to us
2002-08-21 07:15:00 +00:00
*/
2005-02-17 12:07:45 +00:00
if ( tree ) {
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_protocol_format ( tree , proto_scsi , tvb , 0 ,
0 , " SCSI Response (%s) " ,
2013-12-12 19:26:55 +00:00
val_to_str_ext ( itlq - > scsi_opcode ,
csdata - > cdb_vals_ext ,
" CDB:0x%02x " ) ) ;
2012-05-07 22:11:34 +00:00
scsi_tree = proto_item_add_subtree ( ti , ett_scsi ) ;
2005-02-17 12:07:45 +00:00
}
2006-04-05 08:51:45 +00:00
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_lun , tvb , 0 , 0 , itlq - > lun ) ;
2006-04-05 08:51:45 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2006-04-07 10:15:15 +00:00
2006-04-21 22:00:38 +00:00
2012-05-07 22:11:34 +00:00
if ( itl ) {
ti = proto_tree_add_uint_format ( scsi_tree , hf_scsi_inq_devtype , tvb , 0 , 0 , itl - > cmdset & SCSI_CMDSET_MASK , " Command Set:%s (0x%02x) %s " , val_to_str ( itl - > cmdset & SCSI_CMDSET_MASK , scsi_devtype_val , " Unknown (%d) " ) , itl - > cmdset & SCSI_CMDSET_MASK , itl - > cmdset & SCSI_CMDSET_DEFAULT ? " (Using default commandset) " : " " ) ;
2006-04-22 02:16:52 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2006-04-21 22:00:38 +00:00
2012-05-07 22:11:34 +00:00
if ( itlq - > scsi_opcode ! = 0xffff ) {
ti = proto_tree_add_uint ( scsi_tree , csdata - > hf_opcode , tvb , 0 , 0 , itlq - > scsi_opcode ) ;
2006-04-21 22:00:38 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
}
2006-04-21 11:08:24 +00:00
}
2012-05-07 22:11:34 +00:00
if ( itlq - > first_exchange_frame ) {
2006-04-07 10:15:15 +00:00
nstime_t delta_time ;
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_request_frame , tvb , 0 , 0 , itlq - > first_exchange_frame ) ;
2006-04-07 10:15:15 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2006-04-21 11:08:24 +00:00
nstime_delta ( & delta_time , & pinfo - > fd - > abs_ts , & itlq - > fc_time ) ;
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_time ( scsi_tree , hf_scsi_time , tvb , 0 , 0 , & delta_time ) ;
2006-04-07 10:15:15 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
}
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_status , tvb , 0 , 0 , scsi_status ) ;
2006-04-05 08:51:45 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2013-06-14 02:50:46 +00:00
col_add_fstr ( pinfo - > cinfo , COL_INFO , " SCSI: Response LUN: 0x%02x (%s) (%s) " , itlq - > lun ,
2013-12-12 19:26:55 +00:00
val_to_str_ext ( itlq - > scsi_opcode , csdata - > cdb_vals_ext , " CDB:0x%02x " ) ,
2012-05-07 22:11:34 +00:00
val_to_str ( scsi_status , scsi_status_val , " Unknown (0x%08x) " ) ) ;
2006-04-03 20:29:53 +00:00
2013-06-14 02:50:46 +00:00
col_set_fence ( pinfo - > cinfo , COL_INFO ) ;
2002-08-21 07:15:00 +00:00
}
void
2012-05-07 22:11:34 +00:00
dissect_scsi_snsinfo ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
guint offset , guint snslen , itlq_nexus_t * itlq , itl_nexus_t * itl )
2002-08-21 07:15:00 +00:00
{
2012-05-07 22:11:34 +00:00
proto_item * ti ;
proto_tree * sns_tree = NULL ;
const char * old_proto ;
2006-04-24 08:16:18 +00:00
scsi_task_data_t * cdata ;
2013-09-14 14:33:04 +00:00
cdata = wmem_new ( wmem_packet_scope ( ) , scsi_task_data_t ) ;
2012-05-07 22:11:34 +00:00
cdata - > itl = itl ;
cdata - > itlq = itlq ;
cdata - > type = SCSI_PDU_TYPE_SNS ;
2006-04-24 08:16:18 +00:00
tap_queue_packet ( scsi_tap , pinfo , cdata ) ;
2006-03-13 22:35:14 +00:00
2012-05-07 22:11:34 +00:00
old_proto = pinfo - > current_proto ;
2006-03-13 22:35:14 +00:00
pinfo - > current_proto = " SCSI " ;
2002-08-21 07:15:00 +00:00
if ( tree ) {
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_protocol_format ( tree , proto_scsi , tvb , offset ,
snslen , " SCSI: SNS Info " ) ;
sns_tree = proto_item_add_subtree ( ti , ett_scsi ) ;
2005-02-17 12:07:45 +00:00
}
2002-01-10 01:28:45 +00:00
2005-02-17 12:07:45 +00:00
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_uint ( sns_tree , hf_scsi_lun , tvb , 0 , 0 , itlq - > lun ) ;
2005-02-17 12:07:45 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2013-06-14 02:50:46 +00:00
col_append_fstr ( pinfo - > cinfo , COL_INFO , " LUN:0x%02x " , itlq - > lun ) ;
2006-04-03 20:29:53 +00:00
2013-06-14 02:50:46 +00:00
col_set_fence ( pinfo - > cinfo , COL_INFO ) ;
2005-02-17 12:07:45 +00:00
2012-11-20 03:17:46 +00:00
dissect_scsi_sense ( tvb , sns_tree , offset ) ;
2006-03-13 22:35:14 +00:00
2012-05-07 22:11:34 +00:00
pinfo - > current_proto = old_proto ;
2002-01-10 01:28:45 +00:00
}
2005-05-28 03:37:16 +00:00
static scsi_cdb_table_t spc [ 256 ] = {
2012-05-07 22:11:34 +00:00
/*SPC 0x00*/ { dissect_spc_testunitready } ,
/*SPC 0x01*/ { NULL } ,
/*SPC 0x02*/ { NULL } ,
/*SPC 0x03*/ { dissect_spc_requestsense } ,
/*SPC 0x04*/ { NULL } ,
/*SPC 0x05*/ { NULL } ,
/*SPC 0x06*/ { NULL } ,
/*SPC 0x07*/ { NULL } ,
/*SPC 0x08*/ { NULL } ,
/*SPC 0x09*/ { NULL } ,
/*SPC 0x0a*/ { NULL } ,
/*SPC 0x0b*/ { NULL } ,
/*SPC 0x0c*/ { NULL } ,
/*SPC 0x0d*/ { NULL } ,
/*SPC 0x0e*/ { NULL } ,
/*SPC 0x0f*/ { NULL } ,
/*SPC 0x10*/ { NULL } ,
/*SPC 0x11*/ { NULL } ,
/*SPC 0x12*/ { dissect_spc_inquiry } ,
/*SPC 0x13*/ { NULL } ,
/*SPC 0x14*/ { NULL } ,
/*SPC 0x15*/ { dissect_spc_modeselect6 } ,
/*SPC 0x16*/ { dissect_spc_reserve6 } ,
/*SPC 0x17*/ { dissect_spc_release6 } ,
/*SPC 0x18*/ { NULL } ,
/*SPC 0x19*/ { NULL } ,
/*SPC 0x1a*/ { dissect_spc_modesense6 } ,
/*SPC 0x1b*/ { NULL } ,
/*SPC 0x1c*/ { NULL } ,
/*SPC 0x1d*/ { dissect_spc_senddiagnostic } ,
/*SPC 0x1e*/ { dissect_spc_preventallowmediaremoval } ,
/*SPC 0x1f*/ { NULL } ,
/*SPC 0x20*/ { NULL } ,
/*SPC 0x21*/ { NULL } ,
/*SPC 0x22*/ { NULL } ,
/*SPC 0x23*/ { NULL } ,
/*SPC 0x24*/ { NULL } ,
/*SPC 0x25*/ { NULL } ,
/*SPC 0x26*/ { NULL } ,
/*SPC 0x27*/ { NULL } ,
/*SPC 0x28*/ { NULL } ,
/*SPC 0x29*/ { NULL } ,
/*SPC 0x2a*/ { NULL } ,
/*SPC 0x2b*/ { NULL } ,
/*SPC 0x2c*/ { NULL } ,
/*SPC 0x2d*/ { NULL } ,
/*SPC 0x2e*/ { NULL } ,
/*SPC 0x2f*/ { NULL } ,
/*SPC 0x30*/ { NULL } ,
/*SPC 0x31*/ { NULL } ,
/*SPC 0x32*/ { NULL } ,
/*SPC 0x33*/ { NULL } ,
/*SPC 0x34*/ { NULL } ,
/*SPC 0x35*/ { NULL } ,
/*SPC 0x36*/ { NULL } ,
/*SPC 0x37*/ { NULL } ,
/*SPC 0x38*/ { NULL } ,
/*SPC 0x39*/ { NULL } ,
/*SPC 0x3a*/ { NULL } ,
/*SPC 0x3b*/ { dissect_spc_writebuffer } ,
/*SPC 0x3c*/ { NULL } ,
/*SPC 0x3d*/ { NULL } ,
/*SPC 0x3e*/ { NULL } ,
/*SPC 0x3f*/ { NULL } ,
/*SPC 0x40*/ { NULL } ,
/*SPC 0x41*/ { NULL } ,
/*SPC 0x42*/ { NULL } ,
/*SPC 0x43*/ { NULL } ,
/*SPC 0x44*/ { NULL } ,
/*SPC 0x45*/ { NULL } ,
/*SPC 0x46*/ { NULL } ,
/*SPC 0x47*/ { NULL } ,
/*SPC 0x48*/ { NULL } ,
/*SPC 0x49*/ { NULL } ,
/*SPC 0x4a*/ { NULL } ,
/*SPC 0x4b*/ { NULL } ,
/*SPC 0x4c*/ { dissect_spc_logselect } ,
/*SPC 0x4d*/ { dissect_spc_logsense } ,
/*SPC 0x4e*/ { NULL } ,
/*SPC 0x4f*/ { NULL } ,
/*SPC 0x50*/ { NULL } ,
/*SPC 0x51*/ { NULL } ,
/*SPC 0x52*/ { NULL } ,
/*SPC 0x53*/ { NULL } ,
/*SPC 0x54*/ { NULL } ,
/*SPC 0x55*/ { dissect_spc_modeselect10 } ,
/*SPC 0x56*/ { dissect_spc_reserve10 } ,
/*SPC 0x57*/ { dissect_spc_release10 } ,
/*SPC 0x58*/ { NULL } ,
/*SPC 0x59*/ { NULL } ,
/*SPC 0x5a*/ { dissect_spc_modesense10 } ,
/*SPC 0x5b*/ { NULL } ,
/*SPC 0x5c*/ { NULL } ,
/*SPC 0x5d*/ { NULL } ,
/*SPC 0x5e*/ { dissect_spc_persistentreservein } ,
/*SPC 0x5f*/ { dissect_spc_persistentreserveout } ,
/*SPC 0x60*/ { NULL } ,
/*SPC 0x61*/ { NULL } ,
/*SPC 0x62*/ { NULL } ,
/*SPC 0x63*/ { NULL } ,
/*SPC 0x64*/ { NULL } ,
/*SPC 0x65*/ { NULL } ,
/*SPC 0x66*/ { NULL } ,
/*SPC 0x67*/ { NULL } ,
/*SPC 0x68*/ { NULL } ,
/*SPC 0x69*/ { NULL } ,
/*SPC 0x6a*/ { NULL } ,
/*SPC 0x6b*/ { NULL } ,
/*SPC 0x6c*/ { NULL } ,
/*SPC 0x6d*/ { NULL } ,
/*SPC 0x6e*/ { NULL } ,
/*SPC 0x6f*/ { NULL } ,
/*SPC 0x70*/ { NULL } ,
/*SPC 0x71*/ { NULL } ,
/*SPC 0x72*/ { NULL } ,
/*SPC 0x73*/ { NULL } ,
/*SPC 0x74*/ { NULL } ,
/*SPC 0x75*/ { NULL } ,
/*SPC 0x76*/ { NULL } ,
/*SPC 0x77*/ { NULL } ,
/*SPC 0x78*/ { NULL } ,
/*SPC 0x79*/ { NULL } ,
/*SPC 0x7a*/ { NULL } ,
/*SPC 0x7b*/ { NULL } ,
/*SPC 0x7c*/ { NULL } ,
/*SPC 0x7d*/ { NULL } ,
/*SPC 0x7e*/ { NULL } ,
/*SPC 0x7f*/ { dissect_scsi_varlencdb } ,
/*SPC 0x80*/ { NULL } ,
/*SPC 0x81*/ { NULL } ,
/*SPC 0x82*/ { NULL } ,
/*SPC 0x83*/ { dissect_spc_extcopy } ,
2013-12-23 13:45:07 +00:00
/*SPC 0x84*/ { dissect_spc_recvcopy } ,
2012-05-07 22:11:34 +00:00
/*SPC 0x85*/ { NULL } ,
/*SPC 0x86*/ { NULL } ,
/*SPC 0x87*/ { NULL } ,
/*SPC 0x88*/ { NULL } ,
/*SPC 0x89*/ { NULL } ,
/*SPC 0x8a*/ { NULL } ,
/*SPC 0x8b*/ { NULL } ,
/*SPC 0x8c*/ { NULL } ,
/*SPC 0x8d*/ { NULL } ,
/*SPC 0x8e*/ { NULL } ,
/*SPC 0x8f*/ { NULL } ,
/*SPC 0x90*/ { NULL } ,
/*SPC 0x91*/ { NULL } ,
/*SPC 0x92*/ { NULL } ,
/*SPC 0x93*/ { NULL } ,
/*SPC 0x94*/ { NULL } ,
/*SPC 0x95*/ { NULL } ,
/*SPC 0x96*/ { NULL } ,
/*SPC 0x97*/ { NULL } ,
/*SPC 0x98*/ { NULL } ,
/*SPC 0x99*/ { NULL } ,
/*SPC 0x9a*/ { NULL } ,
/*SPC 0x9b*/ { NULL } ,
/*SPC 0x9c*/ { NULL } ,
/*SPC 0x9d*/ { NULL } ,
/*SPC 0x9e*/ { NULL } ,
/*SPC 0x9f*/ { NULL } ,
/*SPC 0xa0*/ { dissect_spc_reportluns } ,
/*SPC 0xa1*/ { NULL } ,
/*SPC 0xa2*/ { NULL } ,
/*SPC 0xa3*/ { dissect_spc_reportdeviceidentifier } ,
/*SPC 0xa4*/ { NULL } ,
/*SPC 0xa5*/ { NULL } ,
/*SPC 0xa6*/ { NULL } ,
/*SPC 0xa7*/ { NULL } ,
/*SPC 0xa8*/ { NULL } ,
/*SPC 0xa9*/ { NULL } ,
/*SPC 0xaa*/ { NULL } ,
/*SPC 0xab*/ { NULL } ,
/*SPC 0xac*/ { NULL } ,
/*SPC 0xad*/ { NULL } ,
/*SPC 0xae*/ { NULL } ,
/*SPC 0xaf*/ { NULL } ,
/*SPC 0xb0*/ { NULL } ,
/*SPC 0xb1*/ { NULL } ,
/*SPC 0xb2*/ { NULL } ,
/*SPC 0xb3*/ { NULL } ,
/*SPC 0xb4*/ { NULL } ,
/*SPC 0xb5*/ { NULL } ,
/*SPC 0xb6*/ { NULL } ,
/*SPC 0xb7*/ { NULL } ,
/*SPC 0xb8*/ { NULL } ,
/*SPC 0xb9*/ { NULL } ,
/*SPC 0xba*/ { NULL } ,
/*SPC 0xbb*/ { NULL } ,
/*SPC 0xbc*/ { NULL } ,
/*SPC 0xbd*/ { NULL } ,
/*SPC 0xbe*/ { NULL } ,
/*SPC 0xbf*/ { NULL } ,
/*SPC 0xc0*/ { NULL } ,
/*SPC 0xc1*/ { NULL } ,
/*SPC 0xc2*/ { NULL } ,
/*SPC 0xc3*/ { NULL } ,
/*SPC 0xc4*/ { NULL } ,
/*SPC 0xc5*/ { NULL } ,
/*SPC 0xc6*/ { NULL } ,
/*SPC 0xc7*/ { NULL } ,
/*SPC 0xc8*/ { NULL } ,
/*SPC 0xc9*/ { NULL } ,
/*SPC 0xca*/ { NULL } ,
/*SPC 0xcb*/ { NULL } ,
/*SPC 0xcc*/ { NULL } ,
/*SPC 0xcd*/ { NULL } ,
/*SPC 0xce*/ { NULL } ,
/*SPC 0xcf*/ { NULL } ,
/*SPC 0xd0*/ { NULL } ,
/*SPC 0xd1*/ { NULL } ,
/*SPC 0xd2*/ { NULL } ,
/*SPC 0xd3*/ { NULL } ,
/*SPC 0xd4*/ { NULL } ,
/*SPC 0xd5*/ { NULL } ,
/*SPC 0xd6*/ { NULL } ,
/*SPC 0xd7*/ { NULL } ,
/*SPC 0xd8*/ { NULL } ,
/*SPC 0xd9*/ { NULL } ,
/*SPC 0xda*/ { NULL } ,
/*SPC 0xdb*/ { NULL } ,
/*SPC 0xdc*/ { NULL } ,
/*SPC 0xdd*/ { NULL } ,
/*SPC 0xde*/ { NULL } ,
/*SPC 0xdf*/ { NULL } ,
/*SPC 0xe0*/ { NULL } ,
/*SPC 0xe1*/ { NULL } ,
/*SPC 0xe2*/ { NULL } ,
/*SPC 0xe3*/ { NULL } ,
/*SPC 0xe4*/ { NULL } ,
/*SPC 0xe5*/ { NULL } ,
/*SPC 0xe6*/ { NULL } ,
/*SPC 0xe7*/ { NULL } ,
/*SPC 0xe8*/ { NULL } ,
/*SPC 0xe9*/ { NULL } ,
/*SPC 0xea*/ { NULL } ,
/*SPC 0xeb*/ { NULL } ,
/*SPC 0xec*/ { NULL } ,
/*SPC 0xed*/ { NULL } ,
/*SPC 0xee*/ { NULL } ,
/*SPC 0xef*/ { NULL } ,
/*SPC 0xf0*/ { NULL } ,
/*SPC 0xf1*/ { NULL } ,
/*SPC 0xf2*/ { NULL } ,
/*SPC 0xf3*/ { NULL } ,
/*SPC 0xf4*/ { NULL } ,
/*SPC 0xf5*/ { NULL } ,
/*SPC 0xf6*/ { NULL } ,
/*SPC 0xf7*/ { NULL } ,
/*SPC 0xf8*/ { NULL } ,
/*SPC 0xf9*/ { NULL } ,
/*SPC 0xfa*/ { NULL } ,
/*SPC 0xfb*/ { NULL } ,
/*SPC 0xfc*/ { NULL } ,
/*SPC 0xfd*/ { NULL } ,
/*SPC 0xfe*/ { NULL } ,
/*SPC 0xff*/ { NULL }
2005-05-28 03:37:16 +00:00
} ;
2011-07-18 15:52:16 +00:00
/* This function must be called with valid pointers for both itlq and itl */
2002-01-10 01:28:45 +00:00
void
2012-05-07 22:11:34 +00:00
dissect_scsi_cdb ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
gint devtype_arg _U_ , itlq_nexus_t * itlq , itl_nexus_t * itl )
2002-01-10 01:28:45 +00:00
{
2012-05-07 22:11:34 +00:00
int offset = 0 ;
proto_item * ti ;
proto_tree * scsi_tree = NULL ;
guint8 opcode ;
2011-07-18 15:52:16 +00:00
#if 0
2012-05-07 22:11:34 +00:00
scsi_device_type devtype ;
2011-07-18 15:52:16 +00:00
# endif
2012-05-07 22:11:34 +00:00
const gchar * valstr ;
2002-01-10 01:28:45 +00:00
scsi_task_data_t * cdata ;
2012-05-07 22:11:34 +00:00
const char * old_proto ;
cmdset_t * csdata ;
2006-04-22 02:16:52 +00:00
2006-03-13 22:35:14 +00:00
2012-05-07 22:11:34 +00:00
old_proto = pinfo - > current_proto ;
2006-03-13 22:35:14 +00:00
pinfo - > current_proto = " SCSI " ;
2002-08-28 21:04:11 +00:00
2012-05-07 22:11:34 +00:00
if ( ! itlq ) {
2007-04-10 14:48:06 +00:00
DISSECTOR_ASSERT_NOT_REACHED ( ) ;
2006-04-21 22:00:38 +00:00
}
2012-05-07 22:11:34 +00:00
if ( ! itl ) {
2007-04-10 14:48:06 +00:00
DISSECTOR_ASSERT_NOT_REACHED ( ) ;
2006-06-17 05:42:55 +00:00
}
2002-01-10 01:28:45 +00:00
2012-05-07 22:11:34 +00:00
opcode = tvb_get_guint8 ( tvb , offset ) ;
itlq - > scsi_opcode = opcode ;
csdata = get_cmdset_data ( itlq , itl ) ;
2006-04-22 02:16:52 +00:00
2011-07-18 15:52:16 +00:00
#if 0 /* XXX: devtype never actually used ?? */
2005-05-28 05:42:39 +00:00
if ( devtype_arg ! = SCSI_DEV_UNKNOWN ) {
2002-08-20 22:33:17 +00:00
devtype = devtype_arg ;
2005-05-28 05:42:39 +00:00
} else {
2006-04-21 11:08:24 +00:00
if ( itl ) {
devtype = itl - > cmdset ;
2005-05-28 05:42:39 +00:00
} else {
2002-08-20 22:33:17 +00:00
devtype = ( scsi_device_type ) scsi_def_devtype ;
}
2002-01-10 01:28:45 +00:00
}
2011-07-18 15:52:16 +00:00
# endif
2002-01-10 01:28:45 +00:00
2013-12-12 19:26:55 +00:00
if ( ( valstr = try_val_to_str_ext ( opcode , & scsi_spc_vals_ext ) ) = = NULL ) {
valstr = try_val_to_str_ext ( opcode , csdata - > cdb_vals_ext ) ;
2002-01-10 01:28:45 +00:00
}
2002-08-28 21:04:11 +00:00
2013-06-14 02:50:46 +00:00
if ( valstr ! = NULL ) {
col_add_fstr ( pinfo - > cinfo , COL_INFO , " SCSI: %s LUN: 0x%02x " , valstr , itlq - > lun ) ;
} else {
col_add_fstr ( pinfo - > cinfo , COL_INFO , " SCSI Command: 0x%02x LUN:0x%02x " , opcode , itlq - > lun ) ;
2002-01-10 01:28:45 +00:00
}
2013-06-14 02:50:46 +00:00
/* make sure no one will overwrite this in the info column */
col_set_fence ( pinfo - > cinfo , COL_INFO ) ;
2002-01-10 01:28:45 +00:00
2013-09-14 14:33:04 +00:00
cdata = wmem_new ( wmem_packet_scope ( ) , scsi_task_data_t ) ;
2012-05-07 22:11:34 +00:00
cdata - > itl = itl ;
cdata - > itlq = itlq ;
cdata - > type = SCSI_PDU_TYPE_CDB ;
2006-04-24 08:16:18 +00:00
tap_queue_packet ( scsi_tap , pinfo , cdata ) ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( tree ) {
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_protocol_format ( tree , proto_scsi , tvb , 0 ,
- 1 , " SCSI CDB %s " ,
2013-12-12 19:26:55 +00:00
val_to_str_ext ( opcode ,
csdata - > cdb_vals_ext ,
" 0x%02x " )
2012-05-07 22:11:34 +00:00
) ;
scsi_tree = proto_item_add_subtree ( ti , ett_scsi ) ;
2006-04-22 10:31:30 +00:00
}
2002-01-10 01:28:45 +00:00
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_lun , tvb , 0 , 0 , itlq - > lun ) ;
2006-04-22 10:31:30 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2006-03-09 16:00:33 +00:00
2012-05-07 22:11:34 +00:00
if ( itl ) {
ti = proto_tree_add_uint_format ( scsi_tree , hf_scsi_inq_devtype , tvb , 0 , 0 , itl - > cmdset & SCSI_CMDSET_MASK , " Command Set:%s (0x%02x) %s " , val_to_str ( itl - > cmdset & SCSI_CMDSET_MASK , scsi_devtype_val , " Unknown (%d) " ) , itl - > cmdset & SCSI_CMDSET_MASK , itl - > cmdset & SCSI_CMDSET_DEFAULT ? " (Using default commandset) " : " " ) ;
2006-05-05 22:01:45 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
}
2012-05-07 22:11:34 +00:00
if ( itlq - > last_exchange_frame ) {
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_response_frame , tvb , 0 , 0 , itlq - > last_exchange_frame ) ;
2006-04-22 10:31:30 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
}
2005-02-17 12:07:45 +00:00
2006-04-22 10:31:30 +00:00
if ( valstr ! = NULL ) {
2012-05-07 22:11:34 +00:00
proto_tree_add_uint_format ( scsi_tree , csdata - > hf_opcode , tvb ,
offset , 1 ,
tvb_get_guint8 ( tvb , offset ) ,
" Opcode: %s (0x%02x) " , valstr ,
opcode ) ;
2006-04-22 10:31:30 +00:00
} else {
2012-05-07 22:11:34 +00:00
proto_tree_add_item ( scsi_tree , hf_scsi_spcopcode , tvb , offset , 1 , ENC_BIG_ENDIAN ) ;
2002-01-10 01:28:45 +00:00
}
2002-08-28 21:04:11 +00:00
2012-05-07 22:11:34 +00:00
if ( csdata - > cdb_table [ opcode ] . func ) {
2006-04-22 02:16:52 +00:00
csdata - > cdb_table [ opcode ] . func ( tvb , pinfo , scsi_tree , offset + 1 ,
2012-05-07 22:11:34 +00:00
TRUE , TRUE , 0 , cdata ) ;
} else if ( spc [ opcode ] . func ) {
2006-03-09 16:00:33 +00:00
spc [ opcode ] . func ( tvb , pinfo , scsi_tree , offset + 1 ,
2012-05-07 22:11:34 +00:00
TRUE , TRUE , 0 , cdata ) ;
2005-05-28 03:37:16 +00:00
} else {
2012-05-07 22:11:34 +00:00
call_dissector ( data_handle , tvb , pinfo , scsi_tree ) ;
2002-01-10 01:28:45 +00:00
}
2006-03-13 22:35:14 +00:00
2012-05-07 22:11:34 +00:00
pinfo - > current_proto = old_proto ;
2002-01-10 01:28:45 +00:00
}
void
2012-05-07 22:11:34 +00:00
dissect_scsi_payload ( tvbuff_t * tvb , packet_info * pinfo , proto_tree * tree ,
gboolean isreq , itlq_nexus_t * itlq , itl_nexus_t * itl ,
guint32 relative_offset )
2002-01-10 01:28:45 +00:00
{
2012-05-07 22:11:34 +00:00
int offset = 0 ;
proto_item * ti ;
proto_tree * scsi_tree = NULL ;
guint8 opcode ;
2007-03-26 21:16:21 +00:00
scsi_task_data_t * cdata ;
2012-05-07 22:11:34 +00:00
int payload_len ;
const char * old_proto ;
cmdset_t * csdata ;
guint32 expected_length ;
2013-07-17 21:12:24 +00:00
fragment_head * ipfd_head ;
2012-05-07 22:11:34 +00:00
tvbuff_t * next_tvb = tvb ;
gboolean update_col_info = TRUE ;
gboolean more_frags = FALSE ;
if ( ! itlq | | ! itl ) {
2006-04-21 22:00:38 +00:00
/* we have no record of this exchange and so we can't dissect the
* payload
*/
2013-08-08 17:25:03 +00:00
expert_add_info ( pinfo , tree , & ei_scsi_unknown_scsi_exchange ) ;
2006-04-21 22:00:38 +00:00
return ;
}
2014-06-19 17:18:16 +00:00
payload_len = tvb_length ( tvb ) ;
2013-09-14 14:33:04 +00:00
cdata = wmem_new ( wmem_packet_scope ( ) , scsi_task_data_t ) ;
2012-05-07 22:11:34 +00:00
cdata - > itl = itl ;
cdata - > itlq = itlq ;
cdata - > type = SCSI_PDU_TYPE_CDB ;
2006-04-24 08:16:18 +00:00
tap_queue_packet ( scsi_tap , pinfo , cdata ) ;
2002-01-10 01:28:45 +00:00
2012-05-07 22:11:34 +00:00
csdata = get_cmdset_data ( itlq , itl ) ;
2006-04-22 02:16:52 +00:00
2012-05-07 22:11:34 +00:00
old_proto = pinfo - > current_proto ;
2006-03-13 22:35:14 +00:00
pinfo - > current_proto = " SCSI " ;
2007-03-23 00:51:21 +00:00
opcode = ( guint8 ) cdata - > itlq - > scsi_opcode ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
if ( tree ) {
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_protocol_format ( tree , proto_scsi , tvb , offset ,
payload_len ,
" SCSI Payload (%s %s) " ,
2013-12-12 19:26:55 +00:00
val_to_str_ext ( opcode ,
csdata - > cdb_vals_ext ,
" CDB:0x%02x " ) ,
2012-05-07 22:11:34 +00:00
isreq ? " Request Data " : " Response Data " ) ;
scsi_tree = proto_item_add_subtree ( ti , ett_scsi ) ;
2002-08-20 03:21:42 +00:00
}
2002-01-10 01:28:45 +00:00
2013-06-14 02:50:46 +00:00
col_add_fstr ( pinfo - > cinfo , COL_INFO ,
" SCSI: Data %s LUN: 0x%02x (%s %s) " ,
isreq ? " Out " : " In " ,
itlq - > lun ,
2013-12-12 19:26:55 +00:00
val_to_str_ext ( opcode , csdata - > cdb_vals_ext , " 0x%02x " ) ,
2013-06-14 02:50:46 +00:00
isreq ? " Request Data " : " Response Data " ) ;
2006-04-03 20:29:53 +00:00
2013-06-14 02:50:46 +00:00
col_set_fence ( pinfo - > cinfo , COL_INFO ) ;
2006-04-03 20:29:53 +00:00
2012-05-07 22:11:34 +00:00
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_lun , tvb , 0 , 0 , itlq - > lun ) ;
2006-03-14 04:56:40 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2012-05-07 22:11:34 +00:00
if ( itl ) {
ti = proto_tree_add_uint_format ( scsi_tree , hf_scsi_inq_devtype , tvb , 0 , 0 , itl - > cmdset & SCSI_CMDSET_MASK ,
" Command Set:%s (0x%02x) %s " ,
val_to_str ( itl - > cmdset & SCSI_CMDSET_MASK , scsi_devtype_val , " Unknown (%d) " ) ,
itl - > cmdset & SCSI_CMDSET_MASK ,
itl - > cmdset & SCSI_CMDSET_DEFAULT ? " (Using default commandset) " : " " ) ;
2006-04-22 10:31:30 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
2012-05-07 22:11:34 +00:00
if ( itlq & & ( itlq - > scsi_opcode ! = 0xffff ) ) {
ti = proto_tree_add_uint ( scsi_tree , csdata - > hf_opcode , tvb , 0 , 0 , itlq - > scsi_opcode ) ;
2006-04-22 10:31:30 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
}
}
2012-05-07 22:11:34 +00:00
if ( itlq - > first_exchange_frame ) {
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_request_frame , tvb , 0 , 0 , itlq - > first_exchange_frame ) ;
2006-04-22 10:31:30 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
}
2012-05-07 22:11:34 +00:00
if ( itlq - > last_exchange_frame ) {
ti = proto_tree_add_uint ( scsi_tree , hf_scsi_response_frame , tvb , 0 , 0 , itlq - > last_exchange_frame ) ;
2006-04-22 10:31:30 +00:00
PROTO_ITEM_SET_GENERATED ( ti ) ;
}
2005-02-17 12:07:45 +00:00
2014-09-16 13:43:06 +00:00
/* If we don't know the CDB opcode there is no point in trying to
2006-10-13 21:26:03 +00:00
* dissect the data .
2006-10-13 21:07:07 +00:00
*/
2012-05-07 22:11:34 +00:00
if ( ! itlq - > first_exchange_frame ) {
call_dissector ( data_handle , tvb , pinfo , scsi_tree ) ;
2006-10-13 21:07:07 +00:00
goto end_of_payload ;
}
2006-10-13 21:26:03 +00:00
/* If we are not doing data reassembly we only call the dissector
* for the very first data in / out pdu in each transfer
*/
2006-10-13 22:25:35 +00:00
if ( ! scsi_defragment ) {
if ( relative_offset ) {
2012-05-07 22:11:34 +00:00
call_dissector ( data_handle , tvb , pinfo , scsi_tree ) ;
2006-10-13 22:25:35 +00:00
goto end_of_payload ;
} else {
goto dissect_the_payload ;
}
2006-10-13 21:26:03 +00:00
}
2014-09-16 13:43:06 +00:00
/* If we don't have the entire PDU there is no point in even trying
2006-10-13 22:25:35 +00:00
* reassembly
*/
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) ! = tvb_reported_length_remaining ( tvb , offset ) ) {
2006-10-13 22:25:35 +00:00
if ( relative_offset ) {
2012-05-07 22:11:34 +00:00
call_dissector ( data_handle , tvb , pinfo , scsi_tree ) ;
2006-10-13 22:25:35 +00:00
goto end_of_payload ;
} else {
goto dissect_the_payload ;
}
}
2006-10-13 21:26:03 +00:00
/* What is the expected data length for this transfer */
2012-05-07 22:11:34 +00:00
if ( ( itlq - > task_flags & ( SCSI_DATA_READ | SCSI_DATA_WRITE ) ) = = ( SCSI_DATA_READ | SCSI_DATA_WRITE ) ) {
2006-10-13 21:26:03 +00:00
/* This is a bidirectional transfer */
2012-05-07 22:11:34 +00:00
if ( isreq ) {
expected_length = itlq - > data_length ;
2006-10-13 21:26:03 +00:00
} else {
2012-05-07 22:11:34 +00:00
expected_length = itlq - > bidir_data_length ;
2006-10-13 21:26:03 +00:00
}
} else {
/* This is a unidirectional transfer */
2012-05-07 22:11:34 +00:00
expected_length = itlq - > data_length ;
2006-10-13 21:26:03 +00:00
}
2014-09-16 13:43:06 +00:00
/* If this PDU already contains all the expected data we don't have to do
2006-10-13 22:25:35 +00:00
* reassembly .
*/
2014-06-19 17:18:16 +00:00
if ( ( ! relative_offset ) & & ( ( guint32 ) tvb_length_remaining ( tvb , offset ) = = expected_length ) ) {
2006-10-13 22:25:35 +00:00
goto dissect_the_payload ;
}
/* Start reassembly */
2006-10-25 00:49:36 +00:00
2014-06-19 17:18:16 +00:00
if ( tvb_length_remaining ( tvb , offset ) < 0 ) {
2007-01-25 06:45:09 +00:00
goto end_of_payload ;
}
2014-06-19 17:18:16 +00:00
if ( ( tvb_length_remaining ( tvb , offset ) + relative_offset ) ! = expected_length ) {
2006-10-25 00:49:36 +00:00
more_frags = TRUE ;
}
2013-03-22 23:59:54 +00:00
ipfd_head = fragment_add_check ( & scsi_reassembly_table , tvb , offset ,
pinfo ,
2012-05-07 22:11:34 +00:00
itlq - > first_exchange_frame , /* key */
2013-03-22 23:59:54 +00:00
NULL ,
2012-05-07 22:11:34 +00:00
relative_offset ,
2014-06-19 17:18:16 +00:00
tvb_length_remaining ( tvb , offset ) ,
2012-05-07 22:11:34 +00:00
more_frags ) ;
2006-10-14 01:44:29 +00:00
next_tvb = process_reassembled_data ( tvb , offset , pinfo , " Reassembled SCSI DATA " , ipfd_head , & scsi_frag_items , & update_col_info , tree ) ;
2012-05-07 22:11:34 +00:00
if ( ipfd_head & & ( ipfd_head - > reassembled_in ! = pinfo - > fd - > num ) ) {
2013-06-14 02:50:46 +00:00
col_prepend_fstr ( pinfo - > cinfo , COL_INFO , " [Reassembled in #%u] " ,
2012-05-07 22:11:34 +00:00
ipfd_head - > reassembled_in ) ;
2006-10-14 01:44:29 +00:00
}
2006-10-13 21:26:03 +00:00
2006-10-13 22:25:35 +00:00
dissect_the_payload :
2012-05-07 22:11:34 +00:00
if ( ! next_tvb ) {
2014-09-16 13:43:06 +00:00
/* reassembly has not yet finished so we don't have a tvb yet */
2006-10-14 22:05:57 +00:00
goto end_of_payload ;
}
2002-08-20 03:21:42 +00:00
if ( tree = = NULL ) {
/*
* We have to dissect INQUIRY responses , in order to determine the
* types of devices .
*
2006-10-13 21:07:07 +00:00
* We don ' t bother dissecting other payload if we ' re not building
2002-08-20 03:21:42 +00:00
* a protocol tree .
2005-05-28 05:42:39 +00:00
*
2007-03-26 21:16:21 +00:00
* We assume opcode 0x12 is always INQUIRY regardless of the
* commandset used .
*/
2007-02-11 00:45:15 +00:00
if ( opcode = = SCSI_SPC_INQUIRY ) {
2012-05-07 22:11:34 +00:00
dissect_spc_inquiry ( next_tvb , pinfo , scsi_tree , offset , isreq ,
FALSE , payload_len , cdata ) ;
2002-08-20 03:21:42 +00:00
}
2005-05-29 08:29:55 +00:00
} else {
2005-05-28 03:37:16 +00:00
/*
2012-05-07 22:11:34 +00:00
All commandsets support SPC ?
2005-05-28 03:37:16 +00:00
*/
2012-05-07 22:11:34 +00:00
if ( csdata - > cdb_table & & ( csdata - > cdb_table ) [ opcode ] . func ) {
2006-10-13 22:25:35 +00:00
( csdata - > cdb_table ) [ opcode ] . func ( next_tvb , pinfo , scsi_tree , offset ,
2012-05-07 22:11:34 +00:00
isreq , FALSE , payload_len , cdata ) ;
} else if ( spc [ opcode ] . func ) {
2006-10-13 22:25:35 +00:00
spc [ opcode ] . func ( next_tvb , pinfo , scsi_tree , offset ,
2012-05-07 22:11:34 +00:00
isreq , FALSE , payload_len , cdata ) ;
2014-09-16 13:43:06 +00:00
} else { /* don't know this CDB */
2012-05-07 22:11:34 +00:00
call_dissector ( data_handle , next_tvb , pinfo , scsi_tree ) ;
2002-01-10 01:28:45 +00:00
}
}
2006-03-13 22:35:14 +00:00
2006-10-13 21:07:07 +00:00
end_of_payload :
2012-05-07 22:11:34 +00:00
pinfo - > current_proto = old_proto ;
2002-01-10 01:28:45 +00:00
}
2006-04-22 02:16:52 +00:00
static cmdset_t *
get_cmdset_data ( itlq_nexus_t * itlq , itl_nexus_t * itl )
{
cmdset_t * csdata ;
2012-05-07 22:11:34 +00:00
guint8 cmdset ;
2006-04-22 02:16:52 +00:00
/* we must have an itlq structure */
2012-05-07 22:11:34 +00:00
if ( ! itlq ) {
2007-04-10 14:48:06 +00:00
DISSECTOR_ASSERT_NOT_REACHED ( ) ;
2006-04-22 02:16:52 +00:00
}
2012-05-07 22:11:34 +00:00
if ( itl ) {
if ( itl - > cmdset = = 0xff ) {
itl - > cmdset = scsi_def_devtype | SCSI_CMDSET_DEFAULT ;
2007-03-26 21:16:21 +00:00
}
2012-05-07 22:11:34 +00:00
cmdset = itl - > cmdset ;
2006-04-22 02:16:52 +00:00
} else {
2012-05-07 22:11:34 +00:00
cmdset = scsi_def_devtype ;
2006-04-22 02:16:52 +00:00
}
2013-09-14 14:33:04 +00:00
csdata = wmem_new ( wmem_packet_scope ( ) , cmdset_t ) ;
2006-04-22 02:16:52 +00:00
2012-05-07 22:11:34 +00:00
switch ( cmdset & SCSI_CMDSET_MASK ) {
2006-04-22 02:16:52 +00:00
case SCSI_DEV_SBC :
2013-12-12 19:26:55 +00:00
csdata - > hf_opcode = hf_scsi_sbc_opcode ;
csdata - > cdb_vals_ext = & scsi_sbc_vals_ext ;
csdata - > cdb_table = scsi_sbc_table ;
2006-04-22 02:16:52 +00:00
break ;
case SCSI_DEV_CDROM :
2013-12-12 19:26:55 +00:00
csdata - > hf_opcode = hf_scsi_mmc_opcode ;
csdata - > cdb_vals_ext = & scsi_mmc_vals_ext ;
csdata - > cdb_table = scsi_mmc_table ;
2006-04-22 02:16:52 +00:00
break ;
case SCSI_DEV_SSC :
2013-12-12 19:26:55 +00:00
csdata - > hf_opcode = hf_scsi_ssc_opcode ;
csdata - > cdb_vals_ext = & scsi_ssc_vals_ext ;
csdata - > cdb_table = scsi_ssc_table ;
2006-04-22 02:16:52 +00:00
break ;
case SCSI_DEV_SMC :
2013-12-12 19:26:55 +00:00
csdata - > hf_opcode = hf_scsi_smc_opcode ;
csdata - > cdb_vals_ext = & scsi_smc_vals_ext ;
csdata - > cdb_table = scsi_smc_table ;
2006-04-22 02:16:52 +00:00
break ;
2006-09-29 10:40:51 +00:00
case SCSI_DEV_OSD :
2013-12-12 19:26:55 +00:00
csdata - > hf_opcode = hf_scsi_osd_opcode ;
csdata - > cdb_vals_ext = & scsi_osd_vals_ext ;
csdata - > cdb_table = scsi_osd_table ;
2006-09-29 10:40:51 +00:00
break ;
2006-04-22 02:16:52 +00:00
default :
2013-12-12 19:26:55 +00:00
csdata - > hf_opcode = hf_scsi_spcopcode ;
csdata - > cdb_vals_ext = & scsi_spc_vals_ext ;
csdata - > cdb_table = spc ;
2006-04-22 02:16:52 +00:00
break ;
}
return csdata ;
}
2006-10-25 00:49:36 +00:00
2006-04-22 02:16:52 +00:00
2002-01-10 01:28:45 +00:00
void
2012-05-07 22:11:34 +00:00
proto_register_scsi ( void )
2002-01-10 01:28:45 +00:00
{
static hf_register_info hf [ ] = {
2007-03-26 21:16:21 +00:00
{ & hf_scsi_status ,
{ " Status " , " scsi.status " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_status_val ) , 0 , " SCSI command status value " , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_spcopcode ,
2013-12-12 19:26:55 +00:00
{ " SPC-2 Opcode " , " scsi.spc.opcode " , FT_UINT8 , BASE_HEX | BASE_EXT_STRING ,
& scsi_spc_vals_ext , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_control ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ " Control " , " scsi.cdb.control " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL ,
2002-01-10 01:28:45 +00:00
HFILL } } ,
2010-12-06 22:00:08 +00:00
{ & hf_scsi_control_vendor_specific ,
{ " Vendor specific " , " scsi.cdb.control.vendorspecific " , FT_UINT8 ,
BASE_HEX , NULL , 0xC0 , NULL , HFILL } } ,
{ & hf_scsi_control_reserved ,
{ " Reserved " , " scsi.cdb.control.reserved " , FT_UINT8 , BASE_HEX , NULL ,
0x38 , NULL , HFILL } } ,
{ & hf_scsi_control_naca ,
2011-01-16 20:51:21 +00:00
{ " NACA " , " scsi.cdb.control.naca " , FT_BOOLEAN , 8 ,
2010-12-06 22:00:08 +00:00
TFS ( & scsi_naca_tfs ) , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_control_obs1 ,
{ " Obsolete " , " scsi.cdb.control.obs1 " , FT_UINT8 , BASE_HEX ,
NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_control_obs2 ,
{ " Obsolete " , " scsi.cdb.control.obs2 " , FT_UINT8 , BASE_HEX ,
NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_inq_control ,
2011-01-16 20:51:21 +00:00
{ " Control " , " scsi.cdb.inq.control " , FT_UINT8 , BASE_HEX , NULL , 0x0 ,
2010-12-06 22:00:08 +00:00
NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_inquiry_flags ,
2010-09-27 06:05:24 +00:00
{ " Inquiry Flags " , " scsi.inquiry.flags " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL ,
2002-01-10 01:28:45 +00:00
HFILL } } ,
{ & hf_scsi_inquiry_evpd_page ,
{ " EVPD Page Code " , " scsi.inquiry.evpd.pagecode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_evpd_pagecode_val ) , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_inquiry_cmdt_page ,
{ " CMDT Page Code " , " scsi.inquiry.cmdt.pagecode " , FT_UINT8 , BASE_HEX ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_alloclen ,
{ " Allocation Length " , " scsi.cdb.alloclen " , FT_UINT8 , BASE_DEC , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_paramlen ,
{ " Parameter Length " , " scsi.cdb.paramlen " , FT_UINT8 , BASE_DEC , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2007-02-03 22:03:39 +00:00
{ & hf_scsi_log_pc ,
{ " Page Control " , " scsi.log.pc " , FT_UINT8 , BASE_DEC ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_log_pc_val ) , 0xC0 , NULL , HFILL } } ,
2007-02-03 22:03:39 +00:00
{ & hf_scsi_log_pagecode ,
{ " Page Code " , " scsi.log.pagecode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_log_page_val ) , 0x3F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_paramlen16 ,
{ " Parameter Length " , " scsi.cdb.paramlen16 " , FT_UINT16 , BASE_DEC , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesel_flags ,
2003-01-31 03:17:56 +00:00
{ " Mode Sense/Select Flags " , " scsi.cdb.mode.flags " , FT_UINT8 , BASE_HEX ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_alloclen16 ,
{ " Allocation Length " , " scsi.cdb.alloclen16 " , FT_UINT16 , BASE_DEC ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_pc ,
2003-01-31 03:17:56 +00:00
{ " Page Control " , " scsi.mode.pc " , FT_UINT8 , BASE_DEC ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_modesns_pc_val ) , 0xC0 , NULL , HFILL } } ,
2012-07-24 02:00:50 +00:00
{ & hf_scsi_spc_subpagecode ,
{ " SubPage Code " , " scsi.mode.spc.subpagecode " , FT_UINT8 , BASE_HEX ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_spc_pagecode ,
2002-08-21 07:15:00 +00:00
{ " SPC-2 Page Code " , " scsi.mode.spc.pagecode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_spc_modepage_val ) , 0x3F , NULL , HFILL } } ,
2002-08-21 07:15:00 +00:00
{ & hf_scsi_sbcpagecode ,
{ " SBC-2 Page Code " , " scsi.mode.sbc.pagecode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_sbc_modepage_val ) , 0x3F , NULL , HFILL } } ,
2002-08-21 07:15:00 +00:00
{ & hf_scsi_sscpagecode ,
{ " SSC-2 Page Code " , " scsi.mode.ssc.pagecode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_ssc2_modepage_val ) , 0x3F , NULL , HFILL } } ,
2006-03-06 20:06:05 +00:00
{ & hf_scsi_mmcpagecode ,
{ " MMC-5 Page Code " , " scsi.mode.mmc.pagecode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_mmc5_modepage_val ) , 0x3F , NULL , HFILL } } ,
2002-08-21 07:15:00 +00:00
{ & hf_scsi_smcpagecode ,
{ " SMC-2 Page Code " , " scsi.mode.smc.pagecode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_smc_modepage_val ) , 0x3F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_flags ,
2010-09-27 06:05:24 +00:00
{ " Mode Sense Flags " , " scsi.mode.flags " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL ,
2002-01-10 01:28:45 +00:00
HFILL } } ,
{ & hf_scsi_persresvin_svcaction ,
{ " Service Action " , " scsi.persresvin.svcaction " , FT_UINT8 , BASE_HEX ,
2012-12-18 04:02:57 +00:00
VALS ( scsi_persresvin_svcaction_val ) , 0x1F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_persresvout_svcaction ,
{ " Service Action " , " scsi.persresvout.svcaction " , FT_UINT8 , BASE_HEX ,
2013-08-05 15:55:10 +00:00
VALS ( scsi_persresvout_svcaction_val ) , 0x1F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_persresv_scope ,
{ " Reservation Scope " , " scsi.persresv.scope " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_persresv_scope_val ) , 0xF0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_persresv_type ,
{ " Reservation Type " , " scsi.persresv.type " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_persresv_type_val ) , 0x0F , NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresvout_reskey ,
{ " Reservation Key " , " scsi.persresv.reskey " , FT_BYTES , BASE_NONE ,
2012-05-07 22:11:34 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresvout_sareskey ,
{ " Service Action Reservation Key " , " scsi.persresv.sareskey " , FT_BYTES ,
2012-05-07 22:11:34 +00:00
BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresvout_obsolete ,
{ " Obsolete " , " scsi.presresv.obs " , FT_BYTES , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresvout_control ,
{ " Control " , " scsi.presresv.control " , FT_UINT8 , BASE_HEX , NULL , 0x0 ,
NULL , HFILL } } ,
2013-08-05 15:55:10 +00:00
/* Service action REGISTER AND MOVE */
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresv_control_rsvd ,
{ " Reserved " , " scsi.persresv.control.reserved " , FT_UINT8 , BASE_HEX ,
NULL , 0xFC , NULL , HFILL } } ,
2013-08-05 15:55:10 +00:00
{ & hf_scsi_persresv_control_unreg ,
{ " unreg " , " scsi.persresv.control.unreg " , FT_BOOLEAN , 8 ,
NULL , 0x02 , NULL , HFILL } } ,
/* Other service actions than REGISTER AND MOVE */
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresv_control_rsvd1 ,
{ " Reserved " , " scsi.persresv.control.reserved1 " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
NULL , 0xF0 , NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresv_control_rsvd2 ,
{ " Reserved " , " scsi.persresv.control.reserved2 " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
NULL , 0x02 , NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresv_control_spec_i_pt ,
{ " SPEC_I_PT " , " scsi.persresv.control.spec_i_pt " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_spec_i_pt_tfs ) , 0x08 , NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresv_control_all_tg_pt ,
{ " ALL_TG_PT " , " scsi.persresv.control.all_tg_pt " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_all_tg_pt_tfs ) , 0x04 , NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_persresv_control_aptpl ,
{ " aptpl " , " scsi.persresv.control.aptpl " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_aptpl_tfs ) , 0x01 , NULL , HFILL } } ,
2013-08-05 15:55:10 +00:00
{ & hf_scsi_persresvout_rel_tpi ,
{ " rel_tpi " , " scsi.persresv.rel_tpi " , FT_UINT16 , BASE_DEC ,
NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_persresvout_transportid_len ,
{ " transportid_len " , " scsi.persresv.transportid_len " ,
FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_persresvout_transportid ,
{ " transportid_len " , " scsi.persresv.transportid " ,
FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_release_flags ,
2003-01-31 03:17:56 +00:00
{ " Release Flags " , " scsi.release.flags " , FT_UINT8 , BASE_HEX , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_release_thirdpartyid ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ " Third-Party ID " , " scsi.release.thirdpartyid " , FT_BYTES , BASE_NONE ,
NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_alloclen32 ,
{ " Allocation Length " , " scsi.cdb.alloclen32 " , FT_UINT32 , BASE_DEC ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2006-04-03 08:20:54 +00:00
{ & hf_scsi_inq_add_len ,
{ " Additional Length " , " scsi.inquiry.add_len " , FT_UINT8 , BASE_DEC ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0 , NULL , HFILL } } ,
2003-03-08 08:02:20 +00:00
{ & hf_scsi_inq_qualifier ,
2006-11-27 14:50:23 +00:00
{ " Qualifier " , " scsi.inquiry.qualifier " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_qualifier_val ) , 0xE0 , NULL , HFILL } } ,
2006-11-27 14:50:23 +00:00
{ & hf_scsi_inq_peripheral ,
2008-12-20 00:09:02 +00:00
{ " Peripheral " , " scsi.inquiry.peripheral " , FT_UINT8 , BASE_HEX ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0 , NULL , HFILL } } ,
2006-04-03 08:20:54 +00:00
{ & hf_scsi_inq_vendor_id ,
{ " Vendor Id " , " scsi.inquiry.vendor_id " , FT_STRING , BASE_NONE ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0 , NULL , HFILL } } ,
2006-04-03 08:20:54 +00:00
{ & hf_scsi_inq_product_id ,
{ " Product Id " , " scsi.inquiry.product_id " , FT_STRING , BASE_NONE ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0 , NULL , HFILL } } ,
2006-04-03 08:20:54 +00:00
{ & hf_scsi_inq_product_rev ,
{ " Product Revision Level " , " scsi.inquiry.product_rev " , FT_STRING , BASE_NONE ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0 , NULL , HFILL } } ,
2007-10-03 16:22:50 +00:00
{ & hf_scsi_inq_vendor_specific ,
{ " Vendor Specific " , " scsi.inquiry.vendor_specific " , FT_BYTES , BASE_NONE ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0 , NULL , HFILL } } ,
2006-04-03 08:20:54 +00:00
{ & hf_scsi_inq_version_desc ,
2010-10-29 17:48:39 +00:00
{ " Version Description " , " scsi.inquiry.version_desc " , FT_UINT16 , BASE_HEX | BASE_EXT_STRING ,
& scsi_verdesc_val_ext , 0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_inq_devtype ,
2006-11-27 14:50:23 +00:00
{ " Device Type " , " scsi.inquiry.devtype " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_devtype_val ) , SCSI_DEV_BITS , NULL , HFILL } } ,
2005-05-14 17:41:07 +00:00
{ & hf_scsi_inq_rmb ,
{ " Removable " , " scsi.inquiry.removable " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_removable_val ) , 0x80 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_inq_version ,
{ " Version " , " scsi.inquiry.version " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_inquiry_vers_val ) , 0x0 , NULL , HFILL } } ,
2006-04-03 03:19:52 +00:00
{ & hf_scsi_inq_reladrflags ,
2010-09-27 06:05:24 +00:00
{ " Inquiry RelAdr Flags " , " scsi.inquiry.reladrflags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 03:19:52 +00:00
{ & hf_scsi_inq_reladr ,
{ " RelAdr " , " scsi.inquiry.reladr " , FT_BOOLEAN , 8 , TFS ( & reladr_tfs ) , SCSI_INQ_RELADRFLAGS_RELADR ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 03:19:52 +00:00
{ & hf_scsi_inq_linked ,
{ " Linked " , " scsi.inquiry.linked " , FT_BOOLEAN , 8 , TFS ( & linked_tfs ) , SCSI_INQ_RELADRFLAGS_LINKED ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2012-09-13 01:28:57 +00:00
{ & hf_scsi_inq_trandis ,
{ " TranDis " , " scsi.inquiry.trandis " , FT_BOOLEAN , 8 , NULL , SCSI_INQ_RELADRFLAGS_TRANDIS ,
NULL , HFILL } } ,
2006-04-03 03:19:52 +00:00
{ & hf_scsi_inq_cmdque ,
{ " CmdQue " , " scsi.inquiry.cmdque " , FT_BOOLEAN , 8 , TFS ( & cmdque_tfs ) , SCSI_INQ_RELADRFLAGS_CMDQUE ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 02:40:07 +00:00
{ & hf_scsi_inq_bqueflags ,
2010-09-27 06:05:24 +00:00
{ " Inquiry BQue Flags " , " scsi.inquiry.bqueflags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 02:40:07 +00:00
{ & hf_scsi_inq_bque ,
{ " BQue " , " scsi.inquiry.bque " , FT_BOOLEAN , 8 , TFS ( & bque_tfs ) , SCSI_INQ_BQUEFLAGS_BQUE ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 02:40:07 +00:00
{ & hf_scsi_inq_encserv ,
{ " EncServ " , " scsi.inquiry.encserv " , FT_BOOLEAN , 8 , TFS ( & encserv_tfs ) , SCSI_INQ_BQUEFLAGS_ENCSERV ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 02:40:07 +00:00
{ & hf_scsi_inq_multip ,
{ " MultiP " , " scsi.inquiry.multip " , FT_BOOLEAN , 8 , TFS ( & multip_tfs ) , SCSI_INQ_BQUEFLAGS_MULTIP ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 02:40:07 +00:00
{ & hf_scsi_inq_mchngr ,
{ " MChngr " , " scsi.inquiry.mchngr " , FT_BOOLEAN , 8 , TFS ( & mchngr_tfs ) , SCSI_INQ_BQUEFLAGS_MCHNGR ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2012-09-13 01:28:57 +00:00
{ & hf_scsi_inq_ackreqq ,
{ " ACKREQQ " , " scsi.inquiry.ackreqq " , FT_BOOLEAN , 8 , NULL , SCSI_INQ_BQUEFLAGS_ACKREQQ ,
NULL , HFILL } } ,
2006-04-03 01:44:56 +00:00
{ & hf_scsi_inq_sccsflags ,
2010-09-27 06:05:24 +00:00
{ " Inquiry SCCS Flags " , " scsi.inquiry.sccsflags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 01:44:56 +00:00
{ & hf_scsi_inq_sccs ,
{ " SCCS " , " scsi.inquiry.sccs " , FT_BOOLEAN , 8 , TFS ( & sccs_tfs ) , SCSI_INQ_SCCSFLAGS_SCCS ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 01:44:56 +00:00
{ & hf_scsi_inq_acc ,
{ " ACC " , " scsi.inquiry.acc " , FT_BOOLEAN , 8 , TFS ( & acc_tfs ) , SCSI_INQ_SCCSFLAGS_ACC ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 01:44:56 +00:00
{ & hf_scsi_inq_tpc ,
{ " 3PC " , " scsi.inquiry.tpc " , FT_BOOLEAN , 8 , TFS ( & tpc_tfs ) , SCSI_INQ_SCCSFLAGS_TPC ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 01:44:56 +00:00
{ & hf_scsi_inq_protect ,
{ " Protect " , " scsi.inquiry.protect " , FT_BOOLEAN , 8 , TFS ( & protect_tfs ) , SCSI_INQ_SCCSFLAGS_PROTECT ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 01:44:56 +00:00
{ & hf_scsi_inq_tpgs ,
{ " TPGS " , " scsi.inquiry.tpgs " , FT_UINT8 , BASE_DEC , VALS ( inq_tpgs_vals ) , 0x30 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 00:55:21 +00:00
{ & hf_scsi_inq_acaflags ,
2010-09-27 06:05:24 +00:00
{ " Inquiry ACA Flags " , " scsi.inquiry.acaflags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2010-12-06 22:00:08 +00:00
{ & hf_scsi_inq_control_vendor_specific ,
{ " Vendor specific " , " scsi.inquiry.control.vendorspecific " , FT_UINT8 ,
BASE_HEX , NULL , 0xC0 , NULL , HFILL } } ,
{ & hf_scsi_inq_control_reserved ,
{ " Reserved " , " scsi.inquiry.control.reserved " , FT_UINT8 , BASE_HEX ,
NULL , 0x38 , NULL , HFILL } } ,
{ & hf_scsi_inq_control_naca ,
2011-01-16 20:51:21 +00:00
{ " NACA " , " scsi.inquiry.control.naca " , FT_BOOLEAN , 8 ,
2010-12-06 22:00:08 +00:00
TFS ( & scsi_naca_tfs ) , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_inq_control_obs1 ,
{ " Obsolete " , " scsi.inquiry.control.obs1 " , FT_UINT8 , BASE_HEX ,
NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_inq_control_obs2 ,
{ " Obsolete " , " scsi.inquiry.control.obs2 " , FT_UINT8 , BASE_HEX ,
NULL , 0x01 , NULL , HFILL } } ,
2006-11-27 14:50:23 +00:00
{ & hf_scsi_inq_rmbflags ,
2010-09-27 06:05:24 +00:00
{ " Inquiry RMB Flags " , " scsi.inquiry.rmbflags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_inq_normaca ,
2006-04-03 00:55:21 +00:00
{ " NormACA " , " scsi.inquiry.normaca " , FT_BOOLEAN , 8 , TFS ( & normaca_tfs ) , SCSI_INQ_ACAFLAGS_NORMACA ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 00:55:21 +00:00
{ & hf_scsi_inq_hisup ,
{ " HiSup " , " scsi.inquiry.hisup " , FT_BOOLEAN , 8 , TFS ( & hisup_tfs ) , SCSI_INQ_ACAFLAGS_HISUP ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2006-04-03 00:55:21 +00:00
{ & hf_scsi_inq_aerc ,
{ " AERC " , " scsi.inquiry.aerc " , FT_BOOLEAN , 8 , TFS ( & aerc_tfs ) , SCSI_INQ_ACAFLAGS_AERC ,
" AERC is obsolete from SPC-3 and forward " , HFILL } } ,
{ & hf_scsi_inq_trmtsk ,
{ " TrmTsk " , " scsi.inquiry.trmtsk " , FT_BOOLEAN , 8 , TFS ( & trmtsk_tfs ) , SCSI_INQ_ACAFLAGS_TRMTSK ,
" TRMTSK is obsolete from SPC-2 and forward " , HFILL } } ,
{ & hf_scsi_inq_rdf ,
{ " Response Data Format " , " scsi.inquiry.rdf " , FT_UINT8 , BASE_DEC , VALS ( inq_rdf_vals ) , 0x0f ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_errrep ,
{ " MRIE " , " scsi.mode.mrie " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_modesns_mrie_val ) , 0x0F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_tst ,
2003-01-31 03:17:56 +00:00
{ " Task Set Type " , " scsi.mode.tst " , FT_UINT8 , BASE_DEC ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_modesns_tst_val ) , 0xE0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_qmod ,
{ " Queue Algorithm Modifier " , " scsi.mode.qmod " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_modesns_qmod_val ) , 0xF0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_qerr ,
2009-05-08 20:15:35 +00:00
{ " Queue Error Management " , " scsi.mode.qerr " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_modesns_qerr_val ) , 0x2 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_tas ,
2009-05-08 20:15:35 +00:00
{ " Task Aborted Status " , " scsi.mode.tac " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_modesns_tas_val ) , 0x80 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_modesns_rac ,
2011-04-19 08:22:58 +00:00
{ " Report a Check " , " scsi.mode.rac " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_modesns_rac_val ) , 0x40 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_protocol ,
2012-05-07 22:11:34 +00:00
{ " Protocol " , " scsi.proto " , FT_UINT8 , BASE_DEC , VALS ( scsi_proto_val ) ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_sns_errtype ,
{ " SNS Error Type " , " scsi.sns.errtype " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_sns_errtype_val ) , 0x7F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_snskey ,
{ " Sense Key " , " scsi.sns.key " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_sensekey_val ) , 0x0F , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_snsinfo ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ " Sense Info " , " scsi.sns.info " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL ,
2002-01-10 01:28:45 +00:00
HFILL } } ,
{ & hf_scsi_addlsnslen ,
{ " Additional Sense Length " , " scsi.sns.addlen " , FT_UINT8 , BASE_DEC ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_asc ,
{ " Additional Sense Code " , " scsi.sns.asc " , FT_UINT8 , BASE_HEX , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_ascq ,
{ " Additional Sense Code Qualifier " , " scsi.sns.ascq " , FT_UINT8 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_ascascq ,
{ " Additional Sense Code+Qualifier " , " scsi.sns.ascascq " , FT_UINT16 ,
2010-10-29 17:48:39 +00:00
BASE_HEX | BASE_EXT_STRING , & scsi_asc_val_ext , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_fru ,
{ " Field Replaceable Unit Code " , " scsi.sns.fru " , FT_UINT8 , BASE_HEX ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_sksv ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ " SKSV " , " scsi.sns.sksv " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL ,
2002-01-10 01:28:45 +00:00
HFILL } } ,
2013-06-11 21:22:58 +00:00
{ & hf_scsi_sks_info ,
2013-06-13 13:51:19 +00:00
{ " Sense Key Specific " , " scsi.sns.sks_info " , FT_UINT24 , BASE_HEX , NULL , 0x7FFFFF , NULL , HFILL } } ,
2013-06-12 05:15:45 +00:00
{ & hf_scsi_sks_fp_cd ,
{ " Command/Data " , " scsi.sns.sks.fp.cd " , FT_UINT24 , BASE_HEX , VALS ( scsi_sense_sks_fp_cd_val ) , 0x400000 , NULL , HFILL } } ,
{ & hf_scsi_sks_fp_bpv ,
{ " Bit pointer valid " , " scsi.sns.sks.fp.bpv " , FT_BOOLEAN , 24 , NULL , 0x080000 , NULL , HFILL } } ,
{ & hf_scsi_sks_fp_bit ,
{ " Bit pointer " , " scsi.sns.sks.fp.bit " , FT_UINT24 , BASE_DEC , NULL , 0x070000 , NULL , HFILL } } ,
{ & hf_scsi_sks_fp_field ,
{ " Field pointer " , " scsi.sns.sks.fp.field " , FT_UINT24 , BASE_DEC , NULL , 0x00FFFF , NULL , HFILL } } ,
2013-06-11 21:22:58 +00:00
{ & hf_scsi_sns_desc_type ,
{ " Sense data descriptor type " , " scsi.sns.desc.type " , FT_UINT8 , BASE_HEX , VALS ( scsi_sense_desc_type_val ) , 0 , NULL , HFILL } } ,
{ & hf_scsi_sns_desc_length ,
2013-06-12 14:20:36 +00:00
{ " Sense data descriptor length " , " scsi.sns.desc.length " , FT_UINT8 , BASE_DEC , NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_not_initiated ,
{ " Not initiated " , " scsi.sns.desc.osd_object.not_initiated " , FT_UINT32 , BASE_HEX , NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_completed ,
{ " Completed " , " scsi.sns.desc.osd_object.completed " , FT_UINT32 , BASE_HEX , NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_validation ,
{ " VALIDATION " , " scsi.sns.desc.osd_object.validation " , FT_BOOLEAN , 32 , NULL , 0x80000000 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_cmd_cap_v ,
{ " CMD_CAP_V " , " scsi.sns.desc.osd_object.cmd_cap_v " , FT_BOOLEAN , 32 , NULL , 0x20000000 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_command ,
{ " COMMAND " , " scsi.sns.desc.osd_object.command " , FT_BOOLEAN , 32 , NULL , 0x10000000 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_imp_st_att ,
{ " IMP_ST_ATT " , " scsi.sns.desc.osd_object.imp_st_att " , FT_BOOLEAN , 32 , NULL , 0x00100000 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_sa_cap_v ,
{ " SA_CAP_V " , " scsi.sns.desc.osd_object.sa_cap_v " , FT_BOOLEAN , 32 , NULL , 0x00002000 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_set_att ,
{ " SET_ATT " , " scsi.sns.desc.osd_object.set_att " , FT_BOOLEAN , 32 , NULL , 0x00001000 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_ga_cap_v ,
{ " GA_CAP_V " , " scsi.sns.desc.osd_object.ga_cap_v " , FT_BOOLEAN , 32 , NULL , 0x00000020 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_get_att ,
{ " GET_ATT " , " scsi.sns.desc.osd_object.get_att " , FT_BOOLEAN , 32 , NULL , 0x00000010 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_partition_id ,
{ " Partition ID " , " scsi.sns.desc.osd_object.partition_id " , FT_UINT64 , BASE_HEX , NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_sns_osd_object_id ,
{ " Object ID " , " scsi.sns.desc.osd_object.object_id " , FT_UINT64 , BASE_HEX , NULL , 0 , NULL , HFILL } } ,
2013-08-07 04:28:35 +00:00
{ & hf_scsi_sns_osd_attr_page ,
2013-12-12 19:26:55 +00:00
{ " Attribute page " , " scsi.sns.desc.osd_attr.page " , FT_UINT32 , BASE_HEX | BASE_EXT_STRING , & attributes_page_vals_ext , 0 , NULL , HFILL } } ,
2013-08-07 04:28:35 +00:00
{ & hf_scsi_sns_osd_attr_number ,
{ " Attribute number " , " scsi.sns.desc.osd_attr.number " , FT_UINT32 , BASE_HEX , NULL , 0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_persresv_key ,
2013-06-12 14:20:36 +00:00
{ " Reservation Key " , " scsi.spc.resv.key " , FT_BYTES , BASE_NONE , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2002-01-10 01:28:45 +00:00
{ & hf_scsi_persresv_scopeaddr ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ " Scope Address " , " scsi.spc.resv.scopeaddr " , FT_BYTES , BASE_NONE , NULL ,
0x0 , NULL , HFILL } } ,
2002-03-12 11:30:45 +00:00
{ & hf_scsi_add_cdblen ,
2007-02-11 00:45:15 +00:00
{ " Additional CDB Length " , " scsi.spc.addcdblen " , FT_UINT8 , BASE_DEC ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2002-03-12 11:30:45 +00:00
{ & hf_scsi_svcaction ,
2007-02-11 00:45:15 +00:00
{ " Service Action " , " scsi.spc.svcaction " , FT_UINT16 , BASE_HEX , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_wb_mode ,
2007-02-11 00:45:15 +00:00
{ " Mode " , " scsi.spc.wb.mode " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_wb_mode_val ) , 0xF , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_wb_bufferid ,
2007-02-11 00:45:15 +00:00
{ " Buffer ID " , " scsi.spc.sb.bufid " , FT_UINT8 , BASE_DEC , NULL , 0x0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_wb_bufoffset ,
2007-02-11 00:45:15 +00:00
{ " Buffer Offset " , " scsi.spc.wb.bufoff " , FT_UINT24 , BASE_HEX , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x0 , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_paramlen24 ,
2009-05-01 07:19:31 +00:00
{ " Parameter List Length " , " scsi.cdb.paramlen24 " , FT_UINT24 , BASE_HEX ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x0 , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_senddiag_st_code ,
2007-02-11 00:45:15 +00:00
{ " Self-Test Code " , " scsi.spc.senddiag.code " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_senddiag_st_code_val ) , 0xE0 , NULL , HFILL } } ,
2005-05-14 17:12:45 +00:00
{ & hf_scsi_select_report ,
2007-02-11 00:45:15 +00:00
{ " Select Report " , " scsi.spc.select_report " , FT_UINT8 , BASE_HEX ,
2012-05-07 22:11:34 +00:00
VALS ( scsi_select_report_val ) , 0x00 , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_senddiag_pf ,
2009-05-08 20:15:35 +00:00
{ " PF " , " scsi.spc.senddiag.pf " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_senddiag_pf_val ) , 0x10 , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_senddiag_st ,
2009-05-08 20:15:35 +00:00
{ " Self Test " , " scsi.spc.senddiag.st " , FT_BOOLEAN , 8 , NULL ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
0x4 , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_senddiag_devoff ,
2009-05-08 20:15:35 +00:00
{ " Device Offline " , " scsi.spc.senddiag.devoff " , FT_BOOLEAN , 8 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x2 , NULL , HFILL } } ,
2003-10-28 03:57:49 +00:00
{ & hf_scsi_senddiag_unitoff ,
2009-05-08 20:15:35 +00:00
{ " Unit Offline " , " scsi.spc.senddiag.unitoff " , FT_BOOLEAN , 8 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , 0x1 , NULL , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_request_frame ,
{ " Request in " , " scsi.request_frame " , FT_FRAMENUM , BASE_NONE , NULL , 0 ,
2012-05-07 22:11:34 +00:00
" The request to this transaction is in this frame " , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_time ,
{ " Time from request " , " scsi.time " , FT_RELATIVE_TIME , BASE_NONE , NULL , 0 ,
2012-05-07 22:11:34 +00:00
" Time between the Command and the Response " , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_response_frame ,
{ " Response in " , " scsi.response_frame " , FT_FRAMENUM , BASE_NONE , NULL , 0 ,
2012-05-07 22:11:34 +00:00
" The response to this transaction is in this frame " , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_fragments ,
{ " SCSI Fragments " , " scsi.fragments " , FT_NONE , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
NULL , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_fragment_overlap ,
2010-12-10 15:49:33 +00:00
{ " Fragment overlap " , " scsi.fragment.overlap " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
" Fragment overlaps with other fragments " , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_fragment_overlap_conflict ,
2010-12-10 15:49:33 +00:00
{ " Conflicting data in fragment overlap " , " scsi.fragment.overlap.conflict " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
" Overlapping fragments contained conflicting data " , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_fragment_multiple_tails ,
2010-12-10 15:49:33 +00:00
{ " Multiple tail fragments found " , " scsi.fragment.multipletails " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
" Several tails were found when defragmenting the packet " , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_fragment_too_long_fragment ,
2010-12-10 15:49:33 +00:00
{ " Fragment too long " , " scsi.fragment.toolongfragment " , FT_BOOLEAN , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
" Fragment contained data past end of packet " , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_fragment_error ,
{ " Defragmentation error " , " scsi.fragment.error " , FT_FRAMENUM , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
" Defragmentation error due to illegal fragments " , HFILL } } ,
2011-01-30 21:01:07 +00:00
{ & hf_scsi_fragment_count ,
{ " Fragment count " , " scsi.fragment.count " , FT_UINT32 , BASE_DEC , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
NULL , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_fragment ,
{ " SCSI DATA Fragment " , " scsi.fragment " , FT_FRAMENUM , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
NULL , HFILL } } ,
2007-03-26 21:16:21 +00:00
{ & hf_scsi_reassembled_in ,
{ " Reassembled SCSI DATA in frame " , " scsi.reassembled_in " , FT_FRAMENUM , BASE_NONE , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
" This SCSI DATA packet is reassembled in this frame " , HFILL } } ,
2010-02-02 16:01:52 +00:00
{ & hf_scsi_reassembled_length ,
2010-02-03 08:47:15 +00:00
{ " Reassembled SCSI DATA length " , " scsi.reassembled.length " , FT_UINT32 , BASE_DEC , NULL , 0x0 ,
2012-05-07 22:11:34 +00:00
" The total length of the reassembled payload " , HFILL } } ,
2007-02-03 22:03:39 +00:00
{ & hf_scsi_log_ppc_flags ,
{ " PPC Flags " , " scsi.log.ppc.flags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-03 22:03:39 +00:00
{ & hf_scsi_log_ppc ,
{ " PPC " , " scsi.log.ppc " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_log_ppc_tfs ) , 0x02 , NULL , HFILL } } ,
2007-02-03 22:03:39 +00:00
{ & hf_scsi_log_pcr ,
{ " PCR " , " scsi.log.pcr " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_log_pcr_tfs ) , 0x02 , NULL , HFILL } } ,
2007-02-03 22:03:39 +00:00
{ & hf_scsi_log_sp ,
{ " SP " , " scsi.log.sp " , FT_BOOLEAN , 8 ,
2012-05-07 22:11:34 +00:00
TFS ( & scsi_log_sp_tfs ) , 0x01 , NULL , HFILL } } ,
2007-02-03 22:03:39 +00:00
{ & hf_scsi_log_pc_flags ,
{ " PC Flags " , " scsi.log.pc.flags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2010-12-10 15:49:33 +00:00
{ & hf_scsi_log_parameter_ptr ,
{ " Parameter Pointer " , " scsi.log.param_ptr " , FT_UINT8 , BASE_HEX , NULL ,
0 , NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_page_length ,
{ " Page Length " , " scsi.log.page_length " , FT_UINT16 , BASE_DEC , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_parameter_code ,
{ " Parameter Code " , " scsi.log.parameter_code " , FT_UINT16 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_param_flags ,
{ " Param Flags " , " scsi.log.param.flags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_param_len ,
{ " Parameter Len " , " scsi.log.param_len " , FT_UINT8 , BASE_DEC , NULL , 0 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_param_data ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
{ " Parameter Data " , " scsi.log.param_data " , FT_BYTES , BASE_NONE , NULL , 0 ,
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_pf_du ,
{ " DU " , " scsi.log.pf.du " , FT_BOOLEAN , 8 , NULL , 0x80 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_pf_ds ,
{ " DS " , " scsi.log.pf.ds " , FT_BOOLEAN , 8 , NULL , 0x40 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_pf_tsd ,
{ " TSD " , " scsi.log.pf.tsd " , FT_BOOLEAN , 8 , NULL , 0x20 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_pf_etc ,
{ " ETC " , " scsi.log.pf.etc " , FT_BOOLEAN , 8 , NULL , 0x10 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_pf_tmc ,
{ " TMC " , " scsi.log.pf.tmc " , FT_UINT8 , BASE_HEX , VALS ( log_flags_tmc_vals ) , 0x0c ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_pf_lbin ,
{ " LBIN " , " scsi.log.pf.lbin " , FT_BOOLEAN , 8 , NULL , 0x02 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_pf_lp ,
{ " LP " , " scsi.log.pf.lp " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 09:39:36 +00:00
{ & hf_scsi_log_ta_rw ,
{ " Read Warning " , " scsi.log.ta.rw " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_ww ,
{ " write warning " , " scsi.log.ta.ww " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_he ,
{ " hard error " , " scsi.log.ta.he " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_media ,
{ " media " , " scsi.log.ta.media " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_rf ,
{ " read failure " , " scsi.log.ta.rf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_wf ,
{ " write failure " , " scsi.log.ta.wf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_ml ,
{ " media life " , " scsi.log.ta.ml " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_ndg ,
{ " not data grade " , " scsi.log.ta.ndg " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_wp ,
{ " write protect " , " scsi.log.ta.wp " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_nr ,
{ " no removal " , " scsi.log.ta.nr " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_cm ,
{ " cleaning media " , " scsi.log.ta.cm " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_uf ,
{ " unsupported format " , " scsi.log.ta.uf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_rmcf ,
{ " removable mechanical cartridge failure " , " scsi.log.ta.rmcf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_umcf ,
{ " unrecoverable mechanical cartridge failure " , " scsi.log.ta.umcf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_mcicf ,
{ " memory chip in cartridge failure " , " scsi.log.ta.mcicf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_fe ,
{ " forced eject " , " scsi.log.ta.fe " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_rof ,
{ " read only format " , " scsi.log.ta.rof " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_tdcol ,
{ " tape directory corrupted on load " , " scsi.log.ta.tdcol " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_nml ,
{ " nearing media life " , " scsi.log.ta.nml " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_cn ,
{ " clean now " , " scsi.log.ta.cn " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_cp ,
{ " clean periodic " , " scsi.log.ta.cp " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_ecm ,
{ " expired cleaning media " , " scsi.log.ta.ecm " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_ict ,
{ " invalid cleaning tape " , " scsi.log.ta.ict " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_rr ,
{ " retention requested " , " scsi.log.ta.rr " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_dpie ,
{ " dual port interface error " , " scsi.log.ta.dpie " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_cff ,
{ " cooling fan failure " , " scsi.log.ta.cff " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_psf ,
{ " power supply failure " , " scsi.log.ta.psf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_pc ,
{ " power consumption " , " scsi.log.ta.pc " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_dm ,
{ " drive maintenance " , " scsi.log.ta.dm " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_hwa ,
{ " hardware a " , " scsi.log.ta.hwa " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_hwb ,
{ " hardware b " , " scsi.log.ta.hwb " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_if ,
{ " interface " , " scsi.log.ta.if " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_em ,
{ " eject media " , " scsi.log.ta.em " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_dwf ,
{ " download failed " , " scsi.log.ta.dwf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_drhu ,
{ " drive humidity " , " scsi.log.ta.drhu " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_drtm ,
{ " drive temperature " , " scsi.log.ta.drtm " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_drvo ,
{ " drive voltage " , " scsi.log.ta.drvo " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_pefa ,
{ " periodic failure " , " scsi.log.ta.pefa " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_dire ,
2008-12-20 00:09:02 +00:00
{ " diagnostics required " , " scsi.log.ta.dire " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_lost ,
{ " lost statistics " , " scsi.log.ta.lost " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_tduau ,
{ " tape directory invalid at unload " , " scsi.log.ta.tduau " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_tsawf ,
{ " tape system area write failure " , " scsi.log.ta.tsawf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_tsarf ,
{ " tape system area read failure " , " scsi.log.ta.tsarf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_nsod ,
{ " no start of data " , " scsi.log.ta.nsod " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_lofa ,
{ " loading failure " , " scsi.log.ta.lofa " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_uuf ,
{ " unrecoverable unload failure " , " scsi.log.ta.uuf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_aif ,
{ " automatic interface failure " , " scsi.log.ta.aif " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_fwf ,
{ " firmware failure " , " scsi.log.ta.fwf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_wmicf ,
{ " worm medium integrity check failed " , " scsi.log.ta.wmicf " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2007-02-05 11:31:21 +00:00
{ & hf_scsi_log_ta_wmoa ,
{ " worm medium overwrite attempted " , " scsi.log.ta.wmoa " , FT_BOOLEAN , 8 , NULL , 0x01 ,
From Kovarththanan Rajaratnam via bug 3548:
(1) Trailing/leading spaces are removed from 'name's/'blurb's
(2) Duplicate 'blurb's are replaced with NULL
(3) Empty ("") 'blurb's are replaced with NULL
(4) BASE_NONE, NULL, 0x0 are used for 'display', 'strings' and 'bitmask' fields
for FT_NONE, FT_BYTES, FT_IPv4, FT_IPv6, FT_ABSOLUTE_TIME, FT_RELATIVE_TIME,
FT_PROTOCOL, FT_STRING and FT_STRINGZ field types
(5) Only allow non-zero value for 'display' if 'bitmask' is non-zero
svn path=/trunk/; revision=28770
2009-06-18 21:30:42 +00:00
NULL , HFILL } } ,
2013-04-01 15:29:49 +00:00
{ & hf_scsi_sbc_threshold_exponent ,
{ " Threshold Exponent " , " scsi_sbc.threshold_exponent " , FT_UINT8 , BASE_DEC , NULL , 0 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
{ & hf_scsi_sbc_lbpu ,
2013-12-26 09:54:12 +00:00
{ " LBPU (logical block provisioning UNMAP) " , " scsi_sbc.lbpu " , FT_BOOLEAN , 8 , NULL , 0x80 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
{ & hf_scsi_sbc_lbpws ,
2013-12-26 09:54:12 +00:00
{ " LBPWS (logical block provisioning WRITE SAME) " , " scsi_sbc.lbpws " , FT_BOOLEAN , 8 , NULL , 0x40 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
{ & hf_scsi_sbc_lbpws10 ,
2013-12-26 09:54:12 +00:00
{ " LBPWS10 (logical block provisioning WRITE SAME (10) ) " , " scsi_sbc.lbpws10 " , FT_BOOLEAN , 8 , NULL , 0x20 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
{ & hf_scsi_sbc_lbprz ,
2013-12-26 09:54:12 +00:00
{ " LBPRZ (logical block provisioning read zeros) " , " scsi_sbc.lbprz " , FT_BOOLEAN , 8 , NULL , 0x04 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
{ & hf_scsi_sbc_anc_sup ,
2013-12-26 09:54:12 +00:00
{ " ANC_SUP (anchor supported) " , " scsi_sbc.anc_sup " , FT_BOOLEAN , 8 , NULL , 0x02 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
{ & hf_scsi_sbc_dp ,
2013-12-26 09:54:12 +00:00
{ " DP (descriptor present) " , " scsi_sbc.dp " , FT_BOOLEAN , 8 , NULL , 0x01 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
{ & hf_scsi_sbc_ptype ,
2012-07-25 13:56:15 +00:00
{ " Provisioning Type " , " scsi_sbc.ptype " , FT_UINT8 , BASE_DEC , VALS ( provisioning_vals ) , 0x07 ,
2012-03-31 04:45:33 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_wsnz ,
2013-12-26 09:54:12 +00:00
{ " WSNZ (write same non-zero) " , " scsi_sbc.bl.wsnz " , FT_BOOLEAN , 8 , NULL , 0x01 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_mcawl ,
2012-07-25 13:56:15 +00:00
{ " Maximum Compare And Write Length " , " scsi_sbc.bl.mcawl " , FT_UINT8 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_otlg ,
2012-07-25 13:56:15 +00:00
{ " Optimal Transfer Length Granularity " , " scsi_sbc.bl.otlg " , FT_UINT16 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_mtl ,
2012-07-25 13:56:15 +00:00
{ " Maximum Transfer Length " , " scsi_sbc.bl.mtl " , FT_UINT32 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_otl ,
2012-07-25 13:56:15 +00:00
{ " Optimal Transfer Length " , " scsi_sbc.bl.otl " , FT_UINT32 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_mpl ,
2012-07-25 13:56:15 +00:00
{ " Optimal Prefetch/Xdread/Xdwrite Transfer Length " , " scsi_sbc.bl.mpl " , FT_UINT32 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_mulc ,
2012-07-25 13:56:15 +00:00
{ " Maximum Unmap LBA Count " , " scsi_sbc.bl.mulc " , FT_UINT32 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_mubdc ,
2012-07-25 13:56:15 +00:00
{ " Maximum Unmap Block Descriptor Count " , " scsi_sbc.bl.mubdc " , FT_UINT32 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_oug ,
2012-07-25 13:56:15 +00:00
{ " Optimal Unmap Block Granularity " , " scsi_sbc.bl.oug " , FT_UINT32 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_ugavalid ,
2012-07-25 13:56:15 +00:00
{ " UGAVALID " , " scsi_sbc.bl.ugavalid " , FT_BOOLEAN , 8 , NULL , 0x80 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_uga ,
2012-07-25 13:56:15 +00:00
{ " Unmap Granularity Alignment " , " scsi_sbc.bl.uga " , FT_UINT32 , BASE_DEC , NULL , 0x7fffffff ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-05-07 22:11:34 +00:00
{ & hf_scsi_block_limits_mwsl ,
2012-07-25 13:56:15 +00:00
{ " Maximum Write Same Length " , " scsi_sbc.bl.mwsl " , FT_UINT64 , BASE_DEC , NULL , 0 ,
2012-04-20 07:34:53 +00:00
NULL , HFILL } } ,
2012-07-24 02:00:50 +00:00
{ & hf_scsi_modepage_ps ,
{ " PS " , " scsi.spc.modepage.ps " , FT_BOOLEAN , 8 , NULL , 0x80 ,
NULL , HFILL } } ,
{ & hf_scsi_modepage_spf ,
{ " SPF " , " scsi.spc.modepage.spf " , FT_BOOLEAN , 8 , NULL , 0x40 ,
NULL , HFILL } } ,
{ & hf_scsi_modepage_plen ,
{ " Page Length " , " scsi.spc.modepage.plen " , FT_UINT16 , BASE_DEC , NULL , 0 ,
NULL , HFILL } } ,
2013-01-29 13:53:16 +00:00
{ & hf_scsi_modepage_tcmos ,
2012-07-24 02:00:50 +00:00
{ " TCMOS " , " scsi.spc.modepage.tcmos " , FT_BOOLEAN , 8 , NULL , 0x04 ,
NULL , HFILL } } ,
2013-01-29 13:53:16 +00:00
{ & hf_scsi_modepage_scsip ,
2012-07-24 02:00:50 +00:00
{ " SCSIP " , " scsi.spc.modepage.scsip " , FT_BOOLEAN , 8 , NULL , 0x02 ,
NULL , HFILL } } ,
2013-01-29 13:53:16 +00:00
{ & hf_scsi_modepage_ialuae ,
2012-07-24 02:00:50 +00:00
{ " IALUAE " , " scsi.spc.modepage.ialuae " , FT_BOOLEAN , 8 , NULL , 0x01 ,
NULL , HFILL } } ,
{ & hf_scsi_modepage_icp ,
{ " Initial Command Priority " , " scsi.spc.modepage.icp " , FT_UINT8 , BASE_DEC ,
2013-01-29 13:53:16 +00:00
NULL , 0x0f , NULL , HFILL } } ,
2012-07-24 02:00:50 +00:00
{ & hf_scsi_modepage_msdl ,
{ " Maximum Sense Data Length " , " scsi.spc.modepage.msdl " , FT_UINT8 , BASE_DEC ,
2013-01-29 13:53:16 +00:00
NULL , 0 , NULL , HFILL } } ,
2012-07-27 05:09:13 +00:00
{ & hf_scsi_lun ,
{ " LUN " , " scsi.lun " , FT_UINT16 , BASE_DEC ,
NULL , 0 , " Logical Unit Number " , HFILL } } ,
{ & hf_scsi_bus ,
{ " BUS " , " scsi.bus " , FT_UINT8 , BASE_DEC ,
2012-07-27 07:13:28 +00:00
NULL , 0x3f , NULL , HFILL } } ,
2012-07-27 05:09:13 +00:00
{ & hf_scsi_lun_address_mode ,
{ " Address Mode " , " scsi.lun.address_mode " , FT_UINT8 , BASE_DEC ,
VALS ( scsi_lun_address_mode_vals ) , 0xc0 , " Addressing mode for the LUN " , HFILL } } ,
2013-01-29 13:53:16 +00:00
{ & hf_scsi_prevent_allow_flags ,
2012-09-02 21:46:50 +00:00
{ " Prevent Allow Flags " , " scsi.prevent_allow.flags " , FT_UINT8 , BASE_HEX , NULL , 0 ,
NULL , HFILL } } ,
{ & hf_scsi_prevent_allow_prevent ,
{ " PREVENT " , " scsi.prevent_allow.prevent " , FT_BOOLEAN , 8 ,
NULL , 0x01 , NULL , HFILL } } ,
2013-05-18 16:26:26 +00:00
{ & hf_scsi_mpi_service_action ,
{ " Service Action " , " scsi.mpi.service_action " , FT_UINT8 , BASE_HEX ,
VALS ( mpi_action_vals ) , 0x1f , " Management Protocol In Service Action " , HFILL } } ,
{ & hf_scsi_report_opcodes_rctd ,
{ " RCTD " , " scsi.report_opcodes.rctd " , FT_BOOLEAN , 8 ,
NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_options ,
{ " Reporting Options " , " scsi.report_opcodes.options " , FT_UINT8 , BASE_HEX ,
2013-05-19 14:24:31 +00:00
VALS ( report_opcodes_options_vals ) , 0x07 , NULL , HFILL } } ,
2013-05-18 16:26:26 +00:00
{ & hf_scsi_report_opcodes_requested_o ,
{ " Requested Operation Code " , " scsi.report_opcodes.requested_operation_code " , FT_UINT8 , BASE_HEX ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_requested_sa ,
{ " Requested Service Action " , " scsi.report_opcodes.requested_service_action " , FT_UINT16 , BASE_HEX ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_cdl ,
{ " Command Data Length " , " scsi.report_opcodes.command_data_length " , FT_UINT32 , BASE_DEC ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_sa ,
{ " Service Action " , " scsi.report_opcodes.service_action " , FT_UINT16 , BASE_DEC ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_ctdp ,
{ " CTDP " , " scsi.report_opcodes.ctdp " , FT_BOOLEAN , 8 ,
NULL , 0x02 , NULL , HFILL } } ,
2013-05-19 14:45:12 +00:00
{ & hf_scsi_report_opcodes_ctdp_one ,
{ " CTDP " , " scsi.report_opcodes_one.ctdp " , FT_BOOLEAN , 8 ,
NULL , 0x80 , NULL , HFILL } } ,
2013-05-18 16:26:26 +00:00
{ & hf_scsi_report_opcodes_servactv ,
{ " SERVACTV " , " scsi.report_opcodes.servactv " , FT_BOOLEAN , 8 ,
NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_cdb_length ,
{ " CDB Length " , " scsi.report_opcodes.cdb_length " , FT_UINT16 , BASE_DEC ,
NULL , 0 , NULL , HFILL } } ,
2013-05-19 14:45:12 +00:00
{ & hf_scsi_report_opcodes_support ,
{ " Support " , " scsi.report_opcodes.support " , FT_UINT8 , BASE_DEC ,
NULL , 0x07 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_cdb_usage_data ,
{ " CDB Usage Data " , " scsi.report_opcodes.cdb_usage_data " , FT_BYTES , BASE_NONE ,
2013-06-11 21:33:48 +00:00
NULL , 0 , NULL , HFILL } } ,
2013-05-27 01:09:49 +00:00
{ & hf_scsi_report_opcodes_tdl ,
{ " Timeout Descriptor Length " , " scsi.report_opcodes.timeout_descriptor_length " , FT_UINT16 , BASE_DEC ,
NULL , 0 , NULL , HFILL } } ,
2013-06-11 21:33:48 +00:00
{ & hf_scsi_report_opcodes_npt ,
{ " Nominal Command Processing Timeout " , " scsi.report_opcodes.ncpt " , FT_UINT32 , BASE_DEC ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_report_opcodes_rct ,
{ " Recommended Command Timeout " , " scsi.report_opcodes.rct " , FT_UINT32 , BASE_DEC ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_inquiry_bdc_mrr ,
{ " Medium Rotation Rate " , " scsi.inquiry.bdc.mrr " , FT_UINT16 , BASE_DEC ,
2013-08-13 05:19:48 +00:00
VALS ( mrr_val ) , 0 , NULL , HFILL } } ,
2013-06-11 21:33:48 +00:00
{ & hf_scsi_inquiry_bdc_pt ,
{ " Product Type " , " scsi.inquiry.bdc.pt " , FT_UINT8 , BASE_DEC ,
NULL , 0 , NULL , HFILL } } ,
{ & hf_scsi_inquiry_bdc_wabereq ,
{ " WABEREQ " , " scsi.inquiry.bdc.wabereq " , FT_UINT8 , BASE_DEC ,
NULL , 0xc0 , NULL , HFILL } } ,
{ & hf_scsi_inquiry_bdc_wacereq ,
{ " WACEREQ " , " scsi.inquiry.bdc.wacereq " , FT_UINT8 , BASE_DEC ,
NULL , 0x30 , NULL , HFILL } } ,
{ & hf_scsi_inquiry_bdc_nff ,
2013-05-27 03:44:06 +00:00
{ " Nominal Form factor " , " scsi.inquiry.bdc.nff " , FT_UINT8 , BASE_DEC ,
2013-06-11 21:33:48 +00:00
NULL , 0x0f , NULL , HFILL } } ,
{ & hf_scsi_inquiry_bdc_fuab ,
{ " FUAB " , " scsi.inquiry.bdc.fuab " , FT_BOOLEAN , 8 ,
NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_inquiry_bdc_vbuls ,
{ " VBULS " , " scsi.inquiry.bdc.vbuls " , FT_BOOLEAN , 8 ,
NULL , 0x01 , NULL , HFILL } } ,
2013-08-08 17:25:03 +00:00
/* Generated from convert_proto_tree_add_text.pl */
{ & hf_scsi_inq_evpd_page_length , { " Page Length " , " scsi.inquiry.evpd.pagelength " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inq_evpd_supported_page , { " Supported Page " , " scsi.inquiry.evpd.supported_page " , FT_UINT8 , BASE_HEX , VALS ( scsi_evpd_pagecode_val ) , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inq_evpd_devid_code_set , { " Code Set " , " scsi.inquiry.evpd.devid.code_set " , FT_UINT8 , BASE_HEX , VALS ( scsi_devid_codeset_val ) , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_inq_evpd_devid_association , { " Association " , " scsi.inquiry.evpd.devid.association " , FT_UINT8 , BASE_HEX , VALS ( scsi_devid_assoc_val ) , 0x30 , NULL , HFILL } } ,
{ & hf_scsi_inq_evpd_devid_identifier_type , { " Identifier Type " , " scsi.inquiry.evpd.devid.identifier_type " , FT_UINT8 , BASE_HEX , VALS ( scsi_devid_idtype_val ) , 0x0F , NULL , HFILL } } ,
2014-11-18 01:04:30 +00:00
{ & hf_scsi_inq_evpd_identifier_number , { " Identifier Number " , " scsi.inquiry.evpd.identifier_number " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2013-08-08 17:25:03 +00:00
{ & hf_scsi_inq_evpd_devid_identifier_length , { " Identifier Length " , " scsi.inquiry.evpd.devid.identifier_length " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inq_evpd_devid_identifier_str , { " Identifier " , " scsi.inquiry.evpd.devid.identifier_str " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inq_evpd_devid_identifier_bytes , { " Identifier " , " scsi.inquiry.evpd.devid.identifier_bytes " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inq_evpd_product_serial_number , { " Product Serial Number " , " scsi.inquiry.evpd.product_serial_number " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inq_cmddt_support , { " Support " , " scsi.inquiry.cmddt.support " , FT_UINT8 , BASE_DEC , VALS ( scsi_cmdt_supp_val ) , 0x07 , NULL , HFILL } } ,
{ & hf_scsi_inq_cmddt_version , { " Version " , " scsi.inquiry.cmddt.version " , FT_UINT8 , BASE_HEX | BASE_EXT_STRING , & scsi_verdesc_val_ext , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inq_cmddt_cdb_size , { " CDB Size " , " scsi.inquiry.cmddt.cdb_size " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_blockdescs_no_of_blocks64 , { " No. of Blocks " , " scsi.blockdescs.no_of_blocks " , FT_UINT64 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_blockdescs_density_code , { " Density Code " , " scsi.blockdescs.density_code " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_blockdescs_block_length32 , { " Block Length " , " scsi.blockdescs.block_length " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_blockdescs_no_of_blocks32 , { " No. of Blocks " , " scsi.blockdescs.no_of_blocks " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_blockdescs_block_length24 , { " Block Length " , " scsi.blockdescs.block_length " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_blockdescs_no_of_blocks24 , { " No. of Blocks " , " scsi.blockdescs.no_of_blocks " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_gltsd , { " Global Logging Target Save Disable " , " scsi.spc.modepage.gltsd " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_disable_queuing , { " Disable Queuing " , " scsi.spc.modepage.disable_queuing " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_swp , { " SWP " , " scsi.spc.modepage.swp " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_autoload_mode , { " Autoload Mode " , " scsi.spc.modepage.autoload_mode " , FT_UINT8 , BASE_HEX , NULL , 0x07 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_ready_aer_holdoff_period , { " Ready AER Holdoff Period (ms) " , " scsi.spc.modepage.ready_aer_holdoff_period " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_busy_timeout_period , { " Busy Timeout Period (ms) " , " scsi.spc.modepage.busy_timeout_period " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_extended_self_test_completion_time , { " Extended Self-Test Completion Time " , " scsi.spc.modepage.extended_self_test_completion_time " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_buffer_full_ratio , { " Buffer Full Ratio " , " scsi.spc.modepage.buffer_full_ratio " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_buffer_empty_ratio , { " Buffer Empty Ratio " , " scsi.spc.modepage.buffer_empty_ratio " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_bus_inactivity_limit , { " Bus Inactivity Limit " , " scsi.spc.modepage.bus_inactivity_limit " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_disconnect_time_limit , { " Disconnect Time Limit " , " scsi.spc.modepage.disconnect_time_limit " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_connect_time_limit , { " Connect Time Limit " , " scsi.spc.modepage.connect_time_limit " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_maximum_burst_size , { " Maximum Burst Size (bytes) " , " scsi.spc.modepage.maximum_burst_size " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_emdp , { " EMDP " , " scsi.spc.modepage.emdp " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_first_burst_size , { " First Burst Size (bytes) " , " scsi.spc.modepage.first_burst_size " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_perf , { " Perf " , " scsi.spc.modepage.perf " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_interval_timer , { " Interval Timer " , " scsi.spc.modepage.interval_timer " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_report_count , { " Report Count " , " scsi.spc.modepage.report_count " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_idle , { " Idle " , " scsi.spc.modepage.idle " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_idle_condition_timer , { " Idle Condition Timer (ms) " , " scsi.spc.modepage.idle_condition_timer " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_standby_condition_timer , { " Standby Condition Timer (ms) " , " scsi.spc.modepage.standby_condition_timer " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_dtfd , { " DTFD " , " scsi.spc.modepage.dtfd " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_rr_tov_units , { " RR_TOV Units " , " scsi.spc.modepage.rr_tov_units " , FT_UINT8 , BASE_DEC , VALS ( scsi_fcp_rrtov_val ) , 0x07 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_rr_tov , { " RR_TOV " , " scsi.spc.modepage.rr_tov " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_tracks_per_zone , { " Tracks Per Zone " , " scsi.sbc.modepage.tracks_per_zone " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_alternate_sectors_per_zone , { " Alternate Sectors Per Zone " , " scsi.sbc.modepage.alternate_sectors_per_zone " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_alternate_tracks_per_zone , { " Alternate Tracks Per Zone " , " scsi.sbc.modepage.alternate_tracks_per_zone " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_alternate_tracks_per_lu , { " Alternate Tracks Per LU " , " scsi.sbc.modepage.alternate_tracks_per_lu " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_sectors_per_track , { " Sectors Per Track " , " scsi.sbc.modepage.sectors_per_track " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_data_bytes_per_physical_sector , { " Data Bytes Per Physical Sector " , " scsi.sbc.modepage.data_bytes_per_physical_sector " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_interleave , { " Interleave " , " scsi.sbc.modepage.interleave " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_track_skew_factor , { " Track Skew Factor " , " scsi.sbc.modepage.track_skew_factor " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_cylinder_skew_factor , { " Cylinder Skew Factor " , " scsi.sbc.modepage.cylinder_skew_factor " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_ssec , { " SSEC " , " scsi.sbc.modepage.ssec " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_awre , { " AWRE " , " scsi.sbc.modepage.awre " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_read_retry_count , { " Read Retry Count " , " scsi.sbc.modepage.read_retry_count " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_correction_span , { " Correction Span " , " scsi.sbc.modepage.correction_span " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_head_offset_count , { " Head Offset Count " , " scsi.sbc.modepage.head_offset_count " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_data_strobe_offset_count , { " Data Strobe Offset Count " , " scsi.sbc.modepage.data_strobe_offset_count " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_write_retry_count , { " Write Retry Count " , " scsi.sbc.modepage.write_retry_count " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_recovery_time_limit , { " Recovery Time Limit (ms) " , " scsi.sbc.modepage.recovery_time_limit " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_number_of_cylinders , { " Number of Cylinders " , " scsi.sbc.modepage.number_of_cylinders " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_number_of_heads , { " Number of Heads " , " scsi.sbc.modepage.number_of_heads " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_starting_cyl_pre_compensation , { " Starting Cyl Pre-compensation " , " scsi.sbc.modepage.starting_cyl_pre_compensation " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_starting_cyl_reduced_write_current , { " Starting Cyl-reduced Write Current " , " scsi.sbc.modepage.starting_cyl_reduced_write_current " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_device_step_rate , { " Device Step Rate " , " scsi.sbc.modepage.device_step_rate " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_landing_zone_cyl , { " Landing Zone Cyl " , " scsi.sbc.modepage.landing_zone_cyl " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_rotational_offset , { " Rotational Offset " , " scsi.sbc.modepage.rotational_offset " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_medium_rotation_rate , { " Medium Rotation Rate " , " scsi.sbc.modepage.medium_rotation_rate " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_ic , { " IC " , " scsi.sbc.modepage.ic " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_demand_read_retention_priority , { " Demand Read Retention Priority " , " scsi.sbc.modepage.demand_read_retention_priority " , FT_UINT8 , BASE_DEC , NULL , 0xF0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_disable_pre_fetch_xfer_len , { " Disable Pre-fetch Xfer Len " , " scsi.sbc.modepage.disable_pre_fetch_xfer_len " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_minimum_pre_fetch , { " Minimum Pre-Fetch " , " scsi.sbc.modepage.minimum_pre_fetch " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_maximum_pre_fetch , { " Maximum Pre-Fetch " , " scsi.sbc.modepage.maximum_pre_fetch " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_maximum_pre_fetch_ceiling , { " Maximum Pre-Fetch Ceiling " , " scsi.sbc.modepage.maximum_pre_fetch_ceiling " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_fsw , { " FSW " , " scsi.sbc.modepage.fsw " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_number_of_cache_segments , { " Number of Cache Segments " , " scsi.sbc.modepage.number_of_cache_segments " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_cache_segment_size , { " Cache Segment Size " , " scsi.sbc.modepage.cache_segment_size " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_non_cache_segment_size , { " Non-Cache Segment Size " , " scsi.sbc.modepage.non_cache_segment_size " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_dce , { " DCE " , " scsi.ssc2.modepage.dce " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_dde , { " DDE " , " scsi.ssc2.modepage.dde " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_compression_algorithm , { " Compression algorithm " , " scsi.ssc2.modepage.compression_algorithm " , FT_UINT32 , BASE_HEX , VALS ( compression_algorithm_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_decompression_algorithm , { " Decompression algorithm " , " scsi.ssc2.modepage.decompression_algorithm " , FT_UINT32 , BASE_HEX , VALS ( compression_algorithm_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_caf , { " CAF " , " scsi.ssc2.modepage.caf " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_active_partition , { " Active Partition " , " scsi.ssc2.modepage.active_partition " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_write_object_buffer_full_ratio , { " Write Object Buffer Full Ratio " , " scsi.ssc2.modepage.write_object_buffer_full_ratio " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_read_object_buffer_empty_ratio , { " Read Object Buffer Empty Ratio " , " scsi.ssc2.modepage.read_object_buffer_empty_ratio " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_write_delay_time , { " Write Delay time " , " scsi.ssc2.modepage.write_delay_time " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_obr , { " OBR " , " scsi.ssc2.modepage.obr " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_gap_size , { " Gap Size " , " scsi.ssc2.modepage.gap_size " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_eod_defined , { " EOD Defined " , " scsi.ssc2.modepage.eod_defined " , FT_UINT8 , BASE_DEC , NULL , 0xE0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_object_buffer_size_at_early_warning , { " Object Buffer Size At Early Warning " , " scsi.ssc2.modepage.object_buffer_size_at_early_warning " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_select_data_compression_algorithm , { " Select Data Compression Algorithm " , " scsi.ssc2.modepage.select_data_compression_algorithm " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_oir , { " OIR " , " scsi.ssc2.modepage.oir " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_maximum_additional_partitions , { " Maximum Additional Partitions " , " scsi.ssc2.modepage.maximum_additional_partitions " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_additional_partitions_defined , { " Additional Partitions Defined " , " scsi.ssc2.modepage.additional_partitions_defined " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_fdp , { " FDP " , " scsi.ssc2.modepage.fdp " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_media_format_recognition , { " Media Format Recognition " , " scsi.ssc2.modepage.media_format_recognition " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_partition_units , { " Partition Units " , " scsi.ssc2.modepage.partition_units " , FT_UINT8 , BASE_DEC , NULL , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_partition_size , { " Partition Size " , " scsi.ssc2.modepage.partition_size " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_lba_space , { " LBA Space " , " scsi.mmc5.modepage.lba_space " , FT_UINT8 , BASE_DEC , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_bufe , { " BUFE " , " scsi.mmc5.modepage.bufe " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_wrparam_multi_session , { " Multi-session " , " scsi.mmc5.modepage.wrparam_multi_session " , FT_UINT8 , BASE_DEC , NULL , 0xC0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_data_block_type , { " Data Block Type " , " scsi.mmc5.modepage.data_block_type " , FT_UINT8 , BASE_DEC , NULL , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_link_size , { " Link Size " , " scsi.mmc5.modepage.link_size " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_initiator_application_code , { " Initiator Application Code " , " scsi.mmc5.modepage.initiator_application_code " , FT_UINT8 , BASE_DEC , NULL , 0x3F , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_session_format , { " Session Format " , " scsi.mmc5.modepage.session_format " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_packet_size , { " Packet Size " , " scsi.mmc5.modepage.packet_size " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_audio_pause_length , { " Audio Pause Length " , " scsi.mmc5.modepage.audio_pause_length " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_media_catalog_number , { " Media Catalog Number " , " scsi.mmc5.modepage.media_catalog_number " , FT_STRINGZ , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_international_standard_recording_code , { " International Standard Recording Code " , " scsi.mmc5.modepage.international_standard_recording_code " , FT_STRINGZ , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_sub_header_byte , { " Sub-header Byte " , " scsi.mmc5.modepage.sub_header_byte " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_vendor_specific , { " Vendor Specific " , " scsi.mmc5.modepage.vendor_specific " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_dvd_ram_read , { " DVD-RAM Read " , " scsi.mmc5.modepage.dvd_ram_read " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_dvd_ram_write , { " DVD-RAM Write " , " scsi.mmc5.modepage.dvd_ram_write " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_buf , { " BUF " , " scsi.mmc5.modepage.buf " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_read_bar_code , { " Read Bar Code " , " scsi.mmc5.modepage.read_bar_code " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_loading_mechanism_type , { " Loading Mechanism Type " , " scsi.mmc5.modepage.loading_mechanism_type " , FT_UINT8 , BASE_DEC , NULL , 0xE0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_rw_in_lead_in , { " R-W in Lead-in " , " scsi.mmc5.modepage.rw_in_lead_in " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_number_of_volume_levels_supported , { " Number of Volume Levels Supported " , " scsi.mmc5.modepage.number_of_volume_levels_supported " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_buffer_size_supported , { " Buffer Size Supported " , " scsi.mmc5.modepage.buffer_size_supported " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_length , { " Length " , " scsi.mmc5.modepage.length " , FT_UINT8 , BASE_DEC , NULL , 0x30 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_copy_management_revision_support , { " Copy Management Revision Support " , " scsi.mmc5.modepage.copy_management_revision_support " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_rotation_control_selected , { " Rotation Control Selected " , " scsi.mmc5.modepage.rotation_control_selected " , FT_UINT8 , BASE_DEC , NULL , 0x03 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_current_write_speed_selected , { " Current Write Speed Selected " , " scsi.mmc5.modepage.current_write_speed_selected " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_num_write_speed_performance , { " Number of Logical Unit Write Speed Performance Descriptor Tables " , " scsi.mmc5.modepage.num_write_speed_performance " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_first_medium_transport_element_address , { " First Medium Transport Element Address " , " scsi.mode.smc.first_medium_transport_element_address " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_number_of_medium_transport_elements , { " Number of Medium Transport Elements " , " scsi.mode.smc.number_of_medium_transport_elements " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_first_storage_element_address , { " First Storage Element Address " , " scsi.mode.smc.first_storage_element_address " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_number_of_storage_elements , { " Number of Storage Elements " , " scsi.mode.smc.number_of_storage_elements " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_first_import_export_element_address , { " First Import/Export Element Address " , " scsi.mode.smc.first_import_export_element_address " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_number_of_import_export_elements , { " Number of Import/Export Elements " , " scsi.mode.smc.number_of_import_export_elements " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_first_data_transfer_element_address , { " First Data Transfer Element Address " , " scsi.mode.smc.first_data_transfer_element_address " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_number_of_data_transfer_elements , { " Number of Data Transfer Elements " , " scsi.mode.smc.number_of_data_transfer_elements " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_stordt , { " STORDT " , " scsi.mode.smc.stordt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_dt , { " MT->DT " , " scsi.mode.smc.mt_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_dt , { " ST->DT " , " scsi.mode.smc.st_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_dt , { " I/E->DT " , " scsi.mode.smc.ie_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_dt , { " DT->DT " , " scsi.mode.smc.dt_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_ne_dt , { " MT<>DT " , " scsi.mode.smc.mt_ne_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_ne_dt , { " ST<>DT " , " scsi.mode.smc.st_ne_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_ne_dt , { " I/E<>DT " , " scsi.mode.smc.ie_ne_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_ne_dt , { " DT<>DT " , " scsi.mode.smc.dt_ne_dt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_modesel_mode_data_length8 , { " Mode Data Length " , " scsi.cdb.mode.mode_data_length " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_modesel_dev_sbc_medium_type , { " Medium Type " , " scsi.cdb.mode.medium_type " , FT_UINT8 , BASE_HEX , VALS ( scsi_modesense_medtype_sbc_val ) , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_modesel_medium_type , { " Medium Type " , " scsi.cdb.mode.medium_type " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_modesel_device_specific_parameter , { " Device-Specific Parameter " , " scsi.cdb.mode.device_specific_parameter " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_modesel_block_descriptor_length8 , { " Block Descriptor Length " , " scsi.cdb.mode.block_descriptor_length " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_modesel_mode_data_length16 , { " Mode Data Length " , " scsi.cdb.mode.mode_data_length " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_modesel_longlba , { " LongLBA " , " scsi.cdb.mode.longlba " , FT_UINT8 , BASE_DEC , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_modesel_block_descriptor_length16 , { " Block Descriptor Length " , " scsi.cdb.mode.block_descriptor_length " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_persresvin_generation_number , { " Generation Number " , " scsi.persresvin.generation_number " , FT_UINT32 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_persresvin_additional_length , { " Additional Length " , " scsi.persresvin.additional_length " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_reportluns_lun_list_length , { " LUN List Length " , " scsi.reportluns.lun_list_length " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sns_valid , { " Valid " , " scsi.sns.valid " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_sns_filemark , { " Filemark " , " scsi.sns.filemark " , FT_BOOLEAN , 8 , NULL , 0x80 , NULL , HFILL } } ,
{ & hf_scsi_sns_command_specific_information , { " Command-Specific Information " , " scsi.sns.command_specific_information " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_report_log_exception_condition , { " Report Log Exception Condition " , " scsi.spc.modepage.report_log_exception_condition " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_faa , { " FAA " , " scsi.spc.modepage.faa " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_fab , { " FAB " , " scsi.spc.modepage.fab " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_fac , { " FAC " , " scsi.spc.modepage.fac " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_ebf , { " EBF " , " scsi.spc.modepage.ebf " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_ewasc , { " EWasc " , " scsi.spc.modepage.ewasc " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_dexcpt , { " DExcpt " , " scsi.spc.modepage.dexcpt " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_test , { " Test " , " scsi.spc.modepage.test " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_logerr , { " LogErr " , " scsi.spc.modepage.logerr " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_standby , { " Standby " , " scsi.spc.modepage.standby " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_plpb , { " PLPB " , " scsi.spc.modepage.plpb " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_ddis , { " DDIS " , " scsi.spc.modepage.ddis " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_dlm , { " DLM " , " scsi.spc.modepage.dlm " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_rha , { " RHA " , " scsi.spc.modepage.rha " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_alwi , { " ALWI " , " scsi.spc.modepage.alwi " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_dtipe , { " DTIPE " , " scsi.spc.modepage.dtipe " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_spc_modepage_dtoli , { " DTOLI " , " scsi.spc.modepage.dtoli " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_hsec , { " HSEC " , " scsi.sbc.modepage.hsec " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_rmb , { " RMB " , " scsi.sbc.modepage.rmb " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_surf , { " SURF " , " scsi.sbc.modepage.surf " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_arre , { " ARRE " , " scsi.sbc.modepage.arre " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_tb , { " TB " , " scsi.sbc.modepage.tb " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_rc , { " RC " , " scsi.sbc.modepage.rc " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_eer , { " EER " , " scsi.sbc.modepage.eer " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_per , { " PER " , " scsi.sbc.modepage.per " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_dte , { " DTE " , " scsi.sbc.modepage.dte " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_dcr , { " DCR " , " scsi.sbc.modepage.dcr " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_abpf , { " ABPF " , " scsi.sbc.modepage.abpf " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_cap , { " CAP " , " scsi.sbc.modepage.cap " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_disc , { " Disc " , " scsi.sbc.modepage.disc " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_size , { " Size " , " scsi.sbc.modepage.size " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_wce , { " WCE " , " scsi.sbc.modepage.wce " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_mf , { " MF " , " scsi.sbc.modepage.mf " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_rcd , { " RCD " , " scsi.sbc.modepage.rcd " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_write_retention_priority , { " Write Retention Priority " , " scsi.sbc.modepage.write_retention_priority " , FT_UINT8 , BASE_DEC , NULL , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_lbcss , { " LBCSS " , " scsi.sbc.modepage.lbcss " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_dra , { " DRA " , " scsi.sbc.modepage.dra " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_sbc_modepage_vendor_specific , { " Vendor Specific " , " scsi.sbc.modepage.vendor_specific " , FT_UINT8 , BASE_DEC , NULL , 0x1F , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_dcc , { " DCC " , " scsi.ssc2.modepage.dcc " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_red , { " RED " , " scsi.ssc2.modepage.red " , FT_UINT8 , BASE_DEC , NULL , 0x60 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_active_format , { " Active Format " , " scsi.ssc2.modepage.active_format " , FT_UINT8 , BASE_DEC , NULL , 0x1F , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_lois , { " LOIS " , " scsi.ssc2.modepage.lois " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_rsmk , { " RSMK " , " scsi.ssc2.modepage.rsmk " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_avc , { " AVC " , " scsi.ssc2.modepage.avc " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_socf , { " SOCF " , " scsi.ssc2.modepage.socf " , FT_UINT8 , BASE_DEC , NULL , 0x0C , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_robo , { " ROBO " , " scsi.ssc2.modepage.robo " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_rew , { " REW " , " scsi.ssc2.modepage.rew " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_eeg , { " EEG " , " scsi.ssc2.modepage.eeg " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_sew , { " SEW " , " scsi.ssc2.modepage.sew " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_swp , { " SWP " , " scsi.ssc2.modepage.swp " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_baml , { " BAML " , " scsi.ssc2.modepage.baml " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_bam , { " BAM " , " scsi.ssc2.modepage.bam " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_rewind_on_reset , { " ReWind on Reset " , " scsi.ssc2.modepage.rewind_on_reset " , FT_UINT8 , BASE_DEC , NULL , 0x18 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_asocwp , { " ASOCWP " , " scsi.ssc2.modepage.asocwp " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_perswp , { " PERSWP " , " scsi.ssc2.modepage.perswp " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_prmwp , { " PRMWP " , " scsi.ssc2.modepage.prmwp " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_dsp , { " DSP " , " scsi.ssc2.modepage.dsp " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_idp , { " IDP " , " scsi.ssc2.modepage.idp " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_psum , { " PSUM " , " scsi.ssc2.modepage.psum " , FT_UINT8 , BASE_DEC , NULL , 0x18 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_pofm , { " POFM " , " scsi.ssc2.modepage.pofm " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_clear , { " CLEAR " , " scsi.ssc2.modepage.clear " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_ssc2_modepage_addp , { " ADDP " , " scsi.ssc2.modepage.addp " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_ls_v , { " LS_V " , " scsi.mmc5.modepage.ls_v " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_wrparam_test_write , { " Test Write " , " scsi.mmc5.modepage.wrparam_test_write " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_write_type , { " Write Type " , " scsi.mmc5.modepage.write_type " , FT_UINT8 , BASE_DEC , NULL , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_fp , { " FP " , " scsi.mmc5.modepage.fp " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_copy , { " Copy " , " scsi.mmc5.modepage.copy " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_track_mode , { " Track Mode " , " scsi.mmc5.modepage.track_mode " , FT_UINT8 , BASE_DEC , NULL , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_dvd_r_read , { " DVD-R Read " , " scsi.mmc5.modepage.dvd_r_read " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_dvd_rom_read , { " DVD-ROM Read " , " scsi.mmc5.modepage.dvd_rom_read " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_method_2 , { " Method 2 " , " scsi.mmc5.modepage.method_2 " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_cd_rw_read , { " CD-RW Read " , " scsi.mmc5.modepage.cd_rw_read " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_cd_r_read , { " CD-R Read " , " scsi.mmc5.modepage.cd_r_read " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_dvd_r_write , { " DVD-R Write " , " scsi.mmc5.modepage.dvd_r_write " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_dvd_rom_write , { " DVD-ROM Write " , " scsi.mmc5.modepage.dvd_rom_write " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_mmcap_test_write , { " Test Write " , " scsi.mmc5.modepage.mmcap_test_write " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_cd_rw_write , { " CD-RW Write " , " scsi.mmc5.modepage.cd_rw_write " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_cd_r_write , { " CD-R Write " , " scsi.mmc5.modepage.cd_r_write " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_mmcap_multi_session , { " Multi Session " , " scsi.mmc5.modepage.mmcap_multi_session " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_mode_2_form2 , { " Mode 2 Form 2 " , " scsi.mmc5.modepage.mode_2_form2 " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_mode_2_form1 , { " Mode 2 Form 1 " , " scsi.mmc5.modepage.mode_2_form1 " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_digital_port2 , { " Digital Port (2) " , " scsi.mmc5.modepage.digital_port2 " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_digital_port1 , { " Digital Port (1) " , " scsi.mmc5.modepage.digital_port1 " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_composite , { " Composite " , " scsi.mmc5.modepage.composite " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_audio_play , { " Audio Play " , " scsi.mmc5.modepage.audio_play " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_upc , { " UPC " , " scsi.mmc5.modepage.upc " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_isrc , { " ISRC " , " scsi.mmc5.modepage.isrc " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_c2_pointers_supported , { " C2 Pointers supported " , " scsi.mmc5.modepage.c2_pointers_supported " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_rw_deinterleaved_corrected , { " R-W Deinterleaved & corrected " , " scsi.mmc5.modepage.rw_deinterleaved_corrected " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_rw_supported , { " R-W Supported " , " scsi.mmc5.modepage.rw_supported " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_cd_da_stream_is_accurate , { " CD-DA Stream is Accurate " , " scsi.mmc5.modepage.cd_da_stream_is_accurate " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_cd_da_cmds_supported , { " CD-DA Cmds Supported " , " scsi.mmc5.modepage.cd_da_cmds_supported " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_eject , { " Eject " , " scsi.mmc5.modepage.eject " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_prevent_jumper , { " Prevent Jumper " , " scsi.mmc5.modepage.prevent_jumper " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_lock_state , { " Lock State " , " scsi.mmc5.modepage.lock_state " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_lock , { " Lock " , " scsi.mmc5.modepage.lock " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_side_change_capable , { " Side Change Capable " , " scsi.mmc5.modepage.side_change_capable " , FT_BOOLEAN , 8 , NULL , 0x10 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_sw_slot_selection , { " S/W Slot Selection " , " scsi.mmc5.modepage.sw_slot_selection " , FT_BOOLEAN , 8 , NULL , 0x08 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_changer_supports_disc_present , { " Changer Supports Disc Present " , " scsi.mmc5.modepage.changer_supports_disc_present " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_separate_channel_mute , { " Separate Channel Mute " , " scsi.mmc5.modepage.separate_channel_mute " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_separate_volume_levels , { " Separate volume levels " , " scsi.mmc5.modepage.separate_volume_levels " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_lsbf , { " LSBF " , " scsi.mmc5.modepage.lsbf " , FT_UINT8 , BASE_DEC , NULL , 0x30 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_rck , { " RCK " , " scsi.mmc5.modepage.rck " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_mmc5_modepage_bckf , { " BCKF " , " scsi.mmc5.modepage.bckf " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_storie , { " STORI/E " , " scsi.mode.smc.storie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_storst , { " STORST " , " scsi.mode.smc.storst " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_stormt , { " STORMT " , " scsi.mode.smc.stormt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_ie , { " MT->I/E " , " scsi.mode.smc.mt_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_st , { " MT->ST " , " scsi.mode.smc.mt_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_mt , { " MT->MT " , " scsi.mode.smc.mt_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_ie , { " ST->I/E " , " scsi.mode.smc.st_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_st , { " ST->ST " , " scsi.mode.smc.st_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_mt , { " ST->MT " , " scsi.mode.smc.st_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_ie , { " I/E->I/E " , " scsi.mode.smc.ie_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_st , { " I/E->ST " , " scsi.mode.smc.ie_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_mt , { " I/E->MT " , " scsi.mode.smc.ie_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_ie , { " DT->I/E " , " scsi.mode.smc.dt_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_st , { " DT->ST " , " scsi.mode.smc.dt_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_mt , { " DT->MT " , " scsi.mode.smc.dt_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_ne_ie , { " MT<>I/E " , " scsi.mode.smc.mt_ne_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_ne_st , { " MT<>ST " , " scsi.mode.smc.mt_ne_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_mt_ne_mt , { " MT<>MT " , " scsi.mode.smc.mt_ne_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_ne_ie , { " ST<>I/E " , " scsi.mode.smc.st_ne_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_ne_st , { " ST<>ST " , " scsi.mode.smc.st_ne_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_st_ne_mt , { " ST<>MT " , " scsi.mode.smc.st_ne_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_ne_ie , { " I/E<>I/E " , " scsi.mode.smc.ie_ne_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_ne_st , { " I/E<>ST " , " scsi.mode.smc.ie_ne_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_ie_ne_mt , { " I/E<>MT " , " scsi.mode.smc.ie_ne_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_ne_ie , { " DT<>I/E " , " scsi.mode.smc.dt_ne_ie " , FT_BOOLEAN , 8 , NULL , 0x04 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_ne_st , { " DT<>ST " , " scsi.mode.smc.dt_ne_st " , FT_BOOLEAN , 8 , NULL , 0x02 , NULL , HFILL } } ,
{ & hf_scsi_smc_modepage_dt_ne_mt , { " DT<>MT " , " scsi.mode.smc.dt_ne_mt " , FT_BOOLEAN , 8 , NULL , 0x01 , NULL , HFILL } } ,
{ & hf_scsi_sns_eom , { " EOM " , " scsi.sns.eom " , FT_BOOLEAN , 8 , NULL , 0x40 , NULL , HFILL } } ,
{ & hf_scsi_sns_ili , { " ILI " , " scsi.sns.ili " , FT_BOOLEAN , 8 , NULL , 0x20 , NULL , HFILL } } ,
2013-12-23 13:45:07 +00:00
{ & hf_scsi_spc_xcopy_service , { " Service action " , " scsi.extcopy.service_action " , FT_UINT8 , BASE_HEX , VALS ( extcopy_service_vals ) , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_recv_copy_service , { " Service action " , " scsi.recv_copy.service_action " , FT_UINT8 , BASE_HEX , VALS ( recv_copy_service_vals ) , 0x1F , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_param_list_len , { " Parameter list length (bytes) " , " scsi.extcopy.param_list_len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_param_list_format , { " List format " , " scsi.extcopy.list_format " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_head_cscd_desc_list_len , { " Header cscd descriptor list length " , " scsi.extcopy.hdr_cscd_list_len " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_cscd_desc_list_len , { " CSCD descriptor list length " , " scsi.extcopy.cscd_list_len " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_inline_data_len , { " Inline data length " , " scsi.extcopy.inline_data_len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_seg_desc_list_len , { " Segment descriptor list length " , " scsi.extcopy.seg_desc_list_len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_list_id , { " List ID " , " scsi.extcopy.list_id " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_head_cscd_desc_type_code , { " Header CSCD description type code " , " scsi.extcopy.head_cscd_desc_type_code " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_cscd_desc_type_code , { " CSCD description type code " , " scsi.cscd_desc_type_code " , FT_UINT8 , BASE_DEC | BASE_RANGE_STRING , RVALS ( desc_type_rval ) , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_rel_init_port_id , { " Relative Initiator Port ID " , " scsi.extcopy.rel_init_port_id " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_per_dev_type , { " Peripherial Device Type " , " scsi.extcopy.per_dev_type " , FT_UINT8 , BASE_DEC , VALS ( per_dev_type_vals ) , 0x1F , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_lu_type , { " LU type " , " scsi.extcopy.lu_type " , FT_UINT8 , BASE_DEC , VALS ( lu_type_vals ) , 0xC0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_per_dev_type_byte , { " Peripherial Device Type bits " , " scsi.extcopy.per_dev_type_byte " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_disk_block_len , { " Disk block length " , " scsi.extcopy.disk_block_len " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_cscd_desc_code_set , { " CSCD descriptor code set " , " scsi.extcopy.cscd_code_set " , FT_UINT8 , BASE_DEC , VALS ( scsi_devid_codeset_val ) , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_cscd_desc_assoc , { " CSCD descriptor association " , " scsi.extcopy.cscd_assoc " , FT_UINT8 , BASE_DEC , VALS ( scsi_devid_assoc_val ) , 0x30 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_cscd_desc_des_type , { " CSCD descriptor designator type " , " scsi.extcopy.cscd_des_type " , FT_UINT8 , BASE_DEC , VALS ( scsi_devid_idtype_val ) , 0x0F , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_cscd_desc_des_len , { " CSCD descriptor desginator length " , " scsi.extcopy.cscd_des_len " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_seg_desc_type , { " Segment descriptor type code " , " scsi.extcopy.seg_desc_type " , FT_UINT8 , BASE_DEC | BASE_RANGE_STRING , RVALS ( desc_type_rval ) , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_seg_desc_dc , { " Segment descriptor designation count bit " , " scsi.extcopy.seg_desc_dc " , FT_UINT8 , BASE_DEC , NULL , 0x2 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_seg_desc_cat , { " Segment descriptor CAT bit " , " scsi.extcopy.seg_desc_cat " , FT_UINT8 , BASE_DEC , NULL , 0x1 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_seg_des_src_desc_id , { " Segment descriptor source ID " , " scsi.extcopy.seg_desc_src_id " , FT_UINT16 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_seg_des_dest_desc_id , { " Segment descriptor destination ID " , " scsi.extcopy.seg_desc_dest_id " , FT_UINT16 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_num_of_blocks , { " Number of blocks " , " scsi.extcopy.seg_desc_num_of_blocks " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_param_list_id_usage , { " List ID usage " , " scsi.extcopy.xcopy_param_list_id_usage " , FT_UINT8 , BASE_HEX , NULL , 0x18 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_param_str , { " Sequential strip bit (str) " , " scsi.extcopy.xcopy_param_str " , FT_UINT8 , BASE_HEX , NULL , 0x20 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_param_priority , { " Priority " , " scsi.extcopy.xcopy_param_priority " , FT_UINT8 , BASE_HEX , NULL , 0x7 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_param_byte , { " Extended copy Parameters: str, list ID usage, priority " , " scsi.extcopy.xcopy_params_byte " , FT_UINT8 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_spc_xcopy_source_lba , { " Source LBA " , " scsi.extcopy.source_lba " , FT_UINT64 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
2013-12-26 09:54:12 +00:00
{ & hf_scsi_spc_xcopy_dest_lba , { " Destination LBA " , " scsi.extcopy.dest_lba " , FT_UINT64 , BASE_HEX , NULL , 0x0 , NULL , HFILL } } ,
2013-12-23 13:45:07 +00:00
{ & hf_scsi_recv_copy_max_cscd_desc_count , { " Max. CSCD descriptors count " , " scsi.recv_copy.max_cscd_desc_count " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_max_seg_desc_count , { " Max. segment descriptors count " , " scsi.recv_copy.max_seg_desc_count " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_max_desc_list_len , { " Max. descriptor list length " , " scsi.recv_copy.max_desc_list_len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_max_seg_len , { " Max. segment length " , " scsi.recv_copy.max_seg_len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_max_inline_data_len , { " Max. inline data length " , " scsi.recv_copy.max_inline_data_len " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_held_data_limit , { " Held data limit " , " scsi.recv_copy.max_held_data_limit " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_max_stream_dev_trans_size , { " Max. stream device transfer size " , " scsi.recv_copy.max_stream_dev_trans_size " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_snlid , { " SNLID bit " , " scsi.recv_copy.snlid " , FT_UINT8 , BASE_DEC , NULL , 0x1 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_avail_data , { " Available data " , " scsi.recv_copy.avail_data " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_total_con_copies , { " Total number of concurrent copies " , " scsi.recv_copy.total_con_copies " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_max_con_copies , { " Max. number of concurrent copies " , " scsi.recv_copy.max_con_copies " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_data_seg_gran , { " Data segment granularity " , " scsi.recv_copy.data_seg_gran " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_inline_data_gran , { " Inline data granularity " , " scsi.recv_copy.inline_data_gran " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_held_data_gran , { " Held data granularity " , " scsi.recv_copy.held_data_gran " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_recv_copy_implemented_desc_list_len , { " Implemented description list length " , " scsi.recv_copy.implemented_desc_list_len " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
2014-11-18 01:04:30 +00:00
{ & hf_scsi_wwn , { " WWN " , " scsi.wwn " , FT_STRING , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_designator , { " Designator " , " scsi.designator " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_segment_descriptor_length , { " Segment descriptor length (bytes) " , " scsi.segment_descriptor_length " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_inline_data , { " Inline data " , " scsi.inline_data " , FT_BYTES , BASE_NONE , NULL , 0x0 , NULL , HFILL } } ,
2013-12-23 13:45:07 +00:00
{ & hf_scsi_reserved_8 , { " Reserved (1 byte) " , " scsi.reserved " , FT_UINT8 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_reserved_16 , { " Reserved (2 bytes) " , " scsi.reserved2 " , FT_UINT16 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_reserved_24 , { " Reserved (3 bytes) " , " scsi.reserved3 " , FT_UINT24 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_reserved_32 , { " Reserved (4 bytes) " , " scsi.reserved4 " , FT_UINT32 , BASE_DEC , NULL , 0x0 , NULL , HFILL } } ,
{ & hf_scsi_reserved_64 , { " Reserved (8 bytes) " , " scsi.reserved8 " , FT_UINT64 , BASE_DEC , NULL , 0x0 , NULL , HFILL } }
2002-01-10 01:28:45 +00:00
} ;
/* Setup protocol subtree array */
static gint * ett [ ] = {
2007-03-26 21:16:21 +00:00
& ett_scsi ,
& ett_scsi_page ,
2010-12-06 22:00:08 +00:00
& ett_scsi_control ,
& ett_scsi_inq_control ,
2007-03-26 21:16:21 +00:00
& ett_scsi_inq_peripheral ,
& ett_scsi_inq_acaflags ,
& ett_scsi_inq_rmbflags ,
& ett_scsi_inq_sccsflags ,
& ett_scsi_inq_bqueflags ,
& ett_scsi_inq_reladrflags ,
& ett_scsi_log ,
& ett_scsi_log_ppc ,
& ett_scsi_log_pc ,
& ett_scsi_log_param ,
& ett_scsi_fragments ,
& ett_scsi_fragment ,
2012-07-27 05:09:13 +00:00
& ett_persresv_control ,
2012-09-02 21:46:50 +00:00
& ett_scsi_lun ,
2013-05-18 16:26:26 +00:00
& ett_scsi_prevent_allow ,
2013-05-27 01:09:49 +00:00
& ett_command_descriptor ,
2013-06-11 21:22:58 +00:00
& ett_timeout_descriptor ,
2013-06-12 14:20:36 +00:00
& ett_sense_descriptor ,
& ett_sense_osd_not_initiated ,
& ett_sense_osd_completed ,
2013-12-23 13:45:07 +00:00
& ett_xcopy_per_dev_type ,
& ett_scsi_xcopy_dev_params ,
& ett_scsi_xcopy_cscds ,
& ett_scsi_xcopy_cscd ,
& ett_scsi_xcopy_segs ,
& ett_scsi_xcopy_seg ,
& ett_scsi_xcopy_seg_param ,
& ett_xcopy_param_byte ,
2014-11-18 01:04:30 +00:00
& ett_scsi_cscd_desc ,
2002-01-10 01:28:45 +00:00
} ;
2013-08-08 17:25:03 +00:00
static ei_register_info ei [ ] = {
{ & ei_scsi_product_data_goes_past_end_of_page , { " scsi.product_data_goes_past_end_of_page " , PI_MALFORMED , PI_WARN , " Product data goes past end of page " , EXPFILL } } ,
{ & ei_scsi_unknown_page , { " scsi.unknown_page " , PI_UNDECODED , PI_WARN , " Unknown Page " , EXPFILL } } ,
{ & ei_scsi_no_dissection_for_service_action , { " scsi.no_dissection_for_service_action " , PI_UNDECODED , PI_WARN , " No dissection for this service action yet " , EXPFILL } } ,
{ & ei_scsi_unknown_scsi_exchange , { " scsi.unknown_scsi_exchange " , PI_PROTOCOL , PI_WARN , " Unknown SCSI exchange, can not decode SCSI data " , EXPFILL } } ,
2014-11-18 01:04:30 +00:00
{ & ei_scsi_unknown_serv_action , { " scsi.unknown_serv_action " , PI_PROTOCOL , PI_WARN , " Unknown serv_action " , EXPFILL } } ,
2013-08-08 17:25:03 +00:00
} ;
2002-01-10 01:28:45 +00:00
module_t * scsi_module ;
2013-08-08 17:25:03 +00:00
expert_module_t * expert_scsi ;
2002-08-28 21:04:11 +00:00
2002-01-10 01:28:45 +00:00
/* Register the protocol name and description */
proto_scsi = proto_register_protocol ( " SCSI " , " SCSI " , " scsi " ) ;
/* Required function calls to register the header fields and subtrees used */
proto_register_field_array ( proto_scsi , hf , array_length ( hf ) ) ;
proto_register_subtree_array ( ett , array_length ( ett ) ) ;
2013-08-08 17:25:03 +00:00
expert_scsi = expert_register_protocol ( proto_scsi ) ;
expert_register_field_array ( expert_scsi , ei , array_length ( ei ) ) ;
2002-01-10 01:28:45 +00:00
/* add preferences to decode SCSI message */
2012-05-07 22:11:34 +00:00
scsi_module = prefs_register_protocol ( proto_scsi , NULL ) ;
prefs_register_enum_preference ( scsi_module , " decode_scsi_messages_as " ,
" Decode SCSI Messages As " ,
" When Target Cannot Be Identified, Decode SCSI Messages As " ,
& scsi_def_devtype ,
scsi_devtype_options ,
FALSE ) ;
2005-05-28 12:45:38 +00:00
2006-10-13 22:25:35 +00:00
prefs_register_bool_preference ( scsi_module , " defragment " ,
2012-05-07 22:11:34 +00:00
" Reassemble fragmented SCSI DATA IN/OUT transfers " ,
" Whether fragmented SCSI DATA IN/OUT transfers should be reassembled " ,
& scsi_defragment ) ;
2006-10-13 22:25:35 +00:00
register_init_routine ( scsi_defragment_init ) ;
2002-01-10 01:28:45 +00:00
}
2006-04-24 08:16:18 +00:00
void
proto_reg_handoff_scsi ( void )
{
2012-05-07 22:11:34 +00:00
scsi_tap = register_tap ( " scsi " ) ;
data_handle = find_dissector ( " data " ) ;
2006-04-24 08:16:18 +00:00
}
2013-06-11 21:33:48 +00:00
/*
* Editor modelines - http : //www.wireshark.org/tools/modelines.html
*
* Local variables :
* c - basic - offset : 4
* tab - width : 8
* indent - tabs - mode : nil
* End :
*
* vi : set shiftwidth = 4 tabstop = 8 expandtab :
* : indentSize = 4 : tabSize = 8 : noTabs = true :
*/