ident_api.h revision cee0fb94c0d4227de0a00efc162fb2739844b641
/*
* 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 _IDENT_API_H_
#define _IDENT_API_H_
#define IDENTIFIER_SIZE 64
#define REGISTRATION_ID_SIZE 32
typedef struct {
ACS acs;
LSM lsm;
} LSMID;
typedef LSMID V0_CAPID;
typedef LSMID V1_CAPID;
typedef struct {
LSMID lsm_id;
CAP cap;
} CAPID;
typedef struct {
ACS acs;
PORT port;
} PORTID;
typedef struct {
LSMID lsm_id;
PANEL panel;
} PANELID;
typedef struct {
ACS acs;
LSM master_lsm;
PANEL master_panel;
LSM slave_lsm;
PANEL slave_panel;
} PTPID;
typedef struct {
PANELID panel_id;
ROW begin_row;
COL begin_col;
ROW end_row;
COL end_col;
} SUBPANELID;
typedef struct {
PANELID panel_id;
DRIVE drive;
} DRIVEID;
typedef struct {
PANELID panel_id;
ROW row;
COL col;
} CELLID;
typedef struct {
char external_label[EXTERNAL_LABEL_SIZE + 1];
} VOLID;
typedef struct {
POOL pool;
} POOLID;
typedef struct {
VOLID startvol;
VOLID endvol;
} VOLRANGE;
typedef struct {
PANEL panel;
DRIVE drive;
} VIRTUAL_TAPE_DRIVE;
typedef struct {
ACS acs;
LSM lsm;
VIRTUAL_TAPE_DRIVE vtd;
} VTDID;
typedef struct {
char mgmt_clas[MGMT_CLAS_SIZE + 1];
} MGMT_CLAS;
typedef struct {
char subpool_name[SUBPOOL_NAME_SIZE + 1];
} SUBPOOL_NAME;
typedef struct {
char job_name[JOB_NAME_SIZE + 1];
} JOB_NAME;
typedef struct {
char step_name[STEP_NAME_SIZE + 1];
} STEP_NAME;
typedef struct {
char dataset_name[DATASET_NAME_SIZE + 1];
} DATASET_NAME;
typedef struct {
char groupid[GROUPID_SIZE + 1];
} GROUPID;
typedef struct {
char registration[REGISTRATION_ID_SIZE + 1];
} REGISTRATION_ID;
typedef enum {
EVENT_REGISTER_FIRST = 0,
EVENT_REGISTER_REGISTERED,
EVENT_REGISTER_UNREGISTERED,
EVENT_REGISTER_INVALID_CLASS,
EVENT_REGISTER_LAST
} EVENT_CLASS_REGISTER_RETURN;
typedef struct {
EVENT_CLASS_TYPE event_class;
EVENT_CLASS_REGISTER_RETURN register_return;
} REGISTER_STATUS;
typedef enum {
VOL_FIRST = 0,
VOL_ENTERED,
VOL_ADDED,
VOL_REACTIVATED,
VOL_EJECTED,
VOL_DELETED,
VOL_MARKED_ABSENT,
VOL_OVER_MAX_CLEAN,
VOL_CLEAN_CART_SPENT,
VOL_HOME_LSM_CHG,
VOL_OWNER_CHG,
VOL_LAST
} VOL_EVENT_TYPE;
typedef struct {
VOL_EVENT_TYPE event_type;
VOLID vol_id;
} EVENT_VOLUME_STATUS;
typedef struct {
PANELID panel_id;
HAND hand;
} HANDID;
#define ALIGNMENT_PAD_SIZE 32
typedef union {
ACS acs_id;
V0_CAPID v0_cap_id;
V1_CAPID v1_cap_id;
CAPID cap_id;
CELLID cell_id;
DRIVEID drive_id;
LSMID lsm_id;
PANELID panel_id;
PORTID port_id;
SUBPANELID subpanel_id;
VOLID vol_id;
POOLID pool_id;
LOCKID lock_id;
char socket_name[SOCKET_NAME_SIZE];
long request;
short lh_error;
MEDIA_TYPE media_type;
DRIVE_TYPE drive_type;
HANDID hand_id;
PTPID ptp_id;
VTDID vtd_id;
SUBPOOL_NAME subpool_name;
MGMT_CLAS mgmt_clas;
JOB_NAME job_name;
STEP_NAME step_name;
GROUPID groupid;
char alignment_size[ALIGNMENT_PAD_SIZE];
} IDENTIFIER;
typedef enum {
SENSE_TYPE_FIRST = 0,
SENSE_TYPE_NONE,
SENSE_TYPE_HLI,
SENSE_TYPE_SCSI,
SENSE_TYPE_FSC,
RESOURCE_CHANGE_SERIAL_NUM,
RESOURCE_CHANGE_LSM_TYPE,
RESOURCE_CHANGE_DRIVE_TYPE,
DRIVE_ACTIVITY_DATA_TYPE,
SENSE_TYPE_LAST
} RESOURCE_DATA_TYPE;
typedef struct {
long start_time;
long completion_time;
VOLID vol_id;
VOLUME_TYPE volume_type;
DRIVEID drive_id;
POOLID pool_id;
CELLID home_location;
} DRIVE_ACTIVITY_DATA;
typedef union {
SENSE_HLI sense_hli;
SENSE_SCSI sense_scsi;
SENSE_FSC sense_fsc;
SERIAL_NUM serial_num;
LSM_TYPE lsm_type;
DRIVE_TYPE drive_type;
DRIVE_ACTIVITY_DATA drive_activity_data;
char resource_align_pad[RESOURCE_ALIGN_PAD_SIZE];
} RESOURCE_DATA;
typedef struct {
TYPE resource_type;
IDENTIFIER resource_identifier;
RESOURCE_EVENT resource_event;
RESOURCE_DATA_TYPE resource_data_type;
RESOURCE_DATA resource_data;
} EVENT_RESOURCE_STATUS;
typedef struct {
TYPE event_type;
RESOURCE_DATA_TYPE resource_data_type;
RESOURCE_DATA resource_data;
} EVENT_DRIVE_STATUS;
#define MAX_EVENT_CLASS_TYPE 3
typedef struct {
REGISTRATION_ID registration_id;
unsigned short count;
REGISTER_STATUS register_status[MAX_EVENT_CLASS_TYPE];
} EVENT_REGISTER_STATUS;
#define EVENT_ALIGN_PAD_SIZE 128
typedef union {
EVENT_REGISTER_STATUS event_register_status;
EVENT_VOLUME_STATUS event_volume_status;
EVENT_RESOURCE_STATUS event_resource_status;
EVENT_DRIVE_STATUS event_drive_status;
char event_align_pad[EVENT_ALIGN_PAD_SIZE];
} EVENT;
#endif /* _IDENT_API_H_ */