diff options
author | dmitry_yus <dmitry_yus@d7303112-9cec-0310-bdd2-e83a94d6c2b6> | 2005-04-14 23:16:16 +0000 |
---|---|---|
committer | dmitry_yus <dmitry_yus@d7303112-9cec-0310-bdd2-e83a94d6c2b6> | 2005-04-14 23:16:16 +0000 |
commit | 0e4b1f6d34ea96ff3d489c8022bf5a698131b58a (patch) | |
tree | 2f5699d9ee65a7426a4560318d16d0894ee30374 /include | |
parent | 5f8ad90af1d00a70931c5b87d0add974314a376c (diff) | |
download | open-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.h | 230 |
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 */ }; |