OpenSolaris_b135/common/mms/h/api/db_defs_api.h

/*
 * 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
 * or http://www.opensolaris.org/os/licensing.
 * 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 _DB_DEFS_API_
#define	_DB_DEFS_API_
#ifdef sun
#define	SIGNED
#else
#define	SIGNED signed
#endif

typedef SIGNED char		ACS;
#define	MIN_ACS		0
#define	MAX_ACS		31
#define	ANY_ACS		-1

#define	MIN_VTD		0x80

typedef SIGNED char		LSM;
#define	MIN_LSM		0
#define	MAX_LSM		126
#define	ANY_LSM		-1

typedef char		PORT;
#define	MIN_PORT		0
#define	MAX_PORT		15
#define	PORT_NAME_SIZE		70

#define	CSI_NAME_LENGTH 16
#define	MAX_CSI_LABEL		20
#define	MAX_CSI_DESCRIP 1000

typedef SIGNED char		CAP;
#define	MIN_CAP		0
#define	MAX_CAP		2
#define	ANY_CAP		-1
#define	ALL_CAP		-2

typedef char		PANEL;
#define	MIN_PANEL		0
#define	MAX_PANEL		60

typedef char		DRIVE;
#define	MIN_DRIVE		0
#define	MAX_DRIVE		19

typedef char		ROW;
#define	MIN_ROW		0
#define	MAX_ROW		41

typedef char		COL;
#define	MIN_COL		0
#define	MAX_COL		23

typedef short		LOCKID;
#define	NO_LOCK_ID		0
#define	MIN_LOCK_ID		0
#define	MAX_LOCK_ID		32767

typedef SIGNED char		MEDIA_TYPE;
#define	ANY_MEDIA_TYPE		(-1)
#define	ALL_MEDIA_TYPE		(-2)
#define	UNKNOWN_MEDIA_TYPE	(-3)

typedef SIGNED char		DRIVE_TYPE;
#define	ANY_DRIVE_TYPE		(-1)
#define	UNKNOWN_DRIVE_TYPE	(-3)

typedef long		POOL;
#define	COMMON_POOL		0
#define	MAX_POOL		65534
#define	SAME_POOL		-1

#define	MAX_WATER_MARK		2147483647
#define	MIN_WATER_MARK		0

typedef SIGNED char		CAP_PRIORITY;
#define	NO_PRIORITY		0
#define	MIN_PRIORITY		1
#define	MAX_PRIORITY		16
#define	SAME_PRIORITY		-1

typedef char		REQUEST_PRIORITY;

#define	PCAP_PRIORITY		98
#define	DEFAULT_PRIORITY 25
#define	PCAP_SIZE		1

typedef SIGNED int PANEL_TYPE;

typedef char		HAND;
#define	MIN_HAND		0
#define	MAX_HAND		1

typedef unsigned long		EVENT_SEQUENCE;

#define	EXTERNAL_USERID_SIZE		64
typedef struct {
	char user_label[EXTERNAL_USERID_SIZE];
} USERID;

#define	EXTERNAL_PASSWORD_SIZE		64
typedef struct {
	char password[EXTERNAL_PASSWORD_SIZE];
} PASSWORD;

typedef struct {
	USERID		user_id;
	PASSWORD		password;
} ACCESSID;


typedef long		FREECELLS;
#ifdef LINUX
#undef OVERFLOW
#endif

#define	OVERFLOW		1
#define	EXTERNAL_LABEL_SIZE 6
#define	SOCKET_NAME_SIZE 14

#define	JOB_NAME_SIZE		8
#define	STEP_NAME_SIZE		8
#define	DATASET_NAME_SIZE		44
#define	SUBPOOL_NAME_SIZE		13
#define	GROUPID_SIZE		8
#define	MGMT_CLAS_SIZE		8


#define	MAX_DRIVE_PANEL 4

typedef enum {
	LOCATION_FIRST = 0,
	LOCATION_CELL,
	LOCATION_DRIVE,
	LOCATION_LAST
} LOCATION;

/* state codes */
typedef enum {
	STATE_FIRST = 0,
	STATE_CANCELLED,
	STATE_DIAGNOSTIC,
	STATE_IDLE,
	STATE_IDLE_PENDING,

	STATE_OFFLINE,
	STATE_OFFLINE_PENDING,
	STATE_ONLINE,
	STATE_RECOVERY,
	STATE_RUN,

	STATE_CONNECT,
	STATE_DISCONNECT,
	STATE_DISBAND_1,
	STATE_DISBAND_2,
	STATE_DISBAND_3,
	STATE_DISBAND_4,
	STATE_JOIN_1,
	STATE_JOIN_2,
	STATE_RESIGN_1,
	STATE_RESIGN_2,

	STATE_RESIGN_3,

	STATE_LAST
} STATE;

