summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authordmitry_yus <dmitry_yus@d7303112-9cec-0310-bdd2-e83a94d6c2b6>2005-04-14 23:16:16 +0000
committerdmitry_yus <dmitry_yus@d7303112-9cec-0310-bdd2-e83a94d6c2b6>2005-04-14 23:16:16 +0000
commit0e4b1f6d34ea96ff3d489c8022bf5a698131b58a (patch)
tree2f5699d9ee65a7426a4560318d16d0894ee30374 /include
parent5f8ad90af1d00a70931c5b87d0add974314a376c (diff)
downloadopen-iscsi-0e4b1f6d34ea96ff3d489c8022bf5a698131b58a.tar.gz
Christoph:
The patch below uses __be16/__be16 types so we can do static typechecking using sparse -Wbitwise for missing conversions. Also switch to kernel-standard cpu_to_be*/be*_to_cpu instead of the older networking versions. Note that a cpu_to_be*/be*_to_cpu of all ones gets optimized away at compile time, so there's no additional overhead for ISCSI_RESERVED_TAG uses. For userland we just define __be* as uint*_t for now, but it would be nice to get sparse working for it one day (probably using the cgcc wrapper) git-svn-id: svn://svn.berlios.de/open-iscsi@230 d7303112-9cec-0310-bdd2-e83a94d6c2b6
Diffstat (limited to 'include')
-rw-r--r--include/iscsi_proto.h230
1 files changed, 118 insertions, 112 deletions
diff --git a/include/iscsi_proto.h b/include/iscsi_proto.h
index 8571ef0..1b1c320 100644
--- a/include/iscsi_proto.h
+++ b/include/iscsi_proto.h
@@ -20,6 +20,12 @@
#ifndef ISCSI_PROTO_H
#define ISCSI_PROTO_H
+#ifndef __KERNEL__
+/* using the __be types allows stricter static typechecking in the kernel */
+typedef uint16_t __be16;
+typedef uint32_t __be32;
+#endif
+
#define ISCSI_VERSION_STR "0.2"
#define ISCSI_DATE_STR "15-Mar-2005"
#define ISCSI_DRAFT20_VERSION 0x00
@@ -51,10 +57,10 @@ struct iscsi_hdr {
uint8_t hlength; /* AHSs total length */
uint8_t dlength[3]; /* Data length */
uint8_t lun[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t ttt; /* Target Task Tag */
- uint32_t statsn;
- uint32_t exp_statsn;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 ttt; /* Target Task Tag */
+ __be32 statsn;
+ __be32 exp_statsn;
uint8_t other[16];
};
@@ -98,10 +104,10 @@ struct iscsi_cmd {
uint8_t hlength;
uint8_t dlength[3];
uint8_t lun[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t data_length;
- uint32_t cmdsn;
- uint32_t exp_statsn;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 data_length;
+ __be32 cmdsn;
+ __be32 exp_statsn;
uint8_t cdb[16]; /* SCSI Command Block */
/* Additional Data (Command Dependent) */
};
@@ -128,14 +134,14 @@ struct iscsi_cmd_rsp {
uint8_t hlength;
uint8_t dlength[3];
uint8_t rsvd[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t rsvd1;
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
- uint32_t exp_datasn;
- uint32_t bi_residual_count;
- uint32_t residual_count;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 rsvd1;
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
+ __be32 exp_datasn;
+ __be32 bi_residual_count;
+ __be32 residual_count;
/* Response or Sense Data (optional) */
};
@@ -159,14 +165,14 @@ struct iscsi_async {
uint8_t dlength[3];
uint8_t lun[8];
uint8_t rsvd4[8];
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
uint8_t async_event;
uint8_t async_vcode;
- uint16_t param1;
- uint16_t param2;
- uint16_t param3;
+ __be16 param1;
+ __be16 param2;
+ __be16 param3;
uint8_t rsvd5[4];
};
@@ -182,14 +188,14 @@ struct iscsi_async {
struct iscsi_nopout {
uint8_t opcode;
uint8_t flags;
- uint16_t rsvd2;
+ __be16 rsvd2;
uint8_t rsvd3;
uint8_t dlength[3];
uint8_t lun[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t ttt; /* Target Transfer Tag */
- uint32_t cmdsn;
- uint32_t exp_statsn;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 ttt; /* Target Transfer Tag */
+ __be32 cmdsn;
+ __be32 exp_statsn;
uint8_t rsvd4[16];
};
@@ -197,15 +203,15 @@ struct iscsi_nopout {
struct iscsi_nopin {
uint8_t opcode;
uint8_t flags;
- uint16_t rsvd2;
+ __be16 rsvd2;
uint8_t rsvd3;
uint8_t dlength[3];
uint8_t lun[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t ttt; /* Target Transfer Tag */
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 ttt; /* Target Transfer Tag */
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
uint8_t rsvd4[12];
};
@@ -217,12 +223,12 @@ struct iscsi_tm {
uint8_t hlength;
uint8_t dlength[3];
uint8_t lun[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t rtt; /* Reference Task Tag */
- uint32_t cmdsn;
- uint32_t exp_statsn;
- uint32_t refcmdsn;
- uint32_t exp_datasn;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 rtt; /* Reference Task Tag */
+ __be32 cmdsn;
+ __be32 exp_statsn;
+ __be32 refcmdsn;
+ __be32 exp_datasn;
uint8_t rsvd2[8];
};
@@ -247,11 +253,11 @@ struct iscsi_tm_rsp {
uint8_t hlength;
uint8_t dlength[3];
uint8_t rsvd2[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t rtt; /* Reference Task Tag */
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 rtt; /* Reference Task Tag */
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
uint8_t rsvd3[12];
};
@@ -273,14 +279,14 @@ struct iscsi_r2t_rsp {
uint8_t hlength;
uint8_t dlength[3];
uint8_t lun[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t ttt; /* Target Transfer Tag */
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
- uint32_t r2tsn;
- uint32_t data_offset;
- uint32_t data_length;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 ttt; /* Target Transfer Tag */
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
+ __be32 r2tsn;
+ __be32 data_offset;
+ __be32 data_length;
};
/* SCSI Data Hdr */
@@ -291,14 +297,14 @@ struct iscsi_data {
uint8_t rsvd3;
uint8_t dlength[3];
uint8_t lun[8];
- uint32_t itt;
- uint32_t ttt;
- uint32_t rsvd4;
- uint32_t exp_statsn;
- uint32_t rsvd5;
- uint32_t datasn;
- uint32_t offset;
- uint32_t rsvd6;
+ __be32 itt;
+ __be32 ttt;
+ __be32 rsvd4;
+ __be32 exp_statsn;
+ __be32 rsvd5;
+ __be32 datasn;
+ __be32 offset;
+ __be32 rsvd6;
/* Payload */
};
@@ -311,14 +317,14 @@ struct iscsi_data_rsp {
uint8_t hlength;
uint8_t dlength[3];
uint8_t lun[8];
- uint32_t itt;
- uint32_t ttt;
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
- uint32_t datasn;
- uint32_t offset;
- uint32_t residual_count;
+ __be32 itt;
+ __be32 ttt;
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
+ __be32 datasn;
+ __be32 offset;
+ __be32 residual_count;
};
/* Data Response PDU flags */
@@ -335,10 +341,10 @@ struct iscsi_text {
uint8_t hlength;
uint8_t dlength[3];
uint8_t rsvd4[8];
- uint32_t itt;
- uint32_t ttt;
- uint32_t cmdsn;
- uint32_t exp_statsn;
+ __be32 itt;
+ __be32 ttt;
+ __be32 cmdsn;
+ __be32 exp_statsn;
uint8_t rsvd5[16];
/* Text - key=value pairs */
};
@@ -353,11 +359,11 @@ struct iscsi_text_rsp {
uint8_t hlength;
uint8_t dlength[3];
uint8_t rsvd4[8];
- uint32_t itt;
- uint32_t ttt;
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
+ __be32 itt;
+ __be32 ttt;
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
uint8_t rsvd5[12];
/* Text Response - key:value pairs */
};
@@ -371,12 +377,12 @@ struct iscsi_login {
uint8_t hlength;
uint8_t dlength[3];
uint8_t isid[6]; /* Initiator Session ID */
- uint16_t tsih; /* Target Session Handle */
- uint32_t itt; /* Initiator Task Tag */
- uint16_t cid;
- uint16_t rsvd3;
- uint32_t cmdsn;
- uint32_t exp_statsn;
+ __be16 tsih; /* Target Session Handle */
+ __be32 itt; /* Initiator Task Tag */
+ __be16 cid;
+ __be16 rsvd3;
+ __be32 cmdsn;
+ __be32 exp_statsn;
uint8_t rsvd5[16];
};
@@ -400,12 +406,12 @@ struct iscsi_login_rsp {
uint8_t hlength;
uint8_t dlength[3];
uint8_t isid[6]; /* Initiator Session ID */
- uint16_t tsih; /* Target Session Handle */
- uint32_t itt; /* Initiator Task Tag */
- uint32_t rsvd3;
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
+ __be16 tsih; /* Target Session Handle */
+ __be32 itt; /* Initiator Task Tag */
+ __be32 rsvd3;
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
uint8_t status_class; /* see Login RSP ststus classes below */
uint8_t status_detail; /* see Login RSP Status details below */
uint8_t rsvd4[10];
@@ -458,11 +464,11 @@ struct iscsi_logout {
uint8_t hlength;
uint8_t dlength[3];
uint8_t rsvd2[8];
- uint32_t itt; /* Initiator Task Tag */
- uint16_t cid;
+ __be32 itt; /* Initiator Task Tag */
+ __be16 cid;
uint8_t rsvd3[2];
- uint32_t cmdsn;
- uint32_t exp_statsn;
+ __be32 cmdsn;
+ __be32 exp_statsn;
uint8_t rsvd4[16];
};
@@ -485,15 +491,15 @@ struct iscsi_logout_rsp {
uint8_t hlength;
uint8_t dlength[3];
uint8_t rsvd3[8];
- uint32_t itt; /* Initiator Task Tag */
- uint32_t rsvd4;
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
- uint32_t rsvd5;
- uint16_t t2wait;
- uint16_t t2retain;
- uint32_t rsvd6;
+ __be32 itt; /* Initiator Task Tag */
+ __be32 rsvd4;
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
+ __be32 rsvd5;
+ __be16 t2wait;
+ __be16 t2retain;
+ __be32 rsvd6;
};
/* logout response status values */
@@ -508,12 +514,12 @@ struct iscsi_snack {
uint8_t opcode;
uint8_t flags;
uint8_t rsvd2[14];
- uint32_t itt;
- uint32_t begrun;
- uint32_t runlength;
- uint32_t exp_statsn;
- uint32_t rsvd3;
- uint32_t exp_datasn;
+ __be32 itt;
+ __be32 begrun;
+ __be32 runlength;
+ __be32 exp_statsn;
+ __be32 rsvd3;
+ __be32 exp_datasn;
uint8_t rsvd6[8];
};
@@ -529,10 +535,10 @@ struct iscsi_reject {
uint8_t rsvd3;
uint8_t dlength[3];
uint8_t rsvd4[16];
- uint32_t statsn;
- uint32_t exp_cmdsn;
- uint32_t max_cmdsn;
- uint32_t datasn;
+ __be32 statsn;
+ __be32 exp_cmdsn;
+ __be32 max_cmdsn;
+ __be32 datasn;
uint8_t rsvd5[8];
/* Text - Rejected hdr */
};