xref: /titanic_50/usr/src/man/man3scf/scf_instance_create.3scf (revision b3700b074e637f8c6991b70754c88a2cfffb246b)
te
Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
SCF_INSTANCE_CREATE 3SCF "Sep 24, 2007"
NAME
scf_instance_create, scf_instance_handle, scf_instance_destroy, scf_instance_get_parent, scf_instance_get_name, scf_service_get_instance, scf_service_add_instance, scf_instance_delete - create and manipulate instance handles and instances in the Service Configuration Facility
SYNOPSIS

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

scf_instance_t *scf_instance_create(scf_handle_t *handle);

scf_handle_t *scf_instance_handle(scf_instance_t *inst);

void scf_instance_destroy(scf_instance_t *inst);

int scf_instance_get_parent(const scf_instance_t *inst,
 scf_service_t *svc);

ssize_t scf_instance_get_name(const scf_instance_t *inst,
 char *name, size_t size);

int scf_service_get_instance(const scf_service_t *svc,
 const char *name, scf_instance_t *inst);

int scf_service_add_instance(const scf_service_t *svc,
 const char *name, scf_instance_t *inst);

int scf_instance_delete(scf_instance_t *inst);
DESCRIPTION

Instances form the bottom layer of the Service Configuration Facility repository tree. An instance is the child of a service and has two sets of children: Property Groups

These hold configuration information specific to this instance. See scf_pg_create(3SCF), scf_iter_instance_pgs(3SCF), and scf_iter_instance_pgs_typed(3SCF).

Snapshots

These are complete configuration snapshots that hold unchanging copies of all of the property groups necessary to run the instance. See scf_snapshot_create(3SCF) and scf_iter_instance_snapshots(3SCF).

See smf(5) for information about instances.

An scf_instance_t is an opaque handle that can be set to a single instance at any given time. The scf_instance_create() function allocates and initializes a new scf_instance_t bound to handle. The scf_instance_destroy() function destroys and frees inst.

The scf_instance_handle() function retrieves the handle to which inst is bound.

The scf_inst_get_parent() function sets svc to the service that is the parent of inst.

The scf_instance_get_name() function retrieves the name of the instance to which inst is set.

The scf_service_get_instance() function sets inst to the child instance of the service svc specified by name.

The scf_service_add_instance() function sets inst to a new child instance of the service svc specified by name.

The scf_instance_delete() function deletes the instance to which inst is set, as well all of the children of the instance.

RETURN VALUES

Upon successful completion, scf_instance_create() returns a new scf_instance_t. Otherwise it returns NULL.

Upon successful completion, scf_instance_handle() returns the handle to which inst is bound. Otherwise, it returns NULL.

Upon successful completion, scf_instance_get_name() returns the length of the string written, not including the terminating null character. Otherwise it returns -1.

Upon successful completion, scf_instance_get_parent(), scf_service_get_instance(), scf_service_add_instance(), and scf_instance_delete() functions return 0. Otherwise, they return -1.

ERRORS

The scf_instance_create() function will fail if: SCF_ERROR_HANDLE_DESTROYED

An object was bound to a destroyed handle.

SCF_ERROR_INTERNAL

An internal error occurred.

SCF_ERROR_INVALID_ARGUMENT

The handle argument is NULL.

SCF_ERROR_NO_MEMORY

There is not enough memory to allocate an scf_instance_t.

SCF_ERROR_NO_RESOURCES

The server does not have adequate resources for a new instance handle.

The scf_instance_handle() function will fail if: SCF_ERROR_HANDLE_DESTROYED

The handle associated with inst has been destroyed.

The scf_instance_get_name(), scf_instance_get_parent(), and scf_instance_delete() functions will fail if: SCF_ERROR_DELETED

The instance has been deleted.

SCF_ERROR_NOT_SET

The instance is not set.

SCF_ERROR_NOT_BOUND

The repository handle is not bound.

SCF_ERROR_CONNECTION_BROKEN

The connection to the repository was lost.

The scf_service_add_instance() function will fail if: SCF_ERROR_EXISTS

An instance named name already exists.

SCF_ERROR_INTERNAL

An internal error occurred.

SCF_ERROR_NO_RESOURCES

The server does not have the resources to complete the request.

SCF_ERROR_NOT_BOUND

The handle is not bound.

The scf_service_get_instance() function will fail if: SCF_ERROR_BACKEND_ACCESS

The storage mechanism that the repository server (svc.configd(1M)) chose for the operation denied access.

SCF_ERROR_INTERNAL

An internal error occurred.

SCF_ERROR_NOT_BOUND

The handle is not bound.

SCF_ERROR_NOT_FOUND

No instance specified by name was found.

SCF_ERROR_NO_RESOURCES

The repository server is out of resources.

The scf_service_add_instance() and scf_service_get_instance() functions will fail if: SCF_ERROR_NOT_SET

The service is not set.

SCF_ERROR_DELETED

The service has been deleted.

SCF_ERROR_INVALID_ARGUMENT

The name argument is not a valid instance name.

SCF_ERROR_HANDLE_MISMATCH

The service and instance are not derived from the same handle.

SCF_ERROR_CONNECTION_BROKEN

The connection to the repository was lost.

The scf_instance_get_parent() function will fail if: SCF_ERROR_HANDLE_MISMATCH

The service and instance arguments are not derived from the same handle.

The scf_service_add_instance() and scf_instance_delete() functions will fail if: SCF_ERROR_PERMISSION_DENIED

The user does not have sufficient privileges to create or delete an instance.

SCF_ERROR_BACKEND_READONLY

The repository backend is read-only.

SCF_ERROR_BACKEND_ACCESS

The repository backend refused the modification.

The scf_instance_delete() function will fail if: SCF_ERROR_NO_RESOURCES

The server does not have adequate resources for a new instance handle.

ATTRIBUTES

See attributes(5) 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_instance_pgs(3SCF), scf_iter_instance_pgs_typed(3SCF), scf_iter_instance_snapshots(3SCF), scf_pg_create(3SCF), scf_snapshot_create(3SCF), attributes(5), smf(5)

NOTES

Instance names are of the form:

[domain,]identifier

where domain is either a stock ticker symbol such as SUNW or a Java-style reversed domain name such as com.sun. Identifiers begin with a letter or underscore and contain only letters, digits, underscores, and dashes.