view usr/src/lib/fm/libfmd_snmp/common/init.c @ 11050:be69f645ce17

6894028 Some fm libraries are not lint clean 6897387 IPMI facility provider methods not registered on some platforms 6893713 Some fm cmds are not lint clean
author Robert Johnston <Robert.Johnston@Sun.COM>
date Wed, 11 Nov 2009 18:52:48 -0800
parents 6e5751a0b831
children
line wrap: on
line source

/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#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
};

/*
 * This is our entry point for initialization by the agent, which
 * (for reasons unknown) ignores the return value.  The name is fixed
 * by the agent API.
 */
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);
}