diff options
Diffstat (limited to 'agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c')
-rw-r--r-- | agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c new file mode 100644 index 0000000..a567d2e --- /dev/null +++ b/agent/mibgroup/tsm-mib/snmpTsmStats/snmpTsmStats.c @@ -0,0 +1,53 @@ +/* + * snmpTsmStats + */ + +#include <net-snmp/net-snmp-config.h> +#include <net-snmp/net-snmp-features.h> +#include <net-snmp/net-snmp-includes.h> +#include <net-snmp/agent/net-snmp-agent-includes.h> +#include <net-snmp/library/snmp_api.h> +#include "snmpTsmStats.h" + +static netsnmp_handler_registration* _myreg = NULL; + +netsnmp_feature_require(helper_statistics) + +netsnmp_feature_child_of(shutdown_snmptsmsession, netsnmp_unused) + +/** Initializes the snmpTsmStats module */ +void +init_snmpTsmStats(void) +{ + static oid snmpTsmStats_oid[] = { 1, 3, 6, 1, 2, 1, 190, 1, 1 }; + int rc; + + DEBUGMSGTL(("snmpTsmStats", "Initializing\n")); + + _myreg = netsnmp_create_handler_registration("snmpTsmStats", NULL, + snmpTsmStats_oid, + OID_LENGTH(snmpTsmStats_oid), + HANDLER_CAN_RONLY); + if (NULL == _myreg) { + snmp_log(LOG_ERR, "failed to create handler registration for " + "snmpTsmStats\n"); + return; + } + rc = NETSNMP_REGISTER_STATISTIC_HANDLER(_myreg, 1, TSM); + if (MIB_REGISTERED_OK != rc) { + snmp_log(LOG_ERR, "failed to register snmpTsmStats mdoule\n"); + netsnmp_handler_registration_free(_myreg); + _myreg = NULL; + } +} + +#ifndef NETSNMP_FEATURE_REMOVE_SHUTDOWN_SNMPTSMSESSION +void +shutdown_snmpTsmSession(void) +{ + if (_myreg) { + netsnmp_unregister_handler(_myreg); + _myreg = NULL; + } +} +#endif /* NETSNMP_FEATURE_REMOVE_SHUTDOWN_SNMPTSMSESSION */ |