diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-07-23 15:03:00 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2014-07-23 15:03:00 +0200 |
commit | b32d92e890caac903491116e9d817aa780c0323b (patch) | |
tree | 5a135c37eaa9ac94772819a28ce5beedd18e5c4a /include/ipmitool/ipmi_delloem.h | |
parent | c3445516ecd58e97de483cf4b7fafcc1104890d7 (diff) |
Imported Upstream version 1.8.14upstream/1.8.14
Diffstat (limited to 'include/ipmitool/ipmi_delloem.h')
-rw-r--r-- | include/ipmitool/ipmi_delloem.h | 366 |
1 files changed, 366 insertions, 0 deletions
diff --git a/include/ipmitool/ipmi_delloem.h b/include/ipmitool/ipmi_delloem.h new file mode 100644 index 0000000..88f5c22 --- /dev/null +++ b/include/ipmitool/ipmi_delloem.h @@ -0,0 +1,366 @@ +/**************************************************************************** +Copyright (c) 2008, Dell Inc +All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: +- Redistributions of source code must retain the above copyright notice, +this list of conditions and the following disclaimer. + +- Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. +- Neither the name of Dell Inc nor the names of its contributors +may be used to endorse or promote products derived from this software +without specific prior written permission. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + +*****************************************************************************/ +#ifndef IPMI_DELLOEM_H +#define IPMI_DELLOEM_H + +#if HAVE_CONFIG_H +# include <config.h> +#endif + +#pragma pack(1) + +#define MIN(a,b) ((a) < (b) ? (a) : (b)) +#define MAX(a,b) ((a) > (b) ? (a) : (b)) + + +/* Dell selector for LCD control - get and set unless specified */ +#define IPMI_DELL_LCD_STRING_SELECTOR 0xC1 /* RW get/set the user string */ +#define IPMI_DELL_LCD_CONFIG_SELECTOR 0xC2 /* RW set to user/default/none */ +#define IPMI_DELL_LCD_GET_CAPS_SELECTOR 0xCF /* RO use when available*/ +#define IPMI_DELL_LCD_STRINGEX_SELECTOR 0xD0 /* RW get/set the user string use first when available*/ +#define IPMI_DELL_LCD_STATUS_SELECTOR 0xE7 /* LCD string when config set to default.*/ +#define IPMI_DELL_PLATFORM_MODEL_NAME_SELECTOR 0xD1 /* LCD string when config set to default.*/ + +/* Dell defines for picking which string to use */ +#define IPMI_DELL_LCD_CONFIG_USER_DEFINED 0x00 /* use string set by user*/ +#define IPMI_DELL_LCD_CONFIG_DEFAULT 0x01 /* use platform model name*/ +#define IPMI_DELL_LCD_CONFIG_NONE 0x02 /* blank*/ +#define IPMI_DELL_LCD_iDRAC_IPV4ADRESS 0x04 /* use string set by user*/ +#define IPMI_DELL_LCD_IDRAC_MAC_ADDRESS 0x08 /* use platform model name*/ +#define IPMI_DELL_LCD_OS_SYSTEM_NAME 0x10 /* blank*/ + +#define IPMI_DELL_LCD_SERVICE_TAG 0x20 /* use string set by user*/ +#define IPMI_DELL_LCD_iDRAC_IPV6ADRESS 0x40 /* use string set by user*/ +#define IPMI_DELL_LCD_AMBEINT_TEMP 0x80 /* use platform model name*/ +#define IPMI_DELL_LCD_SYSTEM_WATTS 0x100 /* blank*/ +#define IPMI_DELL_LCD_ASSET_TAG 0x200 + +#define IPMI_DELL_LCD_ERROR_DISP_SEL 0x01 /* use platform model name*/ +#define IPMI_DELL_LCD_ERROR_DISP_VERBOSE 0x02 /* blank*/ + +#define IPMI_DELL_IDRAC_VALIDATOR 0xDD +#define IPMI_DELL_POWER_CAP_STATUS 0xBA +#define IPMI_DELL_AVG_POWER_CONSMP_HST 0xEB +#define IPMI_DELL_PEAK_POWER_CONSMP_HST 0xEC +#define SYSTEM_BOARD_SYSTEM_LEVEL_SENSOR_NUM 0x98 + +#define IDRAC_11G 1 +#define IDRAC_12G 2 +// Return Error code for license +#define LICENSE_NOT_SUPPORTED 0x6F +#define VFL_NOT_LICENSED 0x33 +#define btuphr 0x01 +#define watt 0x00 +#define IPMI_DELL_POWER_CAP 0xEA +#define percent 0x03 + +/* Not on all Dell servers. If there, use it.*/ +typedef struct _tag_ipmi_dell_lcd_caps +{ + uint8_t parm_rev; /* 0x11 for IPMI 2.0 */ + uint8_t char_set; /* always 1 for printable ASCII 0x20-0x7E */ + uint8_t number_lines; /* 0-4, 1 for 9G. 10G tbd */ + uint8_t max_chars[4]; /* 62 for triathlon, 0 if not present (glacier) */ + /* [0] is max chars for line 1 */ +}IPMI_DELL_LCD_CAPS; + +#define IPMI_DELL_LCD_STRING_LENGTH_MAX 62 /* Valid for 9G. Glacier ??. */ +#define IPMI_DELL_LCD_STRING1_SIZE 14 +#define IPMI_DELL_LCD_STRINGN_SIZE 16 + +/* vFlash subcommands */ +#define IPMI_GET_EXT_SD_CARD_INFO 0xA4 + + +typedef struct _tag_ipmi_dell_lcd_string +{ + uint8_t parm_rev; /* 0x11 for IPMI 2.0 */ + uint8_t data_block_selector; /* 16-byte data block number to access, 0 based.*/ + union + { + struct + { + uint8_t encoding : 4; /* 0 is printable ASCII 7-bit */ + uint8_t length; /* 0 to max chars from lcd caps */ + uint8_t data[IPMI_DELL_LCD_STRING1_SIZE]; /* not zero terminated. */ + }selector_0_string; + uint8_t selector_n_data[IPMI_DELL_LCD_STRINGN_SIZE]; + }lcd_string; +} __attribute__ ((packed)) IPMI_DELL_LCD_STRING; + +/* Only found on servers with more than 1 line. Use if available. */ +typedef struct _tag_ipmi_dell_lcd_stringex +{ + uint8_t parm_rev; /* 0x11 for IPMI 2.0 */ + uint8_t line_number; /* LCD line number 1 to 4 */ + uint8_t data_block_selector; /* 16-byte data block number to access, 0 based.*/ + union + { + struct + { + uint8_t encoding : 4; /* 0 is printable ASCII 7-bit */ + uint8_t length; /* 0 to max chars from lcd caps */ + uint8_t data[IPMI_DELL_LCD_STRING1_SIZE]; /* not zero terminated. */ + } selector_0_string; + uint8_t selector_n_data[IPMI_DELL_LCD_STRINGN_SIZE]; + } lcd_string; +} __attribute__ ((packed)) IPMI_DELL_LCD_STRINGEX; + + +typedef struct _lcd_status +{ + char parametersel; + char vKVM_status; + char lock_status; + char Resv1; + char Resv; +} __attribute__ ((packed)) LCD_STATUS; + +typedef struct _lcd_mode +{ + uint8_t parametersel; + uint32_t lcdmode; + uint16_t lcdquallifier; + uint32_t capabilites; + uint8_t error_display; + uint8_t Resv; +} __attribute__ ((packed)) LCD_MODE; + +#define PARAM_REV_OFFSET (uint8_t)(0x1) +#define VIRTUAL_MAC_OFFSET (uint8_t)(0x1) + +#define LOM_MACTYPE_ETHERNET 0 +#define LOM_MACTYPE_ISCSI 1 +#define LOM_MACTYPE_RESERVED 3 + +#define LOM_ETHERNET_ENABLED 0 +#define LOM_ETHERNET_DISABLED 1 +#define LOM_ETHERNET_PLAYINGDEAD 2 +#define LOM_ETHERNET_RESERVED 3 + +#define LOM_ACTIVE 1 +#define LOM_INACTIVE 0 + +#define MACADDRESSLENGH 6 +#define MAX_LOM 8 + + +#define EMB_NIC_MAC_ADDRESS_11G (uint8_t)(0xDA) +#define EMB_NIC_MAC_ADDRESS_9G_10G (uint8_t)(0xCB) + +#define IMC_IDRAC_10G (uint8_t) (0x08) +#define IMC_CMC (uint8_t) (0x09) +#define IMC_IDRAC_11G_MONOLITHIC (uint8_t) (0x0A) +#define IMC_IDRAC_11G_MODULAR (uint8_t) (0x0B) +#define IMC_UNUSED (uint8_t) (0x0C) +#define IMC_MASER_LITE_BMC (uint8_t) (0x0D) +#define IMC_MASER_LITE_NU (uint8_t) (0x0E) +#define IMC_IDRAC_12G_MONOLITHIC (uint8_t) (0x10) +#define IMC_IDRAC_12G_MODULAR (uint8_t) (0x11) + + + +typedef struct +{ + unsigned int BladSlotNumber : 4; + unsigned int MacType : 2; + unsigned int EthernetStatus : 2; + unsigned int NICNumber : 5; + unsigned int Reserved : 3; + uint8_t MacAddressByte[MACADDRESSLENGH]; +} LOMMacAddressType; + + +typedef struct +{ + LOMMacAddressType LOMMacAddress [MAX_LOM]; +} EmbeddedNICMacAddressType; + +typedef struct +{ + uint8_t MacAddressByte[MACADDRESSLENGH]; +} MacAddressType; + +typedef struct +{ + MacAddressType MacAddress [MAX_LOM]; +} EmbeddedNICMacAddressType_10G; + + + +#define TRANSPORT_NETFN (uint8_t)(0xc) +#define GET_LAN_PARAM_CMD (uint8_t)(0x02) +#define MAC_ADDR_PARAM (uint8_t)(0x05) +#define LAN_CHANNEL_NUMBER (uint8_t)(0x01) + +#define IDRAC_NIC_NUMBER (uint8_t)(0x8) + +#define TOTAL_N0_NICS_INDEX (uint8_t)(0x1) + + +// 12g supported +#define SET_NIC_SELECTION_12G_CMD (uint8_t)(0x28) +#define GET_NIC_SELECTION_12G_CMD (uint8_t)(0x29) + +// 11g supported +#define SET_NIC_SELECTION_CMD (uint8_t)(0x24) +#define GET_NIC_SELECTION_CMD (uint8_t)(0x25) +#define GET_ACTIVE_NIC_CMD (uint8_t)(0xc1) +#define POWER_EFFICENCY_CMD (uint8_t)(0xc0) +#define SERVER_POWER_CONSUMPTION_CMD (uint8_t)(0x8F) + +#define POWER_SUPPLY_INFO (uint8_t)(0xb0) +#define IPMI_ENTITY_ID_POWER_SUPPLY (uint8_t)(0x0a) +#define SENSOR_STATE_STR_SIZE (uint8_t)(64) +#define SENSOR_NAME_STR_SIZE (uint8_t)(64) + +#define GET_PWRMGMT_INFO_CMD (uint8_t)(0x9C) +#define CLEAR_PWRMGMT_INFO_CMD (uint8_t)(0x9D) +#define GET_PWR_HEADROOM_CMD (uint8_t)(0xBB) +#define GET_PWR_CONSUMPTION_CMD (uint8_t)(0xB3) +#define GET_FRONT_PANEL_INFO_CMD (uint8_t)0xb5 + + +typedef struct _ipmi_power_monitor +{ + uint32_t cumStartTime; + uint32_t cumReading; + uint32_t maxPeakStartTime; + uint32_t ampPeakTime; + uint16_t ampReading; + uint32_t wattPeakTime; + uint16_t wattReading; +} __attribute__ ((packed)) IPMI_POWER_MONITOR; + + +#define MAX_POWER_FW_VERSION 8 + +typedef struct _ipmi_power_supply_infoo +{ + /*No param_rev it is not a System Information Command */ + uint16_t ratedWatts; + uint16_t ratedAmps; + uint16_t ratedVolts; + uint32_t vendorid; + uint8_t FrimwareVersion[MAX_POWER_FW_VERSION]; + uint8_t Powersupplytype; + uint16_t ratedDCWatts; + uint16_t Resv; + +} __attribute__ ((packed)) IPMI_POWER_SUPPLY_INFO; + + +typedef struct ipmi_power_consumption_data +{ + uint16_t actualpowerconsumption; + uint16_t powerthreshold; + uint16_t warningthreshold; + uint8_t throttlestate; + uint16_t maxpowerconsumption; + uint16_t throttlepowerconsumption; + uint16_t Resv; +} __attribute__ ((packed)) IPMI_POWER_CONSUMPTION_DATA; + + +typedef struct ipmi_inst_power_consumption_data +{ + uint16_t instanpowerconsumption; + uint16_t instanApms; + uint16_t resv1; + uint8_t resv; +} __attribute__ ((packed)) IPMI_INST_POWER_CONSUMPTION_DATA; + +typedef struct _ipmi_avgpower_consump_histroy +{ + uint8_t parameterselector; + uint16_t lastminutepower; + uint16_t lasthourpower; + uint16_t lastdaypower; + uint16_t lastweakpower; + +} __attribute__ ((packed)) IPMI_AVGPOWER_CONSUMP_HISTORY; + +typedef struct _ipmi_power_consump_histroy +{ + uint8_t parameterselector; + uint16_t lastminutepower; + uint16_t lasthourpower; + uint16_t lastdaypower; + uint16_t lastweakpower; + uint32_t lastminutepowertime; + uint32_t lasthourpowertime; + uint32_t lastdaypowertime; + uint32_t lastweekpowertime; +} __attribute__ ((packed)) IPMI_POWER_CONSUMP_HISTORY; + + +typedef struct _ipmi_delloem_power_cap +{ + uint8_t parameterselector; + uint16_t PowerCap; + uint8_t unit; + uint16_t MaximumPowerConsmp; + uint16_t MinimumPowerConsmp; + uint16_t totalnumpowersupp; + uint16_t AvailablePower ; + uint16_t SystemThrottling; + uint16_t Resv; +} __attribute__ ((packed)) IPMI_POWER_CAP; + +typedef struct _power_headroom +{ + uint16_t instheadroom; + uint16_t peakheadroom; +} __attribute__ ((packed)) POWER_HEADROOM; + +struct vFlashstr { + uint8_t val; + const char * str; +}; +typedef struct ipmi_vFlash_extended_info +{ + uint8_t vflashcompcode; + uint8_t sdcardstatus; + uint32_t sdcardsize; + uint32_t sdcardavailsize; + uint8_t bootpartion; + uint8_t Resv; +} __attribute__ ((packed)) IPMI_DELL_SDCARD_INFO; + + +typedef struct _SensorReadingType +{ + uint8_t sensorReading; + uint8_t sensorFlags; + uint16_t sensorState; +}SensorReadingType; +uint16_t compareinputwattage(IPMI_POWER_SUPPLY_INFO* powersupplyinfo, uint16_t inputwattage); +int ipmi_delloem_main(struct ipmi_intf * intf, int argc, char ** argv); + +#endif /*IPMI_DELLOEM_H*/ |