/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
*/
#ifndef _ISCSI_PROTOCOL_H
#define _ISCSI_PROTOCOL_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* iSCSI connection daemon
* Copyright (C) 2001 Cisco Systems, Inc.
* All rights reserved.
*
* This file sets up definitions of messages and constants used by the
* iSCSI protocol.
*
*/
#include <sys/isa_defs.h>
/* iSCSI listen port for incoming connections */
/* assumes a pointer to a 3-byte array */
/* assumes a pointer to a 3 byte array, and an integer value */
#define hton24(p, v) {\
p[0] = (((v) >> 16) & 0xFF); \
p[1] = (((v) >> 8) & 0xFF); \
p[2] = ((v) & 0xFF); \
}
/* for Login min, max, active version fields */
/* Min. and Max. length of a PDU we can support */
/* Padding word length */
/* Max. number of Key=Value pairs in a text message */
/* text separtor between key value pairs exhanged in login */
/* reserved text constants for Text Mode Negotiation */
/* most PDU types have a final bit */
/*
* Strings used during SendTargets requests
*/
/* iSCSI Template Message Header */
typedef struct _iscsi_hdr {
} iscsi_hdr_t;
typedef struct _iscsi_rsp_hdr {
/* Opcode encoding bits */
/* Client to Server Message Opcode values */
/* Server to Client Message Opcode values */
/* SCSI Command Header */
typedef struct _iscsi_scsi_cmd_hdr {
/*
* Additional Data (Command Dependent)
*/
/* Command PDU flags */
/* SCSI Command Attribute values */
#define ISCSI_ATTR_UNTAGGED 0
/* SCSI Response Header */
typedef struct _iscsi_scsi_rsp_hdr {
/*
* Response or Sense Data (optional)
*/
/* 10.2.2.3 - Extended CDB Additional Header Segment */
typedef struct _iscsi_addl_hdr {
/* Command Response PDU flags */
/* iSCSI Status values. Valid if Rsp Selector bit is not set */
#define ISCSI_STATUS_CMD_COMPLETED 0
/* Asynchronous Event Header */
typedef struct _iscsi_async_evt_hdr {
/* iSCSI Event Indicator values */
#define ISCSI_ASYNC_EVENT_SCSI_EVENT 0
/* NOP-Out Message */
typedef struct _iscsi_nop_out_hdr {
/* NOP-In Message */
typedef struct _iscsi_nop_in_hdr {
/* SCSI Task Management Message Header */
typedef struct _iscsi_scsi_task_mgt_hdr {
/* Function values */
/* SCSI Task Management Response Header */
typedef struct _iscsi_scsi_task_mgt_rsp_hdr {
/* Response values */
/*
* Maintained for backward compatibility.
*/
/* Ready To Transfer Header */
typedef struct _iscsi_rtt_hdr {
/* SCSI Data Hdr */
typedef struct _iscsi_data_hdr {
/*
* Payload
*/
/* SCSI Data Response Hdr */
typedef struct _iscsi_data_rsp_hdr {
/* Data Response PDU flags */
/* Text Header */
typedef struct _iscsi_text_hdr {
/*
* Text - key=value pairs
*/
/* Text Response Header */
typedef struct _iscsi_text_rsp_hdr {
/*
* Text Response - key:value pairs
*/
/* Login Header */
typedef struct _iscsi_login_hdr {
/* Login PDU flags */
/* Login Response Header */
typedef struct _iscsi_login_rsp_hdr {
/* Login stage (phase) codes for CSG, NSG */
#define ISCSI_SECURITY_NEGOTIATION_STAGE 0
/* Login Status response classes */
/* Login Status response detail codes */
/* Class-0 (Success) */
/* Class-1 (Redirection) */
/* Class-2 (Initiator Error) */
/* Class-3 (Target Error) */
/* Logout Header */
typedef struct _iscsi_logout_hdr {
/* Logout PDU flags */
/* logout reason_code values */
#define ISCSI_LOGOUT_REASON_CLOSE_SESSION 0
/* Logout Response Header */
typedef struct _iscsi_logout_rsp_hdr {
/* logout response status values */
#define ISCSI_LOGOUT_SUCCESS 0
/* SNACK Header */
typedef struct _iscsi_snack_hdr {
/* SNACK PDU flags */
/* Reject Message Header */
typedef struct _iscsi_reject_rsp_hdr {
/*
* Text - Rejected hdr
*/
/* Reason for Reject */
/* Defaults as defined by the iSCSI specification */
#define ISCSI_DEFAULT_ERROR_RECOVERY_LEVEL 0
/*
* Minimum values from the iSCSI specification
*/
#define ISCSI_MIN_TIME2RETAIN 0
#define ISCSI_MIN_TIME2WAIT 0
#define ISCSI_MIN_ERROR_RECOVERY_LEVEL 0
/*
* Maximum values from the iSCSI specification
*/
/*
* iqn and eui name prefixes and related defines
*/
#ifdef __cplusplus
}
#endif
#endif /* _ISCSI_PROTOCOL_H */