Wireshark-dev: [Wireshark-dev] A patch for SCSI dissection
From: Richard Sharpe <realrichardsharpe@xxxxxxxxx>
Date: Thu, 2 Dec 2010 18:30:51 -0800
Hi,
I got sick of not being able to search on the parameter list in a
PERSISTENT RESERVE OUT request so I hacked up a quick fix.
It is below. It still requires some work, as I need to preserve the
SERVICE ACTION between CDB processing and PAYLOAD processing ... so it
is still a work in progress:
--- wireshark-1.4.2/epan/dissectors/packet-scsi.c 2010-11-18
13:30:36.000000000 -0800
+++ wireshark-1.4.2-dev/epan/dissectors/packet-scsi.c 2010-12-02
18:22:55.000000000 -0800
@@ -125,6 +125,10 @@ static int hf_scsi_mmcpagecode
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_persresvout_reskey = -1;
+static int hf_scsi_persresvout_sareskey = -1;
+static int hf_scsi_persresvout_obsolete = -1;
+static int hf_scsi_persresvout_control = -1;
static int hf_scsi_persresv_scope = -1;
static int hf_scsi_persresv_type = -1;
static int hf_scsi_release_flags = -1;
@@ -3942,6 +3946,23 @@ dissect_spc_persistentreserveout (tvbuff
"Vendor Unique = %u, NACA = %u, Link = %u",
flags & 0xC0, flags & 0x4, flags & 0x1);
}
+ else if (isreq && !iscdb) {
+ /*
+ * To do this properly we need the svcaction passed between the above
+ * code and us ... TODO
+ */
+ proto_tree_add_bytes (tree, hf_scsi_persresvout_reskey, tvb, offset,
+ 8, tvb_get_ptr(tvb, 0, 8));
+ proto_tree_add_bytes (tree, hf_scsi_persresvout_sareskey, tvb,
+ offset +8, 8, tvb_get_ptr(tvb, offset + 8, 8));
+ proto_tree_add_bytes (tree, hf_scsi_persresvout_obsolete, tvb,
+ offset + 16, 4, tvb_get_ptr(tvb, offset + 16, 4));
+ flags = tvb_get_guint8 (tvb, offset + 20);
+ proto_tree_add_uint_format (tree, hf_scsi_persresvout_control, tvb,
+ offset + 20, 1, flags,
+ "SPEC_I_PT = %u, ALL_TG_PT = %u, APTPL = %u",
+ flags & 0x08, flags & 0x04, flags &0x01);
+ }
else {
}
}
@@ -5069,6 +5090,18 @@ proto_register_scsi (void)
{ &hf_scsi_persresv_type,
{"Reservation Type", "scsi.persresv.type", FT_UINT8, BASE_HEX,
VALS (scsi_persresv_type_val), 0x0F, NULL, HFILL}},
+ { &hf_scsi_persresvout_reskey,
+ {"Reservation Key", "scsi.persresv.reskey", FT_BYTES, BASE_NONE,
+ NULL, 0x0, NULL, HFILL}},
+ { &hf_scsi_persresvout_sareskey,
+ {"Service Action Reservation Key", "scsi.persresv.sareskey", FT_BYTES,
+ BASE_NONE, NULL, 0x0, NULL, HFILL}},
+ { &hf_scsi_persresvout_obsolete,
+ {"Obsolete", "scsi.presresv.obs", FT_BYTES, BASE_NONE, NULL, 0x0,
+ NULL, HFILL}},
+ { &hf_scsi_persresvout_control,
+ {"Control", "scsi.persresv.control", FT_UINT8, BASE_HEX, NULL, 0x0,
+ NULL, HFILL}},
{ &hf_scsi_release_flags,
{"Release Flags", "scsi.release.flags", FT_UINT8, BASE_HEX, NULL,
0x0, NULL, HFILL}},
--
Regards,
Richard Sharpe
- Prev by Date: Re: [Wireshark-dev] command to generate ASN1 based dissector on WIndows
- Next by Date: Re: [Wireshark-dev] Modify default settings?
- Previous by thread: Re: [Wireshark-dev] command to generate ASN1 based dissector on WIndows
- Next by thread: Re: [Wireshark-dev] Modify default settings?
- Index(es):