SCF_SERVICE_CREATE(3SCF) Service Configuration Facility Library Functions
NAME
scf_service_create, scf_service_handle, scf_service_destroy,
scf_service_get_parent, scf_service_get_name, scf_scope_get_service,
scf_scope_add_service, scf_service_delete - create and manipulate
service handles and services in the Service Configuration Facility
SYNOPSIS
cc [
flag... ]
file...
-lscf [
library... ]
#include <libscf.h>
scf_service_t *scf_service_create(
scf_handle_t *handle);
scf_handle_t *scf_service_handle(
scf_service_t *svc);
void scf_service_destroy(
scf_service_t *svc);
int scf_service_get_parent(
scf_service_t *svc,
scf_scope_t *sc);
ssize_t scf_service_get_name(
const scf_service_t *svc,
char *buf,
size_t size);
int scf_scope_get_service(
const scf_scope_t *sc,
const char *name,
scf_service_t *svc);
int scf_scope_add_service(
const scf_scope_t *sc,
const char *name,
scf_service_t *svc);
int scf_service_delete(
scf_service_t *svc);
DESCRIPTION
Services form the middle layer of the Service Configuration Facility
repository tree. Services are children of a scope (see
scf_scope_create(3SCF)) and have three sets of children:
Property groups These hold configuration information shared by all
of the instances of the service. See
scf_pg_create(3SCF),
scf_iter_service_pgs(3SCF),
and
scf_iter_service_pgs_typed(3SCF).
Instances A particular instantiation of the service. See
scf_instance_create(3SCF).
A service groups one or more related instances and provides a shared
configuration for them.
An
scf_service_t is an opaque handle that can be set to a single
service at any given time. The
scf_service_create() function
allocates and initializes a new
scf_service_t bound to
handle. The
scf_service_destroy() function destroys and frees svc.
The
scf_service_handle() function retrieves the handle to which
svc is bound.
The
scf_service_get_parent() function sets
sc to the scope that is
the parent of
svc.
The
scf_service_get_name() function retrieves the name of the service
to which
svc is set.
The
scf_scope_get_service() function sets
svc to the service
specified by
name in the scope specified by
sc.
The
scf_scope_add_service() function sets
svc to a new service
specified by
name in the scope specified by
sc.
The
scf_service_delete() function deletes the service to which
svc is
set, as well as all of its children.
RETURN VALUES
Upon successful completion,
scf_service_create() returns a new
scf_service_t. Otherwise, it returns
NULL.
Upon successful completion,
scf_service_handle() returns the handle
to which svc is bound. Otherwise, it returns
NULL.
Upon successful completion,
scf_service_get_name() returns the length
of the string written, not including the terminating null byte.
Otherwise, it returns -1.
Upon successful completion,
scf_service_get_parent(),
scf_scope_get_service(),
scf_scope_add_service(), and
scf_service_delete() return 0. Otherwise, it returns -1.
ERRORS
The
scf_service_create() function will fail if:
SCF_ERROR_INVALID_ARGUMENT The value of the
handle argument is
NULL.
SCF_ERROR_NO_MEMORY There is not enough memory to allocate
an
scf_service_t.
SCF_ERROR_NO_RESOURCES The server does not have adequate
resources for a new scope handle.
The
scf_service_handle() function will fail if:
SCF_ERROR_HANDLE_DESTROYED The handle associated with
svc has been
destroyed.
The
scf_service_get_name(),
scf_service_get_parent(), and
scf_service_delete() functions will fail if:
SCF_ERROR_DELETED The service has been deleted by someone else.
SCF_ERROR_NOT_SET The service is not set.
SCF_ERROR_NOT_BOUND The handle is not bound.
SCF_ERROR_CONNECTION_BROKEN The connection to the repository was lost.
The
scf_service_delete() function will fail if:
SCF_ERROR_EXISTS The service contains instances.
SCF_ERROR_NO_RESOURCES The server does not have adequate resources
for a new scope handle.
The
scf_scope_add_service() function will fail if:
SCF_ERROR_EXISTS A {service,instance,property group} named
name already exists.
The
scf_scope_get_service() function will fail if:
SCF_ERROR_BACKEND_ACCESS The storage mechanism that the
repository server (
svc.configd(8)) chose
for the operation denied access.
SCF_ERROR_INTERNAL An internal error occurred.
The
scf_scope_add_service() and
scf_scope_get_service() functions
will fail if:
SCF_ERROR_CONNECTION_BROKEN The connection to the repository was lost.
SCF_ERROR_DELETED The parent entity has been deleted.
SCF_ERROR_HANDLE_MISMATCH The scope and service are not derived from the same handle.
SCF_ERROR_INVALID_ARGUMENT The value of the
name argument is not a valid service name.
SCF_ERROR_NO_RESOURCES The server does not have the resources to complete the request.
SCF_ERROR_NOT_BOUND The handle is not bound.
SCF_ERROR_NOT_FOUND The service specified by
name was not found.
SCF_ERROR_NOT_SET The scope is not set.
The
scf_scope_add_service() and
scf_service_delete() functions will
fail if:
SCF_ERROR_PERMISSION_DENIED The user does not have sufficient privileges to create or delete
a service.
SCF_ERROR_BACKEND_READONLY The repository backend is read-only.
SCF_ERROR_BACKEND_ACCESS The repository backend refused the modification.
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 | Safe |
+--------------------+-----------------+
SEE ALSO
libscf(3LIB),
scf_error(3SCF),
scf_handle_decode_fmri(3SCF),
scf_instance_create(3SCF),
scf_iter_service_pgs(3SCF),
scf_iter_service_pgs_typed(3SCF),
scf_pg_create(3SCF),
scf_scope_create(3SCF),
scf_service_to_fmri(3SCF),
attributes(7),
smf(7) August 27, 2007 SCF_SERVICE_CREATE(3SCF)