1*7836SJohn.Forte@Sun.COM /*
2*7836SJohn.Forte@Sun.COM  * CDDL HEADER START
3*7836SJohn.Forte@Sun.COM  *
4*7836SJohn.Forte@Sun.COM  * The contents of this file are subject to the terms of the
5*7836SJohn.Forte@Sun.COM  * Common Development and Distribution License (the "License").
6*7836SJohn.Forte@Sun.COM  * You may not use this file except in compliance with the License.
7*7836SJohn.Forte@Sun.COM  *
8*7836SJohn.Forte@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*7836SJohn.Forte@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*7836SJohn.Forte@Sun.COM  * See the License for the specific language governing permissions
11*7836SJohn.Forte@Sun.COM  * and limitations under the License.
12*7836SJohn.Forte@Sun.COM  *
13*7836SJohn.Forte@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*7836SJohn.Forte@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*7836SJohn.Forte@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*7836SJohn.Forte@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*7836SJohn.Forte@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*7836SJohn.Forte@Sun.COM  *
19*7836SJohn.Forte@Sun.COM  * CDDL HEADER END
20*7836SJohn.Forte@Sun.COM  */
21*7836SJohn.Forte@Sun.COM /*
22*7836SJohn.Forte@Sun.COM  * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23*7836SJohn.Forte@Sun.COM  * Use is subject to license terms.
24*7836SJohn.Forte@Sun.COM  */
25*7836SJohn.Forte@Sun.COM 
26*7836SJohn.Forte@Sun.COM #ifndef	_LIBSTMF_H
27*7836SJohn.Forte@Sun.COM #define	_LIBSTMF_H
28*7836SJohn.Forte@Sun.COM 
29*7836SJohn.Forte@Sun.COM #include <time.h>
30*7836SJohn.Forte@Sun.COM #include <sys/param.h>
31*7836SJohn.Forte@Sun.COM #include <libnvpair.h>
32*7836SJohn.Forte@Sun.COM 
33*7836SJohn.Forte@Sun.COM #ifdef	__cplusplus
34*7836SJohn.Forte@Sun.COM extern "C" {
35*7836SJohn.Forte@Sun.COM #endif
36*7836SJohn.Forte@Sun.COM 
37*7836SJohn.Forte@Sun.COM /* Constants and Types */
38*7836SJohn.Forte@Sun.COM 
39*7836SJohn.Forte@Sun.COM /* LU and Local Port states */
40*7836SJohn.Forte@Sun.COM #define	STMF_LOGICAL_UNIT_OFFLINE	0
41*7836SJohn.Forte@Sun.COM #define	STMF_LOGICAL_UNIT_OFFLINING	1
42*7836SJohn.Forte@Sun.COM #define	STMF_LOGICAL_UNIT_ONLINE	2
43*7836SJohn.Forte@Sun.COM #define	STMF_LOGICAL_UNIT_ONLINING	3
44*7836SJohn.Forte@Sun.COM #define	STMF_LOGICAL_UNIT_UNREGISTERED	4
45*7836SJohn.Forte@Sun.COM #define	STMF_TARGET_PORT_OFFLINE	5
46*7836SJohn.Forte@Sun.COM #define	STMF_TARGET_PORT_OFFLINING	6
47*7836SJohn.Forte@Sun.COM #define	STMF_TARGET_PORT_ONLINE		7
48*7836SJohn.Forte@Sun.COM #define	STMF_TARGET_PORT_ONLINING	8
49*7836SJohn.Forte@Sun.COM #define	STMF_SERVICE_STATE_ONLINE	9
50*7836SJohn.Forte@Sun.COM #define	STMF_SERVICE_STATE_OFFLINE	10
51*7836SJohn.Forte@Sun.COM #define	STMF_SERVICE_STATE_ONLINING	11
52*7836SJohn.Forte@Sun.COM #define	STMF_SERVICE_STATE_OFFLINING	12
53*7836SJohn.Forte@Sun.COM #define	STMF_SERVICE_STATE_UNKNOWN	13
54*7836SJohn.Forte@Sun.COM #define	STMF_CONFIG_STATE_NONE		14
55*7836SJohn.Forte@Sun.COM #define	STMF_CONFIG_STATE_INIT		15
56*7836SJohn.Forte@Sun.COM #define	STMF_CONFIG_STATE_INIT_DONE	16
57*7836SJohn.Forte@Sun.COM #define	STMF_CONFIG_STATE_UNKNOWN	17
58*7836SJohn.Forte@Sun.COM 
59*7836SJohn.Forte@Sun.COM #define	STMF_IDENT_LENGTH   255
60*7836SJohn.Forte@Sun.COM 
61*7836SJohn.Forte@Sun.COM /* API status return values */
62*7836SJohn.Forte@Sun.COM #define	STMF_STATUS_SUCCESS	    0x0000
63*7836SJohn.Forte@Sun.COM #define	STMF_STATUS_ERROR	    0x8000
64*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_BUSY			(STMF_STATUS_ERROR | 0x01)
65*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_NOT_FOUND		(STMF_STATUS_ERROR | 0x02)
66*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_MEMBER_NOT_FOUND	(STMF_STATUS_ERROR | 0x03)
67*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_GROUP_NOT_FOUND	(STMF_STATUS_ERROR | 0x04)
68*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_PERM			(STMF_STATUS_ERROR | 0x05)
69*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_NOMEM		(STMF_STATUS_ERROR | 0x06)
70*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_INVALID_ARG		(STMF_STATUS_ERROR | 0x07)
71*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_EXISTS		(STMF_STATUS_ERROR | 0x08)
72*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_SERVICE_NOT_FOUND	(STMF_STATUS_ERROR | 0x09)
73*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_SERVICE_ONLINE	(STMF_STATUS_ERROR | 0x0a)
74*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_SERVICE_OFFLINE	(STMF_STATUS_ERROR | 0x0b)
75*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_GROUP_IN_USE		(STMF_STATUS_ERROR | 0x0c)
76*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_LUN_IN_USE		(STMF_STATUS_ERROR | 0x0d)
77*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_VE_CONFLICT		(STMF_STATUS_ERROR | 0x0e)
78*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_CONFIG_NONE		(STMF_STATUS_ERROR | 0x0f)
79*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_SERVICE_DATA_VERSION (STMF_STATUS_ERROR | 0x10)
80*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_INVALID_HG		(STMF_STATUS_ERROR | 0x11)
81*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_INVALID_TG		(STMF_STATUS_ERROR | 0x12)
82*7836SJohn.Forte@Sun.COM #define	STMF_ERROR_PROV_DATA_STALE	(STMF_STATUS_ERROR | 0x13)
83*7836SJohn.Forte@Sun.COM 
84*7836SJohn.Forte@Sun.COM /* Initiator Name Types */
85*7836SJohn.Forte@Sun.COM #define	STMF_FC_PORT_WWN	    1
86*7836SJohn.Forte@Sun.COM #define	STMF_ISCSI_NAME		    2
87*7836SJohn.Forte@Sun.COM 
88*7836SJohn.Forte@Sun.COM /* protected data flag for provider store */
89*7836SJohn.Forte@Sun.COM #define	STMF_PROTECTED_DATA	0x0001
90*7836SJohn.Forte@Sun.COM 
91*7836SJohn.Forte@Sun.COM /* provider types */
92*7836SJohn.Forte@Sun.COM #define	STMF_LU_PROVIDER_TYPE	1
93*7836SJohn.Forte@Sun.COM #define	STMF_PORT_PROVIDER_TYPE	2
94*7836SJohn.Forte@Sun.COM 
95*7836SJohn.Forte@Sun.COM 
96*7836SJohn.Forte@Sun.COM /* devid code set and name types */
97*7836SJohn.Forte@Sun.COM #define	EUI_64_TYPE	2
98*7836SJohn.Forte@Sun.COM #define	NAA_TYPE	3
99*7836SJohn.Forte@Sun.COM #define	SCSI_NAME_TYPE	8
100*7836SJohn.Forte@Sun.COM 
101*7836SJohn.Forte@Sun.COM #define	BINARY_CODE_SET	1
102*7836SJohn.Forte@Sun.COM #define	ASCII_CODE_SET	2
103*7836SJohn.Forte@Sun.COM #define	UTF_8_CODE_SET	3
104*7836SJohn.Forte@Sun.COM 
105*7836SJohn.Forte@Sun.COM typedef enum _stmfProtocol
106*7836SJohn.Forte@Sun.COM {
107*7836SJohn.Forte@Sun.COM 	STMF_PROTOCOL_FIBRE_CHANNEL =	0,
108*7836SJohn.Forte@Sun.COM 	STMF_PROTOCOL_ISCSI =		1,
109*7836SJohn.Forte@Sun.COM 	STMF_PROTOCOL_SAS =		2
110*7836SJohn.Forte@Sun.COM } stmfProtocol;
111*7836SJohn.Forte@Sun.COM 
112*7836SJohn.Forte@Sun.COM 
113*7836SJohn.Forte@Sun.COM typedef struct _stmfGuid
114*7836SJohn.Forte@Sun.COM {
115*7836SJohn.Forte@Sun.COM 	uchar_t	guid[16];
116*7836SJohn.Forte@Sun.COM } stmfGuid;
117*7836SJohn.Forte@Sun.COM 
118*7836SJohn.Forte@Sun.COM typedef struct _stmfGuidList
119*7836SJohn.Forte@Sun.COM {
120*7836SJohn.Forte@Sun.COM 	uint32_t cnt;
121*7836SJohn.Forte@Sun.COM 	stmfGuid guid[1];
122*7836SJohn.Forte@Sun.COM } stmfGuidList;
123*7836SJohn.Forte@Sun.COM 
124*7836SJohn.Forte@Sun.COM typedef struct _stmfState
125*7836SJohn.Forte@Sun.COM {
126*7836SJohn.Forte@Sun.COM 	int operationalState;
127*7836SJohn.Forte@Sun.COM 	int configState;
128*7836SJohn.Forte@Sun.COM } stmfState;
129*7836SJohn.Forte@Sun.COM 
130*7836SJohn.Forte@Sun.COM typedef struct _stmfDevid
131*7836SJohn.Forte@Sun.COM {
132*7836SJohn.Forte@Sun.COM 	uint8_t identLength;	/* length of ident */
133*7836SJohn.Forte@Sun.COM 	uint8_t	ident[STMF_IDENT_LENGTH]; /* SCSI name string ident */
134*7836SJohn.Forte@Sun.COM } stmfDevid;
135*7836SJohn.Forte@Sun.COM 
136*7836SJohn.Forte@Sun.COM typedef struct _stmfDevidList
137*7836SJohn.Forte@Sun.COM {
138*7836SJohn.Forte@Sun.COM 	uint32_t cnt;
139*7836SJohn.Forte@Sun.COM 	stmfDevid devid[1];
140*7836SJohn.Forte@Sun.COM } stmfDevidList;
141*7836SJohn.Forte@Sun.COM 
142*7836SJohn.Forte@Sun.COM typedef char stmfGroupName[256];
143*7836SJohn.Forte@Sun.COM typedef char stmfProviderName[256];
144*7836SJohn.Forte@Sun.COM 
145*7836SJohn.Forte@Sun.COM typedef struct _stmfGroupList
146*7836SJohn.Forte@Sun.COM {
147*7836SJohn.Forte@Sun.COM 	uint32_t cnt;
148*7836SJohn.Forte@Sun.COM 	stmfGroupName name[1];
149*7836SJohn.Forte@Sun.COM } stmfGroupList;
150*7836SJohn.Forte@Sun.COM 
151*7836SJohn.Forte@Sun.COM typedef struct _stmfProvider
152*7836SJohn.Forte@Sun.COM {
153*7836SJohn.Forte@Sun.COM 	int providerType;
154*7836SJohn.Forte@Sun.COM 	stmfProviderName name;
155*7836SJohn.Forte@Sun.COM } stmfProvider;
156*7836SJohn.Forte@Sun.COM 
157*7836SJohn.Forte@Sun.COM typedef struct _stmfProviderList
158*7836SJohn.Forte@Sun.COM {
159*7836SJohn.Forte@Sun.COM 	uint32_t cnt;
160*7836SJohn.Forte@Sun.COM 	stmfProvider provider[1];
161*7836SJohn.Forte@Sun.COM } stmfProviderList;
162*7836SJohn.Forte@Sun.COM 
163*7836SJohn.Forte@Sun.COM typedef struct _stmfSession
164*7836SJohn.Forte@Sun.COM {
165*7836SJohn.Forte@Sun.COM 	stmfDevid initiator;
166*7836SJohn.Forte@Sun.COM 	char alias[256];
167*7836SJohn.Forte@Sun.COM 	time_t creationTime;
168*7836SJohn.Forte@Sun.COM } stmfSession;
169*7836SJohn.Forte@Sun.COM 
170*7836SJohn.Forte@Sun.COM typedef struct _stmfSessionList
171*7836SJohn.Forte@Sun.COM {
172*7836SJohn.Forte@Sun.COM 	uint32_t cnt;
173*7836SJohn.Forte@Sun.COM 	stmfSession session[1];
174*7836SJohn.Forte@Sun.COM } stmfSessionList;
175*7836SJohn.Forte@Sun.COM 
176*7836SJohn.Forte@Sun.COM 
177*7836SJohn.Forte@Sun.COM typedef struct _stmfViewEntry
178*7836SJohn.Forte@Sun.COM {
179*7836SJohn.Forte@Sun.COM 	boolean_t	veIndexValid;	/* if B_TRUE, veIndex is valid value */
180*7836SJohn.Forte@Sun.COM 	uint32_t	veIndex;	/* View Entry index */
181*7836SJohn.Forte@Sun.COM 	boolean_t	allHosts;	/* all initiator ports */
182*7836SJohn.Forte@Sun.COM 	stmfGroupName   hostGroup;	/* Host Group Name */
183*7836SJohn.Forte@Sun.COM 	boolean_t	allTargets;	/* B_TRUE = targetGroup is invalid */
184*7836SJohn.Forte@Sun.COM 	stmfGroupName	targetGroup;	/* Target Group Name */
185*7836SJohn.Forte@Sun.COM 	boolean_t	luNbrValid;	/* if B_TRUE, luNbr is a valid value */
186*7836SJohn.Forte@Sun.COM 	uchar_t		luNbr[8];	/* LU number for this view entry */
187*7836SJohn.Forte@Sun.COM } stmfViewEntry;
188*7836SJohn.Forte@Sun.COM 
189*7836SJohn.Forte@Sun.COM typedef struct _stmfViewEntryList
190*7836SJohn.Forte@Sun.COM {
191*7836SJohn.Forte@Sun.COM 	uint32_t cnt;
192*7836SJohn.Forte@Sun.COM 	stmfViewEntry ve[1];
193*7836SJohn.Forte@Sun.COM } stmfViewEntryList;
194*7836SJohn.Forte@Sun.COM 
195*7836SJohn.Forte@Sun.COM typedef struct _stmfViewEntryProperties
196*7836SJohn.Forte@Sun.COM {
197*7836SJohn.Forte@Sun.COM 	stmfGuid	associatedLogicalUnitGuid;
198*7836SJohn.Forte@Sun.COM 	stmfViewEntry	viewEntry;
199*7836SJohn.Forte@Sun.COM } stmfViewEntryProperties;
200*7836SJohn.Forte@Sun.COM 
201*7836SJohn.Forte@Sun.COM typedef struct _stmfGroupProperties
202*7836SJohn.Forte@Sun.COM {
203*7836SJohn.Forte@Sun.COM 	uint32_t	cnt;
204*7836SJohn.Forte@Sun.COM 	stmfDevid	name[1];
205*7836SJohn.Forte@Sun.COM } stmfGroupProperties;
206*7836SJohn.Forte@Sun.COM 
207*7836SJohn.Forte@Sun.COM typedef struct _stmfTargetProperties
208*7836SJohn.Forte@Sun.COM {
209*7836SJohn.Forte@Sun.COM 	stmfProviderName providerName;
210*7836SJohn.Forte@Sun.COM 	char		 alias[256];
211*7836SJohn.Forte@Sun.COM 	uint16_t	 status;
212*7836SJohn.Forte@Sun.COM 	stmfProtocol	 protocol;
213*7836SJohn.Forte@Sun.COM 	stmfDevid	 devid;
214*7836SJohn.Forte@Sun.COM } stmfTargetProperties;
215*7836SJohn.Forte@Sun.COM 
216*7836SJohn.Forte@Sun.COM typedef struct _stmfLogicalUnitProperties
217*7836SJohn.Forte@Sun.COM {
218*7836SJohn.Forte@Sun.COM 	char	    alias[256];
219*7836SJohn.Forte@Sun.COM 	uchar_t	    vendor[8];
220*7836SJohn.Forte@Sun.COM 	uchar_t	    product[16];
221*7836SJohn.Forte@Sun.COM 	uchar_t	    revision[4];
222*7836SJohn.Forte@Sun.COM 	uint32_t    status;
223*7836SJohn.Forte@Sun.COM 	char	    providerName[256];
224*7836SJohn.Forte@Sun.COM 	stmfGuid    luid;
225*7836SJohn.Forte@Sun.COM } stmfLogicalUnitProperties;
226*7836SJohn.Forte@Sun.COM 
227*7836SJohn.Forte@Sun.COM typedef struct _stmfLogicalUnitProviderProperties
228*7836SJohn.Forte@Sun.COM {
229*7836SJohn.Forte@Sun.COM 	char	    providerName[MAXPATHLEN];
230*7836SJohn.Forte@Sun.COM 	uint32_t    instance;
231*7836SJohn.Forte@Sun.COM 	uint32_t    status;
232*7836SJohn.Forte@Sun.COM 	uchar_t	    rsvd[64];
233*7836SJohn.Forte@Sun.COM } stmfLogicalUnitProviderProperties;
234*7836SJohn.Forte@Sun.COM 
235*7836SJohn.Forte@Sun.COM typedef struct _stmfLocalPortProviderProperties
236*7836SJohn.Forte@Sun.COM {
237*7836SJohn.Forte@Sun.COM 	char	    providerName[MAXPATHLEN];
238*7836SJohn.Forte@Sun.COM 	uint32_t    instance;
239*7836SJohn.Forte@Sun.COM 	uint32_t    status;
240*7836SJohn.Forte@Sun.COM 	uchar_t	    rsvd[64];
241*7836SJohn.Forte@Sun.COM } stmfLocalPortProviderProperties;
242*7836SJohn.Forte@Sun.COM 
243*7836SJohn.Forte@Sun.COM 
244*7836SJohn.Forte@Sun.COM /* API prototypes */
245*7836SJohn.Forte@Sun.COM int stmfAddToHostGroup(stmfGroupName *hostGroupName, stmfDevid *name);
246*7836SJohn.Forte@Sun.COM int stmfAddToTargetGroup(stmfGroupName *targetGroupName, stmfDevid *targetName);
247*7836SJohn.Forte@Sun.COM int stmfAddViewEntry(stmfGuid *lu, stmfViewEntry *viewEntry);
248*7836SJohn.Forte@Sun.COM int stmfClearProviderData(char *providerName, int providerType);
249*7836SJohn.Forte@Sun.COM int stmfCreateHostGroup(stmfGroupName *hostGroupName);
250*7836SJohn.Forte@Sun.COM int stmfCreateTargetGroup(stmfGroupName *targetGroupName);
251*7836SJohn.Forte@Sun.COM int stmfDeleteHostGroup(stmfGroupName *hostGroupName);
252*7836SJohn.Forte@Sun.COM int stmfDeleteTargetGroup(stmfGroupName *targetGroupName);
253*7836SJohn.Forte@Sun.COM int stmfDevidFromIscsiName(char *iscsiName, stmfDevid *devid);
254*7836SJohn.Forte@Sun.COM int stmfDevidFromWwn(uchar_t wwn[8], stmfDevid *devid);
255*7836SJohn.Forte@Sun.COM void stmfFreeMemory(void *);
256*7836SJohn.Forte@Sun.COM int stmfGetHostGroupList(stmfGroupList **initiatorGroupList);
257*7836SJohn.Forte@Sun.COM int stmfGetHostGroupMembers(stmfGroupName *hostGroupName,
258*7836SJohn.Forte@Sun.COM     stmfGroupProperties **groupProperties);
259*7836SJohn.Forte@Sun.COM int stmfGetLocalPortProviderList(stmfProviderList **localPortProviderList);
260*7836SJohn.Forte@Sun.COM int stmfGetLocalPortProviderProperties(stmfProviderName *providerName,
261*7836SJohn.Forte@Sun.COM     stmfLocalPortProviderProperties *providerProperties);
262*7836SJohn.Forte@Sun.COM int stmfGetLogicalUnitList(stmfGuidList **logicalUnitList);
263*7836SJohn.Forte@Sun.COM int stmfGetLogicalUnitProperties(stmfGuid *logicalUnit,
264*7836SJohn.Forte@Sun.COM     stmfLogicalUnitProperties *logicalUnitProps);
265*7836SJohn.Forte@Sun.COM int stmfGetLogicalUnitProviderList(stmfProviderList **logicalUnitProviderList);
266*7836SJohn.Forte@Sun.COM int stmfGetLogicalUnitProviderProperties(stmfProviderName *providerName,
267*7836SJohn.Forte@Sun.COM     stmfLogicalUnitProviderProperties *providerProperties);
268*7836SJohn.Forte@Sun.COM int stmfGetProviderData(char *providerName, nvlist_t **nvl, int providerType);
269*7836SJohn.Forte@Sun.COM int stmfGetProviderDataProt(char *providerName, nvlist_t **nvl,
270*7836SJohn.Forte@Sun.COM     int providerType, uint64_t *setToken);
271*7836SJohn.Forte@Sun.COM int stmfGetSessionList(stmfDevid *target, stmfSessionList **sessionList);
272*7836SJohn.Forte@Sun.COM int stmfGetState(stmfState *);
273*7836SJohn.Forte@Sun.COM int stmfGetTargetGroupList(stmfGroupList **targetGroupList);
274*7836SJohn.Forte@Sun.COM int stmfGetTargetGroupMembers(stmfGroupName *targetGroupName,
275*7836SJohn.Forte@Sun.COM     stmfGroupProperties **groupProperties);
276*7836SJohn.Forte@Sun.COM int stmfGetTargetList(stmfDevidList **targetList);
277*7836SJohn.Forte@Sun.COM int stmfGetTargetProperties(stmfDevid *target,
278*7836SJohn.Forte@Sun.COM     stmfTargetProperties *targetProps);
279*7836SJohn.Forte@Sun.COM int stmfGetViewEntryList(stmfGuid *lu, stmfViewEntryList **viewEntryList);
280*7836SJohn.Forte@Sun.COM int stmfLoadConfig(void);
281*7836SJohn.Forte@Sun.COM int stmfOffline(void);
282*7836SJohn.Forte@Sun.COM int stmfOfflineTarget(stmfDevid *devid);
283*7836SJohn.Forte@Sun.COM int stmfOfflineLogicalUnit(stmfGuid *logicalUnit);
284*7836SJohn.Forte@Sun.COM int stmfOnline(void);
285*7836SJohn.Forte@Sun.COM int stmfOnlineTarget(stmfDevid *devid);
286*7836SJohn.Forte@Sun.COM int stmfOnlineLogicalUnit(stmfGuid *logicalUnit);
287*7836SJohn.Forte@Sun.COM int stmfRemoveFromHostGroup(stmfGroupName *hostGroupName,
288*7836SJohn.Forte@Sun.COM     stmfDevid *initiatorName);
289*7836SJohn.Forte@Sun.COM int stmfRemoveFromTargetGroup(stmfGroupName *targetGroupName,
290*7836SJohn.Forte@Sun.COM     stmfDevid *targetName);
291*7836SJohn.Forte@Sun.COM int stmfRemoveViewEntry(stmfGuid *lu, uint32_t viewEntryIndex);
292*7836SJohn.Forte@Sun.COM int stmfSetProviderData(char *providerName, nvlist_t *nvl, int providerType);
293*7836SJohn.Forte@Sun.COM int stmfSetProviderDataProt(char *providerName, nvlist_t *nvl,
294*7836SJohn.Forte@Sun.COM     int providerType, uint64_t *setToken);
295*7836SJohn.Forte@Sun.COM 
296*7836SJohn.Forte@Sun.COM #ifdef	__cplusplus
297*7836SJohn.Forte@Sun.COM }
298*7836SJohn.Forte@Sun.COM #endif
299*7836SJohn.Forte@Sun.COM 
300*7836SJohn.Forte@Sun.COM #endif	/* _LIBSTMF_H */
301