|
Packit |
fcad23 |
/*
|
|
Packit |
fcad23 |
* Portions of this file are subject to the following copyright(s). See
|
|
Packit |
fcad23 |
* the Net-SNMP's COPYING file for more details and other copyrights
|
|
Packit |
fcad23 |
* that may apply:
|
|
Packit |
fcad23 |
*
|
|
Packit |
fcad23 |
* Portions of this file are copyrighted by:
|
|
Packit |
fcad23 |
* Copyright (c) 2016 VMware, Inc. All rights reserved.
|
|
Packit |
fcad23 |
* Use is subject to license terms specified in the COPYING file
|
|
Packit |
fcad23 |
* distributed with the Net-SNMP package.
|
|
Packit |
fcad23 |
*/
|
|
Packit |
fcad23 |
#include <net-snmp/net-snmp-config.h>
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#include <net-snmp/net-snmp-includes.h>
|
|
Packit |
fcad23 |
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#include <net-snmp/agent/null.h>
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
#if HAVE_STRING_H
|
|
Packit |
fcad23 |
#include <string.h>
|
|
Packit |
fcad23 |
#else
|
|
Packit |
fcad23 |
#include <strings.h>
|
|
Packit |
fcad23 |
#endif
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int
|
|
Packit |
fcad23 |
netsnmp_register_null(oid * loc, size_t loc_len)
|
|
Packit |
fcad23 |
{
|
|
Packit |
fcad23 |
return netsnmp_register_null_context(loc, loc_len, NULL);
|
|
Packit |
fcad23 |
}
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int
|
|
Packit |
fcad23 |
netsnmp_register_null_context(oid * loc, size_t loc_len,
|
|
Packit |
fcad23 |
const char *contextName)
|
|
Packit |
fcad23 |
{
|
|
Packit |
fcad23 |
netsnmp_handler_registration *reginfo;
|
|
Packit |
fcad23 |
reginfo = SNMP_MALLOC_TYPEDEF(netsnmp_handler_registration);
|
|
Packit |
fcad23 |
if (reginfo != NULL) {
|
|
Packit |
fcad23 |
reginfo->handlerName = strdup("");
|
|
Packit |
fcad23 |
reginfo->rootoid = loc;
|
|
Packit |
fcad23 |
reginfo->rootoid_len = loc_len;
|
|
Packit |
fcad23 |
reginfo->handler =
|
|
Packit |
fcad23 |
netsnmp_create_handler("null", netsnmp_null_handler);
|
|
Packit |
fcad23 |
if (contextName)
|
|
Packit |
fcad23 |
reginfo->contextName = strdup(contextName);
|
|
Packit |
fcad23 |
reginfo->modes = HANDLER_CAN_DEFAULT | HANDLER_CAN_GETBULK;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
if (!reginfo->handlerName || !reginfo->handler ||
|
|
Packit |
fcad23 |
(contextName && !reginfo->contextName)) {
|
|
Packit |
fcad23 |
snmp_log(LOG_ERR,"null context allocation failure(s)\n");
|
|
Packit |
fcad23 |
netsnmp_handler_registration_free(reginfo);
|
|
Packit |
fcad23 |
return MIB_REGISTRATION_FAILED;
|
|
Packit |
fcad23 |
}
|
|
Packit |
fcad23 |
} else {
|
|
Packit |
fcad23 |
snmp_log(LOG_ERR,"null context allocation failure\n");
|
|
Packit |
fcad23 |
return MIB_REGISTRATION_FAILED;
|
|
Packit |
fcad23 |
}
|
|
Packit |
fcad23 |
return netsnmp_register_handler(reginfo);
|
|
Packit |
fcad23 |
}
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
int
|
|
Packit |
fcad23 |
netsnmp_null_handler(netsnmp_mib_handler *handler,
|
|
Packit |
fcad23 |
netsnmp_handler_registration *reginfo,
|
|
Packit |
fcad23 |
netsnmp_agent_request_info *reqinfo,
|
|
Packit |
fcad23 |
netsnmp_request_info *requests)
|
|
Packit |
fcad23 |
{
|
|
Packit |
fcad23 |
DEBUGMSGTL(("helper:null", "Got request\n"));
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
DEBUGMSGTL(("helper:null", " oid:"));
|
|
Packit |
fcad23 |
DEBUGMSGOID(("helper:null", requests->requestvb->name,
|
|
Packit |
fcad23 |
requests->requestvb->name_length));
|
|
Packit |
fcad23 |
DEBUGMSG(("helper:null", "\n"));
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
switch (reqinfo->mode) {
|
|
Packit |
fcad23 |
case MODE_GETNEXT:
|
|
Packit |
fcad23 |
case MODE_GETBULK:
|
|
Packit |
fcad23 |
return SNMP_ERR_NOERROR;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
case MODE_GET:
|
|
Packit |
fcad23 |
netsnmp_request_set_error_all(requests, SNMP_NOSUCHOBJECT);
|
|
Packit |
fcad23 |
return SNMP_ERR_NOERROR;
|
|
Packit |
fcad23 |
|
|
Packit |
fcad23 |
default:
|
|
Packit |
fcad23 |
netsnmp_request_set_error_all(requests, SNMP_ERR_NOSUCHNAME);
|
|
Packit |
fcad23 |
return SNMP_ERR_NOERROR;
|
|
Packit |
fcad23 |
}
|
|
Packit |
fcad23 |
}
|