Gets the value of a configuration variable.
int
tpm_varget(
ade_id var_id,
char *var_name,
struct *res);
Returns RTNORM or an error code.
| var_id | Configuration variables ID. |
| var_name | Variable name. |
| res | Variable value. |
Configuration variables are composed of cleanup variables, cleanup action variables and topology variables. The variables are initialized to their default values. For a list of these variables and their default values, see Configuration Variables.
Assigning And Reading Resbuf Values
The following example demonstrates reading and writing a resbuf using tpm_varget and tpm_varset:
struct resbuf rb;
ade_id var_id = ADE_NULLID;
int ret = 0;
// Correct ID
var_id = tpm_varalloc();
// Set real value
rb.restype = RTREAL;
rb.resval.rreal = 0.5;
rb.rbnext = NULL;
ret = tpm_varset(var_id, "CLEAN_TOL", &rb; );
// Get real value
// rb.restype = RTREAL
// rb.resval.rreal = 0.5
ret = tpm_varget(var_id, "CLEAN_TOL", &rb;);
// Set string value
rb.restype = RTSTR;
rb.resval.rstring = (char *)malloc((unsigned)(strlen("LAYER_1") + 1));
ret = tpm_varset(var_id, "LINK_LAYER", &rb; );
// Get string value
// rb.restype = RTSTR
// rb.resval.rstring = "LAYER_1"
ret = tpm_varget(var_id, "LINK_LAYER", &rb; );
if ( ret == RTNORM )
free (rb.resval.rstring);
Sample Code
The following sample retrieves the value for the NODE_LAYER configuration variable using tpm_varget().
The topology containing the desired information is loaded then opened using tpm_acload() and tpm_acopen() respectively. A set of configuration variables is allocated using tpm_varalloc(), then filled using tpm_infobuildvar(). The topology can now be closed and unloaded using tpm_acclose and tpm_acunload respectively. A resbuf is created which will be populated with the configuration variable value using tpm_varget(), which is called with all required parameters. The return code is validated against RTNORM and appropriate status information is displayed. The resbuf is then released as required.
char* pszTopoName = "netTopo";
int topoWriteAccess = 0;
int returnCode = tpm_acload(pszTopoName, 0);
ade_id topoId = tpm_acopen(pszTopoName, topoWriteAccess);
ade_id varId = tpm_varalloc();
returnCode = tpm_infobuildvar(topoId, varId);
tpm_acclose(topoId);
char* pszConfigVarName = "NODE_LAYER";
struct resbuf* pConfigVarsRb = acutBuildList(RTSTR, "", 0);
returnCode = tpm_varget(varId, pszConfigVarName, pConfigVarsRb);
if (RTNORM == returnCode){
acutPrintf(
"\nThe \"%s\" configuration variables value is: \"%s\"."
, pszConfigVarName, pConfigVarsRb->resval.rstring);
}
else {
acutPrintf(
"\nThe specified configuration variable was not retrieved.");
}
acutRelRb(pConfigVarsRb);


