summaryrefslogtreecommitdiff
path: root/agent/helpers/null.c
diff options
context:
space:
mode:
Diffstat (limited to 'agent/helpers/null.c')
-rw-r--r--agent/helpers/null.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/agent/helpers/null.c b/agent/helpers/null.c
new file mode 100644
index 0000000..97dfc92
--- /dev/null
+++ b/agent/helpers/null.c
@@ -0,0 +1,65 @@
+#include <net-snmp/net-snmp-config.h>
+
+#include <net-snmp/net-snmp-includes.h>
+#include <net-snmp/agent/net-snmp-agent-includes.h>
+
+#include <net-snmp/agent/null.h>
+
+#if HAVE_STRING_H
+#include <string.h>
+#else
+#include <strings.h>
+#endif
+
+int
+netsnmp_register_null(oid * loc, size_t loc_len)
+{
+ return netsnmp_register_null_context(loc, loc_len, NULL);
+}
+
+int
+netsnmp_register_null_context(oid * loc, size_t loc_len,
+ const char *contextName)
+{
+ netsnmp_handler_registration *reginfo;
+ reginfo = SNMP_MALLOC_TYPEDEF(netsnmp_handler_registration);
+ if (reginfo != NULL) {
+ reginfo->handlerName = strdup("");
+ reginfo->rootoid = loc;
+ reginfo->rootoid_len = loc_len;
+ reginfo->handler =
+ netsnmp_create_handler("null", netsnmp_null_handler);
+ if (contextName)
+ reginfo->contextName = strdup(contextName);
+ reginfo->modes = HANDLER_CAN_DEFAULT | HANDLER_CAN_GETBULK;
+ }
+ return netsnmp_register_handler(reginfo);
+}
+
+int
+netsnmp_null_handler(netsnmp_mib_handler *handler,
+ netsnmp_handler_registration *reginfo,
+ netsnmp_agent_request_info *reqinfo,
+ netsnmp_request_info *requests)
+{
+ DEBUGMSGTL(("helper:null", "Got request\n"));
+
+ DEBUGMSGTL(("helper:null", " oid:"));
+ DEBUGMSGOID(("helper:null", requests->requestvb->name,
+ requests->requestvb->name_length));
+ DEBUGMSG(("helper:null", "\n"));
+
+ switch (reqinfo->mode) {
+ case MODE_GETNEXT:
+ case MODE_GETBULK:
+ return SNMP_ERR_NOERROR;
+
+ case MODE_GET:
+ netsnmp_request_set_error_all(requests, SNMP_NOSUCHOBJECT);
+ return SNMP_ERR_NOERROR;
+
+ default:
+ netsnmp_request_set_error_all(requests, SNMP_ERR_NOSUCHNAME);
+ return SNMP_ERR_NOERROR;
+ }
+}