mirror of
https://github.com/ipmitool/ipmitool.git
synced 2025-05-10 10:37:22 +00:00
Previously, ipmitool would fail to run if the local copy of the IANA PEN registry could not be parsed. When the registry is not available the manufacturer will be "Unknown" but ipmitool will otherwise function so should not be considered fatal. Also, fix an issue with improperly handling the `oem_info_list_load` return value. Previously, in `ipmi_oem_info_init`, if `oem_info_list_load` returned a negative value due to the registry file not existing, an improper count would cause `oem_info_init_from_list` to aallocate a list that didn't encompass the full header/tail list. IANA PEN registry open failed: No such file or directory Allocating 3 entries [ 1] 16777214 | A Debug Assisting Company, Ltd. [ 0] 1048575 | Unspecified Now, use a signed int and ensure a valid count of loaded OEMs is used. Signed-off-by: Vincent Fazio <vfazio@gmail.com>
1772 lines
66 KiB
C
1772 lines
66 KiB
C
/*
|
|
* Copyright (c) 2003 Sun Microsystems, 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:
|
|
*
|
|
* Redistribution of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
*
|
|
* Redistribution 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 Sun Microsystems, Inc. or the names of
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* This software is provided "AS IS," without a warranty of any kind.
|
|
* ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES,
|
|
* INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A
|
|
* PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED.
|
|
* SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE
|
|
* FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING
|
|
* OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL
|
|
* SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA,
|
|
* OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR
|
|
* PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF
|
|
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
|
|
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
*/
|
|
|
|
#include <ctype.h>
|
|
#include <limits.h>
|
|
#include <stddef.h>
|
|
|
|
#include <ipmitool/ipmi_strings.h>
|
|
#include <ipmitool/ipmi_constants.h>
|
|
#include <ipmitool/ipmi_sensor.h>
|
|
#include <ipmitool/ipmi_sel.h> /* for IPMI_OEM */
|
|
#include <ipmitool/log.h>
|
|
|
|
/*
|
|
* These are put at the head so they are found first because they
|
|
* may overlap with IANA specified numbers found in the registry.
|
|
*/
|
|
static const struct valstr ipmi_oem_info_head[] = {
|
|
{ IPMI_OEM_UNKNOWN, "Unknown" }, /* IPMI Unknown */
|
|
{ IPMI_OEM_RESERVED, "Unspecified" }, /* IPMI Reserved */
|
|
{ UINT32_MAX , NULL },
|
|
};
|
|
|
|
/*
|
|
* These are our own technical values. We don't want them to take precedence
|
|
* over IANA's defined values, so they go at the very end of the array.
|
|
*/
|
|
static const struct valstr ipmi_oem_info_tail[] = {
|
|
{ IPMI_OEM_DEBUG, "A Debug Assisting Company, Ltd." },
|
|
{ UINT32_MAX , NULL },
|
|
};
|
|
|
|
/*
|
|
* This is used when ipmi_oem_info couldn't be allocated.
|
|
* ipmitool would report all OEMs as unknown, but would be functional otherwise.
|
|
*/
|
|
static const struct valstr ipmi_oem_info_dummy[] = {
|
|
{ UINT32_MAX , NULL },
|
|
};
|
|
|
|
/* This will point to an array filled from IANA's enterprise numbers registry */
|
|
const struct valstr *ipmi_oem_info;
|
|
|
|
/* Single-linked list of OEM valstrs */
|
|
typedef struct oem_valstr_list_s {
|
|
struct valstr valstr;
|
|
struct oem_valstr_list_s *next;
|
|
} oem_valstr_list_t;
|
|
|
|
const struct oemvalstr ipmi_oem_product_info[] = {
|
|
/* Keep OEM grouped together */
|
|
|
|
/* For ipmitool debugging */
|
|
{ IPMI_OEM_DEBUG, 0x1234, "Great Debuggable BMC" },
|
|
|
|
/* Intel stuff, thanks to Tim Bell */
|
|
{ IPMI_OEM_INTEL, 0x000C, "TSRLT2" },
|
|
{ IPMI_OEM_INTEL, 0x001B, "TIGPR2U" },
|
|
{ IPMI_OEM_INTEL, 0x0022, "TIGI2U" },
|
|
{ IPMI_OEM_INTEL, 0x0026, "Bridgeport" },
|
|
{ IPMI_OEM_INTEL, 0x0028, "S5000PAL" },
|
|
{ IPMI_OEM_INTEL, 0x0029, "S5000PSL" },
|
|
{ IPMI_OEM_INTEL, 0x0100, "Tiger4" },
|
|
{ IPMI_OEM_INTEL, 0x0103, "McCarran" },
|
|
{ IPMI_OEM_INTEL, 0x0800, "ZT5504" },
|
|
{ IPMI_OEM_INTEL, 0x0808, "MPCBL0001" },
|
|
{ IPMI_OEM_INTEL, 0x0811, "TIGW1U" },
|
|
{ IPMI_OEM_INTEL, 0x4311, "NSI2U" },
|
|
|
|
/* Kontron */
|
|
{ IPMI_OEM_KONTRON,4000, "AM4000 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,4001, "AM4001 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,4002, "AM4002 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,4010, "AM4010 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,5503, "AM4500/4520 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,5504, "AM4300 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,5507, "AM4301 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,5508, "AM4330 AdvancedMC" },
|
|
{ IPMI_OEM_KONTRON,5520, "KTC5520/EATX" },
|
|
{ IPMI_OEM_KONTRON,5703, "RTM8020" },
|
|
{ IPMI_OEM_KONTRON,5704, "RTM8030" },
|
|
{ IPMI_OEM_KONTRON,5705, "RTM8050" },
|
|
{ IPMI_OEM_KONTRON,6000, "CP6000" },
|
|
{ IPMI_OEM_KONTRON,6006, "DT-64" },
|
|
{ IPMI_OEM_KONTRON,6010, "CP6010" },
|
|
{ IPMI_OEM_KONTRON,6011, "CP6011" },
|
|
{ IPMI_OEM_KONTRON,6012, "CP6012" },
|
|
{ IPMI_OEM_KONTRON,6014, "CP6014" },
|
|
{ IPMI_OEM_KONTRON,5002, "AT8001" },
|
|
{ IPMI_OEM_KONTRON,5003, "AT8010" },
|
|
{ IPMI_OEM_KONTRON,5004, "AT8020" },
|
|
{ IPMI_OEM_KONTRON,5006, "AT8030 IPMC" },
|
|
{ IPMI_OEM_KONTRON,2025, "AT8030 MMC" },
|
|
{ IPMI_OEM_KONTRON,5007, "AT8050" },
|
|
{ IPMI_OEM_KONTRON,5301, "AT8400" },
|
|
{ IPMI_OEM_KONTRON,5303, "AT8901" },
|
|
|
|
/* Broadcom */
|
|
{ IPMI_OEM_BROADCOM, 5725, "BCM5725" },
|
|
|
|
/* Ericsson */
|
|
{ IPMI_OEM_ERICSSON, 0x0054, "Phantom" },
|
|
|
|
/* Advantech */
|
|
/* ATCA Blades */
|
|
{ IPMI_OEM_ADVANTECH, 0x3393, "MIC-3393" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3395, "MIC-3395" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3396, "MIC-3396" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5302, "MIC-5302" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5304, "MIC-5304" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5320, "MIC-5320" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5321, "MIC-5321" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5322, "MIC-5322" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5332, "MIC-5332" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5333, "MIC-5333" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5342, "MIC-5342" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5343, "MIC-5343" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5344, "MIC-5344" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5345, "MIC-5345" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5201, "MIC-5201 Dual 10GE AMC"},
|
|
{ IPMI_OEM_ADVANTECH, 0x5203, "MIC-5203 Quad GbE AMC"},
|
|
{ IPMI_OEM_ADVANTECH, 0x5212, "MIC-5212 Dual 10GE AMC"},
|
|
/* AdvancedMC */
|
|
{ IPMI_OEM_ADVANTECH, 0x5401, "MIC-5401" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5601, "MIC-5601" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5602, "MIC-5602" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5604, "MIC-5604" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5603, "MIC-5603" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6311, "MIC-6311" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6313, "MIC-6313" },
|
|
{ IPMI_OEM_ADVANTECH, 0x8301, "MIC-8301" },
|
|
{ IPMI_OEM_ADVANTECH, 0x8302, "MIC-8302" },
|
|
{ IPMI_OEM_ADVANTECH, 0x8304, "MIC-8304" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5101, "RTM-5101" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5102, "RTM-5102" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5106, "RTM-5106" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5107, "RTM-5107" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5210, "RTM-5210" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5220, "RTM-5220" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5104, "RTM-5104" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5500, "UTCA-5500"},
|
|
{ IPMI_OEM_ADVANTECH, 0x5503, "UTCA-5503"},
|
|
{ IPMI_OEM_ADVANTECH, 0x5504, "UTCA-5504"},
|
|
{ IPMI_OEM_ADVANTECH, 0x5801, "UTCA-5801"},
|
|
{ IPMI_OEM_ADVANTECH, 0x2210, "NCPB-2210"},
|
|
{ IPMI_OEM_ADVANTECH, 0x2305, "NCPB-2305"},
|
|
{ IPMI_OEM_ADVANTECH, 0x2320, "NCPB-2320"},
|
|
{ IPMI_OEM_ADVANTECH, 0x3109, "NCP-3109" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3110, "NCP-3110" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3200, "NCP-3200" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5060, "SMM-5060" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3210, "FWA-3210" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3220, "FWA-3220" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3221, "FWA-3221" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3230, "FWA-3230" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3231, "FWA-3231" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3233, "FWA-3233" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3250, "FWA-3250" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3260, "FWA-3260" },
|
|
{ IPMI_OEM_ADVANTECH, 0x5020, "FWA-5020" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6510, "FWA-6510" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6511, "FWA-6511" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6512, "FWA-6512" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6520, "FWA-6520" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6521, "FWA-6521" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6522, "FWA-6522" },
|
|
{ IPMI_OEM_ADVANTECH, 0x7310, "ATCA-7310"},
|
|
{ IPMI_OEM_ADVANTECH, 0x7330, "ATCA-7330"},
|
|
{ IPMI_OEM_ADVANTECH, 0x7410, "ATCA-7410"},
|
|
{ IPMI_OEM_ADVANTECH, 0x9023, "ATCA-9023"},
|
|
{ IPMI_OEM_ADVANTECH, 0x9112, "ATCA-9112"},
|
|
{ IPMI_OEM_ADVANTECH, 0x4201, "AMC-4201" },
|
|
{ IPMI_OEM_ADVANTECH, 0x4202, "AMC-4202" },
|
|
{ IPMI_OEM_ADVANTECH, 0x3211, "NAMB-3211"},
|
|
{ IPMI_OEM_ADVANTECH, 0x1207, "CPCI-1207"},
|
|
{ IPMI_OEM_ADVANTECH, 0x120E, "CPCI-1207 Test Board"},
|
|
{ IPMI_OEM_ADVANTECH, 0x1304, "CPCI-1304"},
|
|
{ IPMI_OEM_ADVANTECH, 0x7001, "CPCI-7001"},
|
|
{ IPMI_OEM_ADVANTECH, 0x8220, "CPCI-8220"},
|
|
{ IPMI_OEM_ADVANTECH, 0x9001, "ESP-9001" },
|
|
{ IPMI_OEM_ADVANTECH, 0x9002, "ESP-9002" },
|
|
{ IPMI_OEM_ADVANTECH, 0x9012, "ESP-9012" },
|
|
{ IPMI_OEM_ADVANTECH, 0x9212, "ESP-9212" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6000, "CGS-6000" },
|
|
{ IPMI_OEM_ADVANTECH, 0x6010, "CGS-6010" },
|
|
|
|
/* ADLINK Technology Inc. */
|
|
/* AdvancedTCA Processor Blades */
|
|
{ IPMI_OEM_ADLINK_24339, 0x3100, "aTCA-3100" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3110, "aTCA-3110" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3150, "aTCA-3150" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3420, "aTCA-3420" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3710, "aTCA-3710" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6100, "aTCA-6100" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6200, "aTCA-6200" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6250, "aTCA-6250/6250STW" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6270, "aTCA-R6270" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6280, "aTCA-R6280" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6890, "aTCA-6890" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6891, "aTCA-6891" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6900, "aTCA-6900" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6905, "aTCA-R6905" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x690A, "aTCA-R6900" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x8214, "aTCA-8214" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x8606, "aTCA-8606" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x9300, "aTCA-9300" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x9700, "aTCA-9700" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x9700, "aTCA-R9700" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x970D, "aTCA-9700D" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x9710, "aTCA-9710" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x9710, "aTCA-R9710" },
|
|
{ IPMI_OEM_ADLINK_24339, 0xF001, "aTCA-FN001" },
|
|
{ IPMI_OEM_ADLINK_24339, 0xF2A0, "aTCA-F2AX" },
|
|
{ IPMI_OEM_ADLINK_24339, 0xF5A0, "aTCA-F5AX" },
|
|
/* CompactPCI Blades */
|
|
{ IPMI_OEM_ADLINK_24339, 0x3510, "cPCI-3510" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3970, "cPCI-3970" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6010, "cPCI-6010" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6210, "cPCI-6210" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6510, "cPCI-6510" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6520, "cPCI-6520" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6525, "cPCI-6525" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6530, "cPCI-6530/6530BL" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6600, "cPCI-6600" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6840, "cPCI-6840" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6870, "cPCI-6870" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6880, "cPCI-6880" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6910, "cPCI-6910" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6920, "cPCI-6920" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6930, "cPCI-6930" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6940, "cPCI-6940" },
|
|
/* VPX Blades */
|
|
{ IPMI_OEM_ADLINK_24339, 0x3000, "VPX3000" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3001, "VPX3001" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3002, "VPX3002" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3010, "VPX3010" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x3F10, "VPX3G10" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x6000, "VPX6000" },
|
|
/* Network Appliance */
|
|
{ IPMI_OEM_ADLINK_24339, 0x0410, "MXN-0410" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x2600, "MCN-2600" },
|
|
{ IPMI_OEM_ADLINK_24339, 0x1500, "MCN-1500" },
|
|
/* Supermicro */
|
|
{ IPMI_OEM_SUPERMICRO, 0x0001, "X8DT3/i/-LN4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0002, "C2SLM-OC012" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0003, "X8DTW-3/i/-LN4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0006, "X8DTL-3/i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0007, "X8DTT-IBX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0008, "X8DTT-B-SG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0009, "X8STi-3/-LN4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x000A, "B8DT3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0100, "X8DAH+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0101, "B8DTL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0400, "X8DTH-6/i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0401, "X8DTH-RC014" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0403, "X8DA6/i-X" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0404, "X8DT6/E" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0409, "H8QI6/E(+)(-F)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x040B, "X8DTW-6+/i+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x040D, "X8SII/X8SI6" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0410, "X8DTL-6/L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0600, "X8DTU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0601, "X8DAL-3/i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0602, "X7SLA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0603, "C2SEM-Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0604, "winbond IPMI (Aten)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0605, "X8SIL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0606, "X8DTG-4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0607, "C2G41" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0608, "X8DTG-DF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0609, "X8DTS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x060A, "X7SPA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x060B, "X8SIA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x060C, "X8DTU+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x060C, "X8DTU-LN4F+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x060D, "X8DTU-6TF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x060E, "X8SIT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x060F, "X8DTN+-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0610, "X8QB6/E" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0611, "AOC-STGN-I2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0612, "B8DTT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0613, "X8DTT-C-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0614, "X8DTU-F-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x061A, "X8SIU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x061B, "X8DTT-HA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x061C, "B8DT6-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x061D, "C7SIA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x061E, "B8DTT-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x061E, "X9SCL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x061F, "B8DTP" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0620, "B8DTG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0621, "X8OBN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0622, "C7P67" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0623, "C7Q67" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0624, "X9SCM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0625, "B9DRi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0626, "X9DR3-LN4F+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0627, "X7SPT-DF-D525" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0628, "X9DR3/i-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0629, "X9SRT-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x062A, "X9SRA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x062B, "X9SRi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x062C, "X9DAi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x062D, "X8SIL-SIOM-FI005" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x062E, "X8STE-DS018" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x062F, "X9DRT-HF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0630, "X9DRW-3TF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0631, "X9SCA/X9SCI" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0632, "X8DTG-QF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0633, "X9SCV-Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0634, "X9SCD" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0635, "X9DAL-6/i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0636, "X9DRW-3F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0637, "X9DBU-3F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0638, "X8QB6-LF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0640, "X9SCL/SCM-II" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0641, "X9SCV-LN4F+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0642, "C7Q67-H" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0644, "X9SAE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0645, "C7H61" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0646, "X9SCFF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0647, "X9SCAA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0647, "X9SCE-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0648, "C7B75" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0650, "X9SPV-M4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0651, "X9SBAA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0652, "AOC-CGP-i2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0653, "C7Z87" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0654, "C7Q87" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0655, "AOC-XEH-IN2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0656, "AOC-SGP-i2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0657, "C7Z87-OCE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0658, "AOC-STG-B4S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0659, "AOC-STGN-I1S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0660, "X9DRD-3/iF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0661, "B1SA4-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0661, "X9SRG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0662, "X9DRG-QF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0663, "X9SRW" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0664, "X9DRH-7F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0665, "X9DRG-QF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0666, "X9DRT-D-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0667, "X9DRL-3/iF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0668, "X9SRD" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0669, "X9DRX+-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x066A, "B9DRT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x066B, "X9SRL-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x066C, "B9DRG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x066D, "X9DR6+-F-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x066E, "X9DR6-LN4F+-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x066F, "X9DRW-LN4F+-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0690, "2208" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0691, "2308" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0700, "X9DRT-HF-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0701, "X9DRT-HIBQF-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0702, "X9DRD-7LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0703, "X9DBL-6F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0704, "X9DR7/E-TF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0705, "X9DR7/E-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0706, "X9DRT-HF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0707, "X9QR7-TF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0708, "X9DRT-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0709, "X9DA7/E" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x070A, "X9DRF-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x070B, "X9SRL-CF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x070C, "X9SRD-CD" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x070D, "B9DR7" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x070E, "X9DAX-7" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x070F, "X9QR7-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0710, "X9SRE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0711, "X9DRG-HTF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0712, "B9DRG-X" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0713, "X9DRFF-7" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0714, "X9SRH-7F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0715, "X9DRW-7TPF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0716, "X9DBU-3F-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0717, "X9DRFF-7+/i+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0718, "X9DRFF-7G+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0719, "B9DRP" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0720, "X9DRW-7TPF+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0721, "X9DBS-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0722, "X9DB3-TPF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0723, "X9DRL-7F/EF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0724, "X9DRH-if-NV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0725, "X9DRG+HF+II" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0726, "X10QBi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0727, "X9DRW-CF31/CTF31" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0728, "X10DRI/T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0729, "B9DRG-E" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0730, "X9DAX-HFT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0731, "X9DRT-P" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0732, "X9DRG-OF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0733, "X9DB3-CPU-AI026" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0734, "AOC-STG-I2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0743, "X9SPU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0801, "X10SLL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0802, "X10SLA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0803, "X10SLH" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0804, "X10SL7-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0805, "X10SAE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0806, "X10SLM-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0807, "X10SLE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0808, "LSI3008" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0809, "LSI3108" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0810, "X10SLD" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0811, "X10SLM-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0812, "X10SLL+-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0813, "X10SEAA-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0814, "X10SLX-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0815, "X10SLV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0816, "X10SBA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0817, "X10SLE-DF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0818, "X10SAT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0819, "X10SLV-Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0820, "A1SAM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0820, "X9SKV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0821, "X10DRW-i(T)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0822, "X10DRFF(-C)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0823, "AOC-CTG-I1S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0824, "X10DRT-P" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0825, "X10SRE-DS018" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0826, "X10SRE-EXP-SI030" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0827, "X9QRH-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0828, "A1SA2-2750F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0829, "C7Z97-OCE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0830, "X10DRFR" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0831, "X10DRL-i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0832, "X10SRL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0833, "X10SRW-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0834, "X10SRI" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0835, "X10DRC/i-LN4+/T4+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0836, "X10DAi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0837, "X10DRT-D-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0838, "X10SRH-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0839, "AOC-SLG3-2E4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x083A, "X10DBT-T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x083B, "X10DDW-iT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x083C, "A1SA7-2750F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x083D, "LSI 2116" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x083E, "B10DRi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x083F, "B9QR7" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0840, "B9DRG-3M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0841, "X9DRD-iT+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0842, "X10SLH-N6-ST031" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0843, "X10DRG-H(T)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0844, "X10DRU-i+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0845, "X10DDW-iN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0846, "B1DRi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0847, "AOC-UR-i4XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0848, "AOC-2UR68-i4G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0849, "AOC-UR-i4G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x084A, "AOC-S40G-i2Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x084B, "X10SRG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x084C, "C7Z97" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x084C, "C7Z97-MF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x084D, "AOC-STGN-i1SF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x084F, "AOC-STGN-i2SF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0850, "AOC-PG-i4M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0851, "PMC PM8076" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0852, "X10DRG-Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0853, "X10QBL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0854, "X10DRU-X" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0855, "H9SKV-420" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0856, "C7X99" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0857, "X10SRA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0858, "X10DRT-H" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0859, "X10DRH-C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x085A, "A1SRM-LN7F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x085A, "A1SRM-LN7F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x085B, "X10DRT-HA/HB-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x085C, "X10DRU-XLL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x085D, "AOC-UR-i2XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x085E, "AOC-2UR6-i4XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x085F, "AOC-2UR68-i2XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0860, "X10DRL-C/CT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0861, "B10DRT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0862, "B1SL1-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0863, "RSC-W2-66" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0864, "X10DRW-E/NT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0865, "X10DRD-i/LTP" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0866, "AOC-SLG3-2E4R" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0867, "AOC-SLG3-4E4R" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0868, "AOC-SLG3-2E4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0869, "AOC-URN2-i4XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x086A, "AOC-URN2-i2XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x086B, "X10DRS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x086C, "X10DAL-i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x086D, "X10SDV-TLN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x086E, "X10DDW-iN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x086F, "X10DRT-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0870, "AOC-URN2-ii2SX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0871, "AOC-2UR68-i2XS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0872, "X10QRH+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0873, "AOC-2URN4-i4XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0874, "AOC-2UR8N4-i2XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0875, "AOC-2UR66-i4G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0876, "A2SCL-IN001" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0877, "X10DRT-HB-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0878, "RSC-S2-88" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0879, "X10DRD-I/L/NT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x087A, "B1SD2-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x087B, "AOC-XEH-i2M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x087C, "AOC-XEH-i4M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x087D, "X10SRD-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x087E, "AOC-STG-i4S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x087F, "X10DRFF-iG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0880, "X10DRT-XA-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0881, "X10DRT-XB-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0882, "X10DRX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0883, "K1SPI" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0884, "X11SSH-F/-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0885, "X11SSL-CF/-NF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0886, "X11SSA(-F)/X11SSi-LN4(F)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0887, "AOC-S8076L-L16e" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0888, "X11SSZ" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0889, "B10DRG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x088A, "AOC-URN6-i2XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x088B, "C7Z170-SQ" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x088C, "AOM-S3108-H8S-SB" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x088D, "AOC-S100G-i2C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x088E, "AOC-PIO-i2G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x088F, "AOM-PIO-i2XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0890, "X11SSQ" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0891, "X11SBA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0892, "X10DRG-O+-CPU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0893, "X10DGQ" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0894, "X11SSV-Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0895, "X11SAE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0896, "X11SSL/M-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0897, "B1SD1-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0898, "X11SSE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0899, "X10DRH" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x089A, "X11SLL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x089B, "X11SSW-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x089C, "X11SSH-CTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x089D, "X10DSC+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x089E, "AOC-URN2-i4GXS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x089F, "X11SAE-M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0901, "X11SSM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0902, "C7Z170-OCE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0903, "AOC-CTGS-i2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0904, "AOC-2UR6N4-i4XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0905, "K1SPI-KA-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0906, "K1SPi-KB-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0907, "X11SAT(-F)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0908, "B2SS2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0909, "X11SSD-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x090A, "AOC-SLG3-4E4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x090B, "AOC-MTG-i4S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x090C, "AOC-MTG-I2s" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x090D, "X11SRE-DS018" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x090E, "K1SPE(-T)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x090F, "A2SDi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0910, "A2SDi-H" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0911, "X10DRT-PS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0912, "AOC-MG-i2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0913, "AOC-MG-i4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0914, "AOC-STGS-i1T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0915, "AOC-STGS-i2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0916, "X10DSC-TP4S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0917, "X11DPi-N(T)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0918, "AOC-UR-i4GXS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0919, "X10SDD-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x091A, "AOC-2UR6-i4xT+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x091B, "AOC-UR-i4XT+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x091C, "X11DPU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x091D, "X11SSW-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x091E, "X10SD7-AC107" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x091F, "AOC-MTG-i4T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0920, "AOC-MTG-i2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0921, "X10SDV-7TP8F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0922, "X10SRW-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0923, "AOM-X10OBI-PCH" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0924, "X10SRM-(T)F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0925, "AOC-MHIBF-2QG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0926, "AOC-MHIBF-1QG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0927, "X11DPT-PS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0928, "AOC-S25G-b2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0929, "AOC-2UR66-i4XTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x092A, "AOC-M25G-b2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x092B, "X10DSN-TS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x092C, "AOC-S8069L-16xR" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x092D, "X10SDE-DF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x092E, "AOC-2UR68-B2TS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x092F, "AOC-S40G-i1Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0930, "X11SSQ-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0931, "B2SS1-CF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0932, "X10DRL-LN4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0933, "P8DTU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0934, "AOC-MHFI-i1C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0935, "AOC-STG-i4T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0936, "AOC-UR-i4XTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0937, "X11DPT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0938, "X11DPT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0939, "X11SSV-M4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x093A, "X11SSV-M4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x093B, "AOC-STGF-i2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x093C, "A2SAV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x093D, "AOC-S3216L-L16iT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x093E, "X10DRT-B+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x093F, "C7Z270-CG-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0940, "C7Z270-CG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0941, "X11SPi-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0942, "K1SPE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0943, "C7Z270-PG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0944, "C7H270-CG-ML" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0945, "C7Q270-CB-ML" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0946, "X10SDV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0947, "A2SAN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0948, "AOC-C25G-m2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0949, "AOC-MH25G-m2S2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x094A, "AOC-2UR68-m2TS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x094B, "AOC-S100G-m2C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x094C, "AOC-S25G-m2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x094D, "AOC-MHIBF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x094E, "AOC-MH25G-b2S2G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x094F, "P8DNU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0950, "X10DRW-SE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0951, "B2SS1(2)-MTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0952, "X11SPX-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0953, "X11SPW-(c)TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0954, "AOC-C25G-m1S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0955, "X11SSW" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0956, "AOC-MHIBF-m1Q2G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0957, "AOC-MHIBF-m2Q2G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0958, "X11SSH" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0959, "R10SR2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x095A, "X10DGO" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x095B, "X11DPU-XLL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x095C, "X11DPU-X" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x095D, "X11SPM-T(P)F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x095E, "X11SPH-NCTPF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x095F, "X11SAA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0960, "X11SAN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0961, "P9DSC" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0962, "X11DPT-B+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0963, "H11DSU-i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0964, "H11DSi-NT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0965, "C7B250-CB-ML" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0966, "B11DPT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0967, "X11DDW" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0968, "X11DPL-i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0969, "A2SDi-HLN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x096A, "C7C232-CB-ML" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x096B, "X11DPT-P-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x096C, "X11DPU-Z+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x096D, "X11DPG-Qt" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x096E, "X11SPL-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x096F, "AOC-IBH-X4ED" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0970, "C7Z270-CG-M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0971, "X11SRE-EXP-SI030" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0972, "SAS3216" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0973, "SAS3508" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0974, "SAS3516" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0975, "SAS3316" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0976, "SAS3324" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0977, "X11DPFR-SN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0978, "AOC-S25G-i2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0979, "BMB-IBD-E3616" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x097A, "X11DAI-N" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x097B, "C7X299" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x097C, "AOC-IBH_X4ES" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x097D, "C7B250-CB-i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x097E, "X11SPG-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x097F, "X11QPH+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0980, "X11OPi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0981, "X11DPH-i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0982, "A2SDV-TLN5F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0983, "AOC-M25G-m4S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0984, "X11SRM-(V)F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0985, "P9DSU-C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0986, "X11SDV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0987, "X11SDV-TLN2F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0988, "X11DGQ" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0989, "B10DRE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x098A, "H11DST-B" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x098B, "X11SSN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x098C, "X11DPX-T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x098D, "A2SAP-H/E/L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x098E, "X11SRA-R/F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x098F, "B11QPi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0991, "C7Z370-CG-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0992, "B11SPi-CPU-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0993, "AOC-URN4-i2TS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0994, "AOC-B25G-M2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0995, "X11DPG-SN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0996, "AOC-MTG-b2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0997, "B11DPE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0998, "C7Z370-CG-iW" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x0999, "AOC-MHIBE-m1CG" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x099A, "X11DPS-R" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x099B, "AOC-OPH-WFR" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x099C, "SAS 3616" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x099C, "SAS 3616" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x099D, "X11DSC+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x099E, "C7Z390-PGW" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x099F, "C7Z390-CG-IW" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1111, "H8DCR-3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1211, "H8DC8" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1311, "H8QM8-2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1411, "H8DA8-2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1511, "H8DMR-82" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1611, "H8DM8-2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1711, "H8SMI-2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1811, "H8SSL-I2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1911, "H8DMU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A01, "C7B360-CB-M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A02, "C7C242-CB-M" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A03, "H11SSL-i/c/nc" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A04, "B10KNM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A05, "AOM-M25G-i2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A06, "X11DPG-OT-CPU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A07, "B11SPE-CPU-TF/25G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A08, "AOC-STG-b2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A09, "AOC-URN4-b2XT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A1A, "A2SD1-3750F/3955F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A1B, "X11SCE-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A1C, "X11DSF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A1D, "X11SCA-F/W" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A1E, "X11DAC" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1A1F, "X11SCL-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B01, "X11DSN-TS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B02, "X11DGO-T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B03, "AOC-2UR688-i4XTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B04, "X11DPT-LC019" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B05, "X11SCQ" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B06, "X11SCQ-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B07, "X11SCW-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B08, "C9X299-PG300" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B09, "X11SCZ-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B0A, "B10DRT-IBF2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B0B, "AOC-STG-b2T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B0C, "AOC-B25G-6X4D" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B0D, "X11SCV-Q/L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B0E, "X11SCL-IF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B0F, "X11SCM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B10, "A2SDV-LN8F/LN10PF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B11, "X11SCH-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B12, "AOC-SGP-i4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B13, "AOC-4UR66-i4XTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B14, "C9X299-PG300F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B15, "X11SCL-LN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B16, "AOM-PICO-3L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B17, "X11DPFF-SN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B18, "C7B360-CB-ML" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B19, "H11SSW-NT/iN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B1A, "C9Z390-CG(W)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B1B, "AOC-CTG-i2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B1C, "X11SDD" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B1D, "X11DPT-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B1E, "AOC-URN4-B2ts" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B1F, "X11DPG-HGX2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B20, "AOC-SLG2-2TM2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B21, "AOC-SLG2-4TM2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B22, "AOC-SMG2-2TM2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B23, "RSC-UM2R-8+-NI22" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B24, "BPN-6S3008S6" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B25, "X11DPU-ZE+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B26, "AOC-2UR68-b2TS" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B27, "AOC-S100G-b1C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B28, "X11SPA-TF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B29, "B2SC1" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B2A, "AOC-2MG-i8" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B2B, "H12SSW-iN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B2C, "H12SSW-NT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B2D, "M11SDV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B2E, "AOC-MG-b2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B2F, "AOM-SMF-TP4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B31, "AOC-M25G-m2S" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B32, "B11SRE-CPU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B33, "B11SRE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B34, "X11SPA-T" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B35, "X11SDW" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B36, "X11SCD-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B37, "X11DPU-V" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B38, "X11DPT-BV" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B39, "B11SCG-ZTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B3A, "H12DST-B" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B3B, "X11SDS-8C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B3C, "AOM-SDW-B16X2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B3D, "B11SCG-CTF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B3E, "AOC-S100G-b2C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B3F, "X11SPD-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x1B41, "X11SRL-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x2011, "H8SMU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x2111, "M8QME" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x2211, "H8DMT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x2311, "BHDME" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x2411, "H8DMT-IBX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x2511, "H8DME-2-LS006" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8080, "X7DB8" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8180, "X7DA8" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8280, "PDSMI-LN4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8380, "X7DBP-X" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8480, "X7DBR-8+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8580, "PDSML" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8680, "X7DVL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8780, "PDSBA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8880, "X7DBX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x8980, "X7DBP-8" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9080, "X7DB8-X" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9180, "PDSME+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9280, "X7DBR-3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9380, "PDSLM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9480, "X7DAL-E" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9580, "X6QT8" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9680, "X7DBN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9780, "X7DBU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9880, "PDSMU+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0x9980, "X7DBT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA011, "H8DM3-2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA080, "X7DVL-3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA111, "H8DA3-2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA211, "H8QM3-2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA280, "X7DW3+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA311, "H8QM3-EX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA380, "X7QC3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA480, "X7DCL-3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA511, "H8DI3+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA580, "AOC-USAS-L8I" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA611, "BHQIE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA680, "X7DCA-3/i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA711, "H8SGL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA780, "B7DC3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA811, "H8DGU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA811, "H8DGU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA880, "X8DA3/i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA911, "H8DGG-QF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xA980, "X7SB3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAA11, "H8DGT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAA80, "X7DWT-C-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAA80, "X7SBL-LN1/LN2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAB11, "H8QG6" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAB80, "C2SBM-Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAC11, "H8DGU-LN4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAC80, "X7DWU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAD11, "BHQME" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAD11, "H8DGT-HIBQF-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAE11, "H8QGI-F-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAE80, "PDSMP-JN001" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAF11, "H8DGU-LN4F+-AI034" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xAF80, "AOC-UTG-I2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB080, "B7DBE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB180, "X7DBI+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB280, "X7DVL-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB380, "X7DWN" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB480, "AOC-UG-i4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB580, "PDSBM-LN2" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB680, "X7DGT-ATOKAP" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB780, "C2SBA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB780, "X7DWT-CD-SG007" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB880, "C2SEA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xB980, "Winbond IPMI (AMI)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBA11, "H8SCM-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBA80, "C2SBX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBA80, "X7SLM-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBB11, "BHDGT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBB80, "B7DCE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBC11, "BHQG6/E" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBC11, "H8DG6/i-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBC80, "X7DWT/-INF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBD11, "H8DCT-IBQF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBD11, "H8DGT-C" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBD80, "C2SBM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBE11, "H8DCT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBE80, "C2SBC" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBE80, "C2SBC" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBF11, "H8DME-EX-LS006" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xBF80, "C2SBi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xC080, "AOC-USAS-H4i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xC180, "AOC-USAS-H8i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xC280, "B7DW3" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xC380, "AOC-USASLP-H8iR" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xCA11, "H8QGL" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xCB11, "H8DGT-CM" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xCD11, "H8DCL-6F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xCE11, "H8DCT-HLN4F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xCF11, "H8SML-7/i(F)" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD011, "H8QG7" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD080, "X7DWP" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD111, "H8SME-F" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD180, "X7SBi" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD280, "X7SB4/E" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD380, "X7SBA" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD480, "X7SBi-LN4" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD580, "X7SBF" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xD680, "X7DCA-3/i" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xDA80, "C2SBM-Q" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xDB80, "X7DCU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xDC80, "X7DCA-L" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xDD80, "X7SBX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xDE80, "X7DCT-10G" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xDF80, "X7DWE" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xF080, "X7SBT" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xF180, "X7SBU" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xF280, "X8DTN+" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xF380, "X8SAX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xF480, "X7DCX" },
|
|
{ IPMI_OEM_SUPERMICRO, 0xF580, "X8ST3" },
|
|
/* YADRO */
|
|
{ IPMI_OEM_YADRO, 0x0001, "VESNIN BMC" },
|
|
{ IPMI_OEM_YADRO, 0x000A, "TATLIN.UNIFIED Storage Controller BMC" },
|
|
{ IPMI_OEM_YADRO, 0x0014, "VEGMAN Series BMC" },
|
|
{ IPMI_OEM_YADRO, 0x0015, "TATLIN.ARCHIVE/xS BMC" },
|
|
|
|
{ 0xffffff , 0xffff , NULL },
|
|
};
|
|
|
|
const char *ipmi_generic_sensor_type_vals[] = {
|
|
"reserved",
|
|
"Temperature", "Voltage", "Current", "Fan",
|
|
"Physical Security", "Platform Security", "Processor",
|
|
"Power Supply", "Power Unit", "Cooling Device", "Other",
|
|
"Memory", "Drive Slot / Bay", "POST Memory Resize",
|
|
"System Firmwares", "Event Logging Disabled", "Watchdog1",
|
|
"System Event", "Critical Interrupt", "Button",
|
|
"Module / Board", "Microcontroller", "Add-in Card",
|
|
"Chassis", "Chip Set", "Other FRU", "Cable / Interconnect",
|
|
"Terminator", "System Boot Initiated", "Boot Error",
|
|
"OS Boot", "OS Critical Stop", "Slot / Connector",
|
|
"System ACPI Power State", "Watchdog2", "Platform Alert",
|
|
"Entity Presence", "Monitor ASIC", "LAN",
|
|
"Management Subsys Health", "Battery", "Session Audit",
|
|
"Version Change", "FRU State",
|
|
NULL
|
|
};
|
|
|
|
const struct oemvalstr ipmi_oem_sensor_type_vals[] = {
|
|
/* Keep OEM grouped together */
|
|
{ IPMI_OEM_KONTRON, 0xC0, "Firmware Info" },
|
|
{ IPMI_OEM_KONTRON, 0xC2, "Init Agent" },
|
|
{ IPMI_OEM_KONTRON, 0xC2, "Board Reset(cPCI)" },
|
|
{ IPMI_OEM_KONTRON, 0xC3, "IPMBL Link State" },
|
|
{ IPMI_OEM_KONTRON, 0xC4, "Board Reset" },
|
|
{ IPMI_OEM_KONTRON, 0xC5, "FRU Information Agent" },
|
|
{ IPMI_OEM_KONTRON, 0xC6, "POST Value Sensor" },
|
|
{ IPMI_OEM_KONTRON, 0xC7, "FWUM Status" },
|
|
{ IPMI_OEM_KONTRON, 0xC8, "Switch Mngt Software Status" },
|
|
{ IPMI_OEM_KONTRON, 0xC9, "OEM Diagnostic Status" },
|
|
{ IPMI_OEM_KONTRON, 0xCA, "Component Firmware Upgrade" },
|
|
{ IPMI_OEM_KONTRON, 0xCB, "FRU Over Current" },
|
|
{ IPMI_OEM_KONTRON, 0xCC, "FRU Sensor Error" },
|
|
{ IPMI_OEM_KONTRON, 0xCD, "FRU Power Denied" },
|
|
{ IPMI_OEM_KONTRON, 0xCE, "Reserved" },
|
|
{ IPMI_OEM_KONTRON, 0xCF, "Board Reset" },
|
|
{ IPMI_OEM_KONTRON, 0xD0, "Clock Resource Control" },
|
|
{ IPMI_OEM_KONTRON, 0xD1, "Power State" },
|
|
{ IPMI_OEM_KONTRON, 0xD2, "FRU Mngt Power Failure" },
|
|
{ IPMI_OEM_KONTRON, 0xD3, "Jumper Status" },
|
|
{ IPMI_OEM_KONTRON, 0xF2, "RTM Module Hotswap" },
|
|
/* PICMG Sensor Types */
|
|
{ IPMI_OEM_PICMG, 0xF0, "FRU Hot Swap" },
|
|
{ IPMI_OEM_PICMG, 0xF1,"IPMB Physical Link" },
|
|
{ IPMI_OEM_PICMG, 0xF2, "Module Hot Swap" },
|
|
{ IPMI_OEM_PICMG, 0xF3, "Power Channel Notification" },
|
|
{ IPMI_OEM_PICMG, 0xF4, "Telco Alarm Input" },
|
|
/* VITA 46.11 Sensor Types */
|
|
{ IPMI_OEM_VITA, 0xF0, "FRU State" },
|
|
{ IPMI_OEM_VITA, 0xF1, "System IPMB Link" },
|
|
{ IPMI_OEM_VITA, 0xF2, "FRU Health" },
|
|
{ IPMI_OEM_VITA, 0xF3, "FRU Temperature" },
|
|
{ IPMI_OEM_VITA, 0xF4, "Payload Test Results" },
|
|
{ IPMI_OEM_VITA, 0xF5, "Payload Test Status" },
|
|
|
|
{ 0xffffff, 0x00, NULL }
|
|
};
|
|
|
|
const struct valstr ipmi_netfn_vals[] = {
|
|
{ IPMI_NETFN_CHASSIS, "Chassis" },
|
|
{ IPMI_NETFN_BRIDGE, "Bridge" },
|
|
{ IPMI_NETFN_SE, "SensorEvent" },
|
|
{ IPMI_NETFN_APP, "Application" },
|
|
{ IPMI_NETFN_FIRMWARE, "Firmware" },
|
|
{ IPMI_NETFN_STORAGE, "Storage" },
|
|
{ IPMI_NETFN_TRANSPORT, "Transport" },
|
|
{ 0xff, NULL },
|
|
};
|
|
|
|
/*
|
|
* From table 26-4 of the IPMI v2 specification
|
|
*/
|
|
const struct valstr ipmi_bit_rate_vals[] = {
|
|
{ 0x00, "IPMI-Over-Serial-Setting"}, /* Using the value in the IPMI Over Serial Config */
|
|
{ 0x06, "9.6" },
|
|
{ 0x07, "19.2" },
|
|
{ 0x08, "38.4" },
|
|
{ 0x09, "57.6" },
|
|
{ 0x0A, "115.2" },
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
const struct valstr ipmi_channel_activity_type_vals[] = {
|
|
{ 0, "IPMI Messaging session active" },
|
|
{ 1, "Callback Messaging session active" },
|
|
{ 2, "Dial-out Alert active" },
|
|
{ 3, "TAP Page Active" },
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
|
|
const struct valstr ipmi_privlvl_vals[] = {
|
|
{ IPMI_SESSION_PRIV_CALLBACK, "CALLBACK" },
|
|
{ IPMI_SESSION_PRIV_USER, "USER" },
|
|
{ IPMI_SESSION_PRIV_OPERATOR, "OPERATOR" },
|
|
{ IPMI_SESSION_PRIV_ADMIN, "ADMINISTRATOR" },
|
|
{ IPMI_SESSION_PRIV_OEM, "OEM" },
|
|
{ IPMI_SESSION_PRIV_NOACCESS, "NO ACCESS" },
|
|
{ UINT8_MAX, NULL },
|
|
};
|
|
|
|
|
|
const struct valstr ipmi_set_in_progress_vals[] = {
|
|
{ IPMI_SET_IN_PROGRESS_SET_COMPLETE, "set-complete" },
|
|
{ IPMI_SET_IN_PROGRESS_IN_PROGRESS, "set-in-progress" },
|
|
{ IPMI_SET_IN_PROGRESS_COMMIT_WRITE, "commit-write" },
|
|
{ 0, NULL },
|
|
};
|
|
|
|
|
|
const struct valstr ipmi_authtype_session_vals[] = {
|
|
{ IPMI_SESSION_AUTHTYPE_NONE, "NONE" },
|
|
{ IPMI_SESSION_AUTHTYPE_MD2, "MD2" },
|
|
{ IPMI_SESSION_AUTHTYPE_MD5, "MD5" },
|
|
{ IPMI_SESSION_AUTHTYPE_PASSWORD, "PASSWORD" },
|
|
{ IPMI_SESSION_AUTHTYPE_OEM, "OEM" },
|
|
{ IPMI_SESSION_AUTHTYPE_RMCP_PLUS,"RMCP+" },
|
|
{ 0xFF, NULL },
|
|
};
|
|
|
|
|
|
const struct valstr ipmi_authtype_vals[] = {
|
|
{ IPMI_1_5_AUTH_TYPE_BIT_NONE, "NONE" },
|
|
{ IPMI_1_5_AUTH_TYPE_BIT_MD2, "MD2" },
|
|
{ IPMI_1_5_AUTH_TYPE_BIT_MD5, "MD5" },
|
|
{ IPMI_1_5_AUTH_TYPE_BIT_PASSWORD, "PASSWORD" },
|
|
{ IPMI_1_5_AUTH_TYPE_BIT_OEM, "OEM" },
|
|
{ 0, NULL },
|
|
};
|
|
|
|
const struct valstr entity_id_vals[] = {
|
|
{ 0x00, "Unspecified" },
|
|
{ 0x01, "Other" },
|
|
{ 0x02, "Unknown" },
|
|
{ 0x03, "Processor" },
|
|
{ 0x04, "Disk or Disk Bay" },
|
|
{ 0x05, "Peripheral Bay" },
|
|
{ 0x06, "System Management Module" },
|
|
{ 0x07, "System Board" },
|
|
{ 0x08, "Memory Module" },
|
|
{ 0x09, "Processor Module" },
|
|
{ 0x0a, "Power Supply" },
|
|
{ 0x0b, "Add-in Card" },
|
|
{ 0x0c, "Front Panel Board" },
|
|
{ 0x0d, "Back Panel Board" },
|
|
{ 0x0e, "Power System Board" },
|
|
{ 0x0f, "Drive Backplane" },
|
|
{ 0x10, "System Internal Expansion Board" },
|
|
{ 0x11, "Other System Board" },
|
|
{ 0x12, "Processor Board" },
|
|
{ 0x13, "Power Unit" },
|
|
{ 0x14, "Power Module" },
|
|
{ 0x15, "Power Management" },
|
|
{ 0x16, "Chassis Back Panel Board" },
|
|
{ 0x17, "System Chassis" },
|
|
{ 0x18, "Sub-Chassis" },
|
|
{ 0x19, "Other Chassis Board" },
|
|
{ 0x1a, "Disk Drive Bay" },
|
|
{ 0x1b, "Peripheral Bay" },
|
|
{ 0x1c, "Device Bay" },
|
|
{ 0x1d, "Fan Device" },
|
|
{ 0x1e, "Cooling Unit" },
|
|
{ 0x1f, "Cable/Interconnect" },
|
|
{ 0x20, "Memory Device" },
|
|
{ 0x21, "System Management Software" },
|
|
{ 0x22, "BIOS" },
|
|
{ 0x23, "Operating System" },
|
|
{ 0x24, "System Bus" },
|
|
{ 0x25, "Group" },
|
|
{ 0x26, "Remote Management Device" },
|
|
{ 0x27, "External Environment" },
|
|
{ 0x28, "Battery" },
|
|
{ 0x29, "Processing Blade" },
|
|
{ 0x2A, "Connectivity Switch" },
|
|
{ 0x2B, "Processor/Memory Module" },
|
|
{ 0x2C, "I/O Module" },
|
|
{ 0x2D, "Processor/IO Module" },
|
|
{ 0x2E, "Management Controller Firmware" },
|
|
{ 0x2F, "IPMI Channel" },
|
|
{ 0x30, "PCI Bus" },
|
|
{ 0x31, "PCI Express Bus" },
|
|
{ 0x32, "SCSI Bus (parallel)" },
|
|
{ 0x33, "SATA/SAS Bus" },
|
|
{ 0x34, "Processor/Front-Side Bus" },
|
|
{ 0x35, "Real Time Clock(RTC)" },
|
|
{ 0x36, "Reserved" },
|
|
{ 0x37, "Air Inlet" },
|
|
{ 0x38, "Reserved" },
|
|
{ 0x39, "Reserved" },
|
|
{ 0x3A, "Reserved" },
|
|
{ 0x3B, "Reserved" },
|
|
{ 0x3C, "Reserved" },
|
|
{ 0x3D, "Reserved" },
|
|
{ 0x3E, "Reserved" },
|
|
{ 0x3F, "Reserved" },
|
|
{ 0x40, "Air Inlet" },
|
|
{ 0x41, "Processor" },
|
|
{ 0x42, "Baseboard/Main System Board" },
|
|
/* PICMG */
|
|
{ 0xA0, "PICMG Front Board" },
|
|
{ 0xC0, "PICMG Rear Transition Module" },
|
|
{ 0xC1, "PICMG AdvancedMC Module" },
|
|
{ 0xF0, "PICMG Shelf Management Controller" },
|
|
{ 0xF1, "PICMG Filtration Unit" },
|
|
{ 0xF2, "PICMG Shelf FRU Information" },
|
|
{ 0xF3, "PICMG Alarm Panel" },
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
const struct valstr entity_device_type_vals[] = {
|
|
{ 0x00, "Reserved" },
|
|
{ 0x01, "Reserved" },
|
|
{ 0x02, "DS1624 temperature sensor" },
|
|
{ 0x03, "DS1621 temperature sensor" },
|
|
{ 0x04, "LM75 Temperature Sensor" },
|
|
{ 0x05, "Heceta ASIC" },
|
|
{ 0x06, "Reserved" },
|
|
{ 0x07, "Reserved" },
|
|
{ 0x08, "EEPROM, 24C01" },
|
|
{ 0x09, "EEPROM, 24C02" },
|
|
{ 0x0a, "EEPROM, 24C04" },
|
|
{ 0x0b, "EEPROM, 24C08" },
|
|
{ 0x0c, "EEPROM, 24C16" },
|
|
{ 0x0d, "EEPROM, 24C17" },
|
|
{ 0x0e, "EEPROM, 24C32" },
|
|
{ 0x0f, "EEPROM, 24C64" },
|
|
{ 0x1000, "IPMI FRU Inventory" },
|
|
{ 0x1001, "DIMM Memory ID" },
|
|
{ 0x1002, "IPMI FRU Inventory" },
|
|
{ 0x1003, "System Processor Cartridge FRU" },
|
|
{ 0x11, "Reserved" },
|
|
{ 0x12, "Reserved" },
|
|
{ 0x13, "Reserved" },
|
|
{ 0x14, "PCF 8570 256 byte RAM" },
|
|
{ 0x15, "PCF 8573 clock/calendar" },
|
|
{ 0x16, "PCF 8574A I/O Port" },
|
|
{ 0x17, "PCF 8583 clock/calendar" },
|
|
{ 0x18, "PCF 8593 clock/calendar" },
|
|
{ 0x19, "Clock calendar" },
|
|
{ 0x1a, "PCF 8591 A/D, D/A Converter" },
|
|
{ 0x1b, "I/O Port" },
|
|
{ 0x1c, "A/D Converter" },
|
|
{ 0x1d, "D/A Converter" },
|
|
{ 0x1e, "A/D, D/A Converter" },
|
|
{ 0x1f, "LCD Controller/Driver" },
|
|
{ 0x20, "Core Logic (Chip set) Device" },
|
|
{ 0x21, "LMC6874 Intelligent Battery controller" },
|
|
{ 0x22, "Intelligent Batter controller" },
|
|
{ 0x23, "Combo Management ASIC" },
|
|
{ 0x24, "Maxim 1617 Temperature Sensor" },
|
|
{ 0xbf, "Other/Unspecified" },
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
const struct valstr ipmi_channel_protocol_vals[] = {
|
|
{ 0x00, "reserved" },
|
|
{ 0x01, "IPMB-1.0" },
|
|
{ 0x02, "ICMB-1.0" },
|
|
{ 0x03, "reserved" },
|
|
{ 0x04, "IPMI-SMBus" },
|
|
{ 0x05, "KCS" },
|
|
{ 0x06, "SMIC" },
|
|
{ 0x07, "BT-10" },
|
|
{ 0x08, "BT-15" },
|
|
{ 0x09, "TMode" },
|
|
{ 0x1c, "OEM 1" },
|
|
{ 0x1d, "OEM 2" },
|
|
{ 0x1e, "OEM 3" },
|
|
{ 0x1f, "OEM 4" },
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
|
|
const struct valstr ipmi_channel_medium_vals[] = {
|
|
{ IPMI_CHANNEL_MEDIUM_RESERVED, "reserved" },
|
|
{ IPMI_CHANNEL_MEDIUM_IPMB_I2C, "IPMB (I2C)" },
|
|
{ IPMI_CHANNEL_MEDIUM_ICMB_1, "ICMB v1.0" },
|
|
{ IPMI_CHANNEL_MEDIUM_ICMB_09, "ICMB v0.9" },
|
|
{ IPMI_CHANNEL_MEDIUM_LAN, "802.3 LAN" },
|
|
{ IPMI_CHANNEL_MEDIUM_SERIAL, "Serial/Modem" },
|
|
{ IPMI_CHANNEL_MEDIUM_LAN_OTHER,"Other LAN" },
|
|
{ IPMI_CHANNEL_MEDIUM_SMBUS_PCI,"PCI SMBus" },
|
|
{ IPMI_CHANNEL_MEDIUM_SMBUS_1, "SMBus v1.0/v1.1" },
|
|
{ IPMI_CHANNEL_MEDIUM_SMBUS_2, "SMBus v2.0" },
|
|
{ IPMI_CHANNEL_MEDIUM_USB_1, "USB 1.x" },
|
|
{ IPMI_CHANNEL_MEDIUM_USB_2, "USB 2.x" },
|
|
{ IPMI_CHANNEL_MEDIUM_SYSTEM, "System Interface" },
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
const struct valstr completion_code_vals[] = {
|
|
{ 0x00, "Command completed normally" },
|
|
{ 0xc0, "Node busy" },
|
|
{ 0xc1, "Invalid command" },
|
|
{ 0xc2, "Invalid command on LUN" },
|
|
{ 0xc3, "Timeout" },
|
|
{ 0xc4, "Out of space" },
|
|
{ 0xc5, "Reservation cancelled or invalid" },
|
|
{ 0xc6, "Request data truncated" },
|
|
{ 0xc7, "Request data length invalid" },
|
|
{ 0xc8, "Request data field length limit exceeded" },
|
|
{ 0xc9, "Parameter out of range" },
|
|
{ 0xca, "Cannot return number of requested data bytes" },
|
|
{ 0xcb, "Requested sensor, data, or record not found" },
|
|
{ 0xcc, "Invalid data field in request" },
|
|
{ 0xcd, "Command illegal for specified sensor or record type" },
|
|
{ 0xce, "Command response could not be provided" },
|
|
{ 0xcf, "Cannot execute duplicated request" },
|
|
{ 0xd0, "SDR Repository in update mode" },
|
|
{ 0xd1, "Device firmeware in update mode" },
|
|
{ 0xd2, "BMC initialization in progress" },
|
|
{ 0xd3, "Destination unavailable" },
|
|
{ 0xd4, "Insufficient privilege level" },
|
|
{ 0xd5, "Command not supported in present state" },
|
|
{ 0xd6, "Cannot execute command, command disabled" },
|
|
{ 0xff, "Unspecified error" },
|
|
{ 0x00, NULL }
|
|
};
|
|
|
|
const struct valstr ipmi_chassis_power_control_vals[] = {
|
|
{ IPMI_CHASSIS_CTL_POWER_DOWN, "Down/Off" },
|
|
{ IPMI_CHASSIS_CTL_POWER_UP, "Up/On" },
|
|
{ IPMI_CHASSIS_CTL_POWER_CYCLE, "Cycle" },
|
|
{ IPMI_CHASSIS_CTL_HARD_RESET, "Reset" },
|
|
{ IPMI_CHASSIS_CTL_PULSE_DIAG, "Diag" },
|
|
{ IPMI_CHASSIS_CTL_ACPI_SOFT, "Soft" },
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
/*
|
|
* See Table 28-11, Get System Restart Cause Command
|
|
*/
|
|
const struct valstr ipmi_chassis_restart_cause_vals[] = {
|
|
{ 0x0, "unknown" },
|
|
{ 0x1, "chassis power control command" },
|
|
{ 0x2, "reset via pushbutton" },
|
|
{ 0x3, "power-up via pushbutton" },
|
|
{ 0x4, "watchdog expired" },
|
|
{ 0x5, "OEM" },
|
|
{ 0x6, "power-up due to always-restore power policy" },
|
|
{ 0x7, "power-up due to restore-previous power policy" },
|
|
{ 0x8, "reset via PEF" },
|
|
{ 0x9, "power-cycle via PEF" },
|
|
{ 0xa, "soft reset" },
|
|
{ 0xb, "power-up via RTC wakeup" },
|
|
{ 0xFF, NULL },
|
|
};
|
|
|
|
const struct valstr ipmi_auth_algorithms[] = {
|
|
{ IPMI_AUTH_RAKP_NONE, "none" },
|
|
{ IPMI_AUTH_RAKP_HMAC_SHA1, "hmac_sha1" },
|
|
{ IPMI_AUTH_RAKP_HMAC_MD5, "hmac_md5" },
|
|
#ifdef HAVE_CRYPTO_SHA256
|
|
{ IPMI_AUTH_RAKP_HMAC_SHA256, "hmac_sha256" },
|
|
#endif /* HAVE_CRYPTO_SHA256 */
|
|
{ 0x00, NULL }
|
|
};
|
|
|
|
const struct valstr ipmi_integrity_algorithms[] = {
|
|
{ IPMI_INTEGRITY_NONE, "none" },
|
|
{ IPMI_INTEGRITY_HMAC_SHA1_96, "hmac_sha1_96" },
|
|
{ IPMI_INTEGRITY_HMAC_MD5_128, "hmac_md5_128" },
|
|
{ IPMI_INTEGRITY_MD5_128 , "md5_128" },
|
|
#ifdef HAVE_CRYPTO_SHA256
|
|
{ IPMI_INTEGRITY_HMAC_SHA256_128, "sha256_128" },
|
|
#endif /* HAVE_CRYPTO_SHA256 */
|
|
{ 0x00, NULL }
|
|
};
|
|
|
|
const struct valstr ipmi_encryption_algorithms[] = {
|
|
{ IPMI_CRYPT_NONE, "none" },
|
|
{ IPMI_CRYPT_AES_CBC_128, "aes_cbc_128" },
|
|
{ IPMI_CRYPT_XRC4_128, "xrc4_128" },
|
|
{ IPMI_CRYPT_XRC4_40, "xrc4_40" },
|
|
{ 0x00, NULL }
|
|
};
|
|
|
|
const struct valstr ipmi_user_enable_status_vals[] = {
|
|
{ 0x00, "unknown" },
|
|
{ 0x40, "enabled" },
|
|
{ 0x80, "disabled" },
|
|
{ 0xC0, "reserved" },
|
|
{ 0xFF, NULL },
|
|
};
|
|
|
|
const struct valstr picmg_frucontrol_vals[] = {
|
|
{ 0, "Cold Reset" },
|
|
{ 1, "Warm Reset" },
|
|
{ 2, "Graceful Reboot" },
|
|
{ 3, "Issue Diagnostic Interrupt" },
|
|
{ 4, "Quiesce" },
|
|
{ 5, NULL },
|
|
};
|
|
|
|
const struct valstr picmg_clk_family_vals[] = {
|
|
{ 0x00, "Unspecified" },
|
|
{ 0x01, "SONET/SDH/PDH" },
|
|
{ 0x02, "Reserved for PCI Express" },
|
|
{ 0x03, "Reserved" }, /* from 03h to C8h */
|
|
{ 0xC9, "Vendor defined clock family" }, /* from C9h to FFh */
|
|
{ 0x00, NULL },
|
|
};
|
|
|
|
const struct oemvalstr picmg_clk_accuracy_vals[] = {
|
|
{ 0x01, 10, "PRS" },
|
|
{ 0x01, 20, "STU" },
|
|
{ 0x01, 30, "ST2" },
|
|
{ 0x01, 40, "TNC" },
|
|
{ 0x01, 50, "ST3E" },
|
|
{ 0x01, 60, "ST3" },
|
|
{ 0x01, 70, "SMC" },
|
|
{ 0x01, 80, "ST4" },
|
|
{ 0x01, 90, "DUS" },
|
|
{ 0x02, 0xE0, "PCI Express Generation 2" },
|
|
{ 0x02, 0xF0, "PCI Express Generation 1" },
|
|
{ 0xffffff, 0x00, NULL }
|
|
};
|
|
|
|
const struct oemvalstr picmg_clk_resource_vals[] = {
|
|
{ 0x0, 0, "On-Carrier Device 0" },
|
|
{ 0x0, 1, "On-Carrier Device 1" },
|
|
{ 0x1, 1, "AMC Site 1 - A1" },
|
|
{ 0x1, 2, "AMC Site 1 - A2" },
|
|
{ 0x1, 3, "AMC Site 1 - A3" },
|
|
{ 0x1, 4, "AMC Site 1 - A4" },
|
|
{ 0x1, 5, "AMC Site 1 - B1" },
|
|
{ 0x1, 6, "AMC Site 1 - B2" },
|
|
{ 0x1, 7, "AMC Site 1 - B3" },
|
|
{ 0x1, 8, "AMC Site 1 - B4" },
|
|
{ 0x2, 0, "ATCA Backplane" },
|
|
{ 0xffffff, 0x00, NULL }
|
|
};
|
|
|
|
const struct oemvalstr picmg_clk_id_vals[] = {
|
|
{ 0x0, 0, "Clock 0" },
|
|
{ 0x0, 1, "Clock 1" },
|
|
{ 0x0, 2, "Clock 2" },
|
|
{ 0x0, 3, "Clock 3" },
|
|
{ 0x0, 4, "Clock 4" },
|
|
{ 0x0, 5, "Clock 5" },
|
|
{ 0x0, 6, "Clock 6" },
|
|
{ 0x0, 7, "Clock 7" },
|
|
{ 0x0, 8, "Clock 8" },
|
|
{ 0x0, 9, "Clock 9" },
|
|
{ 0x0, 10, "Clock 10" },
|
|
{ 0x0, 11, "Clock 11" },
|
|
{ 0x0, 12, "Clock 12" },
|
|
{ 0x0, 13, "Clock 13" },
|
|
{ 0x0, 14, "Clock 14" },
|
|
{ 0x0, 15, "Clock 15" },
|
|
{ 0x1, 1, "TCLKA" },
|
|
{ 0x1, 2, "TCLKB" },
|
|
{ 0x1, 3, "TCLKC" },
|
|
{ 0x1, 4, "TCLKD" },
|
|
{ 0x1, 5, "FLCKA" },
|
|
{ 0x2, 1, "CLK1A" },
|
|
{ 0x2, 2, "CLK1A" },
|
|
{ 0x2, 3, "CLK1A" },
|
|
{ 0x2, 4, "CLK1A" },
|
|
{ 0x2, 5, "CLK1A" },
|
|
{ 0x2, 6, "CLK1A" },
|
|
{ 0x2, 7, "CLK1A" },
|
|
{ 0x2, 8, "CLK1A" },
|
|
{ 0x2, 9, "CLK1A" },
|
|
{ 0xffffff, 0x00, NULL }
|
|
};
|
|
|
|
const struct valstr picmg_busres_id_vals[] = {
|
|
{ 0x0, "Metallic Test Bus pair #1" },
|
|
{ 0x1, "Metallic Test Bus pair #2" },
|
|
{ 0x2, "Synch clock group 1 (CLK1)" },
|
|
{ 0x3, "Synch clock group 2 (CLK2)" },
|
|
{ 0x4, "Synch clock group 3 (CLK3)" },
|
|
{ 0x5, NULL }
|
|
};
|
|
const struct valstr picmg_busres_board_cmd_vals[] = {
|
|
{ 0x0, "Query" },
|
|
{ 0x1, "Release" },
|
|
{ 0x2, "Force" },
|
|
{ 0x3, "Bus Free" },
|
|
{ 0x4, NULL }
|
|
};
|
|
|
|
const struct valstr picmg_busres_shmc_cmd_vals[] = {
|
|
{ 0x0, "Request" },
|
|
{ 0x1, "Relinquish" },
|
|
{ 0x2, "Notify" },
|
|
{ 0x3, NULL }
|
|
};
|
|
|
|
const struct oemvalstr picmg_busres_board_status_vals[] = {
|
|
{ 0x0, 0x0, "In control" },
|
|
{ 0x0, 0x1, "No control" },
|
|
{ 0x1, 0x0, "Ack" },
|
|
{ 0x1, 0x1, "Refused" },
|
|
{ 0x1, 0x2, "No control" },
|
|
{ 0x2, 0x0, "Ack" },
|
|
{ 0x2, 0x1, "No control" },
|
|
{ 0x3, 0x0, "Accept" },
|
|
{ 0x3, 0x1, "Not Needed" },
|
|
{ 0xffffff, 0x00, NULL }
|
|
};
|
|
|
|
const struct oemvalstr picmg_busres_shmc_status_vals[] = {
|
|
{ 0x0, 0x0, "Grant" },
|
|
{ 0x0, 0x1, "Busy" },
|
|
{ 0x0, 0x2, "Defer" },
|
|
{ 0x0, 0x3, "Deny" },
|
|
|
|
{ 0x1, 0x0, "Ack" },
|
|
{ 0x1, 0x1, "Error" },
|
|
|
|
{ 0x2, 0x0, "Ack" },
|
|
{ 0x2, 0x1, "Error" },
|
|
{ 0x2, 0x2, "Deny" },
|
|
|
|
{ 0xffffff, 0x00, NULL }
|
|
};
|
|
|
|
|
|
/**
|
|
* A helper function to count repetitions of the same byte
|
|
* at the beginning of a string.
|
|
*/
|
|
static
|
|
size_t count_bytes(const char *s, unsigned char c)
|
|
{
|
|
size_t count;
|
|
|
|
for (count = 0; s && s[0] == c; ++s, ++count);
|
|
|
|
return count;
|
|
}
|
|
|
|
/**
|
|
* Parse the IANA PEN registry file.
|
|
*
|
|
* See https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
|
|
* The expected entry format is:
|
|
*
|
|
* Decimal
|
|
* | Organization
|
|
* | | Contact
|
|
* | | | Email
|
|
* | | | |
|
|
* 0
|
|
* Reserved
|
|
* Internet Assigned Numbers Authority
|
|
* iana&iana.org
|
|
*
|
|
* That is, IANA PEN at position 0, enterprise name at position 2.
|
|
*/
|
|
#define IANA_NAME_OFFSET 2
|
|
#define IANA_PEN_REGISTRY "enterprise-numbers"
|
|
static
|
|
int oem_info_list_load(oem_valstr_list_t **list)
|
|
{
|
|
FILE *in = NULL;
|
|
char *home;
|
|
oem_valstr_list_t *oemlist = *list;
|
|
int count = 0;
|
|
|
|
/*
|
|
* First try to open user's local registry if HOME is set
|
|
*/
|
|
if ((home = getenv("HOME"))) {
|
|
char path[PATH_MAX + 1] = { 0 };
|
|
snprintf(path, PATH_MAX, "%s%s",
|
|
home,
|
|
PATH_SEPARATOR IANAUSERDIR PATH_SEPARATOR IANA_PEN_REGISTRY);
|
|
in = fopen(path, "r");
|
|
}
|
|
|
|
if (!in) {
|
|
/*
|
|
* Now open the system default file
|
|
*/
|
|
in = fopen(IANADIR PATH_SEPARATOR IANA_PEN_REGISTRY, "r");
|
|
if (!in) {
|
|
lperror(LOG_ERR, "IANA PEN registry open failed");
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Read the registry file line by line, fill in the linked list,
|
|
* and count the entries. No sorting is done, entries will come in
|
|
* reverse registry order.
|
|
*/
|
|
while (!feof(in)) {
|
|
oem_valstr_list_t *item;
|
|
char *line = NULL;
|
|
char *endptr = NULL;
|
|
size_t len = 0;
|
|
long iana;
|
|
|
|
if (!getline(&line, &len, in)) {
|
|
/* Either an EOF or an empty line. Start over. */
|
|
continue;
|
|
}
|
|
|
|
/*
|
|
* Check if the line starts with a digit. If so, take it as IANA PEN.
|
|
* Any numbers not starting at position 0 are discarded.
|
|
*/
|
|
iana = strtol(line, &endptr, 10);
|
|
if (!isdigit(line[0]) || endptr == line) {
|
|
free_n(&line);
|
|
continue;
|
|
}
|
|
free_n(&line);
|
|
|
|
/*
|
|
* Now as we have the enterprise number, we're expecting the
|
|
* organization name to immediately follow.
|
|
*/
|
|
len = 0;
|
|
if (!getline(&line, &len, in)) {
|
|
/*
|
|
* Either an EOF or an empty line. Neither one can happen in
|
|
* a valid registry entry. Start over.
|
|
*/
|
|
continue;
|
|
}
|
|
|
|
if (len < IANA_NAME_OFFSET + 1
|
|
|| count_bytes(line, ' ') != IANA_NAME_OFFSET)
|
|
{
|
|
/*
|
|
* This is not a valid line, it doesn't start with
|
|
* a correct-sized indentation or is too short.
|
|
* Start over.
|
|
*/
|
|
free_n(&line);
|
|
continue;
|
|
}
|
|
|
|
/* Adjust to real line length, don't count the indentation */
|
|
len = strnlen(line + IANA_NAME_OFFSET, len - IANA_NAME_OFFSET);
|
|
|
|
/* Don't count the trailing newline */
|
|
if (line[IANA_NAME_OFFSET + len - 1] == '\n') {
|
|
--len;
|
|
}
|
|
|
|
item = malloc(sizeof(oem_valstr_list_t));
|
|
if (!item) {
|
|
lperror(LOG_ERR, "IANA PEN registry entry allocation failed");
|
|
free_n(&line);
|
|
/* Just stop reading, and process what has already been read */
|
|
break;
|
|
}
|
|
|
|
/*
|
|
* Looks like we have a valid entry, store it in the list.
|
|
*/
|
|
item->valstr.val = iana;
|
|
item->valstr.str = malloc(len + 1); /* Add 1 for \0 terminator */
|
|
if (!item->valstr.str) {
|
|
lperror(LOG_ERR, "IANA PEN registry string allocation failed");
|
|
free_n(&line);
|
|
free_n(&item);
|
|
/* Just stop reading, and process what has already been read */
|
|
break;
|
|
}
|
|
|
|
/*
|
|
* Most other valstr arrays are constant and all of them aren't meant
|
|
* for modification, so the string inside 'struct valstr' is const.
|
|
* Here we're loading the strings dynamically so we intentionally
|
|
* cast to a non-const type to be able to modify data here and
|
|
* keep the compiler silent about it. Restrictions still apply to
|
|
* other places where these strings are used.
|
|
*/
|
|
snprintf((void *)item->valstr.str, len + 1,
|
|
"%s", line + IANA_NAME_OFFSET);
|
|
free_n(&line);
|
|
item->next = oemlist;
|
|
oemlist = item;
|
|
++count;
|
|
}
|
|
fclose (in);
|
|
|
|
*list = oemlist;
|
|
return count;
|
|
}
|
|
|
|
/**
|
|
* Free the allocated list items and, if needed, strings.
|
|
*/
|
|
static
|
|
void
|
|
oem_info_list_free(oem_valstr_list_t **list, bool free_strings)
|
|
{
|
|
while ((*list)->next) {
|
|
oem_valstr_list_t *item = *list;
|
|
*list = item->next;
|
|
if (free_strings) {
|
|
free_n(&item->valstr.str);
|
|
}
|
|
free_n(&item);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Initialize the ipmi_oem_info array from a list
|
|
*/
|
|
static
|
|
bool
|
|
oem_info_init_from_list(oem_valstr_list_t *oemlist, size_t count)
|
|
{
|
|
/* Do not count terminators */
|
|
size_t head_entries = ARRAY_SIZE(ipmi_oem_info_head) - 1;
|
|
size_t tail_entries = ARRAY_SIZE(ipmi_oem_info_tail) - 1;
|
|
static oem_valstr_list_t *item;
|
|
bool rc = false;
|
|
int oemlist_debug = LOG_DEBUG + 4; /* Require six -v options */
|
|
|
|
/* Include static entries and the terminator */
|
|
count += head_entries + tail_entries + 1;
|
|
|
|
/*
|
|
* Allocate as much memory as needed to accomodata all the entries
|
|
* of the loaded linked list, plus the static head and tail, not including
|
|
* their terminating entries, plus the terminating entry for the new
|
|
* array.
|
|
*/
|
|
ipmi_oem_info = malloc(count * sizeof(*ipmi_oem_info));
|
|
|
|
if (!ipmi_oem_info) {
|
|
/*
|
|
* We can't identify OEMs without an allocated ipmi_oem_info.
|
|
* Report an error, set the pointer to dummy and clean up.
|
|
*/
|
|
lperror(LOG_ERR, "IANA PEN registry array allocation failed");
|
|
ipmi_oem_info = ipmi_oem_info_dummy;
|
|
goto out;
|
|
}
|
|
|
|
lprintf(oemlist_debug, " Allocating %6zu entries", count);
|
|
|
|
/* Add a terminator at the very end */
|
|
--count;
|
|
((struct valstr *)ipmi_oem_info)[count].val = -1;
|
|
((struct valstr *)ipmi_oem_info)[count].str = NULL;
|
|
|
|
/* Add tail entries from the end */
|
|
while (count-- < SIZE_MAX && tail_entries--) {
|
|
((struct valstr *)ipmi_oem_info)[count] =
|
|
ipmi_oem_info_tail[tail_entries];
|
|
|
|
lprintf(oemlist_debug, " [%6zu] %8d | %s", count,
|
|
ipmi_oem_info[count].val, ipmi_oem_info[count].str);
|
|
}
|
|
|
|
/* Now add the loaded entries */
|
|
item = oemlist;
|
|
while (count < SIZE_MAX && item->next) {
|
|
((struct valstr *)ipmi_oem_info)[count] =
|
|
item->valstr;
|
|
|
|
lprintf(oemlist_debug, " [%6zu] %8d | %s", count,
|
|
ipmi_oem_info[count].val, ipmi_oem_info[count].str);
|
|
|
|
item = item->next;
|
|
--count;
|
|
}
|
|
|
|
/* Now add head entries */
|
|
while (count < SIZE_MAX && head_entries--) {
|
|
((struct valstr *)ipmi_oem_info)[count] =
|
|
ipmi_oem_info_head[head_entries];
|
|
lprintf(oemlist_debug, " [%6zu] %8d | %s", count,
|
|
ipmi_oem_info[count].val, ipmi_oem_info[count].str);
|
|
--count;
|
|
}
|
|
|
|
rc = true;
|
|
|
|
out:
|
|
return rc;
|
|
}
|
|
|
|
void ipmi_oem_info_init()
|
|
{
|
|
oem_valstr_list_t terminator = { { -1, NULL}, NULL }; /* Terminator */
|
|
oem_valstr_list_t *oemlist = &terminator;
|
|
bool free_strings = true;
|
|
int count;
|
|
|
|
lprintf(LOG_INFO, "Loading IANA PEN Registry...");
|
|
|
|
if (ipmi_oem_info) {
|
|
lprintf(LOG_INFO, "IANA PEN Registry is already loaded");
|
|
goto out;
|
|
}
|
|
|
|
if ((count = oem_info_list_load(&oemlist)) < 1) {
|
|
lprintf(LOG_WARN, "Failed to load entries from IANA PEN Registry");
|
|
count = 0;
|
|
}
|
|
|
|
/* In the array was allocated, don't free the strings at cleanup */
|
|
free_strings = !oem_info_init_from_list(oemlist, count);
|
|
|
|
out:
|
|
oem_info_list_free(&oemlist, free_strings);
|
|
}
|
|
|
|
void ipmi_oem_info_free()
|
|
{
|
|
/* Start with the dynamically allocated entries */
|
|
size_t i = ARRAY_SIZE(ipmi_oem_info_head) - 1;
|
|
|
|
if (ipmi_oem_info == ipmi_oem_info_dummy) {
|
|
return;
|
|
}
|
|
|
|
/*
|
|
* Proceed dynamically allocated entries until we hit the first
|
|
* entry of ipmi_oem_info_tail[], which is statically allocated.
|
|
*/
|
|
while (ipmi_oem_info
|
|
&& ipmi_oem_info[i].val < UINT32_MAX
|
|
&& ipmi_oem_info[i].str != ipmi_oem_info_tail[0].str)
|
|
{
|
|
free_n(&((struct valstr *)ipmi_oem_info)[i].str);
|
|
++i;
|
|
}
|
|
|
|
/* Free the array itself */
|
|
free_n(&ipmi_oem_info);
|
|
}
|