diff --git a/smmapdfw/smmapd/snmp_subagent.c b/smmapdfw/smmapd/snmp_subagent.c index 499cded..71ca991 100644 --- a/smmapdfw/smmapd/snmp_subagent.c +++ b/smmapdfw/smmapd/snmp_subagent.c @@ -5,25 +5,9 @@ #include #include +int number1 = 42; -int -handle_counter32(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_COUNTER); -} - -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); -} - +#if 0 int handle_it(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, @@ -55,6 +39,26 @@ printf("\n"); return SNMP_ERR_NOERROR; } +int +handle_counter32(netsnmp_mib_handler *handler, + netsnmp_handler_registration *reginfo, + netsnmp_agent_request_info *reqinfo, + netsnmp_request_info *requests) +{ +printf("handle_counter32\n"); + return handle_it(handler, reginfo, reqinfo, requests, ASN_COUNTER); +} + +int +handle_integer32(netsnmp_mib_handler *handler, + netsnmp_handler_registration *reginfo, + netsnmp_agent_request_info *reqinfo, + netsnmp_request_info *requests) +{ +printf("handle_integer32\n"); + return handle_it(handler, reginfo, reqinfo, requests, ASN_INTEGER); +} + int handle_number1(netsnmp_mib_handler *handler, netsnmp_handler_registration *reginfo, @@ -77,7 +81,41 @@ handle_number1(netsnmp_mib_handler *handler, return SNMP_ERR_NOERROR; } -#define NETSNMP_REGISTER_SCALAR(A, B) netsnmp_register_scalar(netsnmp_create_handler_registration(#A, B, A##_oid, OID_LENGTH(A##_oid), HANDLER_CAN_RONLY)) +#define NETSNMP_REGISTER_SCALAR(A, B) netsnmp_register_scalar(netsnmp_create_handler_registration(#A, B, A##_oid, OID_LENGTH(A##_oid), HANDLER_CAN_RONLY)); printf("registered: %s\n", #A) +#endif + + +int +handle_dhsNumber1(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. */ + + 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 */) +; + 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) @@ -85,7 +123,7 @@ 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 dhsRunningNwThreads_oid[] = { 0,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 */ @@ -99,6 +137,21 @@ init_subagent(void) DEBUGMSGTL(("dhsMIBObjects", "Initializing\n")); + netsnmp_register_scalar( + netsnmp_create_handler_registration("dhsNumber1", handle_dhsNumber1, + dhsNumber1_oid, OID_LENGTH(dhsNumber1_oid), + HANDLER_CAN_RONLY + )); + + +#if 0 + netsnmp_register_scalar( + netsnmp_create_handler_registration("dhsNumber1", handle_number1, + dhsNumber1_oid, OID_LENGTH(dhsNumber1_oid), + HANDLER_CAN_RONLY + )); + + NETSNMP_REGISTER_SCALAR(dhsNumber1, handle_number1); NETSNMP_REGISTER_SCALAR(dhsAccepted, handle_counter32); NETSNMP_REGISTER_SCALAR(dhsFailed, handle_counter32); @@ -113,6 +166,7 @@ init_subagent(void) NETSNMP_REGISTER_SCALAR(dhsUnknownClassFailure, handle_counter32); NETSNMP_REGISTER_SCALAR(dhsTimeoutFailure, handle_counter32); NETSNMP_REGISTER_SCALAR(dhsNetStringFailure, handle_counter32); +#endif } void snmp_subagent_main () { @@ -124,6 +178,7 @@ void snmp_subagent_main () { /* main loop here... */ while(1) { +printf("*** main loop\n"); agent_check_and_process(1); }