cc [ flag… ] file… –lscf [ library… ] #include <libscf.h> int smf_notify_set_params(const char *class, nvlist_t *attr);
int smf_notify_get_params(nvlist_t **params, nvlist_t *nvl);
int smf_notify_del_params(const char *class, const char *fmri, int32_t tset);
class of events to which the function call refers. For SMF state transition events, you should use a subclass of SCF_SVC_TRANSITION_CLASS defined in libscf.h.
set of SMF state transitions encoded in an int32_t value. The encoded states are defined in libscf.h by the macros SCF_STATE_*. The encoding of a initial state is obtained by shifting 16 bits to the left the encoded value for that state. For example, the value of tset that represents the state transition set (see smf(5), State Transition Sets) for to-maintenance, from-maintenance and form-online is given by:
set = ((SCF_STATE_MAINT | SCF_STATE_ONLINE) << 16) | SCF_STATE_MAINT;
FMRI of an SMF service or instance
address of a pointer to an nvlist_t
a pointer to the event payload nvlist_t, such as is provided to an event delivery callback in libfmevent(3LIB)
a pointer to nvlist_t with the notification parameters
These interfaces are used to manipulate Notification Parameters for Software Events. See smf(5)
The smf_notify_set_params() function stores the notification parameters for class. The attr nvlist_t containing the notification parameters must follow the format:
version (uint32_t) fmri (string) tset (int32_t) SCF_NOTIFY_PARAMS (embedded nvlist) <mechanism-name> (embedded nvlist) <parameter-name> <parameter-type> ... (end <mechanism-name>) ... (end notify-params)
The version field must be SCF_NOTIFY_PARAMS_VERSION, defined in libscf.h. The fields fmri and tset are only required for SMF state transitions events. They are ignored otherwise. Existing notification parameters are replaced by this function.
The smf_notify_get_params() function creates and populates the params nvlist_t with the notification parameters for the Event class in nvl. If the Event in nvl is an SMF state transition event, this function will perform a composed lookup in scf_instance_get_pg_composed(3SCF) for the instance FMRI in nvl. If notification parameters are not found in the composed lookup, the function will look for the system-wide notification parameters at SCF_INSTANCE_GLOBAL. The caller is responsible for calling nvlist_free(3NVPAIR) after using params. The params nvlist_t has the following format:
version (uint32_t) SCF_NOTIFY_PARAMS (array of embedded nvlists) (start of notify-params) tset (int32_t) <mechanism-name> (embedded nvlist) <parameter-name> <parameter-type> ... (end <mechanism-name>) ... (end of notify-params) ...
The SCF_NOTIFY_PARAMS is an array of nvlist_t because SMF state transitions have notification parameters for both end states of the transitions.
The smf_notify_del_params() function deletes the notification parameters for the given class. If class is not a subclass of SCF_SVC_TRANSITION_CLASS, fmri and tset are ignored.
Both smf_notify_del_params() and smf_notify_set_params() refresh all instances affected by the changes.
Upon successful completion smf_notify_del_params(), smf_notify_get_params() and smf_notify_set_params() return SCF_SUCCESS. Otherwise they return SCF_FAILED.
These functions will fail if:
The storage mechanism that the repository server (svc.configd(1M)) chose for the operation denied access.
The connection to the repository was lost.
The entity being operated on has been deleted.
An internal error occurred.
An argument passed is invalid.
There is not enough memory.
The server does not have the resources to complete the request.
The entity was not found.
The caller does not have permission to access or modify the repository.
The smf_notify_del_params() and smf_notify_set_params() functions will fail if:
The repository backend is read-only.
See attributes(5) for descriptions of the following attributes: