1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21/* 22 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26#ifndef _SASINFO_H 27#define _SASINFO_H 28 29#ifdef __cplusplus 30extern "C" { 31#endif 32 33#include <stdio.h> 34#include <stdlib.h> 35#include <string.h> 36#include <libintl.h> 37#include <smhbaapi.h> 38#include <sys/types.h> 39#include <sys/scsi/scsi.h> 40#include <inttypes.h> 41#include <cmdparse.h> 42#include <netinet/in.h> 43#include <inttypes.h> 44#include <locale.h> 45 46#ifdef _BIG_ENDIAN 47#define htonll(x) (x) 48#define ntohll(x) (x) 49#else 50#define htonll(x) ((((unsigned long long)htonl(x)) << 32) + htonl(x >> 32)) 51#define ntohll(x) ((((unsigned long long)ntohl(x)) << 32) + ntohl(x >> 32)) 52#endif 53 54/* DEFINES */ 55#define DEFAULT_LUN_COUNT 1024 56#define LUN_SIZE 8 57#define LUN_HEADER_SIZE 8 58#define LUN_LENGTH LUN_SIZE + LUN_HEADER_SIZE 59#define DEFAULT_LUN_LENGTH DEFAULT_LUN_COUNT * \ 60 LUN_SIZE + \ 61 LUN_HEADER_SIZE 62 63/* flags that are needed to be passed into porcessHBA */ 64#define PRINT_VERBOSE 0x00000001 65#define PRINT_PHY 0x00000002 /* print phy addresses */ 66#define PRINT_PHY_LINKSTAT 0x00000004 /* print phy link statistics */ 67#define PRINT_TARGET_PORT 0x00000008 /* print target os deivce info */ 68#define PRINT_CHILD 0x00000010 /* print descendant nodes */ 69#define PRINT_TARGET_SCSI 0x00000020 /* print descendant nodes */ 70 71#define HBA_MAX_RETRIES 20 72 73typedef struct _tgtPortWWNList { 74 HBA_WWN portWWN; 75 HBA_UINT32 scsiOSLun; 76 struct _tgtPortWWNList *next; 77} tgtPortWWNList; 78 79typedef struct _portList { 80 char portName[MAXPATHLEN]; 81 tgtPortWWNList *tgtPortWWN; 82 struct _portList *next; 83} portList; 84 85/* Discovered LU structure */ 86typedef struct _discoveredDevice { 87 boolean_t inquiryFailed; 88 char OSDeviceName[MAXPATHLEN]; 89 portList *HBAPortList; 90 char VID[8]; 91 char PID[16]; 92 uchar_t dType; 93 struct _discoveredDevice *next; 94} discoveredDevice; 95 96typedef struct targetPortMappingData { 97 boolean_t mappingExist; 98 boolean_t inquiryFailed; 99 HBA_UINT32 osLUN; 100 SMHBA_SCSILUN reportLUN; 101 char osDeviceName[256]; 102 uchar_t inq_vid[8]; 103 uchar_t inq_pid[16]; 104 uchar_t inq_dtype; 105 struct targetPortMappingData *next; 106} targetPortMappingData_t; 107 108typedef struct targetPortConfig { 109 char hbaPortName[256]; 110 HBA_WWN expanderSASAddr; 111 int expanderValid; 112 boolean_t reportLUNsFailed; 113 struct targetPortMappingData *map; 114 struct targetPortConfig *next; 115} targetPortConfig_t; 116 117typedef struct targetPortList { 118 SMHBA_PORTATTRIBUTES targetattr; 119 SMHBA_SAS_PORT sasattr; 120 struct targetPortConfig *configEntry; 121 struct targetPortList *next; 122} targetPortList_t; 123 124int sas_util_list_hba(int hbaCount, char **hba_argv, cmdOptions_t *options); 125int sas_util_list_hbaport(int wwnCount, char **wwn_argv, cmdOptions_t *options); 126int sas_util_list_expander(int wwnCount, char **wwn_argv, 127 cmdOptions_t *options); 128int sas_util_list_targetport(int tpCount, char **tpArgv, cmdOptions_t *options); 129int sas_util_list_remoteport(int wwnCount, char **wwn_argv, 130 cmdOptions_t *options); 131int 132sas_util_list_logicalunit(int luCount, char **luArgv, cmdOptions_t *options); 133 134#ifdef __cplusplus 135} 136#endif 137 138#endif /* _SASINFO_H */ 139