This commit is contained in:
whottgen
2004-11-05 12:02:39 +00:00
parent d01974a95e
commit ae9fc97ea1
3 changed files with 194 additions and 232 deletions

View File

@ -21,6 +21,15 @@ deHottisSmmapdMIB MODULE-IDENTITY
dhsMIBObjects OBJECT IDENTIFIER ::= { deHottisSmmapdMIB 1 } dhsMIBObjects OBJECT IDENTIFIER ::= { deHottisSmmapdMIB 1 }
dhsNumber1 OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"number1"
::= { dhsMIBObjects 1 }
DhsServerStat ::= DhsServerStat ::=
SEQUENCE { SEQUENCE {
dhsAccepted Counter32, dhsAccepted Counter32,
@ -39,11 +48,11 @@ DhsServerStat ::=
dhsServerStat OBJECT-TYPE dhsServerStat OBJECT-TYPE
SYNTAX DhsServerStat SYNTAX DhsServerStat
MAX-ACCESS not-accessible MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"Statistics of the server" "Statistics of the server"
::= { dhsMIBObjects 1 } ::= { dhsMIBObjects 2 }
dhsAccepted OBJECT-TYPE dhsAccepted OBJECT-TYPE
@ -54,95 +63,95 @@ dhsAccepted OBJECT-TYPE
"Connections accepted by the server" "Connections accepted by the server"
::= { dhsServerStat 1 } ::= { dhsServerStat 1 }
dhsFailed OBJECT-TYPE -- dhsFailed OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"Connections the server failed to accept" -- "Connections the server failed to accept"
::= { dhsServerStat 2 } -- ::= { dhsServerStat 2 }
--
dhsRunningNwThreads OBJECT-TYPE -- dhsRunningNwThreads OBJECT-TYPE
SYNTAX Integer32 -- SYNTAX Integer32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"Running networker threads" -- "Running networker threads"
::= { dhsServerStat 3 } -- ::= { dhsServerStat 3 }
--
dhsFailedNwThreads OBJECT-TYPE -- dhsFailedNwThreads OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"Networker threads failed to start" -- "Networker threads failed to start"
::= { dhsServerStat 4 } -- ::= { dhsServerStat 4 }
--
dhsOKReturned OBJECT-TYPE -- dhsOKReturned OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"OK returned to sendmail" -- "OK returned to sendmail"
::= { dhsServerStat 5 } -- ::= { dhsServerStat 5 }
--
dhsTEMPReturned OBJECT-TYPE -- dhsTEMPReturned OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"TEMP failure returned to sendmail" -- "TEMP failure returned to sendmail"
::= { dhsServerStat 6 } -- ::= { dhsServerStat 6 }
--
dhsPERMReturned OBJECT-TYPE -- dhsPERMReturned OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"PERM failure returned to sendmail" -- "PERM failure returned to sendmail"
::= { dhsServerStat 7 } -- ::= { dhsServerStat 7 }
--
dhsNOTFOUNDReturned OBJECT-TYPE -- dhsNOTFOUNDReturned OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"NOTFOUND returned to sendmail" -- "NOTFOUND returned to sendmail"
::= { dhsServerStat 8 } -- ::= { dhsServerStat 8 }
--
dhsIllegalInputFailure OBJECT-TYPE -- dhsIllegalInputFailure OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"Class not found (PERM) returned to sendmail" -- "Class not found (PERM) returned to sendmail"
::= { dhsServerStat 9 } -- ::= { dhsServerStat 9 }
--
dhsUnknownClassFailure OBJECT-TYPE -- dhsUnknownClassFailure OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"Class not found (PERM) returned to sendmail" -- "Class not found (PERM) returned to sendmail"
::= { dhsServerStat 10 } -- ::= { dhsServerStat 10 }
--
dhsTimeoutFailure OBJECT-TYPE -- dhsTimeoutFailure OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"Timeout failure returned to sendmail" -- "Timeout failure returned to sendmail"
::= { dhsServerStat 11 } -- ::= { dhsServerStat 11 }
--
dhsNetStringFailure OBJECT-TYPE -- dhsNetStringFailure OBJECT-TYPE
SYNTAX Counter32 -- SYNTAX Counter32
MAX-ACCESS read-only -- MAX-ACCESS read-only
STATUS current -- STATUS current
DESCRIPTION -- DESCRIPTION
"NetString (NOK) returned to sendmail" -- "NetString (NOK) returned to sendmail"
::= { dhsServerStat 12 } -- ::= { dhsServerStat 12 }
--
--
--
END END

View File

@ -7,7 +7,7 @@ port = 8887
; plugins = test_worker1 test_worker2 verifier cyruscheck lua_worker ; plugins = test_worker1 test_worker2 verifier cyruscheck lua_worker
plugins = verifier plugins = verifier
enable_stats = 1 enable_stats = 1
; enable_snmp = 0 enable_snmp = 1
[snmp] [snmp]

View File

@ -5,157 +5,110 @@
#include <net-snmp/net-snmp-includes.h> #include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h> #include <net-snmp/agent/net-snmp-agent-includes.h>
int number1 = 42;
int accepted = 43;
int int
handle_it(netsnmp_mib_handler *handler, handle_counter32(netsnmp_mib_handler *handler,
netsnmp_handler_registration *reginfo, netsnmp_handler_registration *reginfo,
netsnmp_agent_request_info *reqinfo, netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests) 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 are never called for a GETNEXT if it's registered as a we don't need to loop over a list of requests; we'll only get one. */
* "instance", as it's "magically" handled for us.
*/
/* switch(reqinfo->mode) {
* 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: case MODE_GET:
snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER, snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
(u_char *) (u_char *) &number1/* XXX: a pointer to the scalar's data */,
/* XXX: a pointer to the scalar's data */ sizeof(number1) /* XXX: the length of the data in bytes */);
&the_number
,
/*
* XXX: the length of the data in bytes
*/
sizeof(the_number));
break; break;
default: default:
/* /* we should never get here, so this is a really bad error */
* we should never get here, so this is a really bad error
*/
return SNMP_ERR_GENERR; return SNMP_ERR_GENERR;
} }
return SNMP_ERR_NOERROR; return SNMP_ERR_NOERROR;
} }
int
handle_dhsAccepted(netsnmp_mib_handler *handler,
void netsnmp_handler_registration *reginfo,
init_subagent(void) netsnmp_agent_request_info *reqinfo,
netsnmp_request_info *requests)
{ {
static oid dhsIllegalInputFailure_oid[] = /* We are never called for a GETNEXT if it's registered as a
{ 1, 3, 6, 1, 4, 1, 9676, 2, 1, 1, 9 }; "instance", as it's "magically" handled for us. */
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")); /* 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. */
netsnmp_register_scalar(netsnmp_create_handler_registration switch(reqinfo->mode) {
("dhsIllegalInputFailure",
handle_it, case MODE_GET:
dhsIllegalInputFailure_oid, snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
OID_LENGTH(dhsIllegalInputFailure_oid), (u_char *) &accepted/* XXX: a pointer to the scalar's data */,
HANDLER_CAN_RONLY)); sizeof(accepted) /* XXX: the length of the data in bytes */);
netsnmp_register_scalar(netsnmp_create_handler_registration break;
("dhsOKReturned", handle_it,
dhsOKReturned_oid,
OID_LENGTH(dhsOKReturned_oid), default:
HANDLER_CAN_RONLY)); /* we should never get here, so this is a really bad error */
netsnmp_register_scalar(netsnmp_create_handler_registration return SNMP_ERR_GENERR;
("dhsTEMPReturned", handle_it, }
dhsTEMPReturned_oid,
OID_LENGTH(dhsTEMPReturned_oid), return SNMP_ERR_NOERROR;
HANDLER_CAN_RONLY)); }
netsnmp_register_scalar(netsnmp_create_handler_registration
("dhsNetStringFailure", /** Initializes the dhsMIBObjects module */
handle_it, void
dhsNetStringFailure_oid, init_dhsMIBObjects(void)
OID_LENGTH(dhsNetStringFailure_oid), {
HANDLER_CAN_RONLY)); static oid dhsNumber1_oid[] = { 1,3,6,1,4,1,9676,2,1,1 };
netsnmp_register_scalar(netsnmp_create_handler_registration static oid dhsAccepted_oid[] = { 1,3,6,1,4,1,9676,2,1,2,1 };
("dhsRunningNwThreads",
handle_it,
dhsRunningNwThreads_oid, DEBUGMSGTL(("dhsMIBObjects", "Initializing\n"));
OID_LENGTH(dhsRunningNwThreads_oid),
HANDLER_CAN_RONLY)); netsnmp_register_scalar(
netsnmp_register_scalar(netsnmp_create_handler_registration netsnmp_create_handler_registration("dhsNumber1", handle_counter32,
("dhsFailedNwThreads", dhsNumber1_oid, OID_LENGTH(dhsNumber1_oid),
handle_it, HANDLER_CAN_RONLY
dhsFailedNwThreads_oid, ));
OID_LENGTH(dhsFailedNwThreads_oid), netsnmp_register_scalar(
HANDLER_CAN_RONLY)); netsnmp_create_handler_registration("dhsAccepted", handle_counter32,
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), dhsAccepted_oid, OID_LENGTH(dhsAccepted_oid),
HANDLER_CAN_RONLY)); 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 () { void snmp_subagent_main () {
int res;
printf("snmp_subagent_main: 1\n");
snmp_enable_stderrlog(); snmp_enable_stderrlog();
printf("snmp_subagent_main: 2\n");
netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1); netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
printf("snmp_subagent_main: 3\n");
init_agent("smmapd_subagent"); init_agent("smmapd_subagent");
init_subagent(); printf("snmp_subagent_main: 4\n");
init_dhsMIBObjects();
printf("snmp_subagent_main: 5\n");
init_snmp("smmapd_subagent"); init_snmp("smmapd_subagent");
printf("snmp_subagent_main: 6\n");
/* main loop here... */ /* main loop here... */
while(1) { while(1) {
agent_check_and_process(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);
} }
/* at shutdown time */ /* at shutdown time */