snmp stuff
This commit is contained in:
@ -5,8 +5,6 @@
|
||||
#include <net-snmp/net-snmp-includes.h>
|
||||
#include <net-snmp/agent/net-snmp-agent-includes.h>
|
||||
|
||||
int number1 = 42;
|
||||
int accepted = 43;
|
||||
|
||||
int
|
||||
handle_counter32(netsnmp_mib_handler *handler,
|
||||
@ -14,13 +12,28 @@ handle_counter32(netsnmp_mib_handler *handler,
|
||||
netsnmp_agent_request_info *reqinfo,
|
||||
netsnmp_request_info *requests)
|
||||
{
|
||||
/* We are never called for a GETNEXT if it's registered as a
|
||||
"instance", as it's "magically" handled for us. */
|
||||
return handle_it(handler, reginfo, reqinfo, requests, ASN_COUNTER);
|
||||
}
|
||||
|
||||
/* 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. */
|
||||
int
|
||||
handle_integer32(netsnmp_mib_handler *handler,
|
||||
netsnmp_handler_registration *reginfo,
|
||||
netsnmp_agent_request_info *reqinfo,
|
||||
netsnmp_request_info *requests)
|
||||
{
|
||||
return handle_it(handler, reginfo, reqinfo, requests, ASN_INTEGER);
|
||||
}
|
||||
|
||||
int
|
||||
handle_it(netsnmp_mib_handler *handler,
|
||||
netsnmp_handler_registration *reginfo,
|
||||
netsnmp_agent_request_info *reqinfo,
|
||||
netsnmp_request_info *requests,
|
||||
u_char type)
|
||||
{
|
||||
static int accepted = 0;
|
||||
int i;
|
||||
accepted++;
|
||||
printf("*** name: ");
|
||||
for (i=0; i<requests->requestvb->name_length; i++) {
|
||||
printf("%d ", requests->requestvb->name[i]);
|
||||
@ -30,14 +43,12 @@ printf("\n");
|
||||
switch(reqinfo->mode) {
|
||||
|
||||
case MODE_GET:
|
||||
snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
|
||||
(u_char *) &number1/* XXX: a pointer to the scalar's data */,
|
||||
sizeof(number1) /* XXX: the length of the data in bytes */);
|
||||
snmp_set_var_typed_value(requests->requestvb, type,
|
||||
(u_char *) &accepted,
|
||||
sizeof(accepted));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
/* we should never get here, so this is a really bad error */
|
||||
return SNMP_ERR_GENERR;
|
||||
}
|
||||
|
||||
@ -45,77 +56,75 @@ printf("\n");
|
||||
}
|
||||
|
||||
int
|
||||
handle_dhsAccepted(netsnmp_mib_handler *handler,
|
||||
handle_number1(netsnmp_mib_handler *handler,
|
||||
netsnmp_handler_registration *reginfo,
|
||||
netsnmp_agent_request_info *reqinfo,
|
||||
netsnmp_request_info *requests)
|
||||
{
|
||||
/* 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. */
|
||||
static int number1 = 42;
|
||||
|
||||
switch(reqinfo->mode) {
|
||||
|
||||
case MODE_GET:
|
||||
snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
|
||||
(u_char *) &accepted/* XXX: a pointer to the scalar's data */,
|
||||
sizeof(accepted) /* XXX: the length of the data in bytes */);
|
||||
(u_char *) &number1,
|
||||
sizeof(number1));
|
||||
break;
|
||||
|
||||
|
||||
default:
|
||||
/* we should never get here, so this is a really bad error */
|
||||
return SNMP_ERR_GENERR;
|
||||
}
|
||||
|
||||
return SNMP_ERR_NOERROR;
|
||||
}
|
||||
|
||||
/** Initializes the dhsMIBObjects module */
|
||||
void
|
||||
init_dhsMIBObjects(void)
|
||||
{
|
||||
static oid dhsNumber1_oid[] = { 1,3,6,1,4,1,9676,2,1,1 };
|
||||
static oid dhsAccepted_oid[] = { 1,3,6,1,4,1,9676,2,1,2,1 };
|
||||
#define NETSNMP_REGISTER_SCALAR(A, B) netsnmp_register_scalar(netsnmp_create_handler_registration(#A, B, A##_oid, OID_LENGTH(A##_oid), HANDLER_CAN_RONLY))
|
||||
|
||||
void
|
||||
init_subagent(void)
|
||||
{
|
||||
static oid dhsNumber1_oid[] = { 1,3,6,1,4,1,9676,2,1,1 }; /* counter */
|
||||
static oid dhsAccepted_oid[] = { 1,3,6,1,4,1,9676,2,1,2,1 }; /* counter */
|
||||
static oid dhsFailed_oid[] = { 1,3,6,1,4,1,9676,2,1,2,2 }; /* counter */
|
||||
static oid dhsRunningNwThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,2,3 }; /* integer */
|
||||
static oid dhsNwThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,2,4 }; /* counter */
|
||||
static oid dhsFailedNwThreads_oid[] = { 1,3,6,1,4,1,9676,2,1,2,5 }; /* counter */
|
||||
static oid dhsOKReturned_oid[] = { 1,3,6,1,4,1,9676,2,1,2,6 }; /* counter */
|
||||
static oid dhsTEMPReturned_oid[] = { 1,3,6,1,4,1,9676,2,1,2,7 }; /* counter */
|
||||
static oid dhsPERMReturned_oid[] = { 1,3,6,1,4,1,9676,2,1,2,8 }; /* counter */
|
||||
static oid dhsNOTFOUNDReturned_oid[] = { 1,3,6,1,4,1,9676,2,1,2,9 }; /* counter */
|
||||
static oid dhsIllegalInputFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,10 }; /* counter */
|
||||
static oid dhsUnknownClassFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,11 }; /* counter */
|
||||
static oid dhsTimeoutFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,12 }; /* counter */
|
||||
static oid dhsNetStringFailure_oid[] = { 1,3,6,1,4,1,9676,2,1,2,13 }; /* counter */
|
||||
|
||||
DEBUGMSGTL(("dhsMIBObjects", "Initializing\n"));
|
||||
|
||||
netsnmp_register_scalar(
|
||||
netsnmp_create_handler_registration("dhsNumber1", handle_counter32,
|
||||
dhsNumber1_oid, OID_LENGTH(dhsNumber1_oid),
|
||||
HANDLER_CAN_RONLY
|
||||
));
|
||||
netsnmp_register_scalar(
|
||||
netsnmp_create_handler_registration("dhsAccepted", handle_counter32,
|
||||
dhsAccepted_oid, OID_LENGTH(dhsAccepted_oid),
|
||||
HANDLER_CAN_RONLY
|
||||
));
|
||||
|
||||
NETSNMP_REGISTER_SCALAR(dhsNumber1, handle_number1);
|
||||
NETSNMP_REGISTER_SCALAR(dhsAccepted, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsFailed, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsRunningNwThreads, handle_integer32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsNwThreads, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsFailedNwThreads, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsOKReturned, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsTEMPReturned, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsPERMReturned, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsNOTFOUNDReturned, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsIllegalInputFailure, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsUnknownClassFailure, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsTimeoutFailure, handle_counter32);
|
||||
NETSNMP_REGISTER_SCALAR(dhsNetStringFailure, handle_counter32);
|
||||
}
|
||||
|
||||
void snmp_subagent_main () {
|
||||
int res;
|
||||
|
||||
printf("snmp_subagent_main: 1\n");
|
||||
snmp_enable_stderrlog();
|
||||
printf("snmp_subagent_main: 2\n");
|
||||
netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
|
||||
printf("snmp_subagent_main: 3\n");
|
||||
init_agent("smmapd_subagent");
|
||||
printf("snmp_subagent_main: 4\n");
|
||||
init_dhsMIBObjects();
|
||||
printf("snmp_subagent_main: 5\n");
|
||||
init_subagent();
|
||||
init_snmp("smmapd_subagent");
|
||||
printf("snmp_subagent_main: 6\n");
|
||||
|
||||
/* main loop here... */
|
||||
while(1) {
|
||||
printf("snmp_subagent_main: main loop\n");
|
||||
res=agent_check_and_process(1);
|
||||
printf("snmp_subagent_main: result in main loop: %d\n",res);
|
||||
agent_check_and_process(1);
|
||||
}
|
||||
|
||||
/* at shutdown time */
|
||||
|
Reference in New Issue
Block a user