46#ifdef ICL_KERNEL_PROXY
47#include <sys/socket.h>
50#include <sys/ioccom.h>
53#define CTL_DEFAULT_DEV "/dev/cam/ctl"
57#define CTL_MAX_TARGETS 1
62#define CTL_MAX_TARGID 15
67#define CTL_MAX_INIT_PER_PORT 2048
106#define CTL_STATS_NUM_TYPES 3
284#define CTL_ERROR_STR_LEN 160
457#define CTL_BE_NAME_LEN 32
591#if defined(ICL_KERNEL_PROXY) || 1
608#define CTL_ISCSI_NAME_LEN 224
609#define CTL_ISCSI_ADDR_LEN 47
610#define CTL_ISCSI_ALIAS_LEN 128
611#define CTL_ISCSI_OFFLOAD_LEN 8
634#ifdef ICL_KERNEL_PROXY
681#ifdef ICL_KERNEL_PROXY
682struct ctl_iscsi_listen_params {
687 struct sockaddr *addr;
693struct ctl_iscsi_accept_params {
696 struct sockaddr *initiator_addr;
697 socklen_t initiator_addrlen;
701struct ctl_iscsi_send_params {
706 size_t data_segment_len;
711struct ctl_iscsi_receive_params {
716 size_t data_segment_len;
729#ifdef ICL_KERNEL_PROXY
730 struct ctl_iscsi_listen_params listen;
731 struct ctl_iscsi_accept_params accept;
732 struct ctl_iscsi_send_params send;
733 struct ctl_iscsi_receive_params receive;
760#define CTL_IO _IOWR(CTL_MINOR, 0x00, union ctl_io)
761#define CTL_ENABLE_PORT _IOW(CTL_MINOR, 0x04, struct ctl_port_entry)
762#define CTL_DISABLE_PORT _IOW(CTL_MINOR, 0x05, struct ctl_port_entry)
763#define CTL_DELAY_IO _IOWR(CTL_MINOR, 0x10, struct ctl_io_delay_info)
764#define CTL_ERROR_INJECT _IOWR(CTL_MINOR, 0x16, struct ctl_error_desc)
765#define CTL_GET_OOA _IOWR(CTL_MINOR, 0x18, struct ctl_ooa)
766#define CTL_DUMP_STRUCTS _IO(CTL_MINOR, 0x19)
767#define CTL_LUN_REQ _IOWR(CTL_MINOR, 0x21, struct ctl_lun_req)
768#define CTL_LUN_LIST _IOWR(CTL_MINOR, 0x22, struct ctl_lun_list)
769#define CTL_ERROR_INJECT_DELETE _IOW(CTL_MINOR, 0x23, struct ctl_error_desc)
770#define CTL_SET_PORT_WWNS _IOW(CTL_MINOR, 0x24, struct ctl_port_entry)
771#define CTL_ISCSI _IOWR(CTL_MINOR, 0x25, struct ctl_iscsi)
772#define CTL_PORT_REQ _IOWR(CTL_MINOR, 0x26, struct ctl_req)
773#define CTL_PORT_LIST _IOWR(CTL_MINOR, 0x27, struct ctl_lun_list)
774#define CTL_LUN_MAP _IOW(CTL_MINOR, 0x28, struct ctl_lun_map)
775#define CTL_GET_LUN_STATS _IOWR(CTL_MINOR, 0x29, struct ctl_get_io_stats)
776#define CTL_GET_PORT_STATS _IOWR(CTL_MINOR, 0x2a, struct ctl_get_io_stats)
#define CTL_DRIVER_NAME_LEN
@ CTL_ISCSI_DIGEST_CRC32C
#define CTL_ISCSI_ALIAS_LEN
@ CTL_OOA_NEED_MORE_SPACE
#define CTL_ISCSI_ADDR_LEN
#define CTL_ERROR_STR_LEN
#define CTL_ISCSI_OFFLOAD_LEN
@ CTL_OOACMD_FLAG_STATUS_QUEUED
@ CTL_OOACMD_FLAG_STATUS_SENT
@ CTL_OOACMD_FLAG_DMA_QUEUED
@ CTL_OOACMD_FLAG_BLOCKED
#define CTL_STATS_NUM_TYPES
#define CTL_ISCSI_NAME_LEN
@ CTL_DELAY_STATUS_INVALID_LUN
@ CTL_DELAY_STATUS_INVALID_LOC
@ CTL_DELAY_STATUS_INVALID_TYPE
@ CTL_DELAY_STATUS_NOT_IMPLEMENTED
@ CTL_LUN_FLAG_SERIAL_NUM
@ CTL_ISCSI_SESSION_NOT_FOUND
@ CTL_ISCSI_LIST_NEED_MORE_SPACE
@ CTL_STATS_FLAG_TIME_VALID
@ CTL_LUN_LIST_NEED_MORE_SPACE
uint8_t cdb_pattern[CTL_MAX_CDBLEN]
struct scsi_sense_data custom_sense
ctl_lun_error_pattern error_pattern
struct ctl_error_desc_cmd cmd_desc
STAILQ_ENTRY(ctl_error_desc) links
struct ctl_lba_len lba_range
struct timespec timestamp
struct ctl_io_stats * stats
ctl_delay_location delay_loc
ctl_delay_type delay_type
struct bintime dma_time[CTL_STATS_NUM_TYPES]
uint64_t bytes[CTL_STATS_NUM_TYPES]
uint64_t operations[CTL_STATS_NUM_TYPES]
struct bintime time[CTL_STATS_NUM_TYPES]
uint64_t dmas[CTL_STATS_NUM_TYPES]
char initiator_alias[CTL_ISCSI_ALIAS_LEN]
int max_recv_data_segment_length
int max_send_data_segment_length
ctl_iscsi_digest data_digest
char target_name[CTL_ISCSI_NAME_LEN]
char initiator_addr[CTL_ISCSI_ADDR_LEN]
ctl_iscsi_digest header_digest
uint8_t initiator_isid[6]
char initiator_name[CTL_ISCSI_NAME_LEN]
char offload[CTL_ISCSI_OFFLOAD_LEN]
int max_send_data_segment_length
char offload[CTL_ISCSI_OFFLOAD_LEN]
int max_recv_data_segment_length
char initiator_name[CTL_ISCSI_NAME_LEN]
char initiator_addr[CTL_ISCSI_ADDR_LEN]
char initiator_name[CTL_ISCSI_NAME_LEN]
char initiator_addr[CTL_ISCSI_NAME_LEN]
char error_str[CTL_ERROR_STR_LEN]
union ctl_iscsi_data data
ctl_backend_lun_flags flags
uint8_t serial_num[CTL_SN_LEN]
uint8_t device_id[CTL_DEVID_LEN]
char error_str[CTL_ERROR_STR_LEN]
ctl_lun_list_status status
char backend[CTL_BE_NAME_LEN]
char backend[CTL_BE_NAME_LEN]
char error_str[CTL_ERROR_STR_LEN]
union ctl_lunreq_data reqdata
uint8_t cdb[CTL_MAX_CDBLEN]
ctl_ooa_cmd_flags cmd_flags
ctl_get_ooa_status status
struct ctl_ooa_entry * entries
char driver[CTL_DRIVER_NAME_LEN]
char error_str[CTL_ERROR_STR_LEN]
struct ctl_iscsi_list_params list
struct ctl_iscsi_terminate_params terminate
struct ctl_iscsi_limits_params limits
struct ctl_iscsi_handoff_params handoff
struct ctl_iscsi_logout_params logout
struct ctl_lun_rm_params rm
struct ctl_lun_modify_params modify
struct ctl_lun_create_params create