#include <fm/fmd_snmp.h>
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "sunFM_impl.h"
#include "module.h"
#include "resource.h"
#include "problem.h"
static const sunFm_table_t sun_fm_tables[] = {
TABLE_REG(sunFmModuleTable),
TABLE_REG(sunFmResourceTable),
TABLE_REG(sunFmProblemTable),
TABLE_REG(sunFmFaultEventTable),
TABLE_NULL
};
int
init_sunFM(void)
{
int max_err = MIB_REGISTERED_OK;
const sunFm_table_t *table;
for (table = sun_fm_tables; table->t_name != NULL; table++) {
int err = table->t_init();
switch (err) {
case MIB_REGISTERED_OK:
DEBUGMSGTL((MODNAME_STR, "registered table %s\n",
table->t_name));
break;
case MIB_DUPLICATE_REGISTRATION:
(void) snmp_log(LOG_ERR, MODNAME_STR
": table %s initialization failed: duplicate "
"registration\n", table->t_name);
break;
case MIB_REGISTRATION_FAILED:
(void) snmp_log(LOG_ERR, MODNAME_STR
": table %s initialization failed: agent "
"registration failure\n", table->t_name);
break;
default:
(void) snmp_log(LOG_ERR, MODNAME_STR
": table %s initialization failed: "
"unknown reason\n", table->t_name);
}
if (err > max_err)
max_err = err;
}
return (max_err);
}