blob: 9154be90df4fa2466532da78dcdcfc178d55aa8c [file] [log] [blame]
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "header_generic.h"
/*
* header_generic(...
* Arguments:
* vp IN - pointer to variable entry that points here
* name IN/OUT - IN/name requested, OUT/name found
* length IN/OUT - length of IN/OUT oid's
* exact IN - TRUE if an exact match was requested
* var_len OUT - length of variable or 0 if function returned
* write_method
*
*/
/*******************************************************************-o-******
* generic_header
*
* Parameters:
* *vp (I) Pointer to variable entry that points here.
* *name (I/O) Input name requested, output name found.
* *length (I/O) Length of input and output oid's.
* exact (I) TRUE if an exact match was requested.
* *var_len (O) Length of variable or 0 if function returned.
* (**write_method) Hook to name a write method (UNUSED).
*
* Returns:
* MATCH_SUCCEEDED If vp->name matches name (accounting for exact bit).
* MATCH_FAILED Otherwise,
*
*
* Check whether variable (vp) matches name.
*/
int
header_generic(struct variable *vp,
oid * name,
size_t * length,
int exact, size_t * var_len, WriteMethod ** write_method)
{
oid newname[MAX_OID_LEN];
int result;
DEBUGMSGTL(("util_funcs", "header_generic: "));
DEBUGMSGOID(("util_funcs", name, *length));
DEBUGMSG(("util_funcs", " exact=%d\n", exact));
memcpy((char *) newname, (char *) vp->name,
(int) vp->namelen * sizeof(oid));
newname[vp->namelen] = 0;
result = snmp_oid_compare(name, *length, newname, vp->namelen + 1);
DEBUGMSGTL(("util_funcs", " result: %d\n", result));
if ((exact && (result != 0)) || (!exact && (result >= 0)))
return (MATCH_FAILED);
memcpy((char *) name, (char *) newname,
((int) vp->namelen + 1) * sizeof(oid));
*length = vp->namelen + 1;
*write_method = (WriteMethod*)0;
*var_len = sizeof(long); /* default to 'long' results */
return (MATCH_SUCCEEDED);
}