OpenSolaris_b135/common/mms/h/defs.h

Compare this file to the similar file:
Show the results in this format:

/*
 * 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 _DEFS_
#define	_DEFS_

#if ! defined(__sys_types_h) && ! defined(_H_TYPES)
#include <sys/types.h>
#endif

#ifndef sun
#ifndef _H_SELECT
#include <sys/select.h>
#endif
#endif

#ifndef _DB_DEFS_
#include "db_defs.h"
#endif

#ifndef _DEFS_API_
#include "api/defs_api.h"
#endif


#ifndef SA_RESTART
#define	SA_RESTART	0
#endif

#ifndef		MAX
#define	 MAX(a, b)  (((a) > (b)) ? (a) : (b))
#endif

#ifndef		MIN
#define	 MIN(a, b)  (((a) < (b)) ? (a) : (b))
#endif

#define	DEFAULT_TIME_FORMAT   "%m-%d-%y %H:%M:%S"


typedef		enum  {
	LH_ERR_FIRST = 0,
	LH_ERR_ADDR_INACCESSIBLE,
	LH_ERR_ADDR_TYPE_INVALID,
	LH_ERR_ADDR_UNDEFINED,
	LH_ERR_CANCEL_PENDING,

	LH_ERR_CANCEL_TOO_LATE,
	LH_ERR_CAP_BUSY,
	LH_ERR_CAP_FAILURE,
	LH_ERR_DESTINATION_FULL,
	LH_ERR_FIRST_EXCEEDS_LAST,

	LH_ERR_LH_BUSY,
	LH_ERR_LH_FAILURE,
	LH_ERR_LMU_FAILURE,
	LH_ERR_LSM_FAILURE,
	LH_ERR_LSM_OFFLINE,

	LH_ERR_LSM_OFFLINE_MTCE,
	LH_ERR_MULTI_ACS,
	LH_ERR_MULTI_LSM,
	LH_ERR_MULTI_PANEL,
	LH_ERR_MULTI_TYPE,

	LH_ERR_PATH_UNAVAILABLE,
	LH_ERR_PORT_CONNECT,
	LH_ERR_PORT_DISCONNECT,
	LH_ERR_REQUEST_CANCELLED,
	LH_ERR_REQUEST_INVALID,

	LH_ERR_REQUEST_NOT_ACTIVE,
	LH_ERR_SOURCE_EMPTY,
	LH_ERR_TRANSPORT_BUSY,
	LH_ERR_TRANSPORT_FAILURE,
	LH_ERR_UNABLE_TO_CANCEL,

	LH_ERR_VARY_OVERRIDDEN,
	LH_ERR_VARY_PENDING,
	LH_ERR_VSN_INVALID,
	LH_ERR_VSN_VERIF_FAILED,
	LH_ERR_ALREADY_RESERVED,

	LH_ERR_CAP_OPEN,
	LH_ERR_LMU_LEVEL_INVALID,
	LH_ERR_NO_ERROR,
	LH_ERR_NOT_RESERVED,
	LH_ERR_NO_MAGAZINE,

	LH_ERR_MEDIA_VERIF_FAIL,
	LH_ERR_MEDIA_VSN_VERIF_FAIL,
	LH_ERR_INCOMPATIBLE_MEDIA_DRIVE,
	LH_ERR_MEDIA_TYPE_INVALID,
	LH_ERR_LAST
} LH_ERR_TYPE;

#define	CAP_MSG_INTERVAL		120
#define	DATAGRAM_PATH		"/tmp/"
#define	MAX_ACSMT_PROCS		2
#define	MAX_CSI		20
#define	MAX_LSM_PTP		5
#define	MAX_PORTS		16
#define	MAX_RETRY		10
#define	RETRY_TIMEOUT		2


#define	RETRY		0x01

#define	ACSEL	"50001"
#define	ACSLH	"50002"
#define	ACSLM	"50003"
#define	ACSSA	"50004"
#define	ACSSS	"50005"
#define	ACSPD	"50006"
#define	ACSLOCK	"50007"
#define	ACSSV	"50008"
#define	ACSCM	"50009"
#define	ACES	"50010"
#define	ACSMT	"50100"
#define	ANY_PORT	"0"

#define	TRACE_ACSSS_DAEMON		0x00000100L
#define	TRACE_CSI		0x00000200L
#define	TRACE_ACSLM		0x00000400L
#define	TRACE_MOUNT		0x00000800L
#define	TRACE_DISMOUNT		0x00001000L
#define	TRACE_ENTER		0x00002000L
#define	TRACE_EJECT		0x00004000L
#define	TRACE_AUDIT		0x00008000L
#define	TRACE_QUERY		0x00010000L
#define	TRACE_VARY		0x00020000L
#define	TRACE_RECOVERY		0x00040000L
#define	TRACE_ACSSA		0x00080000L
#define	TRACE_CP		0x00100000L
#define	TRACE_LIBRARY_HANDLER		0x00200000L
#define	TRACE_EVENT_LOGGER		0x00400000L
#define	TRACE_CSI_PACKETS		0x00800000L
#define	TRACE_LOCK_SERVER		0x01000000L
#define	TRACE_SET_CAP		0x02000000L
#define	TRACE_SET_CLEAN		0x04000000L
#define	TRACE_ACSCM		0x08000000L


#define	TRACE(lev)           \
/ (trace_value != 0 && (trace_value & 0xff) >= lev)

typedef void (*SIGFUNCP)();


typedef enum {
	CLM_FIRST = 0,
	CLM_ABORT_TRANSITION,
	CLM_ALLOC_ERROR,
	CLM_ASSERTION,
	CLM_CAT_TARGET_ERROR,

	CLM_DB_DEADLOCK,
	CLM_DB_TIMEOUT,
	CLM_DUP_TYPE_NUM,
	CLM_DUP_TYPE_STR,
	CLM_DESTINATION_FULL,

	CLM_FILE_PROBLEM,
	CLM_FIXED_MEDIA_TYPE,
	CLM_FIXED_VOLUME_TYPE,
	CLM_FUNC_FAILED,
	CLM_INC_TYPES,

	CLM_INV_ARG_NUM,
	CLM_INV_ARG_STR,
	CLM_INV_NUM_ARGS,
	CLM_IPC_ATTACH,
	CLM_IPC_OPEN,

	CLM_IPC_SEND,
	CLM_KILL_ERROR,
	CLM_LOCKED_VOL_DELETED,
	CLM_MSG_TIMEOUT,
	CLM_MSG_TOO_SMALL,

	CLM_NO_TYPES,
	CLM_NOT_BOOLEAN,
	CLM_NOT_DEFINED,
	CLM_SIGNAL_ERROR,
	CLM_SOURCE_EMPTY,

	CLM_TABLE_INCORRECT,
	CLM_TOO_MANY_COMPAT,
	CLM_TRACE_TRANSITION,
	CLM_UNDEF_TRANSITION,
	CLM_UNEXP_CAT_STATUS,

	CLM_UNEXP_COMMAND,
	CLM_UNEXP_EVENT,
	CLM_UNEXP_LD_STATUS,
	CLM_UNEXP_LH_REQUEST,
	CLM_UNEXP_LH_RESPONSE,

	CLM_UNEXP_MESSAGE,
	CLM_UNEXP_ORIGINATOR,
	CLM_UNEXP_REQUESTOR,
	CLM_UNEXP_SIGNAL,
	CLM_UNEXP_STATE,

	CLM_UNEXP_STATUS,
	CLM_UNEXP_TYPE,
	CLM_UNKNOWN_MEDIA_TYPE,
	CLM_UNLINK_ERROR,
	CLM_UNSUP_LH_ERROR,

	CLM_UNSUP_LH_REQUEST,
	CLM_UNSUP_VERSION,
	CLM_VOL_FOUND,
	CLM_VOL_MISPLACED,
	CLM_VOL_MOVED,

	CLM_VOL_NOT_FOUND,
	CLM_LAST
} CL_MESSAGE;

typedef enum {
	FIELD_FIRST = 0,
	FIELD_ACTIVITY,
	FIELD_CAP_MODE,
	FIELD_LOCKID,
	FIELD_MAX_USE,

	FIELD_POOLID,
	FIELD_PRIORITY,
	FIELD_STATE,
	FIELD_STATUS,
	FIELD_VOLUME_TYPE,

	FIELD_LAST
} FIELD;


typedef enum {
	LOG_OPTION_FIRST = 0,
	LOG_OPTION_EVENT,
	LOG_OPTION_TRACE,
	LOG_OPTION_LAST
} LOG_OPTION;

typedef enum {
	QUERY_TYPE_FIRST = 0,
	QUERY_TYPE_ALL,
	QUERY_TYPE_ALL_ACS,
	QUERY_TYPE_ALL_CELL,
	QUERY_TYPE_ALL_DRIVE,

	QUERY_TYPE_ALL_LSM,
	QUERY_TYPE_LSM_RESERVED,
	QUERY_TYPE_NEXT,
	QUERY_TYPE_ONE,
	QUERY_TYPE_ONE_CELL,

	QUERY_TYPE_ONE_DRIVE,
	QUERY_TYPE_LAST
} QUERY_TYPE;

typedef enum {
	SELECT_OPTION_FIRST = 0,
	SELECT_OPTION_ACS,
	SELECT_OPTION_LSM,
	SELECT_OPTION_LAST
} SELECT_OPTION;

typedef enum {
	WRITE_MODE_FIRST = 0,
	WRITE_MODE_CREATE,
	WRITE_MODE_UPDATE,
	WRITE_MODE_LAST
} WRITE_MODE;

#define	MEDIA_TYPE_LEN		3
#define	DRIVE_TYPE_LEN		3

#define	MM_MAX_MEDIA_TYPES	36
#define	MM_MAX_DRIVE_TYPES	40

#define	MM_MEDIA_DB_STR_LEN	(MM_MAX_MEDIA_TYPES*(MEDIA_TYPE_LEN + 1))+1
#define	MM_DRIVE_DB_STR_LEN	(MM_MAX_DRIVE_TYPES*(DRIVE_TYPE_LEN + 1))+1

#ifndef LINUX
extern		char		*sys_errlist[];
extern		char		*sys_siglist[];
#endif


extern		char		acsss_version[];
extern int		sd_in;
extern int		n_fds;
extern int		fd_list[FD_SETSIZE];

extern char		my_sock_name[SOCKET_NAME_SIZE];

extern TYPE		my_module_type;
extern TYPE		requestor_type;
extern int		restart_count;
extern MESSAGE_ID		request_id;

extern STATE		process_state;
extern unsigned long		trace_module;
extern unsigned long		trace_value;


#endif /* _DEFS_ */