%/* % * 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 #ifdef RPC_SVC % %#include #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;