1*c3a558e7SSue Gleeson /*
2*c3a558e7SSue Gleeson  * CDDL HEADER START
3*c3a558e7SSue Gleeson  *
4*c3a558e7SSue Gleeson  * The contents of this file are subject to the terms of the
5*c3a558e7SSue Gleeson  * Common Development and Distribution License (the "License").
6*c3a558e7SSue Gleeson  * You may not use this file except in compliance with the License.
7*c3a558e7SSue Gleeson  *
8*c3a558e7SSue Gleeson  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*c3a558e7SSue Gleeson  * or http://www.opensolaris.org/os/licensing.
10*c3a558e7SSue Gleeson  * See the License for the specific language governing permissions
11*c3a558e7SSue Gleeson  * and limitations under the License.
12*c3a558e7SSue Gleeson  *
13*c3a558e7SSue Gleeson  * When distributing Covered Code, include this CDDL HEADER in each
14*c3a558e7SSue Gleeson  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*c3a558e7SSue Gleeson  * If applicable, add the following below this CDDL HEADER, with the
16*c3a558e7SSue Gleeson  * fields enclosed by brackets "[]" replaced with your own identifying
17*c3a558e7SSue Gleeson  * information: Portions Copyright [yyyy] [name of copyright owner]
18*c3a558e7SSue Gleeson  *
19*c3a558e7SSue Gleeson  * CDDL HEADER END
20*c3a558e7SSue Gleeson  */
21*c3a558e7SSue Gleeson /*
22*c3a558e7SSue Gleeson  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
23*c3a558e7SSue Gleeson  */
24*c3a558e7SSue Gleeson 
25*c3a558e7SSue Gleeson #ifndef	_LIBSRPT_H
26*c3a558e7SSue Gleeson #define	_LIBSRPT_H
27*c3a558e7SSue Gleeson 
28*c3a558e7SSue Gleeson #ifdef	__cplusplus
29*c3a558e7SSue Gleeson extern "C" {
30*c3a558e7SSue Gleeson #endif
31*c3a558e7SSue Gleeson 
32*c3a558e7SSue Gleeson #include <sys/types.h>
33*c3a558e7SSue Gleeson #include <libnvpair.h>
34*c3a558e7SSue Gleeson 
35*c3a558e7SSue Gleeson /*
36*c3a558e7SSue Gleeson  * Function:  srpt_GetConfig()
37*c3a558e7SSue Gleeson  *
38*c3a558e7SSue Gleeson  * Parameters:
39*c3a558e7SSue Gleeson  *    cfg	Current SRPT configuration in nvlist form
40*c3a558e7SSue Gleeson  *    token	Configuration generation number.  Use this token
41*c3a558e7SSue Gleeson  *		if updating the configuration with srpt_SetConfig.
42*c3a558e7SSue Gleeson  *
43*c3a558e7SSue Gleeson  * Return Values:
44*c3a558e7SSue Gleeson  *    0		Success
45*c3a558e7SSue Gleeson  *    ENOMEM	Could not allocate resources
46*c3a558e7SSue Gleeson  *    EINVAL	Invalid parameter
47*c3a558e7SSue Gleeson  */
48*c3a558e7SSue Gleeson int
49*c3a558e7SSue Gleeson srpt_GetConfig(nvlist_t **cfg, uint64_t *token);
50*c3a558e7SSue Gleeson 
51*c3a558e7SSue Gleeson /*
52*c3a558e7SSue Gleeson  * Function:  srpt_SetConfig()
53*c3a558e7SSue Gleeson  *
54*c3a558e7SSue Gleeson  * Parameters:
55*c3a558e7SSue Gleeson  *    cfg	SRPT configuration in nvlist form
56*c3a558e7SSue Gleeson  *    token	Configuration generation number from srpt_GetConfig.
57*c3a558e7SSue Gleeson  *		Use this token to ensure the configuration hasn't been
58*c3a558e7SSue Gleeson  *		updated by another user since the time it was fetched.
59*c3a558e7SSue Gleeson  *
60*c3a558e7SSue Gleeson  * Return Values:
61*c3a558e7SSue Gleeson  *    0		Success
62*c3a558e7SSue Gleeson  *    ENOMEM	Could not allocate resources
63*c3a558e7SSue Gleeson  *    EINVAL	Invalid parameter
64*c3a558e7SSue Gleeson  *    ECANCELED Configuration updated by another user
65*c3a558e7SSue Gleeson  */
66*c3a558e7SSue Gleeson int
67*c3a558e7SSue Gleeson srpt_SetConfig(nvlist_t *cfg, uint64_t token);
68*c3a558e7SSue Gleeson 
69*c3a558e7SSue Gleeson /*
70*c3a558e7SSue Gleeson  * Function:  srpt_GetDefaultState()
71*c3a558e7SSue Gleeson  *
72*c3a558e7SSue Gleeson  * Parameters:
73*c3a558e7SSue Gleeson  *    enabled	If B_TRUE, indicates that targets will be created for all
74*c3a558e7SSue Gleeson  *		discovered HCAs that have not been specifically disabled.
75*c3a558e7SSue Gleeson  *		If B_FALSE, targets will not be created unless the HCA has
76*c3a558e7SSue Gleeson  *		been specifically enabled.  See also srpt_SetDefaultState().
77*c3a558e7SSue Gleeson  *
78*c3a558e7SSue Gleeson  * Return Values:
79*c3a558e7SSue Gleeson  *    0		Success
80*c3a558e7SSue Gleeson  *    ENOMEM	Could not allocate resources
81*c3a558e7SSue Gleeson  *    EINVAL	Invalid parameter
82*c3a558e7SSue Gleeson  */
83*c3a558e7SSue Gleeson int
84*c3a558e7SSue Gleeson srpt_GetDefaultState(boolean_t *enabled);
85*c3a558e7SSue Gleeson 
86*c3a558e7SSue Gleeson /*
87*c3a558e7SSue Gleeson  * Function:  srpt_SetDefaultState()
88*c3a558e7SSue Gleeson  *
89*c3a558e7SSue Gleeson  * Parameters:
90*c3a558e7SSue Gleeson  *    enabled	If B_TRUE, indicates that targets will be created for all
91*c3a558e7SSue Gleeson  *		discovered HCAs that have not been specifically disabled.
92*c3a558e7SSue Gleeson  *		If B_FALSE, targets will not be created unless the HCA has
93*c3a558e7SSue Gleeson  *		been specifically enabled.  See also srpt_SetDefaultState().
94*c3a558e7SSue Gleeson  *
95*c3a558e7SSue Gleeson  * Return Values:
96*c3a558e7SSue Gleeson  *    0		Success
97*c3a558e7SSue Gleeson  *    ENOMEM	Could not allocate resources
98*c3a558e7SSue Gleeson  *    EINVAL	Invalid parameter
99*c3a558e7SSue Gleeson  */
100*c3a558e7SSue Gleeson int
101*c3a558e7SSue Gleeson srpt_SetDefaultState(boolean_t enabled);
102*c3a558e7SSue Gleeson 
103*c3a558e7SSue Gleeson /*
104*c3a558e7SSue Gleeson  * Function:  srpt_SetTargetState()
105*c3a558e7SSue Gleeson  *
106*c3a558e7SSue Gleeson  * Parameters:
107*c3a558e7SSue Gleeson  *    hca_guid	HCA GUID.  See description of srpt_NormalizeGuid
108*c3a558e7SSue Gleeson  *    enabled	If B_TRUE, indicates that a target will be created for
109*c3a558e7SSue Gleeson  *		this HCA when the SRPT SMF service is enabled.  If B_FALSE,
110*c3a558e7SSue Gleeson  *		a target will not be created
111*c3a558e7SSue Gleeson  *
112*c3a558e7SSue Gleeson  * Return Values:
113*c3a558e7SSue Gleeson  *    0		Success
114*c3a558e7SSue Gleeson  *    ENOMEM	Could not allocate resources
115*c3a558e7SSue Gleeson  *    EINVAL	Invalid parameter
116*c3a558e7SSue Gleeson  */
117*c3a558e7SSue Gleeson int
118*c3a558e7SSue Gleeson srpt_SetTargetState(char *hca_guid, boolean_t enabled);
119*c3a558e7SSue Gleeson 
120*c3a558e7SSue Gleeson /*
121*c3a558e7SSue Gleeson  * Function:  srpt_GetTargetState()
122*c3a558e7SSue Gleeson  *
123*c3a558e7SSue Gleeson  * Parameters:
124*c3a558e7SSue Gleeson  *    hca_guid	HCA GUID.  See description of srpt_NormalizeGuid
125*c3a558e7SSue Gleeson  *    enabled	If B_TRUE, indicates that a target will be created for
126*c3a558e7SSue Gleeson  *		this HCA when the SRPT SMF service is enabled.  If B_FALSE,
127*c3a558e7SSue Gleeson  *		a target will not be created
128*c3a558e7SSue Gleeson  *
129*c3a558e7SSue Gleeson  * Return Values:
130*c3a558e7SSue Gleeson  *    0		Success
131*c3a558e7SSue Gleeson  *    ENOMEM	Could not allocate resources
132*c3a558e7SSue Gleeson  *    EINVAL	Invalid parameter
133*c3a558e7SSue Gleeson  */
134*c3a558e7SSue Gleeson int
135*c3a558e7SSue Gleeson srpt_GetTargetState(char *hca_guid, boolean_t *enabled);
136*c3a558e7SSue Gleeson 
137*c3a558e7SSue Gleeson /*
138*c3a558e7SSue Gleeson  * Function:  srpt_ResetTarget()
139*c3a558e7SSue Gleeson  *
140*c3a558e7SSue Gleeson  * Clears the HCA-specific configuration.  Target creation will revert to
141*c3a558e7SSue Gleeson  * the default.
142*c3a558e7SSue Gleeson  *
143*c3a558e7SSue Gleeson  * Parameters:
144*c3a558e7SSue Gleeson  *    hca_guid	HCA GUID.  See description of srpt_NormalizeGuid
145*c3a558e7SSue Gleeson  *
146*c3a558e7SSue Gleeson  * Return Values:
147*c3a558e7SSue Gleeson  *    0		Success
148*c3a558e7SSue Gleeson  *    ENOMEM	Could not allocate resources
149*c3a558e7SSue Gleeson  *    EINVAL	Invalid parameter
150*c3a558e7SSue Gleeson  */
151*c3a558e7SSue Gleeson int
152*c3a558e7SSue Gleeson srpt_ResetTarget(char *hca_guid);
153*c3a558e7SSue Gleeson 
154*c3a558e7SSue Gleeson /*
155*c3a558e7SSue Gleeson  * srpt_NormalizeGuid()
156*c3a558e7SSue Gleeson  *
157*c3a558e7SSue Gleeson  * Parameters:
158*c3a558e7SSue Gleeson  *    in	HCA GUID.  Must be in one of the following forms:
159*c3a558e7SSue Gleeson  *		    3BA000100CD18	- base hex form
160*c3a558e7SSue Gleeson  *		    0003BA000100CD18	- base hex form with leading zeroes
161*c3a558e7SSue Gleeson  *		    hca:3BA000100CD18	- form from cfgadm and/or /dev/cfg
162*c3a558e7SSue Gleeson  *		    eui.0003BA000100CD18 - EUI form
163*c3a558e7SSue Gleeson  *
164*c3a558e7SSue Gleeson  *    buf	Buffer to hold normalized guid string.  Must be at least
165*c3a558e7SSue Gleeson  *		17 chars long.
166*c3a558e7SSue Gleeson  *    buflen	Length of provided buffer
167*c3a558e7SSue Gleeson  *    int_guid	Optional.  If not NULL, the integer form of the GUID will also
168*c3a558e7SSue Gleeson  *		be returned.
169*c3a558e7SSue Gleeson  * Return Values:
170*c3a558e7SSue Gleeson  *    0		Success
171*c3a558e7SSue Gleeson  *    EINVAL	Invalid HCA GUID or invalid parameter.
172*c3a558e7SSue Gleeson  */
173*c3a558e7SSue Gleeson int
174*c3a558e7SSue Gleeson srpt_NormalizeGuid(char *in, char *buf, size_t buflen, uint64_t *int_guid);
175*c3a558e7SSue Gleeson 
176*c3a558e7SSue Gleeson #ifdef	__cplusplus
177*c3a558e7SSue Gleeson }
178*c3a558e7SSue Gleeson #endif
179*c3a558e7SSue Gleeson 
180*c3a558e7SSue Gleeson #endif	/* _LIBSRPT_H */
181