target_counters.c
上传用户:wxp200602
上传日期:2007-10-30
资源大小:4028k
文件大小:2k
- #include <net-snmp/net-snmp-config.h>
- #if HAVE_STRING_H
- #include <string.h>
- #else
- #include <strings.h>
- #endif
- #include <net-snmp/net-snmp-includes.h>
- #include <net-snmp/agent/net-snmp-agent-includes.h>
- #include "target_counters.h"
- #include <net-snmp/agent/instance.h>
- static oid unavailable_context_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1, 4 };
- static oid unknown_context_oid[] = { 1, 3, 6, 1, 6, 3, 12, 1, 5 };
- void
- init_target_counters(void)
- {
- DEBUGMSGTL(("target_counters", "initializingn"));
- /*
- * unknown contexts
- */
- netsnmp_register_scalar(
- netsnmp_create_handler_registration("snmpUnknownContexts",
- get_unknown_context_count,
- unknown_context_oid,
- OID_LENGTH(unknown_context_oid),
- HANDLER_CAN_RONLY));
- /*
- * unavailable contexts
- */
- netsnmp_register_scalar(
- netsnmp_create_handler_registration("snmpUnavailableContexts",
- get_unavailable_context_count,
- unavailable_context_oid,
- OID_LENGTH(unavailable_context_oid),
- HANDLER_CAN_RONLY));
- }
- int
- get_unknown_context_count(netsnmp_mib_handler *handler,
- netsnmp_handler_registration *reginfo,
- netsnmp_agent_request_info *reqinfo,
- netsnmp_request_info *requests)
- {
- /*
- * we're only called for GETs of the right node, so this is easy:
- */
- u_long long_ret =
- snmp_get_statistic(STAT_SNMPUNKNOWNCONTEXTS);
- snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
- (u_char *) & long_ret, sizeof(long_ret));
- return SNMP_ERR_NOERROR;
- }
- int
- get_unavailable_context_count(netsnmp_mib_handler *handler,
- netsnmp_handler_registration *reginfo,
- netsnmp_agent_request_info *reqinfo,
- netsnmp_request_info *requests)
- {
- /*
- * we're only called for GETs of the right node, so this is easy:
- */
- u_long long_ret =
- snmp_get_statistic(STAT_SNMPUNAVAILABLECONTEXTS);
- snmp_set_var_typed_value(requests->requestvb, ASN_COUNTER,
- (u_char *) & long_ret, sizeof(long_ret));
- return SNMP_ERR_NOERROR;
- }