SMF_ENABLE_INSTANCE(3SCF) Service Configuration Facility Library Functions


NAME


smf_enable_instance, smf_disable_instance, smf_refresh_instance,
smf_restart_instance, smf_maintain_instance, smf_degrade_instance,
smf_restore_instance, smf_get_state - administrative interface to the
Service Configuration Facility

SYNOPSIS


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

int smf_enable_instance(const char *instance, int flags);


int smf_disable_instance(const char *instance, int flags);


int smf_refresh_instance(const char *instance);


int smf_restart_instance(const char *instance);


int smf_maintain_instance(const char *instance, int flags);


int smf_degrade_instance(const char *instance, int flags);


int smf_restore_instance(const char *instance);


char *smf_get_state(const char *instance);


DESCRIPTION


These functions provide administrative control over service instances.
Using these functions, an administrative tool can make a request to
enable, disable, refresh, or restart an instance. All calls are
asynchronous. They request an action, but do not wait to see if the
action succeeds or fails.


The smf_enable_instance() function enables the service instance specified
by instance FMRI. If flags is SMF_TEMPORARY, the enabling of the service
instance is a temporary change, lasting only for the lifetime of the
current system instance. The flags argument is set to 0 if no flags are
to be use.


The smf_disable_instance() function places the service instance specified
by instance FMRI in the disabled state and triggers the stop method (see
svc.startd(1M)). If flags is SMF_TEMPORARY, the disabling of the service
instance is a temporary change, lasting only for the lifetime of the
current system instance. The flags argument is set to 0 if no flags are
to be use.


The smf_refresh_instance() function causes the service instance specified
by instance FMRI to re-read its configuration information.


The smf_restart_instance() function restarts the service instance
specified by instance FMRI.


The smf_maintain_instance() function moves the service instance specified
by instance into the maintenance state. If flags is SMF_IMMEDIATE, the
instance is moved into maintenance state immediately, killing any running
methods. If flags is SMF_TEMPORARY, the change to maintenance state is a
temporary change, lasting only for the lifetime of the current system
instance. The flags argument is set to 0 if no flags are to be use.


The smf_degrade_instance() function moves an online service instance into
the degraded state. This function operates only on instances in the
online state. The flags argument is set to 0 if no flags are to be use.
The only available flag is SMF_IMMEDIATE, which causes the instance to be
moved into the degraded state immediately.


The smf_restore_instance() function brings an instance currently in the
maintenance to the uninitialized state, so that it can be brought back
online. For a service in the degraded state, smf_restore_instance()
brings the specified instance back to the online state.


The smf_get_state() function returns a pointer to a string containing the
name of the instance's current state. The user is responsible for freeing
this string. Possible state strings are defined as the following:

#define SCF_STATE_STRING_UNINIT ((const char *)"uninitialized")
#define SCF_STATE_STRING_MAINT ((const char *)"maintenance")
#define SCF_STATE_STRING_OFFLINE ((const char *)"offline")
#define SCF_STATE_STRING_DISABLED ((const char *)"disabled")
#define SCF_STATE_STRING_ONLINE ((const char *)"online")
#define SCF_STATE_STRING_DEGRADED ((const char *)"degraded")


RETURN VALUES


Upon successful completion, smf_enable_instance(),
smf_disable_instance(), smf_refresh_instance(), smf_restart_instance(),
smf_maintain_instance(), smf_degrade_instance(), and
smf_restore_instance() return 0. Otherwise, they return -1.


Upon successful completion, smf_get_state returns an allocated string.
Otherwise, it returns NULL.

ERRORS


These functions will fail if:

SCF_ERROR_NO_MEMORY

The memory allocation failed.


SCF_ERROR_INVALID_ARGUMENT

The instance FMRI or flags argument is invalid.


SCF_ERROR_NOT_FOUND

The FMRI is valid but there is no matching instance found.


SCF_ERROR_CONNECTION_BROKEN

The connection to repository was broken.


SCF_ERROR_NO_RESOURCES

The server has insufficient resources.


The smf_maintain_instance(), smf_refresh_instance(),
smf_restart_instance(), smf_degrade_instance(), and
smf_restore_instance() functions will fail if:

SCF_ERROR_PERMISSION_DENIED

User does not have proper authorizations. See smf_security(5).


SCF_ERROR_BACKEND_ACCESS

The repository's backend refused access.


SCF_ERROR_BACKEND_READONLY

The repository's backend is read-only.


The smf_restore_instance() and smf_degrade_instance() functions will fail
if:

SCF_ERROR_CONSTRAINT_VIOLATED

The function is called on an instance in an inappropriate state.


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

ATTRIBUTES


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


+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Committed |
+--------------------+-----------------+
|MT-Level | Safe |
+--------------------+-----------------+

SEE ALSO


svc.startd(1M), libscf(3LIB), scf_error(3SCF), attributes(5),
smf_security(5)


November 5, 2007 SMF_ENABLE_INSTANCE(3SCF)