fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * CDDL HEADER START
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * The contents of this file are subject to the terms of the
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Common Development and Distribution License (the "License").
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * You may not use this file except in compliance with the License.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * or http://www.opensolaris.org/os/licensing.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * See the License for the specific language governing permissions
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * and limitations under the License.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * When distributing Covered Code, include this CDDL HEADER in each
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * If applicable, add the following below this CDDL HEADER, with the
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * fields enclosed by brackets "[]" replaced with your own identifying
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * information: Portions Copyright [yyyy] [name of copyright owner]
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * CDDL HEADER END
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Use is subject to license terms.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <stdio.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <stdlib.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <unistd.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <hbaapi.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <errno.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <fcntl.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <string.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <sys/fibre-channel/fcio.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <sys/fibre-channel/impl/fc_error.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <sys/scsi/adapters/scsi_vhci.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include "common.h"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include "errorcodes.h"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte#include <locale.h>
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/* The i18n catalog */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortenl_catd l_catd;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortei18n_catopen() {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte static int fileopen = 0;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (setlocale(LC_ALL, "") == NULL) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) fprintf(stderr,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte "Cannot operate in the locale requested. "
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte "Continuing in the default C locale\n");
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (!fileopen) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte l_catd = catopen("a5k_g_fc_i18n_cat", NL_CAT_LOCALE);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (l_catd == (nl_catd)-1) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fileopen = 1;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Given an error number, this functions
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * calls the get_errString() to print a
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * corresponding error message to the stderr.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * get_errString() always returns an error
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * message, even in case of undefined error number.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * So, there is no need to check for a NULL pointer
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * while printing the error message to the stdout.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * RETURNS: N/A
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte *
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteprint_errString(int errnum, char *devpath)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte{
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortechar *errStr;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte errStr = get_errString(errnum);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (devpath == NULL) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) fprintf(stderr,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte "%s \n\n", errStr);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte } else {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) fprintf(stderr,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte "%s - %s.\n\n", errStr, devpath);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* free the allocated memory for error string */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (errStr != NULL)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) free(errStr);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortestatic void terminate() {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fprintf(stdout, MSGSTR(2506, "Unsupported"));
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fprintf(stdout, "\n");
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte exit(1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_display_config(char **a) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid adm_download(char **a, char *b) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid up_encl_name(char **a, int b) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid adm_failover(char **argv) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int path_index = 0, err = 0, fd;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte char path_class[MAXNAMELEN];
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte char client_path[MAXPATHLEN];
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte char *path_phys = NULL, *trailingMinor;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte sv_switch_to_cntlr_iocdata_t iocsc;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) memset(path_class, 0, sizeof (path_class));
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) strcpy(path_class, argv[path_index++]);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if ((strcmp(path_class, "primary") != 0) &&
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (strcmp(path_class, "secondary") != 0)) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) fprintf(stderr,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte MSGSTR(2300, "Incorrect pathclass\n"));
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte exit(-1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if ((fd = open("/devices/scsi_vhci:devctl", O_RDWR)) < 0) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(L_OPEN_PATH_FAIL, "/devices/scsi_vhci:devctl");
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte exit(-1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte iocsc.client = client_path;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte iocsc.class = path_class;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte while (argv[path_index] != NULL) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte path_phys =
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte get_slash_devices_from_osDevName(argv[path_index++],
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte STANDARD_DEVNAME_HANDLING);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if ((path_phys == NULL) ||
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (strstr(path_phys, "/devices/scsi_vhci") == NULL)) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) fprintf(stderr,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte MSGSTR(2301, "Incorrect pathname\n"));
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte close(fd);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte exit(-1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte strcpy(iocsc.client, path_phys + strlen("/devices"));
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* Now chop off the trailing ":xxx" portion if present */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if ((trailingMinor = strrchr(iocsc.client, ':')) != NULL) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte trailingMinor[0] = '\0';
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (ioctl(fd, SCSI_VHCI_SWITCH_TO_CNTLR, &iocsc) != 0) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte switch (errno) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte case EALREADY:
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte err = L_SCSI_VHCI_ALREADY_ACTIVE;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte case ENXIO:
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte err = L_INVALID_PATH;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte case EIO:
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte err = L_SCSI_VHCI_NO_STANDBY;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte case ENOTSUP:
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte err = L_SCSI_VHCI_FAILOVER_NOTSUP;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte case EBUSY:
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte err = L_SCSI_VHCI_FAILOVER_BUSY;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte case EFAULT:
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte default:
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte err = L_SCSI_VHCI_ERROR;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (err != 0) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte close(fd);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(err, path_phys);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte exit(-1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte close(fd);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_inquiry(char **a) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid pho_probe() {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid non_encl_probe() {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid adm_led(char **a, int b) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid up_password(char **a) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_reserve(char *path) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_release(char *path) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_start(char **a) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_stop(char **a) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_power_off(char **a, int b) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteadm_forcelip(char **argv)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte{
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int path_index = 0, fd;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint64_t wwn;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fcio_t fcio;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte HBA_HANDLE handle;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte HBA_ADAPTERATTRIBUTES hbaAttrs;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte HBA_PORTATTRIBUTES portAttrs;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte HBA_FCPTARGETMAPPINGV2 *map;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte HBA_STATUS status;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int count, adapterIndex, portIndex, mapIndex;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte char name[256];
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte int matched, ret = 0, wwnCompare = 0, ntries;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte char *physical = NULL, *slash_OSDeviceName = NULL;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if ((status = loadLibrary())) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* loadLibrary print out error msg */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (ret++);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte for (path_index = 0; argv[path_index] != NULL; path_index++) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (is_wwn(argv[path_index])) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) sscanf(argv[path_index], "%016llx", &wwn);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte wwnCompare = 1;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte } else if (!is_path(argv[path_index])) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(L_INVALID_PATH, argv[path_index]);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ret++;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (!wwnCompare) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* Convert the paths to phsyical paths */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte physical = get_slash_devices_from_osDevName(argv[path_index],
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte STANDARD_DEVNAME_HANDLING);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (!physical) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(L_INVALID_PATH, argv[path_index]);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ret++;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte count = getNumberOfAdapters();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte matched = 0;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte for (adapterIndex = 0; adapterIndex < count; adapterIndex ++) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte status = HBA_GetAdapterName(adapterIndex, (char *)&name);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (status != HBA_STATUS_OK) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* May have been DR'd */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte handle = HBA_OpenAdapter(name);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (handle == 0) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* May have been DR'd */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (getAdapterAttrs(handle, name, &hbaAttrs)) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* Should never happen */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte HBA_CloseAdapter(handle);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* Loop over all HBA Ports */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte for (portIndex = 0; portIndex < hbaAttrs.NumberOfPorts;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte portIndex++) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (getAdapterPortAttrs(handle, name, portIndex,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte &portAttrs)) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte matched = 0;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (is_wwn(argv[path_index])) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (wwn == wwnConversion(
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte portAttrs.NodeWWN.wwn) ||
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte wwn == wwnConversion(
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte portAttrs.PortWWN.wwn)) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte matched = 1;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte } else {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte slash_OSDeviceName = get_slash_devices_from_osDevName(
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte portAttrs.OSDeviceName, STANDARD_DEVNAME_HANDLING);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (!slash_OSDeviceName) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte } else {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (strncmp(physical, slash_OSDeviceName,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte strlen(slash_OSDeviceName) -
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte strlen(strrchr(slash_OSDeviceName, ':')))
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte == 0) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte matched = 1;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte free(slash_OSDeviceName);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (!matched) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (!fetch_mappings(handle, portAttrs.PortWWN, &map)) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * matchr_mapping checks the arg
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * so we pass argv here.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte mapIndex = match_mappings(argv[path_index], map);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (mapIndex >= 0) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte matched = 1;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte } else {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (matched) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if ((fd = open(portAttrs.OSDeviceName,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte O_RDONLY | O_EXCL)) == -1) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(L_OPEN_PATH_FAIL,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte portAttrs.OSDeviceName);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (ret++);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fcio.fcio_cmd = FCIO_RESET_LINK;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fcio.fcio_xfer = FCIO_XFER_WRITE;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Reset the local loop here (fcio_ibuf = 0).
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * Reset a remote loop on the Fabric by
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * passing its node wwn (fcio_len = sizeof(nwwn)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * and fcio_ibuf = (caddr_t)&nwwn) to the port driver.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) memset(&wwn, 0, sizeof (wwn));
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fcio.fcio_ilen = sizeof (wwn);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fcio.fcio_ibuf = (caddr_t)&wwn;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte for (ntries = 0; ntries < RETRY_FCIO_IOCTL; ntries++) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte errno = 0;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (ioctl(fd, FCIO_CMD, &fcio) != 0) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /*
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * When port is offlined, qlc
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * returns the FC_OFFLINE error and errno
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * is set to EIO.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * We do want to ignore this error,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * especially when an enclosure is
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte * removed from the loop.
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (fcio.fcio_errno == FC_OFFLINE)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if ((errno == EAGAIN) &&
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (ntries+1 < RETRY_FCIO_IOCTL)) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte /* wait WAIT_FCIO_IOCTL */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte (void) usleep(WAIT_FCIO_IOCTL);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte continue;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte I_DPRINTF("FCIO ioctl failed.\n"
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte "Error: %s. fc_error = %d (0x%x)\n",
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte strerror(errno), fcio.fcio_errno,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte fcio.fcio_errno);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte close(fd);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(L_FCIO_FORCE_LIP_FAIL,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte portAttrs.OSDeviceName);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (ret++);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte } else {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break; /* ioctl succeeds. */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte close(fd);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (ntries == RETRY_FCIO_IOCTL) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(L_FCIO_FORCE_LIP_FAIL,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte portAttrs.OSDeviceName);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (ret++);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (matched)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break; /* for HBA port for loop */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (matched) /* HBA adapter for loop */
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte break;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte if (!matched) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte print_errString(L_INVALID_PATH, argv[path_index]);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte ret++;
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte }
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte HBA_FreeLibrary();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (ret);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid adm_bypass_enable(char **argv, int bypass_flag) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_port_offline_online(char **a, int b) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid display_link_status(char **a) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid dump_map(char **argv) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_display_port(int a) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_port_loopback(char *a, int b) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint hotplug_e(int todo, char **argv, int verbose_flag, int force_flag) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortesetboot(unsigned int yes, unsigned int verbose, char *fname)
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte{
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint hotplug(int todo, char **argv, int verbose_flag, int force_flag) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint adm_check_file(char **argv, int flag) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint sysdump(int verbose) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint fcal_update(unsigned int verbose, char *file) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint q_qlgc_update(unsigned int verbose, char *file) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint emulex_update(char *file) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint emulex_fcode_reader(int fcode_fd, char *pattern, char *pattern_value,
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte uint32_t pattern_value_size) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Fortevoid dump(char **argv) {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte/*ARGSUSED*/
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forteint h_insertSena_fcdev() {
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte terminate();
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte return (1);
fcf3ce441efd61da9bb2884968af01cb7c1452ccJohn Forte}