c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * CDDL HEADER START
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * The contents of this file are subject to the terms of the
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Common Development and Distribution License (the "License").
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * You may not use this file except in compliance with the License.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * or http://www.opensolaris.org/os/licensing.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * See the License for the specific language governing permissions
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * and limitations under the License.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * When distributing Covered Code, include this CDDL HEADER in each
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * If applicable, add the following below this CDDL HEADER, with the
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * fields enclosed by brackets "[]" replaced with your own identifying
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * information: Portions Copyright [yyyy] [name of copyright owner]
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * CDDL HEADER END
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#ifndef _LIBSRPT_H
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#define _LIBSRPT_H
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#ifdef __cplusplus
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonextern "C" {
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#endif
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#include <sys/types.h>
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#include <libnvpair.h>
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Function: srpt_GetConfig()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * cfg Current SRPT configuration in nvlist form
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * token Configuration generation number. Use this token
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * if updating the configuration with srpt_SetConfig.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ENOMEM Could not allocate resources
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid parameter
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_GetConfig(nvlist_t **cfg, uint64_t *token);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Function: srpt_SetConfig()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * cfg SRPT configuration in nvlist form
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * token Configuration generation number from srpt_GetConfig.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Use this token to ensure the configuration hasn't been
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * updated by another user since the time it was fetched.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ENOMEM Could not allocate resources
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid parameter
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ECANCELED Configuration updated by another user
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_SetConfig(nvlist_t *cfg, uint64_t token);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Function: srpt_GetDefaultState()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * enabled If B_TRUE, indicates that targets will be created for all
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * discovered HCAs that have not been specifically disabled.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * If B_FALSE, targets will not be created unless the HCA has
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * been specifically enabled. See also srpt_SetDefaultState().
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ENOMEM Could not allocate resources
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid parameter
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_GetDefaultState(boolean_t *enabled);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Function: srpt_SetDefaultState()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * enabled If B_TRUE, indicates that targets will be created for all
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * discovered HCAs that have not been specifically disabled.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * If B_FALSE, targets will not be created unless the HCA has
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * been specifically enabled. See also srpt_SetDefaultState().
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ENOMEM Could not allocate resources
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid parameter
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_SetDefaultState(boolean_t enabled);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Function: srpt_SetTargetState()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * hca_guid HCA GUID. See description of srpt_NormalizeGuid
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * enabled If B_TRUE, indicates that a target will be created for
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * this HCA when the SRPT SMF service is enabled. If B_FALSE,
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * a target will not be created
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ENOMEM Could not allocate resources
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid parameter
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_SetTargetState(char *hca_guid, boolean_t enabled);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Function: srpt_GetTargetState()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * hca_guid HCA GUID. See description of srpt_NormalizeGuid
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * enabled If B_TRUE, indicates that a target will be created for
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * this HCA when the SRPT SMF service is enabled. If B_FALSE,
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * a target will not be created
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ENOMEM Could not allocate resources
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid parameter
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_GetTargetState(char *hca_guid, boolean_t *enabled);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Function: srpt_ResetTarget()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Clears the HCA-specific configuration. Target creation will revert to
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * the default.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * hca_guid HCA GUID. See description of srpt_NormalizeGuid
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * ENOMEM Could not allocate resources
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid parameter
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_ResetTarget(char *hca_guid);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson/*
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * srpt_NormalizeGuid()
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Parameters:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * in HCA GUID. Must be in one of the following forms:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 3BA000100CD18 - base hex form
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0003BA000100CD18 - base hex form with leading zeroes
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * hca:3BA000100CD18 - form from cfgadm and/or /dev/cfg
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * eui.0003BA000100CD18 - EUI form
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson *
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * buf Buffer to hold normalized guid string. Must be at least
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 17 chars long.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * buflen Length of provided buffer
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * int_guid Optional. If not NULL, the integer form of the GUID will also
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * be returned.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * Return Values:
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * 0 Success
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson * EINVAL Invalid HCA GUID or invalid parameter.
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson */
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonint
c3a558e7c77127215b010652905be7916ec5a080Sue Gleesonsrpt_NormalizeGuid(char *in, char *buf, size_t buflen, uint64_t *int_guid);
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#ifdef __cplusplus
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson}
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#endif
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson
c3a558e7c77127215b010652905be7916ec5a080Sue Gleeson#endif /* _LIBSRPT_H */