changes for stats and snmp

This commit is contained in:
whottgen
2004-11-04 21:36:19 +00:00
parent f24c18bb4a
commit cafbf37771
14 changed files with 657 additions and 54 deletions

View File

@ -0,0 +1,164 @@
#include "config.h"
#ifdef HAVE_LIBSNMP
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
int
handle_it(netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests)
{
static int the_number = 42;
/*
* We are never called for a GETNEXT if it's registered as a
* "instance", as it's "magically" handled for us.
*/
/*
* a instance handler also only hands us one request at a time, so
* we don't need to loop over a list of requests; we'll only get one.
*/
switch (reqinfo->mode) {
case MODE_GET:
snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
(u_char *)
/* XXX: a pointer to the scalar's data */
&the_number
,
/*
* XXX: the length of the data in bytes
*/
sizeof(the_number));
break;
default:
/*
* we should never get here, so this is a really bad error
*/
return SNMP_ERR_GENERR;
}
return SNMP_ERR_NOERROR;
}
void
init_subagent(void)
{
static oid dhsIllegalInputFailure_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 9 };
static oid dhsOKReturned_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 5 };
static oid dhsTEMPReturned_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 6 };
static oid dhsNetStringFailure_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 12 };
static oid dhsRunningNwThreads_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 3 };
static oid dhsFailedNwThreads_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 4 };
static oid dhsUnknownClassFailure_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 10 };
static oid dhsFailed_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 2 };
static oid dhsNOTFOUNDReturned_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 8 };
static oid dhsAccepted_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 1 };
static oid dhsPERMReturned_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 7 };
static oid dhsTimeoutFailure_oid[] =
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 11 };
DEBUGMSGTL(("smmapd_snmp_subagent", "Initializing\n"));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsIllegalInputFailure",
handle_it,
dhsIllegalInputFailure_oid,
OID_LENGTH(dhsIllegalInputFailure_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsOKReturned", handle_it,
dhsOKReturned_oid,
OID_LENGTH(dhsOKReturned_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsTEMPReturned", handle_it,
dhsTEMPReturned_oid,
OID_LENGTH(dhsTEMPReturned_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsNetStringFailure",
handle_it,
dhsNetStringFailure_oid,
OID_LENGTH(dhsNetStringFailure_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsRunningNwThreads",
handle_it,
dhsRunningNwThreads_oid,
OID_LENGTH(dhsRunningNwThreads_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsFailedNwThreads",
handle_it,
dhsFailedNwThreads_oid,
OID_LENGTH(dhsFailedNwThreads_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsUnknownClassFailure",
handle_it,
dhsUnknownClassFailure_oid,
OID_LENGTH(dhsUnknownClassFailure_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsFailed", handle_it, dhsFailed_oid,
OID_LENGTH(dhsFailed_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsNOTFOUNDReturned",
handle_it,
dhsNOTFOUNDReturned_oid,
OID_LENGTH(dhsNOTFOUNDReturned_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsAccepted", handle_it,
dhsAccepted_oid, OID_LENGTH(dhsAccepted_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsPERMReturned", handle_it,
dhsPERMReturned_oid,
OID_LENGTH(dhsPERMReturned_oid),
HANDLER_CAN_RONLY));
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsTimeoutFailure", handle_it,
dhsTimeoutFailure_oid,
OID_LENGTH(dhsTimeoutFailure_oid),
HANDLER_CAN_RONLY));
}
void snmp_subagent_main () {
snmp_enable_stderrlog();
netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
init_agent("smmapd_subagent");
init_subagent();
init_snmp("smmapd_subagent");
/* main loop here... */
while(1) {
agent_check_and_process(1);
}
/* at shutdown time */
snmp_shutdown("mysubagent");
}
#endif