diff --git a/smmapdfw/smmapd/snmp_subagent.c b/smmapdfw/smmapd/snmp_subagent.c index 71ca991..3775671 100644 --- a/smmapdfw/smmapd/snmp_subagent.c +++ b/smmapdfw/smmapd/snmp_subagent.c @@ -5,59 +5,9 @@ #include #include + int number1 = 42; -#if 0 -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; irequestvb->name_length; i++) { - printf("%d ", requests->requestvb->name[i]); -} -printf("\n"); - - switch(reqinfo->mode) { - - case MODE_GET: - snmp_set_var_typed_value(requests->requestvb, type, - (u_char *) &accepted, - sizeof(accepted)); - break; - - default: - return SNMP_ERR_GENERR; - } - - 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, @@ -65,9 +15,8 @@ handle_number1(netsnmp_mib_handler *handler, netsnmp_agent_request_info *reqinfo, netsnmp_request_info *requests) { - static int number1 = 42; - switch(reqinfo->mode) { + case MODE_GET: snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER, (u_char *) &number1, @@ -81,99 +30,32 @@ 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)); 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) +init_dhsMIBObjects(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[] = { 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 */ - 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 */ + static oid dhsNumber1_oid[] = { 1,3,6,1,4,1,9676,2,1,1 }; 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(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); -#endif } void snmp_subagent_main () { snmp_enable_stderrlog(); netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1); init_agent("smmapd_subagent"); - init_subagent(); + init_dhsMIBObjects(); init_snmp("smmapd_subagent"); /* main loop here... */