typedef enum {
	VOLUME_TYPE_FIRST = 0,
	VOLUME_TYPE_DIAGNOSTIC,
	VOLUME_TYPE_STANDARD,
	VOLUME_TYPE_DATA,
	VOLUME_TYPE_SCRATCH,
	VOLUME_TYPE_CLEAN,
	VOLUME_TYPE_MVC,
	VOLUME_TYPE_VTV,
	VOLUME_TYPE_LAST
} VOLUME_TYPE;

typedef enum {
	LABEL_ATTRIBUTE_STANDARD = 0,
	LABEL_ATTRIBUTE_VIRTUAL,
	LABEL_ATTRIBUTE_LAST
} LABEL_ATTR;

typedef enum {
	CAP_MODE_FIRST = 0,
	CAP_MODE_AUTOMATIC,
	CAP_MODE_MANUAL,
	CAP_MODE_SAME,
	CAP_MODE_LAST
} CAP_MODE;

typedef enum {
	GROUP_TYPE_FIRST = 0,
	GROUP_TYPE_VTSS,
	GROUP_TYPE_LAST
} GROUP_TYPE;
typedef enum {
	STATUS_SUCCESS = 0,
	STATUS_ACS_FULL,
	STATUS_ACS_NOT_IN_LIBRARY,
	STATUS_ACS_OFFLINE,
	STATUS_ACSLM_IDLE,

	STATUS_ACTIVITY_END,
	STATUS_ACTIVITY_START,
	STATUS_AUDIT_ACTIVITY,
	STATUS_AUDIT_IN_PROGRESS,
	STATUS_CANCELLED,

	STATUS_CAP_AVAILABLE,
	STATUS_CAP_FULL,
	STATUS_CAP_IN_USE,
	STATUS_CELL_EMPTY,
	STATUS_CELL_FULL,

	STATUS_CELL_INACCESSIBLE,
	STATUS_CELL_RESERVED,
	STATUS_CLEAN_DRIVE,
	STATUS_COMMUNICATION_FAILED,
	STATUS_CONFIGURATION_ERROR,

	STATUS_COUNT_TOO_SMALL,
	STATUS_COUNT_TOO_LARGE,
	STATUS_CURRENT,
	STATUS_DATABASE_ERROR,
	STATUS_DEGRADED_MODE,

	STATUS_DONE,
	STATUS_DOOR_CLOSED,
	STATUS_DOOR_OPENED,
	STATUS_DRIVE_AVAILABLE,
	STATUS_DRIVE_IN_USE,

	STATUS_DRIVE_NOT_IN_LIBRARY,
	STATUS_DRIVE_OFFLINE,
	STATUS_DRIVE_RESERVED,
	STATUS_DUPLICATE_LABEL,
	STATUS_EJECT_ACTIVITY,

	STATUS_ENTER_ACTIVITY,
	STATUS_EVENT_LOG_FULL,
	STATUS_IDLE_PENDING,
	STATUS_INPUT_CARTRIDGES,
	STATUS_INVALID_ACS,

	STATUS_INVALID_COLUMN,
	STATUS_INVALID_COMMAND,
	STATUS_INVALID_DRIVE,
	STATUS_INVALID_LSM,
	STATUS_INVALID_MESSAGE,

	STATUS_INVALID_OPTION,
	STATUS_INVALID_PANEL,
	STATUS_INVALID_PORT,
	STATUS_INVALID_ROW,
	STATUS_INVALID_STATE,

	STATUS_INVALID_SUBPANEL,
	STATUS_INVALID_TYPE,
	STATUS_INVALID_VALUE,
	STATUS_INVALID_VOLUME,
	STATUS_IPC_FAILURE,

	STATUS_LIBRARY_BUSY,
	STATUS_LIBRARY_FAILURE,
	STATUS_LIBRARY_NOT_AVAILABLE,
	STATUS_LOCATION_OCCUPIED,
	STATUS_LSM_FULL,

	STATUS_LSM_NOT_IN_LIBRARY,
	STATUS_LSM_OFFLINE,
	STATUS_MESSAGE_NOT_FOUND,
	STATUS_MESSAGE_TOO_LARGE,
	STATUS_MESSAGE_TOO_SMALL,

	STATUS_MISPLACED_TAPE,
	STATUS_MULTI_ACS_AUDIT,
	STATUS_NORMAL,
	STATUS_NONE,
	STATUS_NOT_IN_SAME_ACS,

	STATUS_ONLINE,
	STATUS_OFFLINE,
	STATUS_PENDING,
	STATUS_PORT_NOT_IN_LIBRARY,
	STATUS_PROCESS_FAILURE,

	STATUS_RECOVERY_COMPLETE,
	STATUS_RECOVERY_FAILED,
	STATUS_RECOVERY_INCOMPLETE,
	STATUS_RECOVERY_STARTED,
	STATUS_REMOVE_CARTRIDGES,

	STATUS_RETRY,
	STATUS_STATE_UNCHANGED,
	STATUS_TERMINATED,
	STATUS_VALID,
	STATUS_VALUE_UNCHANGED,

	STATUS_VARY_DISALLOWED,
	STATUS_VOLUME_ADDED,
	STATUS_VOLUME_EJECTED,
	STATUS_VOLUME_ENTERED,
	STATUS_VOLUME_FOUND,

	STATUS_VOLUME_HOME,
	STATUS_VOLUME_IN_DRIVE,
	STATUS_VOLUME_IN_TRANSIT,
	STATUS_VOLUME_NOT_IN_DRIVE,
	STATUS_VOLUME_NOT_IN_LIBRARY,

	STATUS_UNREADABLE_LABEL,
	STATUS_UNSUPPORTED_OPTION,
	STATUS_UNSUPPORTED_STATE,
	STATUS_UNSUPPORTED_TYPE,
	STATUS_VOLUME_IN_USE,

	STATUS_PORT_FAILURE,
	STATUS_MAX_PORTS,
	STATUS_PORT_ALREADY_OPEN,
	STATUS_QUEUE_FAILURE,
	STATUS_NI_FAILURE,
	STATUS_RPC_FAILURE = STATUS_NI_FAILURE,

	STATUS_NI_TIMEDOUT,
	STATUS_INVALID_COMM_SERVICE,
	STATUS_COMPLETE,
	STATUS_AUDIT_FAILED,
	STATUS_NO_PORTS_ONLINE,

	STATUS_CARTRIDGES_IN_CAP,
	STATUS_TRANSLATION_FAILURE,
	STATUS_DATABASE_DEADLOCK,
	STATUS_DIAGNOSTIC,
	STATUS_DUPLICATE_IDENTIFIER,

	STATUS_EVENT_LOG_FAILURE,
	STATUS_DISMOUNT_ACTIVITY,
	STATUS_MOUNT_ACTIVITY,
	STATUS_POOL_NOT_FOUND,
	STATUS_POOL_NOT_EMPTY,

	STATUS_INVALID_RANGE,
	STATUS_INVALID_POOL,
	STATUS_POOL_HIGH_WATER,
	STATUS_POOL_LOW_WATER,
	STATUS_INVALID_VERSION,

	STATUS_MISSING_OPTION,
	STATUS_INCORRECT_ATTRIBUTE,
	STATUS_INVALID_LOCKID,
	STATUS_VOLUME_AVAILABLE,
	STATUS_READABLE_LABEL,

	STATUS_NO_CAP_AVAILABLE,
	STATUS_LOCK_FAILED,
	STATUS_DEADLOCK,
	STATUS_LOCKID_NOT_FOUND,
	STATUS_INCORRECT_LOCKID,

	STATUS_SCRATCH_NOT_AVAILABLE,
	STATUS_CLEAN_DRIVE_COMPLETE,
	STATUS_VOLUME_NOT_FOUND,
	STATUS_CAP_DOOR_OPEN,
	STATUS_CAP_INOPERATIVE,

	STATUS_DISK_FULL,
	STATUS_CAP_NOT_IN_LIBRARY,
	STATUS_CAP_OFFLINE,
	STATUS_INVALID_CAP,
	STATUS_INCORRECT_CAP_MODE,

	STATUS_INCORRECT_STATE,
	STATUS_VARY_IN_PROGRESS,
	STATUS_ACS_ONLINE,
	STATUS_AUTOMATIC,
	STATUS_MANUAL,

	STATUS_VOLUME_DELETED,
	STATUS_INSERT_MAGAZINES,
	STATUS_UNSUPPORTED_COMMAND,
	STATUS_COMMAND_ACCESS_DENIED,
	STATUS_VOLUME_ACCESS_DENIED,

	STATUS_OWNER_NOT_FOUND,
	STATUS_INVALID_DRIVE_TYPE,
	STATUS_INVALID_MEDIA_TYPE,
	STATUS_INCOMPATIBLE_MEDIA_TYPE,
	STATUS_DRIVE_FOUND,

	STATUS_CAP_DONE,
	STATUS_INVALID_SUBSYSID,
	STATUS_LSM_OFFLINE_PENDING,
	STATUS_PORT_OFFLINE,
	STATUS_COMMUNICATING,

	STATUS_NOT_COMMUNICATING,
	STATUS_IDLE,
	STATUS_OFFLINE_PENDING,
	STATUS_SWITCHOVER_INITIATED,
	STATUS_SWITCHOVER_RECOVERY_COMPLETE,

	STATUS_LMU_STATUS_CHANGE_NEW_MASTER,
	STATUS_LMU_STATUS_CHANGE_STANDBY_COMM,
	STATUS_LMU_STATUS_CHANGE_STANDBY_NOT_COMM,
	STATUS_STANDBY_LMU_NO_PORTS,
	STATUS_SWITCHOVER_IN_PROGRESS,

	STATUS_LAST_MASTER_PORT,
	STATUS_NOT_CONFIGD_DUAL,
	STATUS_DISALLOWED_ON_MASTER,
	STATUS_LMU_TO_LMU_LINK_BAD,
	STATUS_TOO_MANY_NAKS,

	STATUS_MASTER_NOT_RESPONDING,
	STATUS_MOVE_ACTIVITY,
	STATUS_VOLUME_MISSING,
	STATUS_VOLUME_BEING_RECOVERED,
	STATUS_INVALID_CLIENT,

	STATUS_VOLUME_REACTIVATED,
	STATUS_VOLUME_ABSENT,
	STATUS_UNIT_ATTENTION,
	STATUS_READY,
	STATUS_NOT_READY,

	STATUS_SERIAL_NUM_CHG,
	STATUS_HARDWARE_ERROR,
	STATUS_MONITOR_COMPLETE,
	STATUS_PTP_NOT_FOUND,
	STATUS_INVALID_EVENT_CLASS,

	STATUS_HAND_NOT_FOUND,
	STATUS_LMU_NOT_FOUND,
	STATUS_OPERATIVE,
	STATUS_INOPERATIVE,
	STATUS_MAINT_REQUIRED,

	STATUS_CAP_DOOR_CLOSED,
	STATUS_LSM_TYPE_CHG,
	STATUS_CONFIGURATION_CHANGED,
	STATUS_DRIVE_TYPE_CHG,
	STATUS_NI_TIMEOUT,

	STATUS_VOLUME_OVER_MAX_CLEAN,
	STATUS_VOLUME_CLEAN_CART_SPENT,
	STATUS_DRIVE_ADDED,
	STATUS_DRIVE_REMOVED,
	STATUS_LMU_TYPE_CHG,


	STATUS_LMU_COMPAT_LVL_CHG,
	STATUS_LMU_NOW_STANDALONE,
	STATUS_LMU_NOW_MASTER,
	STATUS_LMU_NOW_STANDBY,
	STATUS_PANEL_NOT_IN_LIBRARY,


	STATUS_PANEL_NOT_FOUND,
	STATUS_STORAGE_CELL_MAP_CHANGED,
	STATUS_NOT_A_DRIVE_PANEL,
	STATUS_NO_DRIVES_FOUND,
	STATUS_LKEY_INVALID,


	STATUS_LKEY_EXPIRED,
	STATUS_LKEY_DUE_TO_EXPIRE,
	STATUS_LKEY_CAPACITY_EXCEEDED,

	STATUS_LAST
} STATUS;

