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,29 +21,38 @@ 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,
dhsFailed Counter32, dhsFailed Counter32,
dhsRunningNwThreads Integer32, dhsRunningNwThreads Integer32,
dhsFailedNwThreads Counter32, dhsFailedNwThreads Counter32,
dhsOKReturned Counter32, dhsOKReturned Counter32,
dhsTEMPReturned Counter32, dhsTEMPReturned Counter32,
dhsPERMReturned Counter32, dhsPERMReturned Counter32,
dhsNOTFOUNDReturned Counter32, dhsNOTFOUNDReturned Counter32,
dhsIllegalInputFailre Counter32, dhsIllegalInputFailre Counter32,
dhsUnknownClassFailure Counter32, dhsUnknownClassFailure Counter32,
dhsTimeoutFailure Counter32, dhsTimeoutFailure Counter32,
dhsNetStringFailure Counter32 dhsNetStringFailure Counter32
} }
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:
snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
case MODE_GET: (u_char *) &number1/* XXX: a pointer to the scalar's data */,
snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER, sizeof(number1) /* XXX: the length of the data in bytes */);
(u_char *) break;
/* XXX: a pointer to the scalar's data */
&the_number
,
/*
* XXX: the length of the data in bytes
*/
sizeof(the_number));
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. */
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 */);
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 };
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(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 () { 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 */