SCF_HANDLE_CREATE(3SCF) Service Configuration Facility Library Functions

NAME


scf_handle_create, scf_handle_destroy, scf_handle_decorate,
scf_handle_bind, scf_handle_unbind, scf_myname - Service
Configuration Facility handle functions

SYNOPSIS


cc [ flag... ] file... -lscf [ library... ]
#include <libscf.h>

scf_handle_t *scf_handle_create(scf_version_t version);


void scf_handle_destroy(scf_handle_t *handle);


int scf_handle_decorate(scf_handle_t *handle, const char *param,
scf_value_t *value);


int scf_handle_bind(scf_handle_t *handle);


int scf_handle_unbind(scf_handle_t *handle);


ssize_t scf_myname(scf_handle_t *handle, char *out, size_t sz);


DESCRIPTION


The scf_handle_create() function creates a new Service Configuration
Facility handle that is used as the base for all communication with
the configuration repository. The version argument must be
SCF_VERSION.


The scf_handle_decorate() function sets a single connection-level
parameter, param, to the supplied value. If value is
SCF_DECORATE_CLEAR, param is reset to its default state. Values
passed to scf_handle_decorate() can be reset, reused, or destroyed.
The values set do not take effect until scf_handle_bind() is called.
Any invalid values will not cause errors prior to the call to
scf_handle_bind(). The only available decorations is:

debug
(count) Set the debugging flags.


The scf_handle_bind() function binds the handle to a running
svc.configd(8) daemon, using the current decorations to modify the
connection. All states derived from the handle are reset immediately
after a successful binding.


The scf_handle_unbind() function severs an existing repository
connection or clears the in-client state for a broken connection.


The scf_handle_destroy() function destroys and frees an SCF handle.
It is illegal to use the handle after calling scf_handle_destroy().
Actions on subordinate objects act as if the handle is unbound.


The scf_myname() function retrieves the FMRI for the service of which
the connecting process is a part. If the full FMRI does not fit in
the provided buffer, it is truncated and, if sz > 0, zero-terminated.

RETURN VALUES


Upon successful completion, scf_handle_create() returns the new
handle. Otherwise, it returns NULL.


Upon successful completion, scf_handle_decorate(), scf_handle_bind(),
and scf_handle_unbind() return 0. Otherwise, they return -1.


The scf_myname() function returns the length of the full FMRI.
Otherwise, it returns -1.

ERRORS


The scf_handle_create() function will fail if:

SCF_ERROR_NO_MEMORY
There is no memory available.


SCF_ERROR_VERSION_MISMATCH
The version is invalid, or the
application was compiled against a
version of the library that is more
recent than the one on the system.


The scf_handle_decorate() function will fail if:

SCF_ERROR_INVALID_ARGUMENT
The param argument is not a recognized
parameter.


SCF_ERROR_TYPE_MISMATCH
The value argument does not match the
expected type for param.


SCF_ERROR_NOT_SET
The value argument is not set.


SCF_ERROR_IN_USE
The handle is currently bound.


SCF_ERROR_HANDLE_MISMATCH
The value argument is not derived from
handle.


The scf_handle_bind() function will fail if:

SCF_ERROR_INVALID_ARGUMENT
One of the decorations was invalid.


SCF_ERROR_NO_SERVER
The repository server is not running.


SCF_ERROR_NO_RESOURCES
The server does not have adequate
resources for a new connection.


SCF_ERROR_IN_USE
The handle is already bound.


The scf_handle_unbind() function will fail if:

SCF_ERROR_NOT_BOUND
The handle is not bound.


The scf_handle_myname() function will fail if:

SCF_ERROR_CONNECTION_BROKEN

The connection to the repository was lost.


SCF_ERROR_NOT_BOUND

The handle is not bound.


SCF_ERROR_NOT_SET

This process is not marked as a SMF service.


The scf_error(3SCF) function can be used to retrieve the error value.

ATTRIBUTES


See attributes(7) for descriptions of the following attributes:


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | See below. |
+--------------------+-----------------+


Operations on a single handle (and the objects associated with it)
are Safe. Operations on different handles are MT-Safe. Objects
associated with different handles cannot be mixed, as this will lead
to an SCF_ERROR_HANDLE_MISMATCH error.

SEE ALSO


libscf(3LIB), scf_error(3SCF), attributes(7)

August 17, 2007 SCF_HANDLE_CREATE(3SCF)

tribblix@gmail.com :: GitHub :: Privacy