151 lines
3.1 KiB
C
151 lines
3.1 KiB
C
/*++
|
||
|
||
Copyright (c) 1992-1997 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
vb.c
|
||
|
||
Abstract:
|
||
|
||
Contains routines to manipulate variable bindings.
|
||
|
||
SnmpUtilVarBindCpy
|
||
SnmpUtilVarBindFree
|
||
|
||
Environment:
|
||
|
||
User Mode - Win32
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// Include files //
|
||
// //
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
|
||
#include <snmp.h>
|
||
#include <snmputil.h>
|
||
|
||
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
// //
|
||
// Public Procedures //
|
||
// //
|
||
///////////////////////////////////////////////////////////////////////////////
|
||
|
||
SNMPAPI
|
||
SNMP_FUNC_TYPE
|
||
SnmpUtilVarBindCpy(
|
||
SnmpVarBind * pVbDst,
|
||
SnmpVarBind * pVbSrc
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Copies a variable binding.
|
||
|
||
Arguments:
|
||
|
||
pVbDst - pointer to structure to receive VarBind.
|
||
|
||
pVbSrc - pointer to VarBind to copy.
|
||
|
||
Return Values:
|
||
|
||
Returns SNMPAPI_NOERROR if successful.
|
||
|
||
--*/
|
||
|
||
{
|
||
SNMPAPI nResult = SNMPAPI_ERROR;
|
||
|
||
// validate pointer
|
||
if (pVbDst != NULL) {
|
||
|
||
// initialize destination
|
||
pVbDst->value.asnType = ASN_NULL;
|
||
|
||
// validate pointer
|
||
if (pVbSrc != NULL) {
|
||
|
||
// copy the variable's name from source to destination
|
||
nResult = SnmpUtilOidCpy(&pVbDst->name, &pVbSrc->name);
|
||
|
||
// validate return code
|
||
if (nResult == SNMPAPI_NOERROR) {
|
||
|
||
// copy the variable's value from source to destination
|
||
nResult = SnmpUtilAsnAnyCpy(&pVbDst->value, &pVbSrc->value);
|
||
}
|
||
|
||
} else {
|
||
|
||
SNMPDBG((
|
||
SNMP_LOG_WARNING,
|
||
"SNMP: API: copying null varbind.\n"
|
||
));
|
||
|
||
nResult = SNMPAPI_NOERROR; // success..,
|
||
}
|
||
|
||
} else {
|
||
|
||
SNMPDBG((
|
||
SNMP_LOG_ERROR,
|
||
"SNMP: API: null varbind pointer.\n"
|
||
));
|
||
|
||
SetLastError(ERROR_INVALID_PARAMETER);
|
||
}
|
||
|
||
// validate return code
|
||
if (nResult == SNMPAPI_ERROR) {
|
||
|
||
// release new variable
|
||
SnmpUtilVarBindFree(pVbDst);
|
||
}
|
||
|
||
return nResult;
|
||
}
|
||
|
||
|
||
VOID
|
||
SNMP_FUNC_TYPE
|
||
SnmpUtilVarBindFree(
|
||
SnmpVarBind * pVb
|
||
)
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Releases memory associated with variable binding.
|
||
|
||
Arguments:
|
||
|
||
pVb - pointer to VarBind to release.
|
||
|
||
Return Values:
|
||
|
||
None.
|
||
|
||
--*/
|
||
|
||
{
|
||
// validate
|
||
if (pVb != NULL) {
|
||
|
||
// release variable name
|
||
SnmpUtilOidFree(&pVb->name);
|
||
|
||
// release variable value
|
||
SnmpUtilAsnAnyFree(&pVb->value);
|
||
}
|
||
}
|