typedef enum {
	MODE_FIRST = 0,
	MODE_DUAL_LMU,
	MODE_SINGLE_LMU,
	MODE_SCSI_LMU,
	MODE_NONE,
	MODE_LAST
} MODE;

typedef enum {
	ROLE_FIRST = 0,
	ROLE_MASTER_A,
	ROLE_MASTER_B,
	ROLE_STANDBY_A,
	ROLE_STANDBY_B,
	ROLE_NONE,
	ROLE_LAST
} ROLE;

typedef enum {
	CHANGE_FIRST = 0,
	CHANGE_INCREMENT,
	CHANGE_DECREMENT,
	CHANGE_LAST
} CHANGE_DIRECTION;


typedef enum {
	EVENT_CLASS_FIRST = 0,
	EVENT_CLASS_VOLUME,
	EVENT_CLASS_RESOURCE,
	EVENT_CLASS_DRIVE_ACTIVITY,
	EVENT_CLASS_LAST
} EVENT_CLASS_TYPE;

typedef enum {
	EVENT_REPLY_FIRST = 0,
	EVENT_REPLY_REGISTER,
	EVENT_REPLY_UNREGISTER,
	EVENT_REPLY_SUPERCEDED,
	EVENT_REPLY_SHUTDOWN,
	EVENT_REPLY_CLIENT_CHECK,
	EVENT_REPLY_RESOURCE,
	EVENT_REPLY_VOLUME,
	EVENT_REPLY_DRIVE_ACTIVITY,
	EVENT_REPLY_LAST
} EVENT_REPLY_TYPE;


