Manual Page Result
0
Command: cfg_subsys_reconfig | Section: 3 | Source: Digital UNIX | File: cfg_subsys_reconfig.3.gz
cfg_subsys_reconfig(3) Library Functions Manual cfg_subsys_reconfig(3)
NAME
cfg_subsys_reconfig - Reconfigure attribute values for a subsystem
LIBRARY
Configuration Management Library (libcfg.a)
SYNOPSIS
#include <cfg.h> cfg_status_t cfg_subsys_reconfig(
cfg_handle_t *handle,
caddr_t subsys,
cfg_attr_t *attributes,
int nattributes);
PARAMETERS
Structure identifying the means of communication between your applica-
tion and the configuration management server. For local requests, pass
NULL in this parameter. For remote requests, pass the value returned
from the cfg_connect() routine. Specifies the name of the subsystem
for which you are modifying attribute values. On input, contains a
list of attributes whose value you want to modify. For each attribute,
the list includes the attribute name, data type, and the new value.
On return, contains a status for each attribute. The status in-
dicates whether the system was able to make the modification
and, if not, what problem caused the error. The number of at-
tributes whose values you are changing.
DESCRIPTION
Use the cfg_subsys_reconfig() routine to modify attribute values for a
subsystem. The modifications made by this routine take effect immedi-
ately because they are made to the in-memory copy of the subsystem.
Neither the kernel nor the subsystem stores a copy of the modifica-
tions, so if the system is rebooted or the subsystem is unconfigured
the modifications are lost. When the subsystem is once again config-
ured into the kernel, the value of its attributes are retrieved from
the /etc/sysconfigtab database and the subsystem code.
To make permanent changes to attribute values, store the new attribute
values in the /etc/sysconfigtab database. See sysconfigtab(4) for in-
formation about that database.
When your application calls the cfg_subsys_reconfig() routine, it
passes a list of attribute names and values. The application passes
this information in an array of structures of type cfg_attr_t. For in-
formation about this structure, see libcfg(3). The following list de-
scribes the information that is passed to the system by your applica-
tion: Attributes can be integer, string, or binary data. To specify the
data type of your attribute you pass one of these attribute data types:
CFG_ATTR_STRTYPE, CFG_ATTR_INTTYPE, CFG_ATTR_UNITTYPE, CFG_ATTR_LONG-
TYPE, CFG_ATTR_ULONGTYPE, CFG_ATTR_BINTYPE For attributes that are
themselves a structure, your application must pass the index for the
attribute whose value you want to modify. The attribute value speci-
fies the new value for the attribute.
Be aware that the system updates attributes in the order in which you
specify them in the attribute list. This order can be important when
one attribute is validated based on another attribute's current set-
ting. On return, the system supplies the status for each attribute.
The status is returned in the attribute parameter, which is normally an
array of structures of the type cfg_attr_t. For information about this
structure, see libcfg(3). The following table describes the status val-
ues your application might receive from the cfg_subsys_reconfig() rou-
tine: tab(@); lfHB lfHB lfCW l. _
Status Code@Meaning
_
CFG_ATTR_SUCCESS@Successful operation
CFG_ATTR_EEXISTS@No attribute by that name exists
CFG_ATTR_EOP@T{ Attribute does not support the reconfigure operation T}
CFG_ATTR_ESUBSYS@T{ Subsystem failure (code within the subsystem re-
turned an error) T}
CFG_ATTR_EINDEX@T{ The index for an indexed attribute is out of range
T}
CFG_ATTR_ELARGE@T{ The new attribute value or length is too large T}
CFG_ATTR_ESMALL@T{ The new attribute value or length is too small T} _
EXAMPLES
The following example illustrates the use of the cfg_subsys_reconfig()
routine: cfg_attr_t attributes[1]; cfg_status_t
retval; cfg_handle_t handle; int i; int
nattributes;
/*****************************************************/ /* Initialize
attribute names for the request */
strcpy (attributes[0].name, "maxmounts"); attributes[0].type =
CFG_ATTR_INTTYPE; attributes[0].attr.num.val = 30; nattributes = 1;
/***************************************************/ /* Call the
cfg_subsys_reconfig() routine */
retval = cfg_subsys_reconfig(&handle, "lvm", attributes, nattributes);
if (retval != CFG_SUCCESS)
print_error (retval);
else {
for (i=0; i<1; i++) {
if (attributes[i].status != CFG_ATTR_SUCCESS) {
printf("%s:", attributes[i].name);
switch (attributes[i].status){
case CFG_ATTR_EEXISTS:
printf("unknown attribute\n");
break;
case CFG_ATTR_EOP:
printf("attribute does not allow this operation\n");
break; . . .
default:
printf("unknown error\n");
break;
}
}
} }
In this example, the application attempts to modify the value of the
maxmounts attribute. This attribute, which is part of the lvm subsys-
tem is being set to the value 30.
On return the application checks the status of the request as a whole
and of the attribute itself. If the request and attribute status both
indicate success, the application continues. Otherwise, an error is
displayed.
RETURN VALUES
Upon successful completion, cfg_subsys_reconfig() returns CFG_SUCCESS.
Other return values indicate that an error has occurred. For informa-
tion about handling return values from routines in the configuration
management library, see libcfg(3).
RELATED INFORMATION
Commands: cfgmgr(8), sysconfig(8)
Routines: libcfg(3) delim off
cfg_subsys_reconfig(3)