diff options
Diffstat (limited to 'util')
-rw-r--r-- | util/ialarms.c | 2 | ||||
-rw-r--r-- | util/icmd.c | 4 | ||||
-rw-r--r-- | util/iconfig.c | 2 | ||||
-rw-r--r-- | util/idcmi.c | 2 | ||||
-rw-r--r-- | util/ievents.c | 8 | ||||
-rw-r--r-- | util/ifirewall.c | 2 | ||||
-rw-r--r-- | util/ifru.c | 2 | ||||
-rw-r--r-- | util/ifruset.c | 2 | ||||
-rw-r--r-- | util/igetevent.c | 2 | ||||
-rw-r--r-- | util/ihealth.c | 54 | ||||
-rw-r--r-- | util/ilan.c | 2 | ||||
-rw-r--r-- | util/ipicmg.c | 2 | ||||
-rw-r--r-- | util/ipmiutil.c | 2 | ||||
-rw-r--r-- | util/ipmiutil2-64.mak | 12 | ||||
-rw-r--r-- | util/ipmiutil2.mak | 12 | ||||
-rw-r--r-- | util/ireset.c | 2 | ||||
-rw-r--r-- | util/isel.c | 2 | ||||
-rw-r--r-- | util/iseltime.c | 2 | ||||
-rw-r--r-- | util/isensor.c | 29 | ||||
-rw-r--r-- | util/isensor.h | 4 | ||||
-rw-r--r-- | util/iserial.c | 2 | ||||
-rw-r--r-- | util/isol.c | 4 | ||||
-rw-r--r-- | util/itsol.c | 2 | ||||
-rw-r--r-- | util/iuser.c | 2 | ||||
-rw-r--r-- | util/iwdt.c | 2 | ||||
-rw-r--r-- | util/oem_asus.c | 2 | ||||
-rw-r--r-- | util/oem_dell.c | 2 | ||||
-rw-r--r-- | util/oem_fujitsu.c | 2 | ||||
-rw-r--r-- | util/oem_hp.c | 2 | ||||
-rw-r--r-- | util/oem_intel.c | 2 | ||||
-rw-r--r-- | util/oem_kontron.c | 2 | ||||
-rw-r--r-- | util/oem_lenovo.c | 2 | ||||
-rw-r--r-- | util/oem_newisys.c | 2 | ||||
-rw-r--r-- | util/oem_quanta.c | 2 | ||||
-rw-r--r-- | util/oem_sun.c | 2 | ||||
-rw-r--r-- | util/oem_supermicro.c | 85 | ||||
-rw-r--r-- | util/oem_supermicro.h | 2 |
37 files changed, 170 insertions, 98 deletions
diff --git a/util/ialarms.c b/util/ialarms.c index 7260356..836ec8c 100644 --- a/util/ialarms.c +++ b/util/ialarms.c @@ -75,7 +75,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "ialarms"; static char fdebug = 0; static char fbmctam = 0; diff --git a/util/icmd.c b/util/icmd.c index ec467e7..789c69d 100644 --- a/util/icmd.c +++ b/util/icmd.c @@ -78,7 +78,7 @@ extern void ipmi_lan_set_timeout(int ipmito, int tries, int pingto); /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "icmd"; static char fdebug = 0; static char fquiet = 0; @@ -297,7 +297,7 @@ main(int argc, char **argv) if (is_remote() && fprivset == 0) { /*IPMI LAN, privilege not set by user*/ /* commands to other MCs require admin privilege */ - if ((g_sa != BMC_SA) || (cmdbuf[1] != BMC_SA)) + // if ((g_sa != BMC_SA) || (cmdbuf[1] != BMC_SA)) parse_lan_options('V',"4",0); } diff --git a/util/iconfig.c b/util/iconfig.c index f7b9972..db70075 100644 --- a/util/iconfig.c +++ b/util/iconfig.c @@ -172,7 +172,7 @@ typedef struct /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "iconfig"; static char fdebug = 0; static char fipmilan = 0; diff --git a/util/idcmi.c b/util/idcmi.c index 0cce3c0..8bf2000 100644 --- a/util/idcmi.c +++ b/util/idcmi.c @@ -62,7 +62,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "idcmi.h" static char * progname = "idcmi"; -static char * progver = "3.04"; +static char * progver = "3.07"; extern char fdebug; /*from ipmicmd.c*/ static uchar g_bus = PUBLIC_BUS; static uchar g_sa = BMC_SA; diff --git a/util/ievents.c b/util/ievents.c index 10b665b..d07a35f 100644 --- a/util/ievents.c +++ b/util/ievents.c @@ -76,7 +76,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define SELprintf printf #define SMS_SA 0x41 #define SMI_SA 0x21 -static char *progver = "3.04"; +static char *progver = "3.07"; static char *progname = "ievents"; static char fsensdesc = 0; /* 1= get extended sensor descriptions*/ static char fcanonical = 0; /* 1= show canonical, delimited output*/ @@ -290,7 +290,7 @@ char * boot_init_str[NBOOTI] = { /* System Boot Initiated */ /*06*/ "SW Warm Reset", /*07*/ "RestartCause" }; -#define NOSBOOT 8 +#define NOSBOOT 10 char * osboot_str[NOSBOOT] = { /* OS Boot */ /*00*/ "A: boot completed", /*01*/ "C: boot completed", @@ -298,7 +298,9 @@ char * osboot_str[NOSBOOT] = { /* OS Boot */ /*03*/ "Diag boot completed", /*04*/ "CDROM boot completed", /*05*/ "ROM boot completed", - /*06*/ "Other boot completed" }; + /*06*/ "Other boot completed", + /*07*/ "USB7 boot completed", + /*08*/ "USB8 boot completed" }; #define NSLOTC 9 char * slot_str[NSLOTC] = { /* Slot/Connector descriptions */ diff --git a/util/ifirewall.c b/util/ifirewall.c index 719d2b8..3f81b3b 100644 --- a/util/ifirewall.c +++ b/util/ifirewall.c @@ -64,7 +64,7 @@ /* global variables */ static char * progname = "ifirewall"; -static char * progver = "3.04"; +static char * progver = "3.07"; static char fdebug = 0; static uchar g_bus = PUBLIC_BUS; static uchar g_sa = BMC_SA; diff --git a/util/ifru.c b/util/ifru.c index c91fab2..9775d7d 100644 --- a/util/ifru.c +++ b/util/ifru.c @@ -116,7 +116,7 @@ extern int ipmi_kontronoem_main(void * intf, int argc, char ** argv); #endif static char *progname = "ifru"; -static char *progver = "3.04"; +static char *progver = "3.07"; static int vend_id = 0; static int prod_id = 0; static char fdebug = 0; diff --git a/util/ifruset.c b/util/ifruset.c index d24b089..8b77489 100644 --- a/util/ifruset.c +++ b/util/ifruset.c @@ -106,7 +106,7 @@ extern void fmt_time(time_t etime, char *buf, int bufsz); /*see ievents.c*/ #define IPROD_OEM 7 static char *progname = "ifruset"; -static char *progver = "3.04"; +static char *progver = "3.07"; static char fdebug = 0; static char fpicmg = 0; static char fonlybase = 0; diff --git a/util/igetevent.c b/util/igetevent.c index 40c5e4a..61abc96 100644 --- a/util/igetevent.c +++ b/util/igetevent.c @@ -169,7 +169,7 @@ extern void free_sdr_cache(uchar *pret); /*see isensor.c*/ * Global variables */ static char * progname = "igetevent"; -static char * progver = "3.04"; +static char * progver = "3.07"; static char fdebug = 0; static char fipmilan = 0; static char frunonce = 0; diff --git a/util/ihealth.c b/util/ihealth.c index 974fa95..087fcdf 100644 --- a/util/ihealth.c +++ b/util/ihealth.c @@ -12,6 +12,7 @@ * 10/20/06 Andy Cress 1.1 - added -g for guid * 01/10/07 Andy Cress 1.4 - added product strings * 02/25/07 Andy Cress 2.8 - added more Chassis Status decoding + * 09/18/17 Andy Cress 3.07 - Set do_powerstate=0 for Sun, continue if failure */ /*M* Copyright (c) 2006, Intel Corporation @@ -82,7 +83,7 @@ extern int oem_supermicro_get_firmware_str(char *pstr, int sz); /*oem_supermicro * Global variables */ static char * progname = "ihealth"; -static char * progver = "3.04"; +static char * progver = "3.07"; static char fdebug = 0; static char fipmilan = 0; static char fcanonical = 0; @@ -421,9 +422,12 @@ static int get_power_state(uchar *rdata, int rlen) uchar ccode; int ret; - ret = ipmi_cmdraw( GET_POWER_STATE, NETFN_APP, - g_sa, g_bus, g_lun, + ret = ipmi_cmdraw( GET_POWER_STATE, NETFN_APP, g_sa, g_bus, g_lun, + idata,0, rdata,&rlen,&ccode, fdebug); + if (ret == 0 && ccode == 193) { /*0xB7, usu. SuperMicro, retry */ + ret = ipmi_cmdraw( GET_POWER_STATE, NETFN_APP, g_sa, g_bus, g_lun, idata,0, rdata,&rlen,&ccode, fdebug); + } if (ret == 0 && ccode != 0) ret = ccode; return(ret); } /*end get_power_state()*/ @@ -613,12 +617,13 @@ void show_devid_all(int dtype, uchar *devrec, int sdevrec) /* The product ids below only apply to BMCs */ switch(mfg) { case VENDOR_NSC: /*=0x000322*/ - fmBMC = 1; + fmBMC = 1; if (dtype == BMC) tag="mBMC"; if (prod == 0x4311) prodstr = "(TIGPT1U)"; /*Intel*/ break; case VENDOR_SUN: /*=0x00002a*/ - if (prod == 0x4701) prodstr = "(X4140)"; + if (prod == 0x4701) prodstr = "(X4140)"; + do_powerstate = 0; break; case VENDOR_TYAN: /*=0x0019fd*/ switch(prod) { /* show product names for some */ @@ -631,12 +636,12 @@ void show_devid_all(int dtype, uchar *devrec, int sdevrec) } break; case VENDOR_FUJITSU: /*=0x002880*/ - if (prod >= 0x200) prodstr = "(iRMC S2)"; - else prodstr = ""; + if (prod >= 0x200) prodstr = "(iRMC S2)"; + else prodstr = ""; break; case VENDOR_CISCO: /*=0x00168b, 5771.*/ - if (prod == 0x0005) prodstr = "(UCS C200)"; - else prodstr = ""; + if (prod == 0x0005) prodstr = "(UCS C200)"; + else prodstr = ""; if (fipmilan) lan_ch_restrict = 1; /*fw bug, gets 0xC1 on ipmilan*/ break; case 0x003C0A: /*=15370, Giga-Byte*/ @@ -644,9 +649,9 @@ void show_devid_all(int dtype, uchar *devrec, int sdevrec) lan_ch_restrict = 1; /*fw bug, gets 0xC1*/ break; case VENDOR_INTEL: /*=0x000157*/ - if (do_hsc && (dtype == BMC)) /*if HSC option, also show extra*/ + if (do_hsc && (dtype == BMC)) /*if HSC option, also show extra*/ sprintf(extraver," (Boot %x.%x PIA %x.%x)", /*BMC extra*/ - devrec[11],devrec[12],devrec[13],devrec[14]); + devrec[11],devrec[12],devrec[13],devrec[14]); switch(prod) { /* show product names for some */ case 0x000C: prodstr = "(TSRLT2)"; /*SCB2*/ bChan = 7; break; @@ -659,24 +664,24 @@ void show_devid_all(int dtype, uchar *devrec, int sdevrec) case 0x002B: prodstr = "(S5000VSA)"; break; case 0x002D: prodstr = "(MFSYS25)"; break; /*ClearBay*/ case 0x003E: prodstr = "(S5520UR)"; /*CG2100 or NSN2U*/ - do_me = 1; kcs_loops = URNLOOPS; + do_me = 1; kcs_loops = URNLOOPS; bChan = 1; break; case 0x0040: prodstr = "(QSSC-S4R)"; /*Stoutland*/ - do_me = 1; kcs_loops = URNLOOPS; + do_me = 1; kcs_loops = URNLOOPS; bChan = 1; break; case 0x0100: prodstr = "(Tiger4)"; break; case 0x0103: prodstr = "(McCarran)"; /*BladeCenter*/ - do_powerstate = 0; break; + do_powerstate = 0; break; case 0x0800: prodstr = "(ZT5504)"; /*ZiaTech*/ - do_powerstate = 0; break; + do_powerstate = 0; break; case 0x0808: prodstr = "(MPCBL0001)"; /*ATCA Blade*/ - do_powerstate = 0; break; + do_powerstate = 0; break; case 0x0841: prodstr = "(MPCMM0001)"; /*ATCA CMM*/ - do_powerstate = 0; break; + do_powerstate = 0; break; case 0x0811: prodstr = "(TIGW1U)"; break; /*S5000PHB*/ case 0x4311: prodstr = "(NSI2U)"; /*SE7520JR23*/ - if (dtype == BMC) tag="mBMC"; - fmBMC = 1; break; + if (dtype == BMC) tag="mBMC"; + fmBMC = 1; break; default: prodstr = ""; break; } if (is_romley(mfg,prod)) { @@ -768,6 +773,7 @@ void show_devid_all(int dtype, uchar *devrec, int sdevrec) do_powerstate = 0; break; case 2137: prodstr = "(X10DRH)"; break; /*0x0859*/ case 2203: prodstr = "(X11SSW-F)"; break; /*0x089b*/ + case 2327: prodstr = "(X11DPi)"; break; /*0x0917*/ case 4520: prodstr = "(H8DGU)"; break; case 43025: prodstr = "(H8DGU-F)"; break; case 43707: prodstr = "(X8DTH)"; break; @@ -1021,12 +1027,12 @@ main(int argc, char **argv) { /* Some BMCs dont support get_power_state*/ ret = get_power_state(selfbuf,4); if (ret != 0) { - printf("ipmi_getpowerstate error, ret = %d\n",ret); - goto health_end; + printf("ipmi_getpowerstate error, ret = %d\n",ret); + pwr_state = 0; } else { pwr_state = selfbuf[0] & 0x7f; - printf("Power State %c %02x (%s)\n", - bdelim,pwr_state,pwr_string(pwr_state)); + printf("Power State %c %02x (%s)\n", + bdelim,pwr_state,pwr_string(pwr_state)); } } @@ -1036,7 +1042,7 @@ main(int argc, char **argv) goto health_end; } else { selfstatus = selfbuf[0] + (selfbuf[1] << 8); - s = decode_selftest(selfstatus); + s = decode_selftest(selfstatus); if (fmBMC) { sprintf(selfstr,"%s",s); } else { diff --git a/util/ilan.c b/util/ilan.c index 6f63fe5..e54233f 100644 --- a/util/ilan.c +++ b/util/ilan.c @@ -306,7 +306,7 @@ extern char *get_sensor_type_desc (uchar stype); /*from ievents.c */ * Global variables */ static char * progname = "ilan"; -static char * progver = "3.04"; +static char * progver = "3.07"; static char fdebug = 0; static char fipmilan = 0; static char fIPMI10 = 0; /* =1 if IPMI v1.0 or less */ diff --git a/util/ipicmg.c b/util/ipicmg.c index e463424..af10750 100644 --- a/util/ipicmg.c +++ b/util/ipicmg.c @@ -81,7 +81,7 @@ /* Global data */ static char * progname = "ipicmg"; -static char * progver = "3.04"; +static char * progver = "3.07"; static char fdebug = 0; static char fset_mc = 0; static uint8_t g_bus = PUBLIC_BUS; diff --git a/util/ipmiutil.c b/util/ipmiutil.c index ffddc86..9e5bc1f 100644 --- a/util/ipmiutil.c +++ b/util/ipmiutil.c @@ -57,7 +57,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ipmiutil.h" static char *progname = "ipmiutil"; -static char *progver = "3.04"; +static char *progver = "3.07"; // static char fdebug = 0; /*int ipmiutil(int argc, char **argv); */ diff --git a/util/ipmiutil2-64.mak b/util/ipmiutil2-64.mak index 6289e06..32124fa 100644 --- a/util/ipmiutil2-64.mak +++ b/util/ipmiutil2-64.mak @@ -87,7 +87,8 @@ E_OBJ=$(TMP_D)\ipmiutil.obj \ $(TMP_D)\ipicmg.obj $(TMP_D)\ifirewall.obj \
$(TMP_D)\iekanalyzer.obj $(TMP_D)\ifru_picmg.obj \
$(TMP_D)\oem_kontron.obj $(TMP_D)\ihpm.obj $(TMP_D)\ifwum.obj \
- $(TMP_D)\oem_fujitsu.obj $(TMP_D)\oem_intel.obj \
+ $(TMP_D)\oem_fujitsu.obj $(TMP_D)\oem_intel.obj $(TMP_D)\oem_lenovo.obj \
+ $(TMP_D)\oem_asus.obj $(TMP_D)\iuser.obj \
$(TMP_D)\oem_sun.obj $(TMP_D)\oem_dell.obj $(TMP_D)\oem_hp.obj \
$(TMP_D)\oem_supermicro.obj $(TMP_D)\itsol.obj $(TMP_D)\idcmi.obj \
$(TMP_D)\oem_quanta.obj $(TMP_D)\oem_newisys.obj $(CMD_OBJ) mem_if.obj
@@ -311,6 +312,9 @@ $(TMP_D)\ihpm.obj: ihpm.c $(TMP_D)\idcmi.obj: idcmi.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\idcmi.obj idcmi.c
+$(TMP_D)\iuser.obj: iuser.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\iuser.obj iuser.c
+
$(TMP_D)\oem_fujitsu.obj: oem_fujitsu.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_fujitsu.obj oem_fujitsu.c
@@ -332,6 +336,12 @@ $(TMP_D)\oem_hp.obj: oem_hp.c $(TMP_D)\oem_supermicro.obj: oem_supermicro.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_supermicro.obj oem_supermicro.c
+$(TMP_D)\oem_lenovo.obj: oem_lenovo.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_lenovo.obj oem_lenovo.c
+
+$(TMP_D)\oem_asus.obj: oem_asus.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_asus.obj oem_asus.c
+
$(TMP_D)\oem_quanta.obj: oem_quanta.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_quanta.obj oem_quanta.c
diff --git a/util/ipmiutil2.mak b/util/ipmiutil2.mak index 8d41f50..f176720 100644 --- a/util/ipmiutil2.mak +++ b/util/ipmiutil2.mak @@ -87,7 +87,8 @@ E_OBJ=$(TMP_D)\ipmiutil.obj \ $(TMP_D)\ipicmg.obj $(TMP_D)\ifirewall.obj \
$(TMP_D)\iekanalyzer.obj $(TMP_D)\ifru_picmg.obj \
$(TMP_D)\oem_kontron.obj $(TMP_D)\ihpm.obj $(TMP_D)\ifwum.obj \
- $(TMP_D)\oem_fujitsu.obj $(TMP_D)\oem_intel.obj \
+ $(TMP_D)\oem_fujitsu.obj $(TMP_D)\oem_intel.obj $(TMP_D)\oem_lenovo.obj \
+ $(TMP_D)\oem_asus.obj $(TMP_D)\iuser.obj \
$(TMP_D)\oem_sun.obj $(TMP_D)\oem_dell.obj $(TMP_D)\oem_hp.obj \
$(TMP_D)\oem_supermicro.obj $(TMP_D)\itsol.obj $(TMP_D)\idcmi.obj \
$(TMP_D)\oem_quanta.obj $(TMP_D)\oem_newisys.obj $(CMD_OBJ) mem_if.obj
@@ -312,6 +313,9 @@ $(TMP_D)\ihpm.obj: ihpm.c $(TMP_D)\idcmi.obj: idcmi.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\idcmi.obj idcmi.c
+$(TMP_D)\iuser.obj: iuser.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\iuser.obj iuser.c
+
$(TMP_D)\oem_fujitsu.obj: oem_fujitsu.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_fujitsu.obj oem_fujitsu.c
@@ -333,6 +337,12 @@ $(TMP_D)\oem_hp.obj: oem_hp.c $(TMP_D)\oem_supermicro.obj: oem_supermicro.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_supermicro.obj oem_supermicro.c
+$(TMP_D)\oem_lenovo.obj: oem_lenovo.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_lenovo.obj oem_lenovo.c
+
+$(TMP_D)\oem_asus.obj: oem_asus.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_asus.obj oem_asus.c
+
$(TMP_D)\oem_quanta.obj: oem_quanta.c
$(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_quanta.obj oem_quanta.c
diff --git a/util/ireset.c b/util/ireset.c index 3584cb1..36134bc 100644 --- a/util/ireset.c +++ b/util/ireset.c @@ -108,7 +108,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "ireset"; static uchar ipmi_maj; static uchar ipmi_min; diff --git a/util/isel.c b/util/isel.c index 9045d62..925a689 100644 --- a/util/isel.c +++ b/util/isel.c @@ -162,7 +162,7 @@ typedef struct #define RDATA_OFFSET 13 //byte offset to the record event data static char *progname = "isel"; -static char *progver = "3.04"; +static char *progver = "3.07"; #ifdef WIN32 #define IDXFILE "sel.idx" static char idxfile[80] = IDXFILE; diff --git a/util/iseltime.c b/util/iseltime.c index 2f5c7e1..0900c31 100644 --- a/util/iseltime.c +++ b/util/iseltime.c @@ -78,7 +78,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "iseltime"; static char fdebug = 0; static char fset = 0; diff --git a/util/isensor.c b/util/isensor.c index 69d901f..7418ae9 100644 --- a/util/isensor.c +++ b/util/isensor.c @@ -161,7 +161,7 @@ extern int decode_sensor_fujitsu(uchar *sdr,uchar *reading,char *pstring, extern int decode_sensor_sun(uchar *sdr,uchar *reading,char *pstring, int slen); /*see oem_sun.c*/ extern int decode_sensor_supermicro(uchar *sdr,uchar *reading,char *pstring, - int slen, int fsimple); /*see oem_supermicro.c*/ + int slen, int fsimple, char fdbg); /*see oem_supermicro.c*/ extern int decode_sensor_quanta(uchar *sdr,uchar *reading,char *pstring, int slen); /*see oem_quanta.c*/ extern int decode_sensor_dell(uchar *sdr,uchar *reading,char *pstring, @@ -255,7 +255,7 @@ char *decode_entity_id(int id) { * Global Data ************************/ static char *progname = "isensor"; -static char *progver = "3.04"; +static char *progver = "3.07"; #ifdef WIN32 static char savefile[] = "%ipmiutildir%\\thresholds.cmd"; #else @@ -655,17 +655,17 @@ char *get_unit_type(int iunits, int ibase, int imod, int fshort) break; } if ((umod == 0) && (iunits > 0)) { - /* special cases for other SensorUnits1 bits */ - if ((iunits & 0x01) != 0) { /*percentage*/ - if (fshort) pstr = "%"; - else pstr = "percent"; - } else if (iunits == 0xC0) { /*no analog reading*/ - pstr = "na"; - } else if (iunits == 0x18) { - /* For Tyan fans: base=42, units=24.(0x18) -> cycles/hour */ - snprintf(unitstr,sizeof(unitstr),"%s/hour",punittypes[jbase]); - pstr = unitstr; - } + /* special cases for other SensorUnits1 bits */ + if ((iunits & 0x01) != 0) { /*percentage*/ + if (fshort) pstr = "%"; + else pstr = "percent"; + } else if (iunits == 0xC0) { /*no analog reading*/ + pstr = "na"; + } else if (iunits == 0x18) { + /* For Tyan fans: base=42, units=24.(0x18) -> cycles/hour */ + snprintf(unitstr,sizeof(unitstr),"%s/hour",punittypes[jbase]); + pstr = unitstr; + } } return(pstr); } @@ -1952,7 +1952,7 @@ int decode_oem_sensor(uchar *sdr,uchar *reading,char *pstring,int slen) case VENDOR_MAGNUM: case VENDOR_SUPERMICRO: case VENDOR_SUPERMICROX: - rv = decode_sensor_supermicro(sdr, reading, pstring, slen, fsimple); + rv = decode_sensor_supermicro(sdr,reading,pstring,slen,fsimple,fdebug); break; case VENDOR_QUANTA: rv = decode_sensor_quanta(sdr, reading, pstring, slen); @@ -2650,6 +2650,7 @@ ShowSDR(char *tag, uchar *sdr) sens[2],i,sens[0],sens[1],sdr01->sens_base, sdr01->sens_units); if ((sens[1] & 0x20) != 0) { i = 7; val = 0; } /* Init state */ + else if (sdr01->sens_units == 0xC0) i = 42; /*reading NotAvailable*/ else if (sens[2] == 0xc7) { i = 10; val = 0; /* Absent (Intel) */ if (fdebug) printf("sensor[%x] is absent (c7), no reading\n", sdr01->sens_num); diff --git a/util/isensor.h b/util/isensor.h index 8927b6e..f578274 100644 --- a/util/isensor.h +++ b/util/isensor.h @@ -16,8 +16,8 @@ typedef struct { uchar entity_inst; uchar sens_init; uchar sens_capab; - uchar sens_type; - uchar ev_type; + uchar sens_type; /*sdr[12]*/ + uchar ev_type; /*sdr[13]*/ uchar data1[6]; /*masks*/ uchar sens_units; /*sdr[20]*/ uchar sens_base; diff --git a/util/iserial.c b/util/iserial.c index a087614..f8377c7 100644 --- a/util/iserial.c +++ b/util/iserial.c @@ -155,7 +155,7 @@ typedef struct /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "iserial"; static int vend_id = 0; static int prod_id = 0; diff --git a/util/isol.c b/util/isol.c index fab0994..1713ede 100644 --- a/util/isol.c +++ b/util/isol.c @@ -165,7 +165,7 @@ void dbglog( char *pattn, ... ); /*local prototype*/ /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "isol"; static char fdebug = 0; static char fpicmg = 0; @@ -1249,7 +1249,9 @@ main(int argc, char **argv) case VENDOR_DELL: /*Dell == 0x0002A2*/ max_bmc_data = MAX_DELL_DATA; /*shorter max data*/ break; + case VENDOR_SUPERMICROX: case VENDOR_SUPERMICRO: + if (!fprivset) parse_lan_options('V',"4",0); /*requires admin priv*/ case VENDOR_LMC: case VENDOR_PEPPERCON: /* 0x0028C5 Peppercon/Raritan*/ sol_timeout = 10; /* shorter 10 sec SOL keepalive timeout */ diff --git a/util/itsol.c b/util/itsol.c index 6997ffe..57bb1eb 100644 --- a/util/itsol.c +++ b/util/itsol.c @@ -98,7 +98,7 @@ int gettimeofday(struct timeval *tv, struct timezone *tz); extern int verbose; extern char fdebug; /*from ipmicmd.c*/ static char * progname = "itsol"; -static char * progver = "3.04"; +static char * progver = "3.07"; static uchar g_bus = PUBLIC_BUS; static uchar g_sa = BMC_SA; static uchar g_lun = BMC_LUN; diff --git a/util/iuser.c b/util/iuser.c index e6a7b29..fa8297c 100644 --- a/util/iuser.c +++ b/util/iuser.c @@ -57,7 +57,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* global variables */ static char * progname = "iuser"; -static char * progver = "3.04"; +static char * progver = "3.07"; static char fdebug = 0; static char fcanonical = 0; static char bdelim = '|'; diff --git a/util/iwdt.c b/util/iwdt.c index 13253b3..d8c3c84 100644 --- a/util/iwdt.c +++ b/util/iwdt.c @@ -100,7 +100,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "iwdt"; static char fdebug = 0; static char fdontlog = 0; diff --git a/util/oem_asus.c b/util/oem_asus.c index cd5c01e..d5861d4 100644 --- a/util/oem_asus.c +++ b/util/oem_asus.c @@ -61,7 +61,7 @@ extern char fdebug; /*ipmicmd.c*/ void set_loglevel(int level); /*prototype */ static char * progname = "iasusoem"; -static char * progver = "3.04"; +static char * progver = "3.07"; static int verbose = 0; static uchar g_bus = PUBLIC_BUS; static uchar g_sa = BMC_SA; diff --git a/util/oem_dell.c b/util/oem_dell.c index 4f9a7ab..dcfe52a 100644 --- a/util/oem_dell.c +++ b/util/oem_dell.c @@ -132,7 +132,7 @@ char NIC_Selection_Mode_String_12g[] [50] = { "shared with failover all loms" }; -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "idelloem"; static int verbose = 0; static char fdebug = 0; diff --git a/util/oem_fujitsu.c b/util/oem_fujitsu.c index 9a4783a..9f11b19 100644 --- a/util/oem_fujitsu.c +++ b/util/oem_fujitsu.c @@ -52,7 +52,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* extern void get_mfgid(int *vend, int *prod); * from ipmicmd.h*/ /* extern int get_lan_options(); * from ipmicmd.h */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "ifujitsuoem"; static char fdebug = 0; static char freadok = 1; diff --git a/util/oem_hp.c b/util/oem_hp.c index 081ea6f..862456a 100644 --- a/util/oem_hp.c +++ b/util/oem_hp.c @@ -44,7 +44,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ievents.h" #include "isensor.h" -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "ihpoem"; static char *redund_str(uchar b) diff --git a/util/oem_intel.c b/util/oem_intel.c index bf21ec5..b8d9454 100644 --- a/util/oem_intel.c +++ b/util/oem_intel.c @@ -83,7 +83,7 @@ extern char fdebug; /*ipmicmd.c*/ /* * Global variables */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "iinteloem"; static char fRelayBits = 0; static uchar g_bus = PUBLIC_BUS; diff --git a/util/oem_kontron.c b/util/oem_kontron.c index b8fedf7..6a3964f 100644 --- a/util/oem_kontron.c +++ b/util/oem_kontron.c @@ -73,7 +73,7 @@ typedef uint32_t socklen_t; #define FRU_TYPE_COMPONENT 0x01 #define FRU_TYPE_BASEBOARD 0x07 -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "ikontronoem"; const struct valstr ktc5520_post[] = { /*from EAS*/ { 0x0003, "Start POST Init" }, diff --git a/util/oem_lenovo.c b/util/oem_lenovo.c index dc15a5d..f37388f 100644 --- a/util/oem_lenovo.c +++ b/util/oem_lenovo.c @@ -61,7 +61,7 @@ extern uchar bitnum(ushort value); /*isensor.c*/ extern char fdebug; /*ipmicmd.c*/ void set_loglevel(int level); /*prototype */ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "ilenovooem"; static int verbose = 0; static uchar g_bus = PUBLIC_BUS; diff --git a/util/oem_newisys.c b/util/oem_newisys.c index 6b21e1b..9ae794b 100644 --- a/util/oem_newisys.c +++ b/util/oem_newisys.c @@ -43,7 +43,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "ipmicmd.h" #include "ievents.h" -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "inewisysoem"; static char fdebug = 0; static uchar g_bus = PUBLIC_BUS; diff --git a/util/oem_quanta.c b/util/oem_quanta.c index a6cfd6a..ab9b105 100644 --- a/util/oem_quanta.c +++ b/util/oem_quanta.c @@ -45,7 +45,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. extern int decode_sensor_intel_nm(uchar *sdr,uchar *reading, char *pstring,int slen); /*oem_intel.c*/ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "iquantaoem"; static char fdbg = 0; diff --git a/util/oem_sun.c b/util/oem_sun.c index 8aa211b..9ccc905 100644 --- a/util/oem_sun.c +++ b/util/oem_sun.c @@ -109,7 +109,7 @@ static const struct valstr sunoem_led_mode_optvals[] = { /* global variables */ static char * progname = "isunoem"; -static char * progver = "3.04"; +static char * progver = "3.07"; static char fdebug = 0; static uchar g_bus = PUBLIC_BUS; static uchar g_sa = BMC_SA; diff --git a/util/oem_supermicro.c b/util/oem_supermicro.c index a480b7f..1924345 100644 --- a/util/oem_supermicro.c +++ b/util/oem_supermicro.c @@ -68,7 +68,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. void set_loglevel(int level); /*prototype */ extern char fsm_debug; /*mem_if.c*/ -static char * progver = "3.04"; +static char * progver = "3.07"; static char * progname = "ismcoem"; static int verbose = 0; static char fdebug = 0; @@ -415,7 +415,7 @@ int decode_threshold_supermicro(uchar rval, uchar *thresh) * pstring = contains the sensor reading interpretation string (if rv==0) */ int decode_sensor_supermicro(uchar *sdr,uchar *reading,char *pstring, int slen, - int fsimple) + int fsimple, char fdbg) { int i, rv = -1; uchar stype, etype, snum; @@ -428,23 +428,26 @@ int decode_sensor_supermicro(uchar *sdr,uchar *reading,char *pstring, int slen, if (sdr == NULL || reading == NULL) return(rv); if (pstring == NULL || slen == 0) return(rv); + fdebug = fdbg; bval = (reading[2] & 0x3f); snum = sdr[7]; /*sdr01->sens_num*/ stype = sdr[12]; /*sensor_type*/ etype = sdr[13]; /*sdr01->ev_type*/ + get_mfgid(&vend_id,&prod_id); /*saved from ipmi_getdeviceid */ /* sdr[3] rec_type is 0x01 for Full, 0x02 for Compact */ if ((sdr[3] == 0x01) && (etype == 0x01)) { /* full threshold sensor */ - if (bval == 0) return(-1); /* OK, treat it normally */ - /*cannot rely upon the sensor reading[2], so get thresholds and compare*/ + /*if Temp sensor, bits==0 would show BelowCrit, so handle normally */ + if ((stype == 0x01) && (bval == 0)) return(-1); + /*Cannot rely upon the sensor reading[2], so get thresholds and compare*/ rv = GetSensorThresholds(snum,&thresh[0]); if (rv != 0) return(rv); i = decode_threshold_supermicro(reading[0],thresh); if (fdebug) - printf("decode_sensor_supermicro: snum=%x rdg=%x:%x thresh=%x:%x:%x:%x:%x:%x:%x i=%d rv=%d\n", - snum,reading[0],reading[2], thresh[0], thresh[1], thresh[2], thresh[3], + printf("decode_sensor_supermicro: snum=%x stype=%x rdg=%x:%x thresh=%x:%x:%x:%x:%x:%x:%x i=%d rv=%d\n", + snum,stype,reading[0],reading[2], thresh[0], thresh[1], thresh[2], thresh[3], thresh[4], thresh[5], thresh[6], i,rv); switch(i) { - case 0: pstr = "OK*"; break; + case 0: pstr = "OK"; break; case 1: pstr = "Warn-lo"; break; case 2: pstr = "Crit-lo"; break; case 3: pstr = "BelowCrit"; break; @@ -495,6 +498,14 @@ int decode_sensor_supermicro(uchar *sdr,uchar *reading,char *pstring, int slen, default: rv = -1; break; } break; + case 0x29: /* VBAT sensor */ + if (prod_id == 0x0917) { /*X11DRi has inert VBAT full sensor*/ + if (bval == 0) { + pstr = "NotAvailable"; + rv = 0; + } + } + break; default: break; } @@ -593,12 +604,14 @@ int decode_sel_supermicro(uchar *evt, char *outbuf, int outsz, char fdesc, uchar rectype; ulong timestamp; char mybuf[64]; + char mytype[64]; char *type_str = ""; char *pstr = NULL; - int sevid; + int sevid, d1; ushort genid; uchar snum; uchar data1, data2, data3; + char *psens = NULL; fdebug = fdbg; sevid = SEV_INFO; @@ -616,17 +629,22 @@ int decode_sel_supermicro(uchar *evt, char *outbuf, int outsz, char fdesc, switch(evt[10]) { /*sensor type*/ case 0xC0: /* CPU Temp Sensor */ type_str = "OEM_CpuTemp"; - switch((evt[13] & 0x0f)) { /*offset/data1 l.o. nibble*/ + d1 = (evt[13] & 0x0f); /*offset/data1 l.o. nibble*/ + switch(d1) { case 0x02: /* CPU Temp Sensor Overheat event offset */ if (evt[12] & 0x80) { /*EvTyp==0xF0 if deassert*/ pstr = "CpuTemp Overheat OK"; sevid = SEV_INFO; } else { /* EvTyp=0x70 assert */ pstr = "CpuTemp Overheat "; sevid = SEV_MAJ; } - rv = 0; break; - default: pstr = "CpuTemp Event"; rv = 0; break; + default: pstr = "CpuTemp Event"; + sprintf(mytype,"CpuTemp_%02x", d1); + type_str = mytype; + sevid = SEV_MIN; + break; } + rv = 0; break; case 0xC2: /* CPLD Event */ type_str = "OEM_CPLD"; @@ -635,10 +653,10 @@ int decode_sel_supermicro(uchar *evt, char *outbuf, int outsz, char fdesc, if (evt[14] == 0x1c) { pstr = "CPLD CATERR Asserted"; sevid = SEV_CRIT; } else { pstr = "CPLD Event Asserted"; sevid = SEV_MIN; } - rv = 0; break; - default: pstr = "CPLD Event"; rv = 0; break; + default: pstr = "CPLD Event"; sevid = SEV_MIN; break; } + rv = 0; break; case 0xD0: /* BMC Event */ type_str = "OEM_BMC"; @@ -655,13 +673,15 @@ int decode_sel_supermicro(uchar *evt, char *outbuf, int outsz, char fdesc, break; case 0xC5: /* Observed Event: Storage, drive slot */ /* usually OEM(c5) #52 - 6f [01 00 00] */ - pstr = "OEMC5: Storage/DriveSlot fault"; + type_str = "OEM_C5"; + pstr = "Storage/DriveSlot fault"; sevid = SEV_MAJ; rv = 0; break; - case 0xC8: /* Observed Event: Temp/Cooling issue, reboots */ + case 0xC8: /* Observed Event: AC Power on event */ /* usually OEM(c8) #ff - 6f [a0 ff ff] */ - pstr = "OEMC8: Temp/Cooling fault"; + type_str = "OEM_C8"; + pstr = "AC Power On"; sevid = SEV_MAJ; rv = 0; break; @@ -671,11 +691,16 @@ int decode_sel_supermicro(uchar *evt, char *outbuf, int outsz, char fdesc, } if (rv == 0) { format_event(id,timestamp, sevid, genid, type_str, - snum,NULL,pstr,mybuf,outbuf,outsz); + snum,psens,pstr,mybuf,outbuf,outsz); } return(rv); } +/* factory_defaults: set SMC factory defaults + * mode: 0 = detect, default is c0 41 method + * 2 = use c0 41 method, also get guid + * 3 = use f0 40 method (usu X11) + */ static int factory_defaults(int mode) { int rv = -1; @@ -684,7 +709,7 @@ static int factory_defaults(int mode) uchar idata[16]; uchar cc; /* - From SMC IPMICFG -fde session: + From SMC IPMICFG -fde factory defaults session: start_kcs_transaction - 18 01 (get_device_id) start_kcs_transaction - 18 25 (watchdog get) start_kcs_transaction - b0 00 00 (unknown, invalid) @@ -693,6 +718,12 @@ static int factory_defaults(int mode) start_kcs_transaction - 18 01 (get_device_id) start_kcs_transaction - c0 41 (reset_factory_defaults, -fde) */ + if ((prod_id > 2200) && (prod_id < 2300) && (mode == 0)) { + /* Looks like X11 board, may use netfn 3c, cmd 40 ? */ + /* do not auto-set this if mode param is not 3 */ + // mode = 3; /* cmd=0x40 netfn=0x3c (netfn/lun=0xF0) */ + if (fdebug) printf("may also need ipmiutil cmd 00 20 f0 40\n"); + } /* b0 00 00: cmd=00 netfn=2C */ rlen = sizeof(rdata); @@ -703,7 +734,7 @@ static int factory_defaults(int mode) if (fdebug) printf("b0 00 returned %d\n",rv); /* if (rv != 0) return(rv); */ - if (mode == 2) { + if (mode == 2) { /* (get_system_guid) */ rlen = sizeof(rdata); rv = ipmi_cmdraw(0x37, (0x18 >> 2), BMC_SA, PUBLIC_BUS, BMC_LUN, idata, 0, rdata, &rlen, &cc, fdebug); @@ -712,10 +743,15 @@ static int factory_defaults(int mode) if (rv != 0) return(rv); } - /* reset factory defaults cmd=0x41 netfn=0x30 (netfn/lun=0xC0) */ + /* reset factory defaults */ rlen = sizeof(rdata); - rv = ipmi_cmdraw(0x41, (0xc0 >> 2), BMC_SA, PUBLIC_BUS, BMC_LUN, - idata, 0, rdata, &rlen, &cc, fdebug); + if (mode == 3) { /* cmd=0x40 netfn=0x3c (netfn/lun=0xF0) */ + rv = ipmi_cmdraw(0x40, 0x3c, BMC_SA, PUBLIC_BUS, BMC_LUN, + idata, 0, rdata, &rlen, &cc, fdebug); + } else { /* cmd=0x41 netfn=0x30 (netfn/lun=0xC0) if X10 or less */ + rv = ipmi_cmdraw(0x41, (0xc0 >> 2), BMC_SA, PUBLIC_BUS, BMC_LUN, + idata, 0, rdata, &rlen, &cc, fdebug); + } if ((rv == 0) && (cc != 0)) rv = cc; if (fdebug) printf("factory default reset returned %d\n",rv); if (rv != 0) return(rv); @@ -741,6 +777,11 @@ static int ipmi_smcoem_main(int argc, char **argv) char msg[80]; uchar val; + if ((vend_id != VENDOR_SUPERMICRO) && (vend_id != VENDOR_SUPERMICROX)) { + printf("Not SuperMicro firmware, ignoring smcoem\n"); + usage(); + return(ERR_USAGE); + } if (strncmp(argv[0],"intrusion",9) == 0) { printf("Clearing Chassis Intrusion ...\n"); rv = oem_supermicro_reset_intrusion(); diff --git a/util/oem_supermicro.h b/util/oem_supermicro.h index c8f9147..7237f3c 100644 --- a/util/oem_supermicro.h +++ b/util/oem_supermicro.h @@ -48,7 +48,7 @@ int oem_supermicro_get_lan_port(uchar *val); int oem_supermicro_set_lan_port(uchar val); char *oem_supermicro_lan_port_string(uchar val); -int decode_sensor_supermicro(uchar *sdr,uchar *reading,char *pstring, int slen, int fsimple); +int decode_sensor_supermicro(uchar *sdr,uchar *reading,char *pstring, int slen, int fsimple, char fdbg); int decode_mem_supermicro(int prod, uchar b2, uchar b3, char *desc, int *psz); int decode_sel_supermicro(uchar *evt, char *outbuf, int outsz, char fdesc, char fdebug); |