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