%/*
% * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
% * Use is subject to license terms.
% *
% * CDDL HEADER START
% *
% * The contents of this file are subject to the terms of the
% * Common Development and Distribution License, Version 1.0 only
% * (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
% */
%
%#pragma ident "%Z%%M% %I% %E% SMI"
%
/* pick up multihost ioctl definitions */
%#include <mhdx.h>
#ifdef RPC_SVC
%
%#include <signal.h>
#endif /* RPC_SVC */
#ifdef RPC_HDR
%
%/*
% * error info
% */
%#define MHD_E_MAJORITY -1 /* couldn't get majority reservation */
%#define MHD_E_RESERVED -2 /* drive is reserved */
#endif /* RPC_HDR */
struct mhd_error_t {
int errnum; /* errno or negative error code */
string name<>; /* associated name */
};
#ifdef RPC_HDR
%
%/*
% * null error constant
% */
%#define MHD_NULL_ERROR { 0, NULL }
#endif /* RPC_HDR */
#ifdef RPC_XDR
%
%/*
% * Constant null error struct.
% */
%const mhd_error_t mhd_null_error = MHD_NULL_ERROR;
#endif /* RPC_XDR */
#ifdef RPC_HDR
%
%/*
% * External reference to constant null error struct. (decl. in metamhd_xdr.c)
% */
%extern const mhd_error_t mhd_null_error;
#endif /* RPC_HDR */
%
%/*
% * drivename type
% */
typedef string mhd_drivename_t<>;
%
%/*
% * set definition
% */
struct mhd_set_t {
string setname<>; /* set name */
mhd_drivename_t drives<>; /* drive names */
};
%
%/*
% * common options
% */
typedef u_int mhd_opts_t;
#ifdef RPC_HDR
%
%#define MHD_PARTIAL_SET 0x01 /* partial set definition */
%#define MHD_SERIAL 0x02 /* process disks serially */
#endif /* RPC_HDR */
%
%/*
% * take ownership
% */
enum mhd_ff_mode_t {
MHD_FF_NONE, /* no failfast */
MHD_FF_DRIVER, /* set failfast on each drive */
MHD_FF_DEBUG, /* use /dev/ff debug mode */
MHD_FF_HALT, /* use /dev/ff halt mode */
MHD_FF_PANIC /* use /dev/ff panic mode */
};
struct mhd_tkown_args_t {
mhd_set_t set; /* set definition */
mhd_mhiargs_t timeouts; /* timeout values */
mhd_ff_mode_t ff_mode; /* failfast mode */
mhd_opts_t options; /* options */
};
%
%/*
% * release ownership
% */
struct mhd_relown_args_t {
mhd_set_t set; /* set definition */
mhd_opts_t options; /* options */
};
%
%/*
% * inquire status
% */
struct mhd_status_args_t {
mhd_set_t set; /* set definition */
mhd_opts_t options; /* options */
};
struct mhd_drive_status_t {
mhd_drivename_t drive; /* drive name */
int errnum; /* drive status */
};
struct mhd_status_res_t {
mhd_error_t status; /* status of command */
mhd_drive_status_t results<>; /* drive status */
};
%/*
% * get local drives
% */
struct mhd_list_args_t {
string path<>; /* where to look (or NULL) */
mhd_did_flags_t flags; /* what to get */
};
struct mhd_list_res_t {
mhd_error_t status; /* status of command */
mhd_drive_info_list_t results; /* drive info list */
};
%
%/*
% * authorization info
% */
const METAMHD_GID = 14; /* magic sysadmin group */
%
%/*
% * services available
% */
program METAMHD {
version METAMHD_VERSION {
mhd_error_t
mhd_tkown(mhd_tkown_args_t) = 1;
mhd_error_t
mhd_relown(mhd_relown_args_t) = 2;
mhd_status_res_t
mhd_status(mhd_status_args_t) = 3;
mhd_list_res_t
mhd_list(mhd_list_args_t) = 4;
} = 1;
} = 100230;