typedef enum {
	RESOURCE_FIRST = 0,
	RESOURCE_ONLINE = 1,
	RESOURCE_OFFLINE,
	RESOURCE_OPERATIVE,
	RESOURCE_INOPERATIVE,
	RESOURCE_MAINT_REQUIRED,
	RESOURCE_UNIT_ATTENTION,
	RESOURCE_HARDWARE_ERROR,
	RESOURCE_DEGRADED_MODE,
	RESOURCE_SERIAL_NUM_CHG,
	RESOURCE_DIAGNOSTIC,
	RESOURCE_SERV_CONFIG_MISMATCH = 21,
	RESOURCE_SERV_CONFIG_CHANGE,
	RESOURCE_SERV_START,
	RESOURCE_SERV_IDLE,
	RESOURCE_SERV_IDLE_PENDING,
	RESOURCE_SERV_FAILURE,
	RESOURCE_SERV_LOG_FAILED,
	RESOURCE_SERV_LOG_FILLED,

	RESOURCE_LMU_NEW_MASTER = 31,
	RESOURCE_LMU_STBY_COMM,
	RESOURCE_LMU_STBY_NOT_COMM,
	RESOURCE_LMU_RECOVERY_COMPLETE,
	RESOURCE_LMU_NOW_STANDBY,
	RESOURCE_LMU_NOW_STANDALONE,
	RESOURCE_LMU_TYPE_CHG,
	RESOURCE_LMU_COMPAT_LVL_CHG,


	RESOURCE_CAP_DOOR_OPEN  = 41,
	RESOURCE_CAP_DOOR_CLOSED,
	RESOURCE_CARTRIDGES_IN_CAP,
	RESOURCE_CAP_ENTER_START,
	RESOURCE_CAP_ENTER_END,
	RESOURCE_CAP_REMOVE_CARTRIDGES,
	RESOURCE_NO_CAP_AVAILABLE,
	RESOURCE_CAP_INSERT_MAGAZINES,
	RESOURCE_CAP_INPUT_CARTRIDGES,

	RESOURCE_LSM_DOOR_OPENED  = 51,
	RESOURCE_LSM_DOOR_CLOSED,
	RESOURCE_LSM_RECOVERY_INCOMPLETE,
	RESOURCE_LSM_TYPE_CHG,
	RESOURCE_LSM_ADDED,
	RESOURCE_LSM_CONFIG_CHANGE,
	RESOURCE_LSM_REMOVED,

	RESOURCE_DRIVE_CLEAN_REQUEST  = 61,
	RESOURCE_DRIVE_CLEANED,
	RESOURCE_DRIVE_TYPE_CHG,
	RESOURCE_DRIVE_ADDED,
	RESOURCE_DRIVE_REMOVED,


	RESOURCE_POOL_HIGHWATER = 71,
	RESOURCE_POOL_LOWWATER,

	RESOURCE_ACS_ADDED = 81,
	RESOURCE_ACS_CONFIG_CHANGE,
	RESOURCE_ACS_REMOVED,
	RESOURCE_ACS_PORTS_CHANGE,

	RESOURCE_CAP_ADDED =  91,
	RESOURCE_CAP_CONFIG_CHANGE,
	RESOURCE_CAP_REMOVED,

	RESOURCE_LAST = 99
} RESOURCE_EVENT;

typedef struct {
	int		category;
	int		code;
} SENSE_HLI;

typedef struct {
	unsigned char		sense_key;
	unsigned char		asc;
	unsigned char		ascq;
} SENSE_SCSI;

typedef struct {
	char		fsc[4];
} SENSE_FSC;

#define	MAX_SERIAL_NUM_LENGTH		32

typedef struct {
	char		serial_nbr[MAX_SERIAL_NUM_LENGTH +1];
} SERIAL_NUM;

typedef int LSM_TYPE;

#define	RESOURCE_ALIGN_PAD_SIZE		64

#endif /* _DB_DEFS_API_ */