Files
2013-04-06 16:48:33 +02:00

101 lines
3.3 KiB
C

/*
* IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
* By downloading, copying, installing or using the software you agree
* to this license. If you do not agree to this license, do not
* download, install, copy or use the software.
*
* Intel License Agreement
*
* Copyright (c) 2000, Intel Corporation
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* -Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* -Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the
* distribution.
*
* -The name of Intel Corporation may not be used to endorse or
* promote products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#ifndef _TARGET_H_
#define _TARGET_H_
#include "iscsiprotocol.h"
#include "iscsiutil.h"
#include "parameters.h"
#include "storage.h"
#include "iscsi.h"
/* Default configuration */
#define DEFAULT_TARGET_MAX_SESSIONS 16 /* n+1 */
#define DEFAULT_TARGET_NUM_LUNS 1
#define DEFAULT_TARGET_BLOCK_LEN 512
#define DEFAULT_TARGET_NUM_BLOCKS 204800
#define DEFAULT_TARGET_NAME "iqn.1994-04.org.netbsd.iscsi-target"
#define DEFAULT_TARGET_QUEUE_DEPTH 8
#define DEFAULT_TARGET_TCQ 0
enum {
MAX_INITIATOR_ADDRESS_SIZE = 256
};
/* session parameters */
typedef struct target_session_t {
int id;
int d;
int sock;
uint16_t cid;
uint32_t StatSN;
uint32_t ExpCmdSN;
uint32_t MaxCmdSN;
uint8_t *buff;
int UsePhaseCollapsedRead;
int IsFullFeature;
int IsLoggedIn;
int LoginStarted;
uint64_t isid;
int tsih;
iscsi_target_t *target;
iscsi_worker_t worker;
iscsi_parameter_t *params;
iscsi_sess_param_t sess_params;
char initiator[MAX_INITIATOR_ADDRESS_SIZE];
int address_family;
int32_t last_tsih;
} target_session_t;
typedef struct target_cmd_t {
iscsi_scsi_cmd_args_t *scsi_cmd;
int (*callback) (void *);
void *callback_arg;
} target_cmd_t;
int target_transfer_data(target_session_t *, iscsi_scsi_cmd_args_t *, struct iovec *, int);
int find_target_tsih(iscsi_target_t *, int);
int find_target_iqn(target_session_t *);
#endif /* _TARGET_H_ */