summaryrefslogtreecommitdiff
path: root/agent/mibgroup/util_funcs/header_generic.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/mibgroup/util_funcs/header_generic.c')
-rw-r--r--agent/mibgroup/util_funcs/header_generic.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/agent/mibgroup/util_funcs/header_generic.c b/agent/mibgroup/util_funcs/header_generic.c
new file mode 100644
index 0000000..9154be9
--- /dev/null
+++ b/agent/mibgroup/util_funcs/header_generic.c
@@ -0,0 +1,64 @@
+#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);
+}