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
-- SYNTAX Integer32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "Running networker threads"
-- ::= { dhsServerStat 3 }
--
-- dhsFailedNwThreads OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "Networker threads failed to start"
-- ::= { dhsServerStat 4 }
--
-- dhsOKReturned OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "OK returned to sendmail"
-- ::= { dhsServerStat 5 }
--
-- dhsTEMPReturned OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "TEMP failure returned to sendmail"
-- ::= { dhsServerStat 6 }
--
-- dhsPERMReturned OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "PERM failure returned to sendmail"
-- ::= { dhsServerStat 7 }
--
-- dhsNOTFOUNDReturned OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "NOTFOUND returned to sendmail"
-- ::= { dhsServerStat 8 }
--
-- dhsIllegalInputFailure OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "Class not found (PERM) returned to sendmail"
-- ::= { dhsServerStat 9 }
--
-- dhsUnknownClassFailure OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "Class not found (PERM) returned to sendmail"
-- ::= { dhsServerStat 10 }
--
-- dhsTimeoutFailure OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "Timeout failure returned to sendmail"
-- ::= { dhsServerStat 11 }
--
-- dhsNetStringFailure OBJECT-TYPE
-- SYNTAX Counter32
-- MAX-ACCESS read-only
-- STATUS current
-- DESCRIPTION
-- "NetString (NOK) returned to sendmail"
-- ::= { dhsServerStat 12 }
--
--
--
dhsRunningNwThreads OBJECT-TYPE END
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Running networker threads"
::= { dhsServerStat 3 }
dhsFailedNwThreads OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Networker threads failed to start"
::= { dhsServerStat 4 }
dhsOKReturned OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"OK returned to sendmail"
::= { dhsServerStat 5 }
dhsTEMPReturned OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"TEMP failure returned to sendmail"
::= { dhsServerStat 6 }
dhsPERMReturned OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"PERM failure returned to sendmail"
::= { dhsServerStat 7 }
dhsNOTFOUNDReturned OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"NOTFOUND returned to sendmail"
::= { dhsServerStat 8 }
dhsIllegalInputFailure OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Class not found (PERM) returned to sendmail"
::= { dhsServerStat 9 }
dhsUnknownClassFailure OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Class not found (PERM) returned to sendmail"
::= { dhsServerStat 10 }
dhsTimeoutFailure OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"Timeout failure returned to sendmail"
::= { dhsServerStat 11 }
dhsNetStringFailure OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"NetString (NOK) returned to sendmail"
::= { dhsServerStat 12 }
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) {
/* case MODE_GET:
* a instance handler also only hands us one request at a time, so snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
* we don't need to loop over a list of requests; we'll only get one. (u_char *) &number1/* XXX: a pointer to the scalar's data */,
*/ sizeof(number1) /* XXX: the length of the data in bytes */);
break;
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: 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 */