/*++ 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 #include /////////////////////////////////////////////////////////////////////////////// // // // 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); } }