aboutsummaryrefslogtreecommitdiffstats
path: root/src/include/gpxe
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/gpxe')
-rw-r--r--src/include/gpxe/iscsi.h10
-rw-r--r--src/include/gpxe/scsi.h18
2 files changed, 17 insertions, 11 deletions
diff --git a/src/include/gpxe/iscsi.h b/src/include/gpxe/iscsi.h
index 469911df..00717d2b 100644
--- a/src/include/gpxe/iscsi.h
+++ b/src/include/gpxe/iscsi.h
@@ -249,7 +249,7 @@ struct iscsi_bhs_scsi_command {
/** Segment lengths */
union iscsi_segment_lengths lengths;
/** SCSI Logical Unit Number */
- uint64_t lun;
+ struct scsi_lun lun;
/** Initiator Task Tag */
uint32_t itt;
/** Expected data transfer length */
@@ -344,7 +344,7 @@ struct iscsi_bhs_data_in {
/** Segment lengths */
union iscsi_segment_lengths lengths;
/** Logical Unit Number */
- uint64_t lun;
+ struct scsi_lun lun;
/** Initiator Task Tag */
uint32_t itt;
/** Target Transfer Tag */
@@ -392,7 +392,7 @@ struct iscsi_bhs_data_out {
/** Segment lengths */
union iscsi_segment_lengths lengths;
/** Logical Unit Number */
- uint64_t lun;
+ struct scsi_lun lun;
/** Initiator Task Tag */
uint32_t itt;
/** Target Transfer Tag */
@@ -428,7 +428,7 @@ struct iscsi_bhs_r2t {
/** Segment lengths */
union iscsi_segment_lengths lengths;
/** Logical Unit Number */
- uint64_t lun;
+ struct scsi_lun lun;
/** Initiator Task Tag */
uint32_t itt;
/** Target Transfer Tag */
@@ -507,7 +507,7 @@ struct iscsi_session {
/** Target IQN */
char *target_iqn;
/** Logical Unit Number (LUN) */
- uint64_t lun;
+ struct scsi_lun lun;
/** Target socket address (recorded only for iBFT) */
struct sockaddr target_sockaddr;
diff --git a/src/include/gpxe/scsi.h b/src/include/gpxe/scsi.h
index b8866234..9131a29a 100644
--- a/src/include/gpxe/scsi.h
+++ b/src/include/gpxe/scsi.h
@@ -240,16 +240,21 @@ struct scsi_command {
int rc;
};
+/** A SCSI LUN
+ *
+ * This is a four-level LUN as specified by SAM-2, in big-endian
+ * order.
+ */
+struct scsi_lun {
+ uint16_t u16[4];
+} __attribute__ (( packed ));
+
/** A SCSI device */
struct scsi_device {
/** Block device interface */
struct block_device blockdev;
- /** Logical unit number (LUN)
- *
- * This is a four-level LUN as specified by SAM-2, in
- * big-endian order.
- */
- uint64_t lun;
+ /** Logical unit number (LUN) */
+ struct scsi_lun lun;
/**
* Issue SCSI command
*
@@ -273,5 +278,6 @@ struct scsi_device {
extern int scsi_detached_command ( struct scsi_device *scsi,
struct scsi_command *command );
extern int init_scsidev ( struct scsi_device *scsi );
+extern int scsi_parse_lun ( const char *lun_string, struct scsi_lun *lun );
#endif /* _GPXE_SCSI_H */