summaryrefslogtreecommitdiffstats
path: root/src/server/iscsi.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/iscsi.h')
-rw-r--r--src/server/iscsi.h55
1 files changed, 37 insertions, 18 deletions
diff --git a/src/server/iscsi.h b/src/server/iscsi.h
index ded2d1d..f247621 100644
--- a/src/server/iscsi.h
+++ b/src/server/iscsi.h
@@ -9918,6 +9918,9 @@ typedef struct iscsi_key_value_pair_packet {
/// Discovery mode.
int discovery;
+
+ /// First burst length has been passed by the initiator.
+ bool first_burst_len;
} iscsi_key_value_pair_packet;
int iscsi_parse_key_value_pairs(iscsi_hashmap *key_value_pairs, const uint8_t *packet_data, uint len, int c_bit, uint8_t **partial_pairs); // Extracts all text key / value pairs out of an iSCSI packet into a hash map
@@ -9976,7 +9979,7 @@ int iscsi_parse_key_value_pairs(iscsi_hashmap *key_value_pairs, const uint8_t *p
#define ISCSI_GLOBALS_SECTION_SCSI_DEVICE_PREFIX "scsi-device-"
-/// iSCSI main global data config type: iHeader digest (CRC32), always MUST be 0 or 4 for now.
+/// iSCSI main global data config type: Header digest (CRC32), always MUST be 0 or 4 for now.
#define ISCSI_GLOBALS_CONFIG_TYPE_HEADER_DIGEST 0
/// iSCSI main global data config type: Data digest (CRC32), always MUST be 0 or 4 for now.
@@ -10006,50 +10009,66 @@ int iscsi_parse_key_value_pairs(iscsi_hashmap *key_value_pairs, const uint8_t *p
/// iSCSI main global data config type: Error recovery level.
#define ISCSI_GLOBALS_CONFIG_TYPE_ERR_RECOVERY_LEVEL 9
+/// iSCSI main global data config type: CHAP authentication group.
+#define ISCSI_GLOBALS_CONFIG_TYPE_CHAP_GROUP 10
+
/// iSCSI main global data config type: SCSI emulation for device type.
-#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_DEVICE_TYPE 10
+#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_DEVICE_TYPE 11
/// iSCSI main global data config type: SCSI emulation for physical block size.
-#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_PHYSICAL_BLOCK_SIZE 11
+#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_PHYSICAL_BLOCK_SIZE 12
/// iSCSI main global data config type: SCSI emulation for physical block size shift count.
-#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_PHYSICAL_BLOCK_SIZE_SHIFT 12
+#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_PHYSICAL_BLOCK_SIZE_SHIFT 13
/// iSCSI main global data config type: SCSI emulation for logical block size.
-#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_LOGICAL_BLOCK_SIZE 13
+#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_LOGICAL_BLOCK_SIZE 14
/// iSCSI main global data config type: SCSI emulation for logical block size shift count.
-#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_LOGICAL_BLOCK_SIZE_SHIFT 14
+#define ISCSI_GLOBALS_CONFIG_TYPE_SCSI_LOGICAL_BLOCK_SIZE_SHIFT 15
+
+/// iSCSI main global data config type: CHAP authentication is disabled.
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_CHAP_DISABLE 16
+
+/// iSCSI main global data config type: CHAP authentication is required.
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_CHAP_REQUIRE 17
+
+/// iSCSI main global data config type: CHAP authentication is mutual.
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_CHAP_MUTUAL 18
/// iSCSI main global data config type: Initial ready to transfer.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_INIT_R2T 15
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_INIT_R2T 19
/// iSCSI main global data config type: Immediate data.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_IMMEDIATE_DATA 16
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_IMMEDIATE_DATA 20
/// iSCSI main global data config type: Data PDU in order.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_DATA_PDU_IN_ORDER 17
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_DATA_PDU_IN_ORDER 21
/// iSCSI main global data config type: Data sequence in order.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_DATA_SEQ_IN_ORDER 18
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_DATA_SEQ_IN_ORDER 22
/// iSCSI main global data config type: SCSI emulation for I/O removable device.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_REMOVABLE 19
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_REMOVABLE 23
/// iSCSI main global data config type: SCSI emulation for I/O UNMAP supporting device.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_UNMAP 20
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_UNMAP 24
/// iSCSI main global data config type: SCSI emulation for I/O non-rotating device.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_NO_ROTATION 21
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_NO_ROTATION 25
/// iSCSI main global data config type: SCSI emulation for I/O physical read only device.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_PHYSICAL_READ_ONLY 22
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_PHYSICAL_READ_ONLY 26
/// iSCSI main global data config type: SCSI emulation for I/O write protected device.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_WRITE_PROTECT 23
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_WRITE_PROTECT 27
/// iSCSI main global data config type: SCSI emulation for I/O write cache device.
-#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_WRITE_CACHE 24
+#define ISCSI_GLOBALS_CONFIG_TYPE_FLAGS_SCSI_IO_WRITE_CACHE 28
+
+
+/// iSCSI main global data config type: Value error result.
+#define ISCSI_GLOBALS_CONFIG_TYPE_VALUE_ERROR -2147483648L
/// iSCSI main global data SCSI device configuration flags: Initial ready to transfer.
@@ -10274,8 +10293,8 @@ typedef struct iscsi_globals {
/// Hash map containing iSCSI SCSI device specific configuration.
iscsi_hashmap *scsi_device_config;
- /// Mutex for hash map containing iSCSI SCSI device specific configuration.
- pthread_mutex_t scsi_device_config_mutex;
+ /// Read/write lock for hash map containing iSCSI SCSI device specific configuration.
+ pthread_rwlock_t scsi_device_config_rwlock;
/// Global flags.
int flags;