xref: /onnv-gate/usr/src/cmd/picl/plugins/sun4v/snmp/snmpplugin.h (revision 11471:d775393d483f)
13941Svenki /*
23941Svenki  * CDDL HEADER START
33941Svenki  *
43941Svenki  * The contents of this file are subject to the terms of the
53941Svenki  * Common Development and Distribution License (the "License").
63941Svenki  * You may not use this file except in compliance with the License.
73941Svenki  *
83941Svenki  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
93941Svenki  * or http://www.opensolaris.org/os/licensing.
103941Svenki  * See the License for the specific language governing permissions
113941Svenki  * and limitations under the License.
123941Svenki  *
133941Svenki  * When distributing Covered Code, include this CDDL HEADER in each
143941Svenki  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
153941Svenki  * If applicable, add the following below this CDDL HEADER, with the
163941Svenki  * fields enclosed by brackets "[]" replaced with your own identifying
173941Svenki  * information: Portions Copyright [yyyy] [name of copyright owner]
183941Svenki  *
193941Svenki  * CDDL HEADER END
203941Svenki  */
213941Svenki 
223941Svenki /*
23*11471SMichael.Bergknoff@Sun.COM  * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
243941Svenki  * Use is subject to license terms.
253941Svenki  */
263941Svenki 
273941Svenki #ifndef	_SNMPPLUGIN_H
283941Svenki #define	_SNMPPLUGIN_H
293941Svenki 
303941Svenki #ifdef	__cplusplus
313941Svenki extern "C" {
323941Svenki #endif
333941Svenki 
343941Svenki /*
353941Svenki  * The /physical-platform node
363941Svenki  */
373941Svenki #define	PICL_NODE_PHYSPLAT		"physical-platform"
383941Svenki 
393941Svenki /*
403941Svenki  * List of volatile property OIDs to lookup and update when needed
413941Svenki  */
423941Svenki typedef struct {
433941Svenki 	picl_prophdl_t  prop;
443941Svenki 	char		*oidstr;
453941Svenki 	int		row;
463941Svenki 	int		proptype;
473941Svenki } vol_prophdl_t;
483941Svenki 
493941Svenki /*
503941Svenki  * Types of volatile properties (proptype values)
513941Svenki  */
523941Svenki #define	VPT_PLATOPSTATE		1
533941Svenki #define	VPT_NUMSENSOR		2
543941Svenki #define	VPT_BINSENSOR		3
553941Svenki #define	VPT_ALARMSTATE		4
563941Svenki #define	VPT_BATTERYSTATUS	5
573941Svenki 
583941Svenki /*
593941Svenki  * Storage related and miscellaneous definitions
603941Svenki  */
613941Svenki #define	N_ELEMS_IN_VOLPROP_BLOCK	512
623941Svenki #define	N_ELEMS_IN_NODE_BLOCK		256
633941Svenki #define	NODE_BLOCK_SHIFT		8
643941Svenki #define	DEFAULT_SLOT_TYPE		"slot"
653941Svenki 
663941Svenki /*
673941Svenki  * Local macros and property ids
683941Svenki  */
693941Svenki #define	ADD_NODE(cl)							\
703941Svenki {									\
713941Svenki 	if (ptree_create_and_add_node(parenth, node_name, cl,		\
723941Svenki 	    &nodeh) != PICL_SUCCESS) {					\
733941Svenki 		log_msg(LOG_ERR, SNMPP_ADD_NODE_FAIL, node_name, cl);	\
743941Svenki 		return (NULL);						\
753941Svenki 	}								\
763941Svenki }
773941Svenki 
783941Svenki #define	CHECK_LINKRESET(errp, retval)		\
793941Svenki 	if ((errp) && (*errp == ECANCELED)) {	\
803941Svenki 		return (retval);		\
813941Svenki 	}
823941Svenki 
833941Svenki #define	CHECK_LINKRESET_VOID(errp)		\
843941Svenki 	if ((errp) && (*errp == ECANCELED)) {	\
853941Svenki 		return;				\
863941Svenki 	}
873941Svenki 
883941Svenki #define	min(x, y)	((x) < (y) ? (x) : (y))
893941Svenki 
903941Svenki typedef enum {
913941Svenki 	PP_SERIAL_NUM = 1,
923941Svenki 	PP_SLOT_TYPE,
933941Svenki 	PP_STATE,
943941Svenki 	PP_OPSTATUS,
953941Svenki 	PP_BATT_STATUS,
963941Svenki 	PP_TEMPERATURE,
973941Svenki 	PP_VOLTAGE,
983941Svenki 	PP_CURRENT,
993941Svenki 	PP_SPEED,
1003941Svenki 	PP_SENSOR_VALUE,
1013941Svenki 	PP_BASE_UNITS,
1023941Svenki 	PP_EXPONENT,
1033941Svenki 	PP_RATE_UNITS,
1043941Svenki 	PP_CONDITION,
1053941Svenki 	PP_EXPECTED,
1063941Svenki 	PP_REPLACEABLE,
1073941Svenki 	PP_HOTSWAPPABLE,
1083941Svenki 	PP_IS_FRU,
1093941Svenki 	PP_HW_REVISION,
1103941Svenki 	PP_FW_REVISION,
1113941Svenki 	PP_MFG_NAME,
1123941Svenki 	PP_MODEL_NAME,
1133941Svenki 	PP_DESCRIPTION,
11410271SJason.Beloro@Sun.COM 	PP_LABEL
1153941Svenki } sp_propid_t;
1163941Svenki 
1173941Svenki /*
1183941Svenki  * Plugin global routines
1193941Svenki  */
1203941Svenki void snmpplugin_init(void);
1213941Svenki void snmpplugin_fini(void);
1223941Svenki 
1233941Svenki /*
1243941Svenki  * Plugin messages
1253941Svenki  */
1263941Svenki #define	SNMPP_NO_ROOT			\
1273941Svenki     gettext("PICL snmpplugin: cannot get picl tree root (ret=%d)\n")
1283941Svenki 
1293941Svenki #define	SNMPP_CANT_INIT			\
1303941Svenki     gettext("PICL snmpplugin: cannot initialize snmp service\n")
1313941Svenki 
1323941Svenki #define	SNMPP_CANT_CREATE_PHYSPLAT	\
1333941Svenki     gettext("PICL snmpplugin: cannot create physical-platform root (ret=%d)\n")
1343941Svenki 
1353941Svenki #define	SNMPP_CANT_CREATE_TREE_BUILDER	\
1363941Svenki     gettext("PICL snmpplugin: cannot create thr to handle hotplugs (ret=%d)\n")
1373941Svenki 
1383941Svenki #define	SNMPP_NO_ENTPHYSNAME		\
1393941Svenki     gettext("PICL snmpplugin: cannot get entPhysicalName (row=%d)\n")
1403941Svenki 
1413941Svenki #define	SNMPP_ADD_NODE_FAIL		\
1423941Svenki     gettext("PICL snmpplugin: couldn't add node %s (class=%d)\n")
1433941Svenki 
1443941Svenki #define	SNMPP_UNSUPP_SENSOR_CLASS	\
1453941Svenki     gettext("PICL snmpplugin: sunPlatSensorClass %d unsupported (row=%d)\n")
1463941Svenki 
1473941Svenki #define	SNMPP_UNKNOWN_ENTPHYSCLASS	\
1483941Svenki     gettext("PICL snmpplugin: entPhysicalClass %d unknown (row=%d)\n")
1493941Svenki 
1503941Svenki #define	SNMPP_NO_MEM			\
1513941Svenki     gettext("PICL snmpplugin: failed to allocate %d bytes\n")
1523941Svenki 
1533941Svenki #define	SNMPP_CANT_FIND_VOLPROP		\
1543941Svenki     gettext("PICL snmpplugin: cannot find volatile property (proph=%lx)\n")
1553941Svenki 
1563941Svenki #define	SNMPP_INV_PLAT_EQUIP_OPSTATE	\
1573941Svenki     gettext("PICL snmpplugin: invalid sunPlatEquipmentOpState %d (row=%d)\n")
1583941Svenki 
1593941Svenki #define	SNMPP_INV_PLAT_BINSNSR_CURRENT	\
1603941Svenki     gettext("PICL snmpplugin: invalid sunPlatBinarySensorCurrent %d (row=%d)\n")
1613941Svenki 
1623941Svenki #define	SNMPP_NO_SLOT_TYPE		\
1633941Svenki     gettext("PICL snmpplugin: no acceptable slot types (row=%d)\n")
1643941Svenki 
1653941Svenki #define	SNMPP_CANT_INIT_PROPINFO	\
1663941Svenki     gettext("PICL snmpplugin: cannot init picl propinfo (err=%d)\n")
1673941Svenki 
1683941Svenki #define	SNMPP_CANT_ADD_PROP		\
1693941Svenki     gettext("PICL snmpplugin: cannot add property, err=%d (node=%lx)\n")
1703941Svenki 
1713941Svenki #define	SNMPP_CANT_INIT_STR_PROPINFO	\
1723941Svenki     gettext("PICL snmpplugin: cannot init picl str propinfo (err=%d)\n")
1733941Svenki 
1743941Svenki #define	SNMPP_CANT_ADD_STR_PROP		\
1753941Svenki     gettext("PICL snmpplugin: cannot add string property (err=%d, node=%lx)\n")
1763941Svenki 
1773941Svenki #define	SNMPP_CANT_INIT_VOID_PROPINFO	\
1783941Svenki     gettext("PICL snmpplugin: cannot init picl void propinfo (err=%d)\n")
1793941Svenki 
1803941Svenki #define	SNMPP_CANT_ADD_VOID_PROP	\
1813941Svenki     gettext("PICL snmpplugin: cannot add void property (err=%d, node=%lx)\n")
1823941Svenki 
1833941Svenki #define	SNMPP_CANT_INIT_INT_PROPINFO	\
1843941Svenki     gettext("PICL snmpplugin: cannot init picl int propinfo (err=%d)\n")
1853941Svenki 
1863941Svenki #define	SNMPP_CANT_ADD_INT_PROP	\
1873941Svenki     gettext("PICL snmpplugin: cannot add int property (err=%d, node=%lx)\n")
1883941Svenki 
1893941Svenki #define	SNMPP_CANT_FETCH_OBJECT_VAL	\
1905723Sfw157321     gettext("PICL snmpplugin: cannot fetch object value " \
1915723Sfw157321 	"(err=%d, OID=<%s>, row=%d)\n")
1923941Svenki 
1933941Svenki #define	SNMPP_LINK_RESET	\
1943941Svenki     gettext("PICL snmpplugin: snmp ds reset happened, rebuilding tree\n")
1953941Svenki 
196*11471SMichael.Bergknoff@Sun.COM #define	SIGACT_FAILED	\
197*11471SMichael.Bergknoff@Sun.COM     gettext("PICL snmpplugin: Failed to install signal handler for %s: %s\n")
198*11471SMichael.Bergknoff@Sun.COM 
1993941Svenki #ifdef SNMPPLUGIN_DEBUG
2003941Svenki #define	SNMPPLUGIN_DBLOCK_SZ		4096
2013941Svenki #define	SNMPPLUGIN_DMAX_LINE		80
2023941Svenki #define	LOGINIT()			snmpplugin_log_init()
2033941Svenki #define	LOGPRINTF(s)			snmpplugin_log(s)
2043941Svenki #define	LOGPRINTF1(s, a1)		snmpplugin_log(s, a1)
2053941Svenki #define	LOGPRINTF2(s, a1, a2)		snmpplugin_log(s, a1, a2)
2063941Svenki #else
2073941Svenki #define	LOGINIT()
2083941Svenki #define	LOGPRINTF(s)
2093941Svenki #define	LOGPRINTF1(s, a1)
2103941Svenki #define	LOGPRINTF2(s, a1, a2)
2113941Svenki #endif
2123941Svenki 
2133941Svenki #ifdef	__cplusplus
2143941Svenki }
2153941Svenki #endif
2163941Svenki 
2173941Svenki #endif	/* _SNMPPLUGIN_H */
218