iscsit_common.h revision a6d42e7d71324c5193c3b94d57d96ba2925d52e1
/*
* 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
*/
/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _ISCSIT_COMMON_H_
#define _ISCSIT_COMMON_H_
#ifdef _KERNEL
#else
#include <libnvpair.h>
#endif
/*
* XXX Need to reverse this dependency, libiscsit.h should include
* iscsit_common.h, and iscsit_common.h should have all the core
* definitions. Kernel drivers should not pull in library header files.
*/
#include <libiscsit.h>
#ifdef __cplusplus
extern "C" {
#endif
#define ISCSIT_API_VERS0 0
typedef enum {
ITCFG_SUCCESS = 0,
/*
* This structure is passed back to the driver during ISCSIT_IOC_ENABLE_SVC
* in order to provide the fully qualified hostname for use as the EID
* by iSNS.
*/
#define ISCSIT_MAX_HOSTNAME_LEN 256
typedef struct iscsit_hostinfo_s {
char fqhn[ISCSIT_MAX_HOSTNAME_LEN];
#define ISCSIT_IOC_SET_CONFIG 1
#define ISCSIT_IOC_GET_STATE 2
#define ISCSIT_IOC_ENABLE_SVC 101
#define ISCSIT_IOC_DISABLE_SVC 102
/* XXX Rationalize these with other error values (used in it_smf.c */
#define ITADM_SUCCESS 0
#define ITADM_FATAL_ERROR 0x1
#define ITADM_NO_MEM 0x2
#define ITADM_INVALID 0x4
#define ITADM_NODATA 0x8
#define ITADM_PERM 0x10
#define PROP_AUTH "auth"
#define PROP_ALIAS "alias"
#define PROP_CHAP_USER "chapuser"
#define PROP_CHAP_SECRET "chapsecret"
#define PROP_TARGET_CHAP_USER "targetchapuser"
#define PROP_TARGET_CHAP_SECRET "targetchapsecret"
#define PROP_RADIUS_SERVER "radiusserver"
#define PROP_RADIUS_SECRET "radiussecret"
#define PROP_ISNS_ENABLED "isns"
#define PROP_ISNS_SERVER "isnsserver"
#define PROP_OLD_TARGET_NAME "oldtargetname"
#define PA_AUTH_RADIUS "radius"
#define PA_AUTH_CHAP "chap"
#define PA_AUTH_NONE "none"
typedef struct {
int set_cfg_vers;
int set_cfg_pnvlist_len;
typedef struct {
int getst_vers;
int getst_pnvlist_len;
char *getst_pnvlist;
#ifdef _SYSCALL32
typedef struct {
int set_cfg_vers;
int set_cfg_pnvlist_len;
typedef struct {
int getst_vers;
int getst_pnvlist_len;
#endif /* _SYSCALL32 */
int
/*
* nvlist version of config is 3 list-of-list, + 1 proplist. arrays
* are interesting, but lists-of-lists are more useful when doing
* individual lookups when we later add support for it. Also, no
* need to store name in individual struct representation.
*/
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
int
it_tgt_t *
it_tpg_t *
int
/*
* Convert a sockaddr to the string representation, suitable for
* storing in an nvlist or printing out in a list.
*/
int
/*
* Convert a char string to a sockaddr structure
*
* default_port should be the port to be used, if not specified
* as part of the supplied string 'arg'.
*/
struct sockaddr_storage *
/*
* Convert an string array of IP-addr:port to a portal list
*/
int
/*
* Function: it_config_free_cmn()
*
* Free any resources associated with the it_config_t structure.
*
* Parameters:
* cfg A C representation of the current iSCSI configuration
*/
void
/*
* Function: it_tgt_free_cmn()
*
* Frees an it_tgt_t structure. If tgt_next is not NULL, frees
* all structures in the list.
*/
void
/*
* Function: it_tpgt_free_cmn()
*
* Deallocates resources of an it_tpgt_t structure. If tpgt->next
* is not NULL, frees all members of the list.
*/
void
/*
* Function: it_tpg_free_cmn()
*
* Deallocates resources associated with an it_tpg_t structure.
* If tpg->next is not NULL, frees all members of the list.
*/
void
/*
* Function: it_ini_free_cmn()
*
* Deallocates resources of an it_ini_t structure. If ini->next is
* not NULL, frees all members of the list.
*/
void
/*
* Function: iscsi_binary_to_base64_str()
*
* Encodes a byte array into a base64 string.
*/
int
char *base64_str_buf, int base64_buf_len);
/*
* Function: iscsi_base64_str_to_binary()
*
* Decodes a base64 string into a byte array
*/
int
#ifdef __cplusplus
}
#endif
#endif /* _ISCSIT_COMMON_H_ */