SCF_SNAPLEVEL_CREATE(3SCF)  Service Configuration Facility Library Functions
NAME
       scf_snaplevel_create, scf_snaplevel_handle, scf_snaplevel_destroy,
       scf_snaplevel_get_parent, scf_snaplevel_get_scope_name,
       scf_snaplevel_get_service_name, scf_snaplevel_get_instance_name,
       scf_snapshot_get_base_snaplevel, scf_snaplevel_get_next_snaplevel -
       create and manipulate snaplevel handles in the Service Configuration
       Facility
SYNOPSIS
       cc [ 
flag... ] 
file... 
-lscf [ 
library... ]
       #include <libscf.h>       
scf_snaplevel_t *scf_snaplevel_create(
scf_handle_t *handle);       
scf_handle_t *scf_snaplevel_handle(
scf_snaplevel_t *level);       
void scf_snaplevel_destroy(
scf_snaplevel_t *level);       
int scf_snaplevel_get_parent(
const scf_snaplevel_t *level,            
const scf_snapshot_t *snap);       
ssize_t scf_snaplevel_get_scope_name(
const scf_snaplevel_t *level,            
char *buf, 
size_t size);       
ssize_t scf_snaplevel_get_service_name(
const scf_snaplevel_t *level,            
char *buf, 
size_t size);       
ssize_t scf_snaplevel_get_instance_name(
const scf_snaplevel_t *level,            
char *buf, 
size_t size);       
int scf_snapshot_get_base_snaplevel(
const scf_snapshot_t *snap,            
scf_snaplevel_t *level);       
int scf_snaplevel_get_next_snaplevel(
scf_snaplevel_t *in,            
scf_snaplevel_t *out);
DESCRIPTION
       A snaplevel holds all of the property groups associated with either a
       service or an instance. Each snapshot has an ordered list of
       snaplevels. Snaplevels contain the names of the instance or service
       from which they are derived.
       An 
scf_snaplevel_t is an opaque handle that can be set to a single
       snaplevel at any given time. When set, the 
scf_snaplevel_t inherits
       the point in time from the 
scf_snapshot_t from which it comes.
       The 
scf_snaplevel_create() function allocates and initializes a new       
scf_snaplevel_t bound to 
handle. The 
scf_snaplevel_destroy() function
       destroys and frees 
level.
       The 
scf_snaplevel_handle() function retrieves the handle to which       
level is bound.
       The 
scf_snaplevel_get_parent() function sets 
snap to the parent
       snapshot of the snaplevel to which 
level is set.  The snapshot
       specified by 
snap is attached to the same point in time as level.
       The 
scf_snaplevel_get_scope_name(), 
scf_snaplevel_get_service_name(),
       and 
scf_snaplevel_get_instance_name() functions retrieve the name of
       the scope, service, and instance for the snapshot to which 
snap is
       set. If the snaplevel is from an instance, all three succeed. If the
       snaplevel is from a service, 
scf_snaplevel_get_instance_name() fails.
       The 
scf_snapshot_get_base_snaplevel() function sets 
level to the
       first snaplevel in the snapshot to which 
snap is set. The       
scf_snaplevel_get_next_snaplevel() function sets 
out to the next
       snaplevel after the snaplevel to which 
in is set. Both the 
in and 
out       arguments can point to the same 
scf_snaplevel_t.
       To retrieve the property groups associated with a snaplevel, see       
scf_iter_snaplevel_pgs(3SCF), 
scf_iter_snaplevel_pgs_typed(3SCF), and       
scf_snaplevel_get_pg(3SCF).
RETURN VALUES
       Upon successful completion, 
scf_snaplevel_create() returns a new       
scf_snaplevel_t. Otherwise, it returns 
NULL.
       Upon successful completion, 
scf_snaplevel_get_scope_name(),       
scf_snaplevel_get_service_name(), and       
scf_snaplevel_get_instance_name() return the length of the string
       written, not including the terminating null byte. Otherwise, they
       return -1.
       Upon successful completion, 
scf_snaplevel_get_parent(),       
scf_snapshot_get_base_snaplevel(), and       
scf_snaplevel_get_next_snaplevel() return. Otherwise, they return -1.
ERRORS
       The 
scf_snaplevel_create() function will fail if:       
SCF_ERROR_INVALID_ARGUMENT                                     The 
handle argument is 
NULL.       
SCF_ERROR_NO_MEMORY                                     There is not enough memory to allocate
                                     an 
scf_snaplevel_t.       
SCF_ERROR_NO_RESOURCES                                     The server does not have adequate
                                     resources for a new snapshot handle.
       The 
scf_snaplevel_get_scope_name(), 
scf_snaplevel_get_service_name(),       
scf_snaplevel_get_instance_name(), and 
scf_snaplevel_get_parent()       functions will fail if:       
SCF_ERROR_DELETED           The object referred to by 
level has been deleted.       
SCF_ERROR_NOT_SET           The snaplevel 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_snaplevel_get_instance_name() function will fail if:       
SCF_ERROR_CONSTRAINT_VIOLATED           The snaplevel is derived from a service.
       The 
scf_snapshot_get_base_snaplevel() function will fail if:       
SCF_ERROR_CONNECTION_BROKEN           The connection to the repository was lost.       
SCF_ERROR_DELETED           The snapshot has been deleted.       
SCF_ERROR_HANDLE_MISMATCH           The snapshot and snaplevel are not derived from the same handle.       
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           There are no snaplevels in this snapshot.       
SCF_ERROR_NOT_SET           The snapshot is not set.
       The 
scf_snaplevel_get_next_snaplevel() function will fail if:       
SCF_ERROR_DELETED           The snaplevel has been deleted.       
SCF_ERROR_NOT_SET           The snaplevel is not set.       
SCF_ERROR_HANDLE_MISMATCH           The 
in and 
out arguments are not derived from the same handle.       
SCF_ERROR_NOT_BOUND           The handle is not bound.       
SCF_ERROR_CONNECTION_BROKEN           The connection to the repository was lost.       
SCF_ERROR_NOT_FOUND           There are no more snaplevels in this snapshot.
       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_iter_snaplevel_pgs(3SCF),       
scf_iter_snaplevel_pgs_typed(3SCF), 
scf_snaplevel_get_pg(3SCF),       
attributes(7)                               August 27, 2007    SCF_SNAPLEVEL_CREATE(3SCF)