Ethereal-dev: Re: [Ethereal-dev] patch to update iscsi support

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Bill Studenmund <wrstuden@xxxxxxxxxxxxxxxxx>
Date: Mon, 13 May 2002 13:33:59 -0700 (PDT)
On Mon, 13 May 2002, Guy Harris wrote:

> On Mon, May 13, 2002 at 09:56:45AM -0700, Bill Studenmund wrote:
> > ethereal-0.9.2, which was the last released version AFAICT. :-)
>
> No, that's 0.9.3.

Sorry, the digit difference slipped my eye.

So part of the patch is no longer needed, but I think part might still be.
Basically the parts that apply seem to still be missing in the cvs
version. Well, the "looks wrong for draft 12" bit also is wrong...

AFAICT the parts that apply add the "A" flag to handling the DATA-IN
command, and GC Command CRN.

Here is a revised version, against 0.9.3. It seems to apply cleanly to the
CVS verion too.

Take care,

Bill
--- packet-iscsi.c.orig	Wed Mar 20 17:41:13 2002
+++ packet-iscsi.c	Mon May 13 13:30:32 2002
@@ -101,7 +101,6 @@
 static int hf_iscsi_SCSICommand_R = -1;
 static int hf_iscsi_SCSICommand_W = -1;
 static int hf_iscsi_SCSICommand_Attr = -1;
-static int hf_iscsi_SCSICommand_CRN = -1;
 static int hf_iscsi_SCSICommand_AddCDB = -1;
 static int hf_iscsi_DataSegmentLength = -1;
 static int hf_iscsi_TotalAHSLength = -1;
@@ -123,6 +122,7 @@
 static int hf_iscsi_SCSIResponse_Status = -1;
 static int hf_iscsi_SenseLength = -1;
 static int hf_iscsi_SCSIData_F = -1;
+static int hf_iscsi_SCSIData_A = -1;
 static int hf_iscsi_SCSIData_S = -1;
 static int hf_iscsi_SCSIData_O = -1;
 static int hf_iscsi_SCSIData_U = -1;
@@ -244,6 +244,7 @@
 #define ISCSI_SCSI_DATA_FLAG_S 0x01
 #define ISCSI_SCSI_DATA_FLAG_U 0x02
 #define ISCSI_SCSI_DATA_FLAG_O 0x04
+#define ISCSI_SCSI_DATA_FLAG_A 0x40
 #define ISCSI_SCSI_DATA_FLAG_F 0x80
 
 static const value_string iscsi_opcodes[] = {
@@ -293,6 +294,11 @@
     "Not final PDU in sequence"
 };
 
+static const true_false_string iscsi_meaning_A = {
+    "Request positive data ACK",
+    "No data ACK request"
+};
+
 static const true_false_string iscsi_meaning_T = {
     "Transit to next login stage",
     "Stay in current login stage"
@@ -926,7 +932,6 @@
 		proto_tree_add_boolean(tt, hf_iscsi_SCSICommand_W, tvb, offset + 1, 1, b);
 		proto_tree_add_uint(tt, hf_iscsi_SCSICommand_Attr, tvb, offset + 1, 1, b);
 	    }
-	    proto_tree_add_item(ti, hf_iscsi_SCSICommand_CRN, tvb, offset + 3, 1, FALSE);
 	    proto_tree_add_item(ti, hf_iscsi_TotalAHSLength, tvb, offset + 4, 1, FALSE);
 	    proto_tree_add_uint(ti, hf_iscsi_DataSegmentLength, tvb, offset + 5, 3, data_segment_len);
 	    proto_tree_add_item(ti, hf_iscsi_LUN, tvb, offset + 8, 8, FALSE);
@@ -1663,11 +1668,6 @@
 	    FT_UINT8, BASE_HEX, VALS(iscsi_scsicommand_taskattrs), 0x07,          
 	    "SCSI task attributes", HFILL }
 	},
-	{ &hf_iscsi_SCSICommand_CRN,
-	  { "CRN", "iscsi.scsicommand.crn",
-	    FT_UINT8, BASE_HEX, NULL, 0,          
-	    "SCSI command reference number", HFILL }
-	},
 	{ &hf_iscsi_SCSICommand_AddCDB,
 	  { "AddCDB", "iscsi.scsicommand.addcdb",
 	    FT_UINT8, BASE_HEX, NULL, 0,
@@ -1772,6 +1772,11 @@
 	  { "F", "iscsi.scsidata.F",
 	    FT_BOOLEAN, 8, TFS(&iscsi_meaning_F), ISCSI_SCSI_DATA_FLAG_F,
 	    "Final PDU", HFILL }
+	},
+	{ &hf_iscsi_SCSIData_A,
+	  { "A", "iscsi.scsidata.A",
+	    FT_BOOLEAN, 8, TFS(&iscsi_meaning_A), ISCSI_SCSI_DATA_FLAG_A,
+	    "Data Ack Req", HFILL }
 	},
 	{ &hf_iscsi_SCSIData_S,
 	  { "S", "iscsi.scsidata.S",