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