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