summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/AnsiTerm.cpp15
-rw-r--r--util/Makefile.am27
-rw-r--r--util/Makefile.am-so241
-rw-r--r--util/Makefile.in363
-rw-r--r--util/ialarms.c4
-rw-r--r--util/icmd.c7
-rw-r--r--util/iconfig.c6
-rw-r--r--util/idcmi.c9
-rw-r--r--util/iekanalyzer.c2
-rw-r--r--util/ievents.c121
-rw-r--r--util/ifirewall.c2
-rw-r--r--util/ifirewall.h2
-rw-r--r--[-rwxr-xr-x]util/ifru.c4
-rw-r--r--util/ifruset.c4
-rw-r--r--util/igetevent.c7
-rw-r--r--util/ihealth.c20
-rw-r--r--util/ilan.c66
-rw-r--r--util/ipicmg.c2
-rw-r--r--util/ipmi_sample.c5
-rw-r--r--util/ipmi_sample_evt.c13
-rw-r--r--util/ipmicmd.c152
-rw-r--r--util/ipmicmd.h35
-rw-r--r--util/ipmilan.c67
-rw-r--r--util/ipmilan.h2
-rw-r--r--util/ipmilanplus.c23
-rw-r--r--util/ipmild.c2
-rw-r--r--util/ipmiutil.c4
-rw-r--r--util/ipmiutil.mak9
-rw-r--r--util/ipmiutil.mak.orig423
-rw-r--r--util/ipmiutil2.mak3
-rw-r--r--util/ipmiutil64.mak6
-rw-r--r--util/ireset.c4
-rw-r--r--util/isel.c15
-rw-r--r--util/iseltime.c15
-rw-r--r--util/isensor.c628
-rw-r--r--util/iserial.c7
-rw-r--r--util/isol.c8
-rw-r--r--util/itsol.c2
-rw-r--r--util/iwdt.c4
-rw-r--r--util/md2.h157
-rw-r--r--util/oem_dell.c2
-rw-r--r--util/oem_hp.c12
-rw-r--r--util/oem_sun.c2
-rw-r--r--util/oem_supermicro.c2
-rw-r--r--util/subs.c26
45 files changed, 1600 insertions, 930 deletions
diff --git a/util/AnsiTerm.cpp b/util/AnsiTerm.cpp
index be94465..750fd52 100644
--- a/util/AnsiTerm.cpp
+++ b/util/AnsiTerm.cpp
@@ -22,6 +22,8 @@
* 10/17/09 Robert Nelson
* - Use GetProcAddress for (Get/Set)ConsoleScreenBufferInfoEx since they
* are only available on Vista and beyond.
+ * 01/27/2015 Andy Cress
+ * - handle ProcessRM asserts
*
* Todo:
* - Implement soft tabs
@@ -1089,6 +1091,7 @@ CAnsiTerm::OutputText(void)
if (WriteConsoleW(m_hConsole, &m_OutputBuffer[m_dwOutputCount - 1], 1, &dwWritten, NULL))
{
+ dbglog("OutputTest: WriteConsoleW error1\n");
assert(dwWritten == 1);
}
@@ -1102,6 +1105,7 @@ CAnsiTerm::OutputText(void)
if (WriteConsoleW(m_hConsole, pwszCurrent, dwPartialCount, &dwWritten, NULL))
{
+ dbglog("OutputTest: WriteConsoleW error2\n");
assert(dwWritten == dwPartialCount);
}
else
@@ -1530,6 +1534,8 @@ CAnsiTerm::ProcessRIS(void)
bool
CAnsiTerm::ProcessRM(void)
{
+ bool bret = true;
+
if (m_bPrivateParameters)
{
for (int index = 0; index < m_ParameterCount; index++)
@@ -1538,7 +1544,8 @@ CAnsiTerm::ProcessRM(void)
{
case 0:
default:
- assert(false);
+ dbglog("ProcessRM: illegal private param %d\n",m_Parameters[index]);
+ bret = false;
break;
case DECCKM:
m_bCursorKeyMode = false;
@@ -1584,11 +1591,13 @@ CAnsiTerm::ProcessRM(void)
switch (m_Parameters[index])
{
case 20: m_bLineFeedNewLineMode = false; break; // LNM
- default: assert(false); break;
+ default:
+ dbglog("ProcessRM: illegal public param %d\n",m_Parameters[index]);
+ bret = false; break;
}
}
}
- return true;
+ return bret;
}
bool
diff --git a/util/Makefile.am b/util/Makefile.am
index 3726107..16a8665 100644
--- a/util/Makefile.am
+++ b/util/Makefile.am
@@ -22,9 +22,9 @@ CMDMOD += md5.c md2.c ipmilan.c
CMDMOD += ipmilanplus.c
# CMDMOD = ipmicmd.c mem_if.c @OS_DRIVERS@
# am: configure substitutions are not allowed in _SOURCES variables
-LIBOBJ = ipmicmd.o mem_if.o ipmidir.o imbapi.o ipmimv.o ipmild.o ipmibmc.o ipmilipmi.o subs.o md5.o md2.o $(tmpobj)/ipmilan.o $(tmpobj)/ipmilanplus.o
+LIBOBJ = ipmicmd.o mem_if.o ipmidir.o imbapi.o ipmimv.o ipmild.o ipmibmc.o ipmilipmi.o subs.o md5.o md2.o $(tmpobj)/ipmilan.o $(tmpobj)/ipmilanplus.o @LIBSENSORS@
OEMMOD = oem_kontron.c oem_fujitsu.c oem_intel.c oem_sun.c oem_supermicro.c oem_dell.c oem_quanta.c oem_hp.c oem_newisys.c iekanalyzer.c
-
+L2OBJ = @SAM2OBJ@
AM_CPPFLAGS += -I. -I.. -DMETACOMMAND
METASOURCE = ipmiutil.c ialarms.c ihealth.c ievents.c ifru.c ifru_picmg.c igetevent.c ireset.c icmd.c ilan.c isensor.c isel.c iserial.c iwdt.c isol.c idiscover.c iconfig.c ipicmg.c ifirewall.c ifwum.c ihpm.c itsol.c idcmi.c $(OEMMOD) $(CMDMOD)
@@ -77,7 +77,7 @@ libimbapi.a: imbapi.c
# Build a lib to support all of the IPMI drivers (libipmiutil.a)
# If LANPLUS_SAM = yes, include LANPLUS_OBJ, else do not.
# See configure --enable-liblanplus to change this
-$(DEV_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@
+$(DEV_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@ @LIBSENSORS@
mkdir -p $(tmpobj)
if [ "x@LANPLUS_SAM@" = "xyes" ]; then \
$(CC) $(CFLAGS_SAMX) -o $(tmpobj)/ipmilanplus.o -c ipmilanplus.c; \
@@ -92,7 +92,7 @@ $(DEV_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@
$(RANLIB) $(DEV_LIB) ; \
fi
-$(SHR_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@
+$(SHR_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@ @LIBSENSORS@
mkdir -p $(tmpobj)
if [ "x@LANPLUS_SAM@" = "xyes" ]; then \
$(CC) $(CFLAGS_SAMX) -o $(tmpobj)/ipmilanplus.o -c ipmilanplus.c; \
@@ -125,24 +125,26 @@ ialarms_enc: $(DEV_LIB) ialarms.c oem_intel.c
$(CC) $(CFLAGS_SAM) -DNO_EVENTS -o oem_intel2.o -c oem_intel.c
$(CC) -g -O2 -o ialarms_enc ialarms2.o oem_intel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
+isensor2.o: isensor.c
+ $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
+
+ievents2.o: ievents.c
+ $(CC) $(CFLAGS_SAM) -DSENSORS_OK -o ievents2.o -c ievents.c
+
ifru_picmg2.o: ifru_picmg.c
$(CC) $(CFLAGS_SAM) -o ifru_picmg2.o -c ifru_picmg.c
# To build ipmi_sample with GET_SENSORS enabled, need isensors.o, ievents.o
# Note that this does not include oem_intel, etc. for OEM SEL decoding.
-ipmi_sample2: $(DEV_LIB) ipmi_sample.c isensor.c ievents.c ifru.c isel.c ifru_picmg2.o
+ipmi_sample2: $(DEV_LIB) ipmi_sample.c ifru.c isel.c ifru_picmg2.o $(L2OBJ)
$(CC) $(CFLAGS_SAM) -D GET_SENSORS -D GET_FRU -o ipmi_sample2.o -c ipmi_sample.c
- $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
- $(CC) $(CFLAGS_SAM) -o ievents2.o -c ievents.c
$(CC) $(CFLAGS_SAM) -o ifru2.o -c ifru.c
$(CC) $(CFLAGS_SAM) -o isel2.o -c isel.c
- $(CC) -g -O2 -o ipmi_sample2 ipmi_sample2.o isensor2.o ievents2.o ifru2.o ifru_picmg2.o isel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
+ $(CC) -g -O2 -o ipmi_sample2 ipmi_sample2.o $(L2OBJ) ifru2.o ifru_picmg2.o isel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
-ipmi_sample_evt: $(DEV_LIB) ipmi_sample_evt.c isensor.c ievents.c
+ipmi_sample_evt: $(DEV_LIB) ipmi_sample_evt.c $(L2OBJ)
$(CC) $(CFLAGS_SAM) -o ipmi_sample_evt.o -c ipmi_sample_evt.c
- $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
- $(CC) $(CFLAGS_SAM) -DSENSORS_OK -o ievents2.o -c ievents.c
- $(CC) -g -O2 -o ipmi_sample_evt ipmi_sample_evt.o isensor2.o ievents2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
+ $(CC) -g -O2 -o ipmi_sample_evt ipmi_sample_evt.o $(L2OBJ) $(DEV_LIB) $(LDFLAGS) $(LDSAM)
ifruset: $(DEV_LIB) ifruset.c ifru_picmg2.o
$(CC) $(CFLAGS_SAM) -c ifruset.c
@@ -190,6 +192,7 @@ install-data-am: $(EXTRA_PROGRAMS) $(DEV_LIB) $(SHRLINK)
@INS_LIB@ cp -f Makefile.sample $(DESTDIR)$(extradir)/Makefile
@INS_LIB@ cp -f $(DEV_LIB) $(DESTDIR)$(LIBDIR)
if [ "x$(SHRLINK)" != "x" ]; then \
+ touch $(SHRLINK) ; \
@INS_LIB@ cp -f $(SHR_LIB) $(DESTDIR)$(LIBDIR) ; \
fi
diff --git a/util/Makefile.am-so b/util/Makefile.am-so
deleted file mode 100644
index 97d9c34..0000000
--- a/util/Makefile.am-so
+++ /dev/null
@@ -1,241 +0,0 @@
-
-localedir = $(datadir)/locale
-INCLUDES = -I. -I..
-OS_CF = @OS_CFLAGS@ @CROSS_CFLAGS@
-OS_LF = @OS_LFLAGS@ @CROSS_LFLAGS@
-AM_CPPFLAGS = $(OS_CF) -DLOCALEDIR=\"$(localedir)\"
-AM_CPPFLAGS += @IA64_CFLAGS@ @GPL_CFLAGS@
-LDADD = $(OS_LF)
-LDSAM = $(OS_LF) @LD_SAMX@
-CFLAGS_SAMX = -O2 -g -I. -I.. $(OS_CF) @LANPLUS_CFLAGS@
-CFLAGS_SAM = -O2 -g -I. -I.. $(OS_CF)
-# May be /usr/bin/install or /bin/install
-INSTALLBIN = install -c
-extradir = $(datadir)/ipmiutil
-inc_dir = $(includedir)
-tmpobj = obj
-tmpwin = tmp
-LIBDIR = @LIB_DIR@
-
-CMDSRC = ipmicmd.c mem_if.c ipmidir.c imbapi.c ipmimv.c ipmild.c ipmibmc.c ipmilipmi.c subs.c
-CMDSRC += md5.c md2.c ipmilan.c
-CMDSRC += ipmilanplus.c
-# CMDSRC = ipmicmd.c mem_if.c @OS_DRIVERS@
-# am: configure substitutions are not allowed in _SOURCES variables
-CMDOBJ = $(tmpobj)/ipmicmd.o $(tmpobj)/mem_if.o $(tmpobj)/ipmidir.o $(tmpobj)/imbapi.o $(tmpobj)/ipmimv.o $(tmpobj)/ipmild.o $(tmpobj)/ipmibmc.o $(tmpobj)/ipmilipmi.o $(tmpobj)/subs.o $(tmpobj)/md5.o $(tmpobj)/md2.o $(tmpobj)/ipmilan.o $(tmpobj)/ipmilanplus.o
-LIBOBJ = $(CMDOBJ)
-OEMMOD = oem_kontron.c oem_fujitsu.c oem_intel.c oem_sun.c iekanalyzer.c oem_supermicro.c oem_dell.c oem_quanta.c oem_hp.c oem_newisys.c
-
-
-AM_CPPFLAGS += -I. -I.. -DMETACOMMAND
-METASOURCE = ipmiutil.c ialarms.c ihealth.c ievents.c ifru.c ifru_picmg.c igetevent.c ireset.c icmd.c ilan.c isensor.c isel.c iserial.c iwdt.c isol.c idiscover.c iconfig.c ipicmg.c ifirewall.c ifwum.c ihpm.c itsol.c idcmi.c $(OEMMOD)
-LDADD += -lpthread
-
-# The LanDesk library is proprietary, so it is incompatible with ALLOW_GPL.
-# To build with LanDesk support:
-# First copy the library to ../lib/libipmiapi.a
-# Then ./configure --enable-landesk
-# Result:
-# AM_CPPFLAGS += -DLINK_LANDESK
-# LDADD += -lipmiapi -L../lib
-AM_CPPFLAGS += @LANDESK_CFLAGS@
-LDADD += @LANDESK_LDADD@
-
-# For lanplus plugin support (IPMI LAN 2.0 RMCP+) required by SOL:
-# If ./configure --disable-lanplus
-# AM_CPPFLAGS +=
-# LDADD +=
-# LANPLUS_SRC =
-# Otherwise default result is lanplus enabled:
-# AM_CPPFLAGS += -DHAVE_LANPLUS
-# LDADD += -L../lib -lipmi_lanplus -L/usr/local/lib -lcrypto
-# LDADD += -L../lib -lintf_lanplus -L/usr/local/lib -lcrypto (older)
-# LANPLUS_SRC = $(LANPLUS_DIR)/lanplus.c ...
-AM_CPPFLAGS += @LANPLUS_CFLAGS@ -I../lib/lanplus -I../lib/lanplus/inc
-LDADD += @LANPLUS_LIB@ @LANPLUS_CRYPTO@
-LANPLUS_OBJ = $(shell ar t @LANPLUS_LIB@ 2>/dev/null)
-LANPLUS_DIR = ../lib/lanplus
-LANPLUS_SRC = $(LANPLUS_DIR)/lanplus.c $(LANPLUS_DIR)/lanplus_dump.c \
- $(LANPLUS_DIR)/lanplus_strings.c $(LANPLUS_DIR)/lanplus_crypt.c \
- $(LANPLUS_DIR)/lanplus_crypt_impl.c $(LANPLUS_DIR)/helper.c \
- $(LANPLUS_DIR)/ipmi_strings.c
-
-# sbin_PROGRAMS are built by default and copied to /usr/sbin at install time
-# EXTRA_PROGRAMS are built by default but not included in the install package
-# TESTPROGS are not built by default. To build, do 'make ifruset', for example.
-bin_PROGRAMS = ipmiutil ievents idiscover
-sbin_PROGRAMS = ipmi_port
-DEV_LIB = libipmiutil.a
-EXTRA_PROGRAMS = ipmi_sample ipmi_sample_evt
-TESTPROGS = libimbapi.a iconfig ipmimv ifruset ipmi_sample2 ialarms_enc iseltime
-# OLDPROGS are old/previous binaries that may exist and need to be deleted.
-OLDPROGS = alarms bmchealth fruconfig getevent hwreset icmd isolconsole pefconfig sensor showsel tmconfig wdt
-
-lib_LTLIBRARIES = libipmiutil.la
-libipmiutil_la_SOURCES = $(CMDSRC) $(LANPLUS_SRC)
-libipmiutil_la_LDFLAGS = -export-dynamic
-
-# To build an imb api library (libimbapi.a):
-libimbapi.a: imbapi.c
- mkdir -p $(tmpobj)
- $(CC) -I. -I.. $(OS_CF) -fPIC $(CFLAGS) -o $(tmpobj)/imbapi.o -c imbapi.c
- $(AR) cru libimbapi.a $(tmpobj)/imbapi.o
- $(RANLIB) libimbapi.a
- rm -f $(tmpobj)/imbapi.o
-
-# Build a lib to support all of the IPMI drivers (libipmiutil.a)
-# If LANPLUS_SAM = yes, include LANPLUS_OBJ, else do not.
-# See configure --enable-liblanplus to change this
-$(DEV_LIB): $(CMDOBJ) @LANPLUS_LIB@
- mkdir -p $(tmpobj)
- if [ "x@LANPLUS_SAM@" = "xyes" ]; then \
- $(CC) $(CFLAGS_SAMX) -o $(tmpobj)/ipmilanplus.o -c ipmilanplus.c; \
- $(CC) $(CFLAGS_SAMX) -o $(tmpobj)/ipmilan.o -c ipmilan.c; \
- ar x @LANPLUS_LIB@ ; \
- $(AR) cru $(DEV_LIB) $(LIBOBJ) $(LANPLUS_OBJ); \
- $(RANLIB) $(DEV_LIB); \
- else \
- $(CC) $(CFLAGS_SAM) -o $(tmpobj)/ipmilanplus.o -c ipmilanplus.c; \
- $(CC) $(CFLAGS_SAM) -o $(tmpobj)/ipmilan.o -c ipmilan.c; \
- $(AR) cru $(DEV_LIB) $(LIBOBJ) ; \
- $(RANLIB) $(DEV_LIB) ; \
- fi
- rm -f $(tmpobj)/ipmilan.o $(tmpobj)/ipmilanplus.o
-
-# To build ipmiutil, need to use METACFLAGS for each .c/.o
-
-idiscover: idiscover.c
- $(CC) $(OS_CF) $(CFLAGS) $(LDFLAGS) $(OS_LF) -o idiscover idiscover.c
-
-ipmimv: ipmimv.c
- $(CC) $(OS_CF) $(CFLAGS) $(LDFLAGS) -DTEST_BIN -o ipmimv ipmimv.c
-
-ievents: ievents.c
- $(CC) $(OS_CF)$(CFLAGS) $(LDFLAGS) -DALONE -o ievents ievents.c
-
-ipmi_sample: $(DEV_LIB) ipmi_sample.c isensor.c ievents.c
- $(CC) $(CFLAGS_SAM) -c ipmi_sample.c
- $(CC) -g -O2 -o ipmi_sample ipmi_sample.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
-
-ialarms_enc: $(DEV_LIB) ialarms.c oem_intel.c
- $(CC) $(CFLAGS_SAM) -DTEST_ENC -o ialarms2.o -c ialarms.c
- $(CC) $(CFLAGS_SAM) -DNO_EVENTS -o oem_intel2.o -c oem_intel.c
- $(CC) -g -O2 -o ialarms_enc ialarms2.o oem_intel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
-
-ifru_picmg2.o: ifru_picmg.c
- $(CC) $(CFLAGS_SAM) -o ifru_picmg2.o -c ifru_picmg.c
-
-# To build ipmi_sample with GET_SENSORS enabled, need isensors.o, ievents.o
-# Note that this does not include oem_intel, etc. for OEM SEL decoding.
-ipmi_sample2: $(DEV_LIB) ipmi_sample.c isensor.c ievents.c ifru.c isel.c ifru_picmg2.o
- $(CC) $(CFLAGS_SAM) -D GET_SENSORS -D GET_FRU -o ipmi_sample2.o -c ipmi_sample.c
- $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
- $(CC) $(CFLAGS_SAM) -o ievents2.o -c ievents.c
- $(CC) $(CFLAGS_SAM) -o ifru2.o -c ifru.c
- $(CC) $(CFLAGS_SAM) -o isel2.o -c isel.c
- $(CC) -g -O2 -o ipmi_sample2 ipmi_sample2.o isensor2.o ievents2.o ifru2.o ifru_picmg2.o isel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
-
-ipmi_sample_evt: $(DEV_LIB) ipmi_sample_evt.c isensor.c ievents.c
- $(CC) $(CFLAGS_SAM) -o ipmi_sample_evt.o -c ipmi_sample_evt.c
- $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
- $(CC) $(CFLAGS_SAM) -DSENSORS_OK -o ievents2.o -c ievents.c
- $(CC) -g -O2 -o ipmi_sample_evt ipmi_sample_evt.o isensor2.o ievents2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
-
-ifruset: $(DEV_LIB) ifruset.c ifru_picmg2.o
- $(CC) $(CFLAGS_SAM) -c ifruset.c
- $(CC) -g -O2 -o ifruset ifruset.o ifru_picmg2.o $(DEV_LIB) $(LDFLAGS) $(LDADD)
-
-iseltime: $(DEV_LIB) iseltime.c
- $(CC) $(CFLAGS_SAM) -c iseltime.c
- $(CC) -g -O2 -o iseltime iseltime.o $(DEV_LIB) $(LDFLAGS) $(LDADD)
-
-ipmi_port: ipmi_port.c
- $(CC) $(CFLAGS) $(LDFLAGS) -o ipmi_port ipmi_port.c
-
-#xmlconfig: xmlconfig.c $(DEV_LIB)
-# $(CC) $(CFLAGS) $(LDFLAGS) -o xmlconfig xmlconfig.c libipmiutil.a @LANPLUS_CRYPTO@
-
-iconfig: iconfig.c $(DEV_LIB)
- $(CC) $(CFLAGS) $(LDFLAGS) -o iconfig iconfig.c $(DEV_LIB) @LANPLUS_CRYPTO@
-
-# @LANPLUS_LIB@ is ../lib/libipmi_lanplus.a
-../lib/libipmi_lanplus.a:
- cd ../lib; make
-
-ipmiutil_SOURCES = $(METASOURCE)
-
-ipmiutil: $(METASOURCE:.c=.o) $(CMDOBJ) @LANPLUS_LIB@
- $(CC) $(CFLAGS) $(LDFLAGS) -o ipmiutil $(METASOURCE:.c=.o) $(CMDOBJ) $(LDADD)
-
-$(tmpobj)/ipmicmd.o: ipmicmd.c
- mkdir -p $(tmpobj)
- @$(CC) $(CFLAGS_SAMX) -o $(tmpobj)/ipmicmd.o -c ipmicmd.c
-
-$(tmpobj)/subs.o: subs.c
- @$(CC) $(CFLAGS_SAMX) -o $(tmpobj)/subs.o -c subs.c
-
-$(tmpobj)/mem_if.o: mem_if.c
- @$(CC) $(CFLAGS_SAMX) -o $(tmpobj)/mem_if.o -c mem_if.c
-
-$(tmpobj)/ipmidir.o: ipmidir.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c ipmidir.c
-
-$(tmpobj)/imbapi.o: imbapi.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c imbapi.c
-
-$(tmpobj)/ipmimv.o: ipmimv.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c ipmimv.c
-
-$(tmpobj)/ipmild.o: ipmild.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c ipmild.c
-
-$(tmpobj)/ipmibmc.o: ipmibmc.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c ipmibmc.c
-
-$(tmpobj)/ipmilipmi.o: ipmilipmi.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c ipmilipmi.c
-
-$(tmpobj)/ipmilan.o: ipmilan.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c ipmilan.c
-
-$(tmpobj)/ipmilanplus.o: ipmilanplus.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c ipmilanplus.c
-
-$(tmpobj)/md5.o: md5.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c md5.c
-
-$(tmpobj)/md2.o: md2.c
- @$(CC) $(CFLAGS_SAMX) -o $@ -c md2.c
-
-#%.o: %.c
-# $(CC) -c $(OS_CF) $(CFLAGS) $(AM_CPPFLAGS) -o $@ $<
-
-ievents_SOURCES = ievents.c
-
-idiscover_SOURCES = idiscover.c
-
-ipmi_port_SOURCES = ipmi_port.c
-
-# xmlconfig_SOURCES = xmlconfig.c $(CMDSRC)
-
-EXTRA_DIST = imb_api.h ipmicmd.h ipmidir.h ipmilan.h ipmilanplus.h AnsiTerm.h iekanalyzer.h ifirewall.h ifwum.h ihpm.h ipicmg.h ipmiutil.h md2.h oem_dell.h oem_fujitsu.h oem_intel.h oem_kontron.h oem_sun.h idcmi.h isensor.h
-
-all-am: Makefile $(DEV_LIB) $(bin_PROGRAMS) $(sbin_PROGRAMS) $(EXTRA_PROGRAMS)
-
-install-data-am: $(EXTRA_PROGRAMS) $(DEV_LIB)
- @INS_LIB@ mkdir -p $(DESTDIR)$(extradir)
- @INS_LIB@ mkdir -p $(DESTDIR)$(LIBDIR)
- @INS_LIB@ mkdir -p $(DESTDIR)$(inc_dir)
- @INS_LIB@ cp -f ipmi_sample.c $(DESTDIR)$(extradir)
- @INS_LIB@ cp -f ipmi_sample_evt.c $(DESTDIR)$(extradir)
- @INS_LIB@ cp -f ipmicmd.h $(DESTDIR)$(inc_dir)
- @INS_LIB@ cp -f isensor.c ievents.c $(DESTDIR)$(extradir)
- @INS_LIB@ cp -f isensor.h ievents.h $(DESTDIR)$(extradir)
- @INS_LIB@ cp -f Makefile.sample $(DESTDIR)$(extradir)/Makefile
- @INS_LIB@ cp -f $(DEV_LIB) $(DESTDIR)$(LIBDIR)
-
-clean-generic:
- rm -f $(DEV_LIB) $(EXTRA_PROGRAMS) $(OLDPROGS) $(TESTPROGS)
- if [ -d $(tmpobj) ]; then rm -rf $(tmpobj) ; fi
- if [ -d $(tmpwin) ]; then rm -rf $(tmpwin) ; fi
- rm -f *.log *.tmp debug*.list *.o *.pdb *.lo *.so *.la
diff --git a/util/Makefile.in b/util/Makefile.in
index a8eb9b9..466c530 100644
--- a/util/Makefile.in
+++ b/util/Makefile.in
@@ -1,8 +1,9 @@
-# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004, 2005 Free Software Foundation, Inc.
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,15 +15,12 @@
@SET_MAKE@
-srcdir = @srcdir@
-top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
-top_builddir = ..
+pkglibdir = $(libdir)/@PACKAGE@
+pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
@@ -48,9 +46,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
+CONFIG_CLEAN_VPATH_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"
-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
-sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS)
am_idiscover_OBJECTS = idiscover.$(OBJEXT)
idiscover_OBJECTS = $(am_idiscover_OBJECTS)
@@ -99,17 +96,19 @@ iseltime_SOURCES = iseltime.c
iseltime_OBJECTS = iseltime.$(OBJEXT)
iseltime_LDADD = $(LDADD)
iseltime_DEPENDENCIES = $(am__DEPENDENCIES_1)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
+am__mv = mv -f
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
SOURCES = $(idiscover_SOURCES) $(ievents_SOURCES) $(ipmi_port_SOURCES) \
ipmi_sample.c ipmi_sample_evt.c $(ipmiutil_SOURCES) iseltime.c
DIST_SOURCES = $(idiscover_SOURCES) $(ievents_SOURCES) \
@@ -119,8 +118,6 @@ ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
-AMDEP_FALSE = @AMDEP_FALSE@
-AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AR = @AR@
AUTOCONF = @AUTOCONF@
@@ -134,24 +131,22 @@ CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CROSS_CFLAGS = @CROSS_CFLAGS@
CROSS_LFLAGS = @CROSS_LFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
-ECHO = @ECHO@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
-F77 = @F77@
-FFLAGS = @FFLAGS@
+FGREP = @FGREP@
GPL_CFLAGS = @GPL_CFLAGS@
+GREP = @GREP@
IA64_CFLAGS = @IA64_CFLAGS@
INIT_DIR = @INIT_DIR@
+INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -164,19 +159,28 @@ LANPLUS_CRYPTO = @LANPLUS_CRYPTO@
LANPLUS_LDADD = @LANPLUS_LDADD@
LANPLUS_LIB = @LANPLUS_LIB@
LANPLUS_SAM = @LANPLUS_SAM@
+LD = @LD@
LDFLAGS = @LDFLAGS@
LD_SAMX = @LD_SAMX@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
+LIBSENSORS = @LIBSENSORS@
LIBTOOL = @LIBTOOL@
LIB_DIR = @LIB_DIR@
+LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
OBJEXT = @OBJEXT@
OS_CFLAGS = @OS_CFLAGS@
OS_DRIVERS = @OS_DRIVERS@
OS_LFLAGS = @OS_LFLAGS@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
@@ -186,6 +190,7 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_DIR = @PKG_DIR@
RANLIB = @RANLIB@
+SAM2OBJ = @SAM2OBJ@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
@@ -194,16 +199,12 @@ STRIP = @STRIP@
SUBDIR_S = @SUBDIR_S@
SYSTEMD_DIR = @SYSTEMD_DIR@
VERSION = @VERSION@
-ac_ct_AR = @ac_ct_AR@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-ac_ct_F77 = @ac_ct_F77@
-ac_ct_RANLIB = @ac_ct_RANLIB@
-ac_ct_STRIP = @ac_ct_STRIP@
-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
@@ -215,29 +216,42 @@ build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
+builddir = @builddir@
datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
+htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
+localedir = $(datadir)/locale
localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+pkgconfigdir = @pkgconfigdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
+psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
-localedir = $(datadir)/locale
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
INCLUDES = -I..
OS_CF = @OS_CFLAGS@ @CROSS_CFLAGS@
OS_LF = @OS_LFLAGS@ @CROSS_LFLAGS@
@@ -279,8 +293,9 @@ CMDMOD = ipmicmd.c mem_if.c ipmidir.c imbapi.c ipmimv.c ipmild.c \
ipmilanplus.c
# CMDMOD = ipmicmd.c mem_if.c @OS_DRIVERS@
# am: configure substitutions are not allowed in _SOURCES variables
-LIBOBJ = ipmicmd.o mem_if.o ipmidir.o imbapi.o ipmimv.o ipmild.o ipmibmc.o ipmilipmi.o subs.o md5.o md2.o $(tmpobj)/ipmilan.o $(tmpobj)/ipmilanplus.o
+LIBOBJ = ipmicmd.o mem_if.o ipmidir.o imbapi.o ipmimv.o ipmild.o ipmibmc.o ipmilipmi.o subs.o md5.o md2.o $(tmpobj)/ipmilan.o $(tmpobj)/ipmilanplus.o @LIBSENSORS@
OEMMOD = oem_kontron.c oem_fujitsu.c oem_intel.c oem_sun.c oem_supermicro.c oem_dell.c oem_quanta.c oem_hp.c oem_newisys.c iekanalyzer.c
+L2OBJ = @SAM2OBJ@
METASOURCE = ipmiutil.c ialarms.c ihealth.c ievents.c ifru.c ifru_picmg.c igetevent.c ireset.c icmd.c ilan.c isensor.c isel.c iserial.c iwdt.c isol.c idiscover.c iconfig.c ipicmg.c ifirewall.c ifwum.c ihpm.c itsol.c idcmi.c $(OEMMOD) $(CMDMOD)
LANPLUS_OBJ = $(shell ar t @LANPLUS_LIB@ 2>/dev/null)
DEV_LIB = libipmiutil.a
@@ -302,14 +317,14 @@ $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/Makefile'; \
- cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign util/Makefile
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign util/Makefile'; \
+ $(am__cd) $(top_srcdir) && \
+ $(AUTOMAKE) --foreign util/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
@@ -327,62 +342,93 @@ $(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(am__aclocal_m4_deps):
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- if test -f $$p \
- || test -f $$p1 \
- ; then \
- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
- else :; fi; \
- done
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p || test -f $$p1; \
+ then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+ } \
+ ; done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
- rm -f "$(DESTDIR)$(bindir)/$$f"; \
- done
+ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(bindir)" && rm -f $$files
clean-binPROGRAMS:
- @list='$(bin_PROGRAMS)'; for p in $$list; do \
- f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f $$p $$f"; \
- rm -f $$p $$f ; \
- done
+ @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
- test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)"
- @list='$(sbin_PROGRAMS)'; for p in $$list; do \
- p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- if test -f $$p \
- || test -f $$p1 \
- ; then \
- f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
- $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
- else :; fi; \
- done
+ test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
+ @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed 's/$(EXEEXT)$$//' | \
+ while read p p1; do if test -f $$p || test -f $$p1; \
+ then echo "$$p"; echo "$$p"; else :; fi; \
+ done | \
+ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+ sed 'N;N;N;s,\n, ,g' | \
+ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+ if ($$2 == $$4) files[d] = files[d] " " $$1; \
+ else { print "f", $$3 "/" $$4, $$1; } } \
+ END { for (d in files) print "f", d, files[d] }' | \
+ while read type dir files; do \
+ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+ test -z "$$files" || { \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(sbindir)$$dir'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(sbindir)$$dir" || exit $$?; \
+ } \
+ ; done
uninstall-sbinPROGRAMS:
@$(NORMAL_UNINSTALL)
- @list='$(sbin_PROGRAMS)'; for p in $$list; do \
- f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
- echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
- rm -f "$(DESTDIR)$(sbindir)/$$f"; \
- done
+ @list='$(sbin_PROGRAMS)'; test -n "$(sbindir)" || list=; \
+ files=`for p in $$list; do echo "$$p"; done | \
+ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+ -e 's/$$/$(EXEEXT)/' `; \
+ test -n "$$list" || exit 0; \
+ echo " ( cd '$(DESTDIR)$(sbindir)' && rm -f" $$files ")"; \
+ cd "$(DESTDIR)$(sbindir)" && rm -f $$files
clean-sbinPROGRAMS:
- @list='$(sbin_PROGRAMS)'; for p in $$list; do \
- f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f $$p $$f"; \
- rm -f $$p $$f ; \
- done
+ @list='$(sbin_PROGRAMS)'; test -n "$$list" || exit 0; \
+ echo " rm -f" $$list; \
+ rm -f $$list || exit $$?; \
+ test -n "$(EXEEXT)" || exit 0; \
+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f" $$list; \
+ rm -f $$list
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -442,22 +488,22 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subs.Po@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
@@ -468,82 +514,85 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
-distclean-libtool:
- -rm -f libtool
-uninstall-info-am:
-
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
- tags=; \
+ set x; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ shift; \
+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
+ if test $$# -gt 0; then \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ "$$@" $$unique; \
+ else \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$unique; \
+ fi; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
- tags=; \
- here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
- $(AWK) ' { files[$$0] = 1; } \
- END { for (i in files) print i; }'`; \
- test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$tags $$unique
+ $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
- && cd $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) $$here
+ && $(am__cd) $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) "$$here"
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
- case $$file in \
- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
- esac; \
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
- dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
- else \
- dir=''; \
- fi; \
if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d "$(distdir)/$$file"; then \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
+ fi; \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
fi; \
- cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
else \
- test -f $(distdir)/$$file \
- || cp -p $$d/$$file $(distdir)/$$file \
+ test -f "$(distdir)/$$file" \
+ || cp -p $$d/$$file "$(distdir)/$$file" \
|| exit 1; \
fi; \
done
@@ -552,7 +601,7 @@ check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(sbindir)"; do \
- test -z "$$dir" || $(mkdir_p) "$$dir"; \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
@@ -572,6 +621,7 @@ mostlyclean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -585,7 +635,7 @@ distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
- distclean-libtool distclean-tags
+ distclean-tags
dvi: dvi-am
@@ -593,16 +643,36 @@ dvi-am:
html: html-am
+html-am:
+
info: info-am
info-am:
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
install-exec-am: install-binPROGRAMS install-sbinPROGRAMS
+install-html: install-html-am
+
+install-html-am:
+
install-info: install-info-am
+install-info-am:
+
install-man:
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
installcheck-am:
maintainer-clean: maintainer-clean-am
@@ -623,21 +693,24 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-binPROGRAMS uninstall-info-am \
- uninstall-sbinPROGRAMS
+uninstall-am: uninstall-binPROGRAMS uninstall-sbinPROGRAMS
+
+.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool clean-sbinPROGRAMS ctags distclean \
distclean-compile distclean-generic distclean-libtool \
distclean-tags distdir dvi dvi-am html html-am info info-am \
install install-am install-binPROGRAMS install-data \
- install-data-am install-exec install-exec-am install-info \
- install-info-am install-man install-sbinPROGRAMS install-strip \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-ps install-ps-am install-sbinPROGRAMS install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-binPROGRAMS \
- uninstall-info-am uninstall-sbinPROGRAMS
+ uninstall-sbinPROGRAMS
# To build an imb api library (libimbapi.a):
@@ -651,7 +724,7 @@ libimbapi.a: imbapi.c
# Build a lib to support all of the IPMI drivers (libipmiutil.a)
# If LANPLUS_SAM = yes, include LANPLUS_OBJ, else do not.
# See configure --enable-liblanplus to change this
-$(DEV_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@
+$(DEV_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@ @LIBSENSORS@
mkdir -p $(tmpobj)
if [ "x@LANPLUS_SAM@" = "xyes" ]; then \
$(CC) $(CFLAGS_SAMX) -o $(tmpobj)/ipmilanplus.o -c ipmilanplus.c; \
@@ -666,7 +739,7 @@ $(DEV_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@
$(RANLIB) $(DEV_LIB) ; \
fi
-$(SHR_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@
+$(SHR_LIB): $(CMDMOD:.c=.o) @LANPLUS_LIB@ @LIBSENSORS@
mkdir -p $(tmpobj)
if [ "x@LANPLUS_SAM@" = "xyes" ]; then \
$(CC) $(CFLAGS_SAMX) -o $(tmpobj)/ipmilanplus.o -c ipmilanplus.c; \
@@ -699,24 +772,26 @@ ialarms_enc: $(DEV_LIB) ialarms.c oem_intel.c
$(CC) $(CFLAGS_SAM) -DNO_EVENTS -o oem_intel2.o -c oem_intel.c
$(CC) -g -O2 -o ialarms_enc ialarms2.o oem_intel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
+isensor2.o: isensor.c
+ $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
+
+ievents2.o: ievents.c
+ $(CC) $(CFLAGS_SAM) -DSENSORS_OK -o ievents2.o -c ievents.c
+
ifru_picmg2.o: ifru_picmg.c
$(CC) $(CFLAGS_SAM) -o ifru_picmg2.o -c ifru_picmg.c
# To build ipmi_sample with GET_SENSORS enabled, need isensors.o, ievents.o
# Note that this does not include oem_intel, etc. for OEM SEL decoding.
-ipmi_sample2: $(DEV_LIB) ipmi_sample.c isensor.c ievents.c ifru.c isel.c ifru_picmg2.o
+ipmi_sample2: $(DEV_LIB) ipmi_sample.c ifru.c isel.c ifru_picmg2.o $(L2OBJ)
$(CC) $(CFLAGS_SAM) -D GET_SENSORS -D GET_FRU -o ipmi_sample2.o -c ipmi_sample.c
- $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
- $(CC) $(CFLAGS_SAM) -o ievents2.o -c ievents.c
$(CC) $(CFLAGS_SAM) -o ifru2.o -c ifru.c
$(CC) $(CFLAGS_SAM) -o isel2.o -c isel.c
- $(CC) -g -O2 -o ipmi_sample2 ipmi_sample2.o isensor2.o ievents2.o ifru2.o ifru_picmg2.o isel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
+ $(CC) -g -O2 -o ipmi_sample2 ipmi_sample2.o $(L2OBJ) ifru2.o ifru_picmg2.o isel2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
-ipmi_sample_evt: $(DEV_LIB) ipmi_sample_evt.c isensor.c ievents.c
+ipmi_sample_evt: $(DEV_LIB) ipmi_sample_evt.c $(L2OBJ)
$(CC) $(CFLAGS_SAM) -o ipmi_sample_evt.o -c ipmi_sample_evt.c
- $(CC) $(CFLAGS_SAM) -o isensor2.o -c isensor.c
- $(CC) $(CFLAGS_SAM) -DSENSORS_OK -o ievents2.o -c ievents.c
- $(CC) -g -O2 -o ipmi_sample_evt ipmi_sample_evt.o isensor2.o ievents2.o $(DEV_LIB) $(LDFLAGS) $(LDSAM)
+ $(CC) -g -O2 -o ipmi_sample_evt ipmi_sample_evt.o $(L2OBJ) $(DEV_LIB) $(LDFLAGS) $(LDSAM)
ifruset: $(DEV_LIB) ifruset.c ifru_picmg2.o
$(CC) $(CFLAGS_SAM) -c ifruset.c
@@ -753,6 +828,7 @@ install-data-am: $(EXTRA_PROGRAMS) $(DEV_LIB) $(SHRLINK)
@INS_LIB@ cp -f Makefile.sample $(DESTDIR)$(extradir)/Makefile
@INS_LIB@ cp -f $(DEV_LIB) $(DESTDIR)$(LIBDIR)
if [ "x$(SHRLINK)" != "x" ]; then \
+ touch $(SHRLINK) ; \
@INS_LIB@ cp -f $(SHR_LIB) $(DESTDIR)$(LIBDIR) ; \
fi
@@ -761,6 +837,7 @@ clean-generic:
if [ -d $(tmpobj) ]; then rm -rf $(tmpobj) ; fi
if [ -d $(tmpwin) ]; then rm -rf $(tmpwin) ; fi
rm -f *.log *.tmp debug*.list *.o *.pdb *.lo *.la *.so
+
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/util/ialarms.c b/util/ialarms.c
index dbbdf0c..68f69b4 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 = "2.93";
+static char * progver = "2.96";
static char * progname = "ialarms";
static char fdebug = 0;
static char fbmctam = 0;
@@ -434,7 +434,7 @@ main(int argc, char **argv)
printf(" -o sets all Alarms off\n");
printf(" -w21b writes picmg LED 2 on(1) color=blue(b)\n");
printf(" -x show eXtra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto do_exit;
}
diff --git a/util/icmd.c b/util/icmd.c
index 5911262..c12de8a 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 = "2.93";
+static char * progver = "2.96";
static char * progname = "icmd";
static char fdebug = 0;
static char fquiet = 0;
@@ -175,7 +175,7 @@ main(int argc, char **argv)
char *s1;
istart = 1;
- while ( (c = getopt( argc, argv,"djkm:qst:xN:P:R:U:EF:J:T:V:YZ:?")) != EOF )
+ while ( (c = getopt( argc, argv,"djkm:qst:xp:N:P:R:U:EF:J:T:V:YZ:?")) != EOF )
switch(c) {
case 'j': /* just pass the bytes to KCS */
fjustpass = 1;
@@ -209,6 +209,7 @@ main(int argc, char **argv)
case 'x': fdebug = 1; break; /* debug messages */
case 'V': /* priv level */
fprivset = 1;
+ case 'p': /* port */
case 'N': /* nodename */
case 'U': /* remote username */
case 'P': /* remote password */
@@ -230,7 +231,7 @@ main(int argc, char **argv)
printf(" -m002000 specific MC (bus 00,sa 20,lun 00)\n");
printf(" -q quiet mode, with minimal headers\n");
printf(" -s skips the GetDeviceID command\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(1);
ret = ERR_USAGE;
goto do_exit;
}
diff --git a/util/iconfig.c b/util/iconfig.c
index 0bb54e9..6bdb104 100644
--- a/util/iconfig.c
+++ b/util/iconfig.c
@@ -171,7 +171,7 @@ typedef struct
/*
* Global variables
*/
-static char * progver = "2.93";
+static char * progver = "2.96";
static char * progname = "iconfig";
static char fdebug = 0;
static char fipmilan = 0;
@@ -1765,7 +1765,7 @@ int SerialIsOptional(int bparam)
int optvals[9] = { 5, 9, 10, 11, 12, 13, 14, 20, 21 };
int rv = 0;
int i;
- for (i = 0; i < sizeof(optvals); i++) {
+ for (i = 0; i < (sizeof(optvals) / sizeof(int)); i++) {
if (optvals[i] == bparam) { rv = 1; break; }
}
return(rv);
@@ -1898,7 +1898,7 @@ main(int argc, char **argv)
printf(" -x show eXtra debug messages\n");
printf(" -p <psw> specify a user password to set\n");
printf(" -L 3 specify lan channel number 3\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto do_exit;
}
diff --git a/util/idcmi.c b/util/idcmi.c
index 1e53ae8..9ab1c82 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 = "2.93";
+static char * progver = "2.96";
extern char fdebug; /*from ipmicmd.c*/
static uchar g_bus = PUBLIC_BUS;
static uchar g_sa = BMC_SA;
@@ -109,7 +109,7 @@ static int dcmi_usage(void)
printf(" -m002000 specific MC (bus 00,sa 20,lun 00)\n");
printf(" -s Get DCMI sensor info\n");
printf(" -x Display extra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(1);
printf("where <function> is one of:\n");
printf(" info Get DCMI Capabilities, MC ID, asset tag (default)\n");
printf(" power [get] Get Power reading & limit\n");
@@ -356,7 +356,7 @@ void dcmi_show_power_limit(uchar *cdata, int sdata, int rv)
correction_time = cdata[6];
correction_time += (cdata[7] << 8);
correction_time += (cdata[8] << 16);
- correction_time += (cdata[9] << 24);
+ correction_time += (ulong)(cdata[9] << 24);
if (rv == 0) pstr = "(active)";
else if (rv == 0x80) pstr = "(inactive)";
@@ -747,7 +747,7 @@ main(int argc, char **argv)
printf("%s ver %s\n", progname,progver);
parse_lan_options('V',"4",0); /*default to admin priv*/
- while ( (c = getopt( argc, argv,"a:d:m:sT:V:J:EYF:P:N:R:U:Z:x?")) != EOF )
+ while ( (c = getopt( argc, argv,"a:d:m:p:sT:V:J:EYF:P:N:R:U:Z:x?")) != EOF )
switch (c) {
case 'a': set_asset = 1; asset_new = optarg; break;
case 'd': set_mcid = 1; mcid_new = optarg; break;
@@ -765,6 +765,7 @@ main(int argc, char **argv)
break;
case 's': do_sensors = 1; break;
case 'x': fdebug = 1; break; /* debug messages */
+ case 'p': /* port */
case 'N': /* nodename */
case 'U': /* remote username */
case 'P': /* remote password */
diff --git a/util/iekanalyzer.c b/util/iekanalyzer.c
index ddeeba8..1f405cc 100644
--- a/util/iekanalyzer.c
+++ b/util/iekanalyzer.c
@@ -4086,7 +4086,7 @@ main(int argc, char **argv)
printf("%s ver %s\n", progname,progver);
- while ( (c = getopt( argc, argv,"m:T:V:J:EYF:P:N:R:U:Z:x?")) != EOF )
+ while ( (c = getopt( argc, argv,"m:p:T:V:J:EYF:P:N:R:U:Z:x?")) != EOF )
switch (c) {
case 'm': /* specific IPMB MC, 3-byte address, e.g. "409600" */
g_bus = htoi(&optarg[0]); /*bus/channel*/
diff --git a/util/ievents.c b/util/ievents.c
index 72c0b24..f0034b2 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 = "2.93";
+static char *progver = "2.96";
static char *progname = "ievents";
static char fsensdesc = 0; /* 1= get extended sensor descriptions*/
static char fcanonical = 0; /* 1= show canonical, delimited output*/
@@ -193,10 +193,10 @@ static const char *sensor_types[NSTYPES] = {
/* 2Eh */ "ME" /* 0xDC == ME Node Manager */
};
-#define NFWERRS 15
+#define NFWERRS 14
static struct { /* See Table 36-3, type 0Fh, offset 00h */
int code; char *msg;
- } fwerrs[NFWERRS] = {
+ } fwerrs[NFWERRS + 1] = {
{ 0x00, "Unspecified"},
{ 0x01, "No system memory"},
{ 0x02, "No usable memory"},
@@ -214,10 +214,10 @@ static struct { /* See Table 36-3, type 0Fh, offset 00h */
{ 0x0E, "Reserved" }
};
-#define NFWSTAT 27
+#define NFWSTAT 26
static struct { /* See Table 36-3, type 0Fh, offset 01h & 02h */
int code; char *msg;
- } fwstat[NFWSTAT] = {
+ } fwstat[NFWSTAT + 1] = {
{ 0x00, "Unspecified"},
{ 0x01, "Memory init"},
{ 0x02, "Hard disk init"},
@@ -607,6 +607,115 @@ static char *mem_str(int off)
return(pstr);
}
+#ifdef NEW
+#define OEM_CODE_IN_BYTE2 0x80
+#define OEM_CODE_IN_BYTE3 0x20
+static int decode_mem_default(uchar data1, uchar data2, uchar data3,
+ char *desc, int *psz)
+{
+ char tmpdesc[80];
+ int tmpsz = sizeof(tmpdesc);
+ int dsz, incr;
+ if ((psz == NULL) || (desc == NULL)) return -1;
+ dsz = *psz;
+ /*
+ * Based on the above error, we need to find whcih memory slot or
+ * Card has got the Errors/Sel Generated.
+ */
+ if(data1 & OEM_CODE_IN_BYTE2 ) {
+ /* Find the Card Type */
+ if((0x0F != (data2 >> 4)) && ((data2 >> 4) < 0x08))
+ {
+ tmpData = ('A'+ (data2 >> 4));
+ if( (sensor_type == SENSOR_TYPE_MEMORY ) && (0x0B == rec->sel_type.standard_type.event_type) )
+ {
+ snprintf(tmpdesc, tmpsz, "Bad Card %c", tmpData);
+ } else {
+ snprintf(tmpdesc, tmpsz, "Card %c", tmpData);
+ }
+ strcat(desc, tmpdesc);
+ } /* Find the Bank Number of the DIMM */
+ if (0x0F != (data2 & MASK_LOWER_NIBBLE))
+ {
+ if(0x51 == version)
+ {
+ snprintf(tmpdesc, tmpsz, "Bank %d", ((data2 & 0x0F)+1));
+ strcat(desc, tmpdesc);
+ } else {
+ incr = (data2 & 0x0f) << 3;
+ }
+ }
+
+ }
+ /* Find the DIMM Number of the Memory which has Generated the Fault or Sel */
+ if(data1 & OEM_CODE_IN_BYTE3 )
+ {
+ // Based on the IPMI Spec Need Identify the DIMM Details.
+ // For the SPEC 1.5 Only the DIMM Number is Valid.
+ if(0x51 == version)
+ {
+ snprintf(tmpdesc, tmpsz, "DIMM %c", ('A'+ data3));
+ strcat(desc, tmpdesc);
+ }
+ /* For the SPEC 2.0 Decode the DIMM Number as it supports more*/
+ else if( ((data2 >> 4) > 0x07) && (0x0F != (data2 >> 4) ))
+ {
+ strcpy(dimmStr, " DIMM");
+ str = desc+strlen(desc);
+ dimmsPerNode = 4;
+ if(0x09 == (data2 >> 4)) dimmsPerNode = 6;
+ else if(0x0A == (data2 >> 4)) dimmsPerNode = 8;
+ else if(0x0B == (data2 >> 4)) dimmsPerNode = 9;
+ else if(0x0C == (data2 >> 4)) dimmsPerNode = 12;
+ else if(0x0D == (data2 >> 4)) dimmsPerNode = 24;
+ else if(0x0E == (data2 >> 4)) dimmsPerNode = 3;
+ count = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (BIT(i) & data3)
+ {
+ if(count)
+ {
+ strcat(str,",");
+ count = 0x00;
+ }
+ node = (incr + i)/dimmsPerNode;
+ dimmNum = ((incr + i)%dimmsPerNode)+1;
+ dimmStr[5] = node + 'A';
+ sprintf(tmpdesc,"%d",dimmNum);
+ for(j = 0; j < strlen(tmpdesc);j++)
+ dimmStr[6+j] = tmpdesc[j];
+ dimmStr[6+j] = '\0';
+ strcat(str,dimmStr); // final DIMM Details.
+ count++;
+ }
+ }
+ } else {
+ strcpy(dimmStr, " DIMM");
+ str = desc+strlen(desc);
+ count = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (BIT(i) & data3)
+ {
+ // check if more than one DIMM, if so add a comma to the string.
+ sprintf(tmpdesc,"%d",(i + incr + 1));
+ if(count)
+ {
+ strcat(str,",");
+ count = 0x00;
+ }
+ for(j = 0; j < strlen(tmpdesc);j++)
+ dimmStr[5+j] = tmpdesc[j];
+ dimmStr[5+j] = '\0';
+ strcat(str, dimmStr);
+ count++;
+ }
+ }
+ }
+ }
+}
+#endif
#if defined(METACOMMAND)
/* METACOMMAND is defined for ipmiutil meta-command build. */
@@ -974,7 +1083,7 @@ int file_grep(char *fname, char *pattn, char *line, int sline,
int nstart = 0;
int bufsz;
- if (bmode == 2) nstart = *nret;
+ if ((bmode == 2) && (nret != NULL)) nstart = *nret;
bufsz = sizeof(buff);
fp = fopen(fname,"r");
if (fp == NULL) {
diff --git a/util/ifirewall.c b/util/ifirewall.c
index b92d7d5..f9da95d 100644
--- a/util/ifirewall.c
+++ b/util/ifirewall.c
@@ -64,7 +64,7 @@
/* global variables */
static char * progname = "ifirewall";
-static char * progver = "2.93";
+static char * progver = "2.96";
static char fdebug = 0;
static uchar g_bus = PUBLIC_BUS;
static uchar g_sa = BMC_SA;
diff --git a/util/ifirewall.h b/util/ifirewall.h
index 14a04f4..3953b09 100644
--- a/util/ifirewall.h
+++ b/util/ifirewall.h
@@ -82,7 +82,7 @@ struct lun_netfn_support {
};
struct lun_support {
unsigned char support;
- struct lun_netfn_support netfn[MAX_NETFN_PAIR];
+ struct lun_netfn_support netfn[MAX_NETFN];
};
struct bmc_fn_support {
struct lun_support lun[MAX_LUN];
diff --git a/util/ifru.c b/util/ifru.c
index ba834e6..5b5192f 100755..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 = "2.93";
+static char *progver = "2.96";
static int vend_id = 0;
static int prod_id = 0;
static char fdebug = 0;
@@ -1779,7 +1779,7 @@ int i_fru(int argc, char **argv)
printf(" -s snum Sets the Product Serial Number\n");
printf(" -v pver Sets the Product Version Number\n");
printf(" -x Display extra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto do_exit;
}
diff --git a/util/ifruset.c b/util/ifruset.c
index 3e0299a..472b71f 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 = "2.93";
+static char *progver = "2.96";
static char fdebug = 0;
static char fpicmg = 0;
static char fonlybase = 0;
@@ -1378,7 +1378,7 @@ main(int argc, char **argv)
printf(" -i 00 Get/Set a specific FRU ID\n");
printf(" -m002000 specific MC (bus 00,sa 20,lun 00)\n");
printf(" -x Display extra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto do_exit;
}
diff --git a/util/igetevent.c b/util/igetevent.c
index 6e2fe27..96f5442 100644
--- a/util/igetevent.c
+++ b/util/igetevent.c
@@ -168,7 +168,7 @@ extern void free_sdr_cache(uchar *pret); /*see isensor.c*/
* Global variables
*/
static char * progname = "igetevent";
-static char * progver = "2.93";
+static char * progver = "2.96";
static char fdebug = 0;
static char fipmilan = 0;
static char frunonce = 0;
@@ -1047,7 +1047,7 @@ main(int argc, char **argv)
fdout = stdout;
msgout("%s ver %s\n", progname,progver);
- while ( (c = getopt(argc,argv,"abce:lmn:or:st:uvT:V:J:YEF:P:N:R:U:Z:x?")) != EOF )
+ while ( (c = getopt(argc,argv,"abce:lmn:op:r:st:uvT:V:J:YEF:P:N:R:U:Z:x?")) != EOF )
switch(c) {
case 'a': fAsync = 1; /* imb async message method */
/* chenge the output log filename */
@@ -1086,6 +1086,7 @@ main(int argc, char **argv)
case 'u': futc = 1; break;
case 'x': fdebug = 1; break; /* debug messages */
case 'v': fdebug = 3; break; /* verbose debug with lan */
+ case 'p':
case 'N': /* nodename */
case 'U': /* remote username */
case 'P': /* remote password */
@@ -1112,7 +1113,7 @@ main(int argc, char **argv)
printf(" -t N set timeout to N seconds\n");
printf(" -u use raw UTC time\n");
printf(" -x show eXtra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(1);
ret = ERR_USAGE;
goto do_exit;
}
diff --git a/util/ihealth.c b/util/ihealth.c
index 6f6f0e1..5167950 100644
--- a/util/ihealth.c
+++ b/util/ihealth.c
@@ -82,7 +82,7 @@ extern int oem_supermicro_get_firmware_str(char *pstr, int sz); /*oem_supermicro
* Global variables
*/
static char * progname = "ihealth";
-static char * progver = "2.93";
+static char * progver = "2.96";
static char fdebug = 0;
static char fipmilan = 0;
static char fcanonical = 0;
@@ -723,10 +723,13 @@ void show_devid_all(int dtype, uchar *devrec, int sdevrec)
case 1576: prodstr = "(X9DRi)"; break;
case 1585: prodstr = "(X9SCA)"; break;
case 1603: prodstr = "(X9SPU)"; break; /*0x0643*/
+ case 1636: prodstr = "(X9DRH)"; break; /*0x0664*/
case 1643: prodstr = "(X9SRL)"; break; /*0x066b*/
case 1797: prodstr = "(X9DR7)"; break; /*0x0705*/
- case 43025: prodstr = "(H8DGU)"; break;
+ case 4520: prodstr = "(H8DGU)"; break;
+ case 43025: prodstr = "(H8DGU-F)"; break;
case 43707: prodstr = "(X8DTH)"; break;
+ case 48145: prodstr = "(H8DG6)"; break;
default: prodstr = ""; break;
}
if (!fipmilan) lan_ch_restrict = 1; /*fw bug, gets 0xd4 locally*/
@@ -737,6 +740,14 @@ void show_devid_all(int dtype, uchar *devrec, int sdevrec)
default: prodstr = ""; break;
}
break;
+ case VENDOR_IBM: /*=0x0002*/
+ switch(prod) { /* show product names for some */
+ case 0x000e: prodstr = "(x3755)"; break;
+ case 0x00dc: prodstr = "(x3650)"; break;
+ case 0x8848: prodstr = "(eServer 360S)"; break;
+ default: prodstr = ""; break;
+ }
+ break;
default:
prodstr = "";
break;
@@ -771,7 +782,8 @@ int GetPowerOnHours(unsigned int *val)
if (rc == 0 && cc == 0) {
/* show the hours (32-bits) */
hrs = resp[1] | (resp[2] << 8) | (resp[3] << 16) | (resp[4] << 24);
- if (resp[0] == 60) /*normal*/ i = 1;
+ /* 60=normal, more is OOB, so avoid div-by-zero*/
+ if ((resp[0] <= 0) || (resp[0] >= 60)) i = 1;
else {
i = 60 / resp[0];
hrs = hrs / i;
@@ -894,7 +906,7 @@ main(int argc, char **argv)
printf(" -o set Operating System to this string\n");
printf(" -p1 set restore policy: 0=off, 1=last, 2=on\n");
printf(" -s get the IPMI Session info also\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto health_end;
}
diff --git a/util/ilan.c b/util/ilan.c
index a1ed76a..2458fbb 100644
--- a/util/ilan.c
+++ b/util/ilan.c
@@ -305,7 +305,7 @@ extern char *get_sensor_type_desc(uchar stype); /*from ievents.c*/
/*
* Global variables
*/
-static char * progver = "2.93";
+static char * progver = "2.96";
static char * progname = "ilan";
static char fdebug = 0;
static char fipmilan = 0;
@@ -317,6 +317,7 @@ static char fAdjustPefNum = 0; /* =1 adjust pefnum to first empty index */
static char fUserPefNum = 0; /* =1 if user specified a valid pefnum value*/
static char freadonly = 1; /* =1 to only read LAN & PEF parameters */
static char fcanonical = 0; /* =1 to show only canonical output */
+static char flansecure = 0; /* =1 set lan security: no null, cipher0 off*/
static char bdelim = BCOLON; /* delimiter ':' or '|' if canonical output*/
static char ftestonly = 0;
static char fprivset = 0;
@@ -361,6 +362,8 @@ static uchar osmyip[4] = {0,0,0,0};
static uchar bmcmyip[4] = {0,0,0,0};
static uchar bmcdestip[4] = {0,0,0,0};
static uchar bmcdestmac[6]= {0xff,0,0,0,0,0};
+static uchar bmcgwyip[4] = {0,0,0,0};
+static uchar bmcgwymac[6]= {0xff,0,0,0,0,0};
static uchar bmcmymac[6] = {0xff,0,0,0,0,0};
static uchar rgmymac[6] = {0xff,0,0,0,0,0};
static uchar osmymac[6] = {0xff,0,0,0,0,0};
@@ -368,6 +371,9 @@ static uchar rggwymac[6] = {0xff,0,0,0,0,0};
static uchar rggwy2mac[6] = {0xff,0,0,0,0,0};
static uchar rgdestmac[6] = {0xff,0,0,0,0,0};
static uchar rgdhcpmac[6] = {0xff,0,0,0,0,0};
+static int nciphers = 16;
+static int ncipher0 = 0;
+static uchar rgciphers[16] = {0xff,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
static char rghostname[32] = {'\0'};
static uchar custPEF[20]; /* max used = 18 bytes */
static char rgcommunity[19] = "public"; /* default community */
@@ -774,7 +780,7 @@ SetPasswd(int unum, char *uname, char *upswd)
if ((unum != 1) && (uname == NULL)) {
; /* if no username, do not enable user */
} else {
- inputData[0] = (uchar)unum; /*user 1 = null user */
+ inputData[0] = (uchar)unum;
inputData[1] = 0x01; /*enable user*/
responseLength = sizeof(responseData);
status = ipmi_cmd(SET_USER_PASSWORD, inputData, 2, responseData,
@@ -786,7 +792,7 @@ SetPasswd(int unum, char *uname, char *upswd)
if (status != 0) ret = status;
}
- inputData[0] = (uchar)unum; /*user 1 = null user */
+ inputData[0] = (uchar)unum;
inputData[1] = 0x02; /*set password*/
psw_len = PSW_LEN; /*=16 change if 20-byte passwords supported */
memset(&inputData[2],0,psw_len);
@@ -888,7 +894,7 @@ static char *parse_priv(uchar c)
case 4: p = "Admin "; break;
case 5: p = "OEM "; break;
case 0x0f: p = "No access"; break;
- default: p = "Reserved";
+ default: p = "Reserved"; /*usually =0*/
}
return(p);
}
@@ -3666,7 +3672,6 @@ main(int argc, char **argv)
uchar bset;
int ndest = 4;
int idest;
- int nciphers = 16;
char mystr[80];
char fpefok = 1;
uchar * pc; int sz;
@@ -3676,7 +3681,7 @@ main(int argc, char **argv)
j = 0; freadonly = FLAG_INIT;
idx = argc; /*getopt loop counter*/
/* available opt chars: y O Q + = ~ _ */
- while ((c = getopt(argc, argv,"a:b:cdef:gh:i:j:klm:n:op:q:rstu:v:w:xy:z#::A:B:C:DEF:G:H:I:J:K:L:M:N:P:Q:R:S:T:U:V:X:YZ:?")) != EOF) {
+ while ((c = getopt(argc, argv,"a:b:cdef:gh:i:j:klm:n:op:q:rstu:v:w:xy:z#::A:B:C:DEF:G:H:I:J:K:L:M:N:OP:Q:R:S:T:U:V:X:YZ:?")) != EOF) {
switch(c) {
case 'a': /* alert dest number (usu 1 thru 4) */
alertnum = atob(optarg);
@@ -3787,6 +3792,7 @@ main(int argc, char **argv)
case 'x': fdebug = 1; break;
case 'z': flanstats = 1; break;
case 'D': lan_dhcp = 1; j++; break;
+ case 'O': flansecure = 1; j++; break;
case 'I': /* My BMC IP Address */
fset_ip |= MYIP;
atoip(rgmyip,optarg);
@@ -3919,7 +3925,8 @@ main(int argc, char **argv)
printf(" -D Use DHCP instead of static IP (-I for server)\n");
printf(" -K (Kontron) IPMI hostname to set\n");
printf(" -Q VLAN Priority (default =0)\n");
- print_lan_opt_usage();
+ printf(" -O Force LAN security: no null user, cipher 0 off\n");
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto do_exit;
} /*end switch*/
@@ -4096,6 +4103,7 @@ main(int argc, char **argv)
/* set the lan_user appropriately */
if (myuser == NULL) { /* if no -u param */
if (ipmi_reserved_user(vend_id, 1)) lan_user = 2;
+ else if (flansecure) lan_user = 2;
else lan_user = 1; /*use default null user */
} else if (usernum != 0) lan_user = usernum; /*use -q specified usernum*/
/* else use default lan_user (=2) if -u and not -q */
@@ -4486,6 +4494,10 @@ main(int argc, char **argv)
// if (pc[0] >= 30) memcpy(bparm7,pc,3);
} else if (ival == 17) { /* num dest */
ndest = pc[0]; /* save the number of destinations */
+ } else if (ival == 12) { /* gateway addr */
+ if (IpIsValid(pc)) memcpy(bmcgwyip,pc,4);
+ } else if (ival == 13) { /* gateway mac */
+ if (MacIsValid(pc)) memcpy(bmcgwymac,pc,MAC_LEN);
} else if (ival == 19) { /* dest addr */
if (IpIsValid(&pc[3])) memcpy(bmcdestip,&pc[3],4);
if (MacIsValid(&pc[7])) memcpy(bmcdestmac,&pc[7],MAC_LEN);
@@ -4541,8 +4553,12 @@ main(int argc, char **argv)
|| ival == 192) {
printf("%d.%d.%d.%d",pc[0], pc[1], pc[2], pc[3]);
} else if (ival == 23) { /*Cipher Suites*/
- for (i = 1; i <= nciphers; i++) printf("%2d ",pc[i]);
+ for (i = 1; i <= nciphers; i++) {
+ if (pc[i] == 0) ncipher0 = pc[i];
+ printf("%2d ",pc[i]);
+ }
} else if (ival == 24) { /*Cipher Suite Privi Levels*/
+ j = 0;
for (i = 1; i < 9; i++) {
char c1, c2;
char *p;
@@ -4550,6 +4566,8 @@ main(int argc, char **argv)
c1 = p[0];
p = parse_priv((pc[i] & 0xf0) >> 4);
c2 = p[0];
+ rgciphers[j++] = (pc[i] & 0x0f);
+ rgciphers[j++] = ((pc[i] & 0xf0) >> 4);
if ((i*2) >= nciphers) c2 = ' ';
printf(" %c %c ",c1,c2);
if ((i*2) > nciphers) break;
@@ -4770,6 +4788,10 @@ main(int argc, char **argv)
if (fdebug) printf("SetChanAcc(lan/nonvol), ret = %d\n",ret);
if (ret != 0) { nerrs++; lasterr = ret; }
else ngood++;
+ if (flansecure) {
+ j = DisableUser(0); /*disable the default null user*/
+ printf("DisableUser(0), ret = %d\n",j);
+ }
ret = SetUser(lan_user,myuser,passwordData);
printf("SetUser(%d), ret = %d\n",lan_user,ret);
if (ret != 0) { nerrs++; lasterr = ret; }
@@ -4948,8 +4970,12 @@ main(int argc, char **argv)
rggwyip[0], rggwyip[1], rggwyip[2], rggwyip[3],
rggwymac[0], rggwymac[1], rggwymac[2], rggwymac[3],
rggwymac[4], rggwymac[5]);
- if (!SubnetIsSame(rgmyip,rggwyip,rgsubnet))
- printf("WARNING: IP Address and Gateway are not on the same subnet.\n");
+ if (!SubnetIsSame(rgmyip,rggwyip,rgsubnet)) {
+ printf("WARNING: IP Address and Gateway are not on the same subnet,"
+ " setting Gateway to previous value\n");
+ memcpy(rggwyip,bmcgwyip,4);
+ memcpy(rggwymac,bmcgwymac,6);
+ }
/* Set the Default Gateway IP & MAC */
memcpy(&LanRecord,rggwyip,4);
@@ -4961,13 +4987,14 @@ main(int argc, char **argv)
printf(" Warning: Gateway MAC address was not resolved! "
"Check %s interface, use -i ethN, or use -H gwymac.\n",
ifname);
+ memcpy(&LanRecord,bmcgwymac,6);
} else {
memcpy(&LanRecord,rggwymac,6);
+ }
ret = SetLanEntry(13, &LanRecord, 6);
printf("SetLanEntry(13), ret = %d\n",ret);
if (ret != 0) { nerrs++; lasterr = ret; }
else ngood++;
- }
}
if (IpIsValid(rggwy2ip)) {
if (!MacIsValid(rggwy2mac)) /* if gwy2 MAC not set by user */
@@ -4985,6 +5012,23 @@ main(int argc, char **argv)
else ngood++;
}
} /* end-else static IP */
+ if (flansecure) { /* disable cipher 0 */
+ char c1, c2;
+ memset(&LanRecord,0,12);
+ j = 1;
+ for (i = 0; i < nciphers; i+=2) {
+ c1 = rgciphers[i];
+ c2 = rgciphers[i+1];
+ /* 0x0f may be vendor-specific, 0x00 = Reserved/Unused */
+ if (i == ncipher0) c1 = 0x00;
+ if ((i+1) == ncipher0) c2 = 0x00;
+ LanRecord.data[j++] = (c2 << 4) | c1;
+ }
+ ret = SetLanEntry(24, &LanRecord, 9);
+ printf("SetLanEntry(24) disable cipher0, ret = %d\n",ret);
+ if (ret != 0) { nerrs++; lasterr = ret; }
+ else ngood++;
+ }
ret = SetupSerialOverLan(1); /*enable*/
SELprintf("SetupSerialOverLan: ret = %d\n",ret);
if (ret != 0) { nerrs++; lasterr = ret; }
diff --git a/util/ipicmg.c b/util/ipicmg.c
index c549151..634fb16 100644
--- a/util/ipicmg.c
+++ b/util/ipicmg.c
@@ -81,7 +81,7 @@
/* Global data */
static char * progname = "ipicmg";
-static char * progver = "2.93";
+static char * progver = "2.96";
static char fdebug = 0;
static char fset_mc = 0;
static uint8_t g_bus = PUBLIC_BUS;
diff --git a/util/ipmi_sample.c b/util/ipmi_sample.c
index ddda7f3..faa0d51 100644
--- a/util/ipmi_sample.c
+++ b/util/ipmi_sample.c
@@ -115,7 +115,7 @@ main(int argc, char **argv)
printf("%s ver %s\n", progname,progver);
- while ((c = getopt( argc, argv,"i:l:m:f:s:t:xEF:N:P:R:T:U:V:YZ:?")) != EOF )
+ while ((c = getopt( argc, argv,"i:l:m:p:f:s:t:xEF:N:P:R:T:U:V:YZ:?")) != EOF )
switch(c) {
case 'm': /* specific IPMB MC, 3-byte address, e.g. "409600" */
g_bus = htoi(&optarg[0]); /*bus/channel*/
@@ -136,6 +136,7 @@ main(int argc, char **argv)
case 's': sdrfile = optarg; break;
case 't': mytag = optarg; break; /* specific sensor tag */
case 'x': fdebug = 1; break; /* debug messages */
+ case 'p': /* port */
case 'N': /* nodename */
case 'U': /* remote username */
case 'P': /* remote password */
@@ -158,7 +159,7 @@ main(int argc, char **argv)
printf(" -m002000 specific MC (bus 00,sa 20,lun 00)\n");
printf(" -s File loads SDRs from File\n");
printf(" -t tag search for 'tag' in SDRs\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(1);
exit(1);
}
/* Rather than parse_lan_options above, the set_lan_options function
diff --git a/util/ipmi_sample_evt.c b/util/ipmi_sample_evt.c
index b51ba24..f0f8e97 100644
--- a/util/ipmi_sample_evt.c
+++ b/util/ipmi_sample_evt.c
@@ -321,14 +321,14 @@ main(int argc, char **argv)
uchar event[32]; /*usu 16 bytes */
char outbuf[160];
char *s1;
- int rlen;
+ int i, rlen;
uchar ccode;
uchar sensor_type;
fdout = stderr;
printf("%s ver %s\n", progname,progver);
- while ( (c = getopt( argc, argv,"m:s:t:xEF:N:P:R:T:U:V:YZ:?")) != EOF )
+ while ( (c = getopt( argc, argv,"m:p:s:t:xEF:N:P:R:T:U:V:YZ:?")) != EOF )
switch(c) {
case 'm': /* specific IPMB MC, 3-byte address, e.g. "409600" */
g_bus = htoi(&optarg[0]); /*bus/channel*/
@@ -346,6 +346,7 @@ main(int argc, char **argv)
case 's': sdrfile = optarg; break;
case 't': mytag = optarg; break; /* specific sensor tag */
case 'x': fdebug = 1; break; /* debug messages */
+ case 'p': /* port */
case 'N': /* nodename */
case 'U': /* remote username */
case 'P': /* remote password */
@@ -364,7 +365,7 @@ main(int argc, char **argv)
printf(" -m002000 specific MC (bus 00,sa 20,lun 00)\n");
printf(" -s File loads SDRs from File\n");
printf(" -t tag search for 'tag' in SDRs\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(1);
exit(1);
}
/* Rather than parse_lan_options above, the set_lan_options function
@@ -411,12 +412,13 @@ main(int argc, char **argv)
ievt_siginit();
finit_ok = 1;
ret = 0; /*ignore any earlier errors, keep going*/
+ i = 0;
while (ret == 0)
{ /*wait for bmc message events*/
if (fdebug)
- msgout("%s: Polling every %d sec for a new event after id %x...\n",
- progname, wait_interval, sel_recid);
+ msgout("%s: %d Polling every %d sec for a new event after id %x\n",
+ progname, i, wait_interval, sel_recid);
rlen = sizeof(event);
ret = getevent_sel(event,&rlen,&ccode);
if (ret == 0) ret = ccode;
@@ -433,6 +435,7 @@ main(int argc, char **argv)
msgout("get_event error: ret = 0x%x\n",ret);
break;
}
+ i++;
os_usleep(wait_interval,0);
} /*end while loop*/
diff --git a/util/ipmicmd.c b/util/ipmicmd.c
index dd2268b..858d062 100644
--- a/util/ipmicmd.c
+++ b/util/ipmicmd.c
@@ -260,21 +260,22 @@ int fjustpass = 0;
FILE *fperr = NULL;
FILE *fpdbg = NULL;
FILE *fplog = NULL;
+int fauth_type_set = 0;
+char fdebug = 0;
char log_name[60] = {'\0'}; /*log_name global*/
-char *gnode = "localhost"; /* used for IPMI LAN, specified with option -N */
-char *guser = NULL;
-char *gpswd = NULL;
-char gnodename[SZGNODE] = {0}; /*the node name returned after a connection */
-int gcipher_suite = 3; /*used in ipmilanplus.c*/
-int gshutdown = 0;
-int fauth_type_set = 0;
-int gauth_type = IPMI_SESSION_AUTHTYPE_MD5; /*if 0, use any: MD5, MD2, etc.*/
-int gpriv_level = IPMI_PRIV_LEVEL_USER; /*or IPMI_PRIV_LEVEL_ADMIN */
-int gaddr_len = 0;
-uchar gaddr[128]; /* sizeof(struct sockaddr_storage) = 128 */
- /* struct sockaddr_in/_in6 gaddr; _in6=28, _in=16 bytes */
uchar my_devid[20] = {0,0,0,0,0,0,0,0}; /*saved devid, only needs 16 bytes*/
-char fdebug = 0;
+int gshutdown = 0; /* see ipmilan.c ipmilanplus.c */
+
+LAN_OPT lanp = { "localhost","","", IPMI_SESSION_AUTHTYPE_MD5,
+ IPMI_PRIV_LEVEL_USER, 3, "", 0, RMCP_PRI_RMCP_PORT };
+static char *gnode = lanp.node;
+//char *guser = lanp.user;
+//char *gpswd = lanp.pswd;
+//uchar *gaddr = lanp.addr;
+//int gaddr_len = 0;
+//int gcipher_suite = 3; /*used in ipmilanplus.c*/
+//int gauth_type = IPMI_SESSION_AUTHTYPE_MD5; /*if 0, use any: MD5, MD2, etc.*/
+//int gpriv_level = IPMI_PRIV_LEVEL_USER;
typedef struct {
uchar adrtype;
@@ -525,7 +526,7 @@ int set_driver_type(char *tag)
if (fDriverTyp == DRV_HP) { /*LAN2 HP ++++*/
set_iana(VENDOR_HP);
fDriverTyp = DRV_LAN2;
- gauth_type = IPMI_SESSION_AUTHTYPE_NONE; /*HP default*/
+ lanp.auth_type = IPMI_SESSION_AUTHTYPE_NONE; /*HP default*/
}
break;
}
@@ -654,13 +655,13 @@ int ipmi_open(char fdebugcmd)
/* first time, so try each */
if (fipmi_lan) {
/* Try IPMI LAN 1.5 first */
- rc = ipmi_open_lan(gnode,guser,gpswd,fdebugcmd);
+ rc = ipmi_open_lan(gnode,lanp.port,lanp.user,lanp.pswd,fdebugcmd);
fDriverTyp = DRV_LAN;
if (rc == LAN_ERR_V2) {
/* Use IPMI LAN 2.0 if BMC said it only supports LAN2 */
/* This is a violation of IPMI 2.0 Spec section 13.4,
* but some HP firmware behaves this way, so handle it. */
- rc = ipmi_open_lan2(gnode,guser,gpswd,fdebugcmd);
+ rc = ipmi_open_lan2(gnode,lanp.user,lanp.pswd,fdebugcmd);
fDriverTyp = DRV_LAN2;
}
} else { /* local, not lan */
@@ -1124,9 +1125,15 @@ int ipmi_sendrecv(struct ipmi_rq * req, uchar *rsp, int *rsp_len)
rlen = IPMI_RSPBUF_SIZE;
*rsp_len = 0;
- rv = ipmi_cmdraw_mc(req->msg.cmd, req->msg.netfn,
- req->msg.data, (uchar)req->msg.data_len,
- rsp, &rlen, &ccode, fdebug);
+ if ((fDriverTyp != DRV_MV) && (mc->adrtype == ADDR_IPMB) && !fipmi_lan) {
+ rv = ipmi_cmd_ipmb( req->msg.cmd, req->msg.netfn, mc->sa,mc->bus,
+ req->msg.lun, req->msg.data, (uchar)req->msg.data_len,
+ rsp, &rlen, &ccode, fdebug);
+ } else { /* use ADDR_SMI */
+ rv = ipmi_cmdraw(req->msg.cmd, req->msg.netfn, mc->sa,mc->bus,
+ req->msg.lun, req->msg.data, (uchar)req->msg.data_len,
+ rsp, &rlen, &ccode, fdebug);
+ }
if (rv == 0 && ccode != 0) rv = ccode;
if (rv == 0) { /*success*/
*rsp_len = rlen;
@@ -1283,14 +1290,14 @@ int get_lan_options(char *node, char *user, char *pswd, int *auth, int *priv,
int *cipher, void *addr, int *addr_len)
{
if (fipmi_lan == 0) return(-1);
- if (node != NULL) strcpy(node,gnode);
- if (user != NULL) strcpy(user,guser);
- if (pswd != NULL) strcpy(pswd,gpswd);
- if (auth != NULL) *auth = gauth_type;
- if (priv != NULL) *priv = gpriv_level;
- if (cipher != NULL) *cipher = gcipher_suite;
- if (addr != NULL && gaddr_len != 0) memcpy(addr,gaddr,gaddr_len);
- if (addr_len != NULL) *addr_len = gaddr_len;
+ if (node != NULL) strcpy(node,lanp.node);
+ if (user != NULL) strcpy(user,lanp.user);
+ if (pswd != NULL) strcpy(pswd,lanp.pswd);
+ if (auth != NULL) *auth = lanp.auth_type;
+ if (priv != NULL) *priv = lanp.priv;
+ if (cipher != NULL) *cipher = lanp.cipher;
+ if (addr != NULL && lanp.addr_len != 0) memcpy(addr,lanp.addr,lanp.addr_len);
+ if (addr_len != NULL) *addr_len = lanp.addr_len;
return(0);
}
@@ -1298,18 +1305,29 @@ int set_lan_options(char *node, char *user, char *pswd, int auth, int priv,
int cipher, void *addr, int addr_len)
{
int rv = 0;
- if (node != NULL) { gnode = strdup_(node); fipmi_lan = 1; }
- if (user != NULL) guser = strdup_(user);
- if (pswd != NULL) gpswd = strdup_(pswd);
- if (auth > 0 && auth <= 5) gauth_type = auth;
+ if (node != NULL) {
+ strncpy(lanp.node,node,SZGNODE);
+ lanp.node[SZGNODE] = '\0';
+ gnode = lanp.node;
+ fipmi_lan = 1;
+ }
+ if (user != NULL) {
+ strncpy(lanp.user,user,SZGNODE);
+ lanp.user[SZGNODE] = '\0';
+ }
+ if (pswd != NULL) {
+ strncpy(lanp.pswd,pswd,PSW_MAX);
+ lanp.pswd[PSW_MAX] = '\0';
+ }
+ if (auth > 0 && auth <= 5) { lanp.auth_type = auth; }
else rv = ERR_BAD_PARAM;
- if (priv > 0 && priv <= 5) gpriv_level = priv;
+ if (priv > 0 && priv <= 5) { lanp.priv = priv; }
else rv = ERR_BAD_PARAM;
- if (cipher >= 0 && cipher <= 17) gcipher_suite = cipher;
+ if (cipher >= 0 && cipher <= 17) { lanp.cipher = cipher; }
else rv = ERR_BAD_PARAM;
- if ((addr != NULL) && (addr_len > 15) && (addr_len <= sizeof(gaddr))) {
- memcpy(gaddr,addr,addr_len);
- gaddr_len = addr_len;
+ if ((addr != NULL) && (addr_len > 15) && (addr_len <= sizeof(lanp.addr))) {
+ memcpy(lanp.addr,addr,addr_len);
+ lanp.addr_len = addr_len;
}
ipmi_flush_lan(gnode);
return(rv);
@@ -1321,64 +1339,70 @@ void parse_lan_options(int c, char *popt, char fdebugcmd)
return;
#else
int i;
- size_t len;
static int fset_dtype = 0;
uchar sa;
+ char *p = NULL;
switch(c)
{
+ case 'p':
+ i = atoi(popt);
+ if (i > 0) lanp.port = i;
+ else printf("-p port %d < 0, defaults to %d\n",
+ i,RMCP_PRI_RMCP_PORT);
+ break;
case 'F': /* force driver type */
i = set_driver_type(popt);
if (i == 0) fset_dtype = 1;
break;
case 'T': /* auth type */
i = atoi(popt);
- if (i >= 0 && i <= 5) gauth_type = i;
+ if (i >= 0 && i <= 5) lanp.auth_type = i;
fauth_type_set = 1;
break;
case 'V': /* priv level */
i = atoi(popt);
- if (i > 0 && i <= 5) gpriv_level = i;
+ if (i > 0 && i <= 5) lanp.priv = i;
break;
case 'J':
i = atoi(popt);
- if (i >= 0 && i <= 17) gcipher_suite = i;
+ if (i >= 0 && i <= 17) lanp.cipher = i;
else printf("-J cipher suite %d > 17, defaults to %d\n",
- i,gcipher_suite);
+ i,lanp.cipher);
if (fset_dtype == 0) i = set_driver_type("lan2");
break;
- case 'N': gnode = popt; /* nodename */
- fipmi_lan = 1;
- break;
+ case 'N':
+ strncpy(lanp.node,popt,SZGNODE); /*remote nodename */
+ lanp.node[SZGNODE] = '\0';
+ fipmi_lan = 1;
+ break;
case 'U':
- guser = strdup_(popt); /*remote username */
- if (!guser) perror("strdup_");
- else { /* Hide username from 'ps' */
- memset(popt, ' ', strlen(popt));
- }
+ strncpy(lanp.user,popt,SZGNODE); /*remote username */
+ lanp.user[SZGNODE] = '\0';
+ /* Hide username from 'ps' */
+ memset(popt, ' ', strlen(popt));
break;
case 'R':
case 'P':
- gpswd = strdup_(popt); /*remote password */
- if (!gpswd) perror("strdup_");
- else { /* Hide password from 'ps' */
- len = strlen(popt);
- memset(popt, ' ', len);
- if (len > PSW_MAX) gpswd[PSW_MAX] = '\0';
- }
+ strncpy(lanp.pswd,popt,PSW_MAX); /*remote password */
+ lanp.pswd[PSW_MAX] = '\0';
+ /* Hide password from 'ps' */
+ memset(popt, ' ', strlen(popt));
break;
case 'E': /* get password from IPMI_PASSWORD environment var */
- gpswd = getenv("IPMI_PASSWORD");
- if (gpswd == NULL) perror("getenv(IPMI_PASSWORD)");
+ p = getenv("IPMI_PASSWORD");
+ if (p == NULL) perror("getenv(IPMI_PASSWORD)");
else {
- if (strlen(gpswd) > PSW_MAX) gpswd[PSW_MAX] = '\0';
+ strncpy(lanp.pswd,p,PSW_MAX); /*remote password */
+ if (strlen(p) > PSW_MAX) lanp.pswd[PSW_MAX] = '\0';
if (fdebugcmd) printf("using IPMI_PASSWORD\n");
}
break;
case 'Y': /* prompt for remote password */
- gpswd = getline_wipe("Enter IPMI LAN Password: ");
- if (gpswd != NULL) {
- if (strlen(gpswd) > PSW_MAX) gpswd[PSW_MAX] = '\0';
+ p = getline_wipe("Enter IPMI LAN Password: ");
+ if (p != NULL) {
+ strncpy(lanp.pswd,p,PSW_MAX); /*remote password */
+ if (strlen(p) > PSW_MAX) lanp.pswd[PSW_MAX] = '\0';
}
break;
case 'Z': /* set local MC address */
@@ -1393,11 +1417,13 @@ void parse_lan_options(int c, char *popt, char fdebugcmd)
#endif
} /*end parse_lan_options*/
-void print_lan_opt_usage(void)
+void print_lan_opt_usage(int opt)
{
#if defined(EFI) | defined(DOS)
return;
#else
+ if (opt == 1) /*port ok*/
+ printf(" -p port UDP Port of target system\n");
printf(" -N node Nodename or IP address of target system\n");
printf(" -U user Username for remote node\n");
printf(" -P/-R pswd Remote Password\n");
diff --git a/util/ipmicmd.h b/util/ipmicmd.h
index b65e949..a4c911b 100644
--- a/util/ipmicmd.h
+++ b/util/ipmicmd.h
@@ -335,13 +335,25 @@ struct oemvalstr {
#define LOG_DEBUG 7 // debug-level messages
#endif
+typedef struct {
+ char node[SZGNODE+1];
+ char user[SZGNODE+1];
+ char pswd[PSW_MAX+1];
+ int auth_type; /* if 0, use any: MD5, MD2, etc.*/
+ int priv; /* IPMI_PRIV_LEVEL_USER or IPMI_PRIV_LEVEL_ADMIN */
+ int cipher;
+ unsigned char addr[128]; /* sizeof(struct sockaddr_storage) = 128 */
+ int addr_len; /* struct sockaddr_in/_in6 gaddr; _in6=28, _in=16 bytes*/
+ int port;
+} LAN_OPT; /* used for IPMI LAN, specified with option -NUP, etc. */
+
#ifndef _IPMI_RQ_
#define _IPMI_RQ_ 1
/* structure used in ipmi_sendrecv, maps to ipmitool syntax. */
struct ipmi_rq {
struct {
- uchar netfn:6;
- uchar lun:2;
+ uchar netfn:6;
+ uchar lun:2;
uchar cmd;
uchar target_cmd;
ushort data_len;
@@ -410,17 +422,18 @@ int ipmi_close(void); /*ditto*/
* parse_lan_options
* Parse the IPMI LAN options from the command-line getopt.
* int c (input): command-line option from getopt, one of:
+ case 'p': UDP port
case 'F': force driver type
- case 'T': auth type
- case 'V': priv level
- case 'J': cipher suite
- case 'N': nodename
+ case 'T': auth type
+ case 'V': priv level
+ case 'J': cipher suite
+ case 'N': nodename
case 'U': username
case 'R': remote password
- case 'P': remote password
- case 'E': get password from IPMI_PASSWORD environment var
- case 'Y': prompt for remote password
- case 'Z': set local MC address
+ case 'P': remote password
+ case 'E': get password from IPMI_PASSWORD environment var
+ case 'Y': prompt for remote password
+ case 'Z': set local MC address
* char *optarg (input): command-line argument from getopt
* char fdebug (input): show debug messages if =1, default=0
*/
@@ -456,7 +469,7 @@ int set_lan_options(char *node, char *user, char *pswd, int auth, int priv,
int cipher, void *addr, int addr_len);
int get_lan_options(char *node, char *user, char *pswd, int *auth, int *priv,
int *cipher, void *addr, int *addr_len);
-void print_lan_opt_usage(void);
+void print_lan_opt_usage(int opt);
int ipmi_getdeviceid(uchar *presp, int sresp, char fdebugcmd);
/* int ipmi_open(void); * embedded in ipmi_cmd() */
int ipmi_getpicmg(uchar *presp, int sresp, char fdebug);
diff --git a/util/ipmilan.c b/util/ipmilan.c
index 64b6425..814092e 100644
--- a/util/ipmilan.c
+++ b/util/ipmilan.c
@@ -215,14 +215,14 @@ extern char * get_iana_str(int mfg); /*subs.c*/
#define dbg_dump dump_buf
extern FILE *fperr; /*defined in ipmicmd.c, usu stderr */
extern FILE *fpdbg; /*defined in ipmicmd.c, usu stdout */
-extern int gshutdown; /* from ipmicmd.c */
-extern char gnodename[]; /* from ipmicmd.c */
-extern char *gnode; /* from ipmicmd.c */
-extern char *guser; /* from ipmicmd.c */
-extern char *gpswd; /* from ipmicmd.c */
+extern int gshutdown; /* from ipmicmd.c, usu =0 */
extern int fauth_type_set; /* from ipmicmd.c */
-extern int gauth_type; /* from ipmicmd.c */
-extern int gpriv_level; /* from ipmicmd.c */
+extern LAN_OPT lanp; /* from ipmicmd.c */
+//extern char *gnode; /* from ipmicmd.c */
+//extern char *guser; /* from ipmicmd.c */
+//extern char *gpswd; /* from ipmicmd.c */
+//extern int gauth_type; /* from ipmicmd.c */
+//extern int gpriv_level; /* from ipmicmd.c */
extern ipmi_cmd_t ipmi_cmds[NCMDS];
static IPMI_HDR ipmi_hdr = { 0x06, 0, 0xFF, 0x07, 0x00, 0, 0,
@@ -236,7 +236,7 @@ static int vend_id = 0;
static int prod_id = 0;
#if defined(DOS) || defined(EFI)
-int ipmi_open_lan(char *node, char *user, char *pswd, int fdebugcmd)
+int ipmi_open_lan(char *node, char *user, int port, char *pswd, int fdebugcmd)
{
printf("IPMI LAN is not supported under DOS.\n");
return(-1);
@@ -294,6 +294,7 @@ typedef struct {
// static uchar fMsgAuth = 1;
static uchar auth_type = AUTHTYPE_INIT; /*initial value, not set*/
static char nodename[SZGNODE+1] = "";
+ static char gnodename[SZGNODE+1] = ""; /*nodename returned after connection*/
#if defined(AI_NUMERICSERV)
static int my_ai_flags = AI_NUMERICSERV; /*0x0400 Dont use name resolution NEW*/
// static int my_ai_flags = AI_NUMERICHOST; /*0x0004 Dont use name resolution*/
@@ -519,9 +520,9 @@ void close_sockfd(SockType sfd)
pconn->sockfd = 0; /*set global to zero */
}
-int open_sockfd(char *node, SockType *sfd, SOCKADDR_T *daddr,
+int open_sockfd(char *node, int port, SockType *sfd, SOCKADDR_T *daddr,
int *daddr_len, int foutput);
-int open_sockfd(char *node, SockType *sfd, SOCKADDR_T *daddr,
+int open_sockfd(char *node, int port, SockType *sfd, SOCKADDR_T *daddr,
int *daddr_len, int foutput)
{
int rv = 0;
@@ -559,7 +560,7 @@ int open_sockfd(char *node, SockType *sfd, SOCKADDR_T *daddr,
#ifdef HAVE_IPV6
memset(&_srcaddr, 0, sizeof(_srcaddr));
memset(daddr, 0, sizeof(_destaddr));
- sprintf(service, "%d", RMCP_PRI_RMCP_PORT);
+ sprintf(service, "%d", port);
/* Obtain address(es) matching host/port */
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */
@@ -579,11 +580,11 @@ int open_sockfd(char *node, SockType *sfd, SOCKADDR_T *daddr,
* and) try the next address.
*/
for (res0 = res; res0 != NULL; res0 = res0->ai_next) {
+ /* valid protocols are IPPROTO_UDP, IPPROTO_IPV6 */
+ if (res0->ai_protocol == IPPROTO_TCP) continue; /*IPMI != TCP*/
s = socket(res0->ai_family, res0->ai_socktype, res0->ai_protocol);
if (s == SockInvalid) continue;
else _sockfd = s;
- /* valid protocols are IPPROTO_UDP, IPPROTO_IPV6 */
- if (res0->ai_protocol == IPPROTO_TCP) continue; /*IPMI != TCP*/
pconn->connect_state = CONN_STATE_SOCK;
rv = connect(_sockfd, res0->ai_addr, res0->ai_addrlen);
if (fdebuglan) printf("socket(%d,%d,%d), connect(%d) rv = %d\n",
@@ -622,7 +623,7 @@ int open_sockfd(char *node, SockType *sfd, SOCKADDR_T *daddr,
memset(daddr, 0, sizeof(SOCKADDR_T));
daddr->sin_family = AF_INET;
- daddr->sin_port = htons(RMCP_PRI_RMCP_PORT); /*0x26f = 623.*/
+ daddr->sin_port = htons(port); /*RMCP_PRI_RMCP_PORT 0x26f = 623.*/
if (StrIsIp(node)) { /* the node string is an IP address */
uchar in_ip[4];
atoip(in_ip,node);
@@ -737,12 +738,12 @@ static void h2net(uint h, uchar *net, int n)
return;
}
-static void net2h(uint *h, uchar *net, int n)
+static void net2h(uint32 *h, uchar *net, int n)
{
- uint v;
+ uint32 v;
v = (net[1] << 8) | net[0];
if (n == 2) { *h = v; return; }
- v |= (net[3] << 24) | (net[2] << 16);
+ v |= (uint32)(net[3] << 24) | (net[2] << 16);
*h = v;
return;
}
@@ -1065,7 +1066,7 @@ static int _send_lan_cmd(SockType s, uchar *pcmd, int scmd, uchar *presp,
memcpy(&pdata[5],&sess_id_tmp,4);
if (fdebuglan > 2)
dbglog("auth_type=%x/%x fdoauth=%d hlen=%d seq_num=%x\n", /*SOL*/
- phdr->auth_type,gauth_type,fdoauth,hlen,phdr->seq_num);
+ phdr->auth_type,lanp.auth_type,fdoauth,hlen,phdr->seq_num);
if (fdoauth) {
psessid = (uchar *)&sess_id_tmp;
do_hash(phdr->password, psessid, &cbuf[hlen],msglen,
@@ -1434,7 +1435,7 @@ static int ipmilan_open_session(SockType sfd, struct sockaddr *destaddr,
else pconn->fMsgAuth = 0; /*no auth support*/
iauthcap = rbuf[2] & 0x3f;
if (fauth_type_set) {
- iauthtype = (uchar)gauth_type; // set by user
+ iauthtype = (uchar)lanp.auth_type; // set by user
auth_type = iauthtype;
} else {
iauthtype = AUTHTYPE_INIT; /*initial value, not set*/
@@ -1644,7 +1645,7 @@ int ping_bmc(char *node, int fdebugcmd)
SockType sfd;
int rv;
- rv = open_sockfd(node,&sfd, &toaddr, &toaddr_len, fdebugcmd);
+ rv = open_sockfd(node, RMCP_PRI_RMCP_PORT, &sfd, &toaddr, &toaddr_len, fdebugcmd);
if (rv != 0) return(rv);
rv = rmcp_ping(sfd, (struct sockaddr *)&toaddr,toaddr_len, fdebugcmd);
@@ -1675,7 +1676,7 @@ static int get_rand(void *data, int len)
/*
* ipmi_open_lan
*/
-int ipmi_open_lan(char *node, char *user, char *pswd, int fdebugcmd)
+int ipmi_open_lan(char *node, int port, char *user, char *pswd, int fdebugcmd)
{
char *username;
uchar priv_level;
@@ -1696,21 +1697,21 @@ int ipmi_open_lan(char *node, char *user, char *pswd, int fdebugcmd)
goto EXIT;
} else {
- if ((gshutdown==0) || fdebugcmd)
+ if (fdebugcmd)
fprintf(fpdbg,"Opening lan connection to node %s ...\n",node);
/* save nodename for sig_abort later */
if (strlen(node) > SZGNODE) {
strncpy(nodename, node, SZGNODE); nodename[SZGNODE] = 0;
} else strcpy(nodename, node);
-
- rv = open_sockfd(node, &(pconn->sockfd), &_destaddr, &_destaddr_len, 1);
+ rv = open_sockfd(node, port, &(pconn->sockfd), &_destaddr, &_destaddr_len, 1);
if (fdebugcmd)
printf("open_sockfd returned %d, fd=%d\n", rv, pconn->sockfd);
if (rv != 0) goto EXIT;
#ifdef HAVE_IPV6
strcpy(gnodename,nodename);
- fprintf(fpdbg,"Connecting to node %s\n",gnodename);
+ if (fdebugcmd)
+ fprintf(fpdbg,"Connecting to node %s\n",gnodename);
#else
#ifdef WIN32
/* check for ws2_32.lib(getnameinfo) resolution */
@@ -1769,8 +1770,8 @@ int ipmi_open_lan(char *node, char *user, char *pswd, int fdebugcmd)
}
{
- auth_type = (uchar)gauth_type;
- priv_level = (uchar)gpriv_level;
+ auth_type = (uchar)lanp.auth_type;
+ priv_level = (uchar)lanp.priv;
username = user;
authcode = pswd;
authcode_len = (pswd) ? strlen_(authcode) : 0;
@@ -1834,6 +1835,8 @@ int ipmi_close_lan(char *node)
int rv = 0;
/* could match node via pconn = find_conn(node); */
+ if (fdebuglan) fprintf(fpdbg,"ipmi_close_lan(%s) entry, sockfd=%d\n",
+ node,pconn->sockfd);
if (!nodeislocal(node)) { /* ipmilan, need to close & cleanup */
if (pconn->sockfd != 0) { /* socket is open */
if (gshutdown) pconn->session_id = 0;
@@ -1856,6 +1859,8 @@ int ipmi_close_lan(char *node)
signal(SIGALRM,SIG_DFL);
#endif
} /* endif */
+ if (fdebuglan) fprintf(fpdbg,"ipmi_close_lan(%s) rv=%d sockfd=%d\n",
+ node,rv,pconn->sockfd);
return (rv);
}
@@ -1899,7 +1904,7 @@ int ipmicmd_lan(char *node,
if (pconn->sockfd == 0) { /* closed, do re-open */
if (fdebugcmd)
fprintf(fpdbg,"sockfd==0, node %s needs re-open\n",node);
- rv = ipmi_open_lan(gnode, guser, gpswd, fdebugcmd);
+ rv = ipmi_open_lan(lanp.node, lanp.port, lanp.user, lanp.pswd, fdebugcmd);
if (rv != 0) goto EXIT;
}
if (fdebugcmd) {
@@ -2057,7 +2062,7 @@ void lan_get_sol_data(uchar fEnc, uchar seed_cnt, uint32 *seed)
sol_seed_cnt = seed_cnt;
pconn->start_out_seq = ipmi_hdr.seq_num;
sol_snd_seq = (uchar)pconn->start_out_seq;
- sol15_cipherinit(sol_seed_cnt, gpswd, pconn->start_out_seq);
+ sol15_cipherinit(sol_seed_cnt, lanp.pswd, pconn->start_out_seq);
*seed = g_Seed[sol_seed_cnt];
if (fdebuglan > 2)
dbglog("lan_get_sol_data: %02x %02x %02x\n", /*SOL*/
@@ -2084,7 +2089,7 @@ void lan_set_sol_data(uchar fenc, uchar auth, uchar seed_cnt,
if (seed_cnt != sol_seed_cnt && (seed_cnt < 16)) {
/* if seed count changed, re-init the cipher. */
sol_seed_cnt = seed_cnt;
- sol15_cipherinit(sol_seed_cnt, gpswd, pconn->start_out_seq);
+ sol15_cipherinit(sol_seed_cnt, lanp.pswd, pconn->start_out_seq);
}
}
@@ -2150,7 +2155,7 @@ int lan_send_sol( uchar *buffer, int len, SOL_RSP_PKT *rsp)
if (fdebuglan > 2) { /*SOL*/
dbg_dump("lan_send_sol input", buffer,len,1);
dbglog("auth_type=%x/%x fdoauth=%d hlen=%d seq_num=%x enc=%d\n",
- phdr->auth_type,gauth_type,fdoauth,hlen,phdr->seq_num,
+ phdr->auth_type,lanp.auth_type,fdoauth,hlen,phdr->seq_num,
sol_Encryption);
dbg_dump("send_sol buf", pdata,msglen,1);
}
diff --git a/util/ipmilan.h b/util/ipmilan.h
index 9e92e55..9a47efe 100644
--- a/util/ipmilan.h
+++ b/util/ipmilan.h
@@ -65,7 +65,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/* see ipmicmd.h for LAN_ERR definitions */
-int ipmi_open_lan(char *node, char *user, char *pswd, int fdebugcmd);
+int ipmi_open_lan(char *node, int port, char *user, char *pswd, int fdebugcmd);
int ipmi_close_lan(char *node);
int ipmi_flush_lan(char *node);
int ipmi_cmd_lan(char *node, ushort cmd, uchar *pdata, int sdata,
diff --git a/util/ipmilanplus.c b/util/ipmilanplus.c
index 771c7e7..13ed2bc 100644
--- a/util/ipmilanplus.c
+++ b/util/ipmilanplus.c
@@ -92,13 +92,14 @@ static void sol_output_handler(void *rsp) { return; }
static void dbg_dump(char *tag, uchar *pdata, int len, int fascii) { return; }
#endif
int ipmi_close_lan2(char *node); /*prototype*/
-extern char *gnode; /* from ipmicmd.c */
-extern char *guser; /* from ipmicmd.c */
-extern char *gpswd; /* from ipmicmd.c */
-extern int gauth_type; /* from ipmicmd.c */
-extern int gpriv_level; /* from ipmicmd.c */
+extern LAN_OPT lanp; /* from ipmicmd.c */
+//extern char *gnode; /* from ipmicmd.c */
+//extern char *guser; /* from ipmicmd.c */
+//extern char *gpswd; /* from ipmicmd.c */
+//extern int gauth_type; /* from ipmicmd.c */
+//extern int gpriv_level; /* from ipmicmd.c */
+//extern int gcipher_suite; /*from ipmicmd.c, see table 22-19 IPMI 2.0 spec*/
extern int gshutdown; /* from ipmicmd.c */
-extern int gcipher_suite; /*from ipmicmd.c, see table 22-19 IPMI 2.0 spec*/
extern FILE *fpdbg; /* == stdout, from ipmicmd.c */
extern FILE *fperr; /* == stderr, from ipmicmd.c */
extern FILE *fplog; /* from ipmicmd.c */
@@ -299,9 +300,9 @@ int ipmi_open_lan2(char *node, char *puser, char *pswd, int fdebugcmd)
if (rv == 0) {
if (intf->open == NULL) return(-1);
if (intf->session == NULL) return(-1);
- intf->session->authtype_set = (uchar)gauth_type;
- intf->session->privlvl = (uchar)gpriv_level;
- intf->session->cipher_suite_id = (uchar)gcipher_suite;
+ intf->session->authtype_set = (uchar)lanp.auth_type;
+ intf->session->privlvl = (uchar)lanp.priv;
+ intf->session->cipher_suite_id = (uchar)lanp.cipher;
if (node != NULL) { strcpy(intf->session->hostname,node); }
if (user != NULL) { strcpy(intf->session->username,user); }
if (pswd == NULL || pswd[0] == 0)
@@ -316,7 +317,7 @@ int ipmi_open_lan2(char *node, char *puser, char *pswd, int fdebugcmd)
rv = intf->open(intf);
if (fdebugcmd)
printf("lan2 open.intf(auth=%d,priv=%d,cipher=%d) returned %d\n",
- gauth_type,gpriv_level,gcipher_suite, rv);
+ lanp.auth_type,lanp.priv,lanp.cipher, rv);
if (rv != -1) { /*success is >= 0*/
sol_seq = 0; /*init new session, will call inc_sol_seq*/
sol_len = 0;
@@ -373,7 +374,7 @@ int ipmi_cmdraw_lan2(char *node, uchar cmd, uchar netfn, uchar lun,
if (fdebugcmd) verbose = 8;
#endif
if (intf == NULL || (intf->opened == 0)) {
- rc = ipmi_open_lan2(node,guser,gpswd,fdebugcmd);
+ rc = ipmi_open_lan2(node,lanp.user,lanp.pswd,fdebugcmd);
if (rc != 0) {
if (fdebugcmd)
fprintf(fperr, "ipmi_cmd_lan2: interface open error %d\n",rc);
diff --git a/util/ipmild.c b/util/ipmild.c
index 5ad54f2..8e05e21 100644
--- a/util/ipmild.c
+++ b/util/ipmild.c
@@ -87,7 +87,7 @@ static int ipmi_timeout_ld = 100000; /*100 * 1000 ms = 100 sec */
extern FILE *fperr; /*defined in ipmicmd.c*/
extern FILE *fpdbg; /*defined in ipmicmd.c*/
extern ipmi_cmd_t ipmi_cmds[NCMDS];
-#ifdef TEST
+#ifdef LINK_LANDESK
static int ipmi_fd = -1;
#endif
diff --git a/util/ipmiutil.c b/util/ipmiutil.c
index 4094cab..05c13db 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 = "2.93";
+static char *progver = "2.96";
// static char fdebug = 0;
/*int ipmiutil(int argc, char **argv); */
@@ -110,7 +110,7 @@ static void show_usage()
for (i=0; i<NSUBCMDS; i++)
printf("\t%s\t%s\n",subcmds[i].tag,subcmds[i].desc);
printf(" common IPMI LAN options:\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
printf("%s", helpmsg);
}
diff --git a/util/ipmiutil.mak b/util/ipmiutil.mak
index 83a23c1..40daaf8 100644
--- a/util/ipmiutil.mak
+++ b/util/ipmiutil.mak
@@ -1,4 +1,4 @@
-# This makefile will build the ipmiutil util directory
+# This makefile will build the ipmiutil util directory (x32)
#
# First download getopt.c getopt.h
# Then download and build openssl for Windows
@@ -119,12 +119,14 @@ clean:
$(RM) $(TARG_EXE) 2>NUL
$(RM) *.exe 2>NUL
-$(RM) $(TMP_D)\*.obj 2>NUL
+ -$(RM) *.manifest 2>NUL
distclean:
$(RM) *.obj 2>NUL
$(RM) $(TARG_EXE) 2>NUL
$(RM) *.exe 2>NUL
-$(RM) $(TMP_D)\*.* 2>NUL
+ -$(RM) *.manifest 2>NUL
rmdir $(TMP_D) 2>NUL
$(RM) *.rc 2>NUL
$(RM) *.bin 2>NUL
@@ -386,6 +388,8 @@ $(TMP_D)\iwdt.obj: iwdt.c
$(E_EXE): $(E_OBJ)
$(LINK) $(LFLAGS) /OUT:$(E_EXE) $(E_OBJ) $(LF_LANPLUS) $(LIBS_PEF) $(LIBS_EX)
+
+# mt.exe -manifest $(E_EXE).manifest -outputresource:$(E_EXE);1
ipmi_sample.obj: ipmi_sample.c
$(CC) /c $(CFLAGS_SAM) ipmi_sample.c
@@ -400,8 +404,7 @@ $(SAMP_DLL): $(CMD_OBJ) mem_if.obj
$(LINK) /DLL $(LFLAGS) /OUT:$(SAMP_DLL) /def:ipmiutillib.def $(CMD_OBJ) mem_if.obj $(LIBS_PEF) $(LIBS_EX)
del ipmilanplus.obj
-ipmi_sample.exe: $(SAMP_LIB) ipmi_sample.c
- $(CC) /c $(CFLAGS_SAM) ipmi_sample.c
+ipmi_sample.exe: $(SAMP_LIB) ipmi_sample.obj
$(LINK) $(LFLAGS) /OUT:ipmi_sample.exe ipmi_sample.obj $(SAMP_LIB) $(LIBS_PEF) $(LIBS_EX)
ipmi_sample2.exe: $(SAMP_LIB) ipmi_sample.c isensor.c ievents.c
diff --git a/util/ipmiutil.mak.orig b/util/ipmiutil.mak.orig
new file mode 100644
index 0000000..f98cd66
--- /dev/null
+++ b/util/ipmiutil.mak.orig
@@ -0,0 +1,423 @@
+# This makefile will build the ipmiutil util directory
+#
+# First download getopt.c getopt.h
+# Then download and build openssl for Windows
+#
+LIBC_RT=libcmt.lib /NODEFAULTLIB:"msvcirt.lib"
+# LIBC_RT=msvcrt.lib /NODEFAULTLIB:"msvcirt.lib"
+
+MARCH=X64
+#MARCH=IX86
+# The ipmiutil directory
+SRC_D=.
+LIB_D=..\lib
+L2_D=$(LIB_D)\lanplus
+L3_D=$(LIB_D)\lanplus\inc
+INSTALLTOP=install
+TMP_D=tmp
+INC=/I$(SRC_D) /I$(L2_D) /I$(L3_D)
+CMD_OBJ = getopt.obj ipmicmd.obj imbapi.obj md5.obj md2.obj \
+ ipmilan.obj ipmims.obj subs.obj
+CMD_OBJ = $(CMD_OBJ) ipmilanplus.obj
+# To remove lanplus support use the empty LANPLUS variables
+# L2_OBJ=
+# LF_LANPLUS=
+# CF_LANPLUS=
+L2_OBJ = $(L2_D)\helper.obj $(L2_D)\ipmi_strings.obj $(L2_D)\lanplus.obj \
+ $(L2_D)\lanplus_crypt_impl.obj $(L2_D)\lanplus_dump.obj \
+ $(L2_D)\lanplus_strings.obj $(L2_D)\lanplus_crypt.obj
+LF_LANPLUS=/LIBPATH:$(LIB_D) $(L2_OBJ) ssleay32.lib libeay32.lib
+CF_LANPLUS=/D HAVE_LANPLUS
+
+# Set your compiler options
+# To remove any GPL dependencies, use the CF_EX line with NON_GPL
+# CFLAGS_O=/W3 /O2 /Zi /MD /GF /Gy /nologo
+# CFLAGS_O=/W3 /O2 /Zi /MD /nologo
+# CFLAGS_O=/W3 /O2 /Zi /MT /nologo
+CFLAGS_O=/W3 /O2 /Zi /MT /nologo
+CF_EX=/DWIN32 $(CF_LANPLUS) $(INC) /D_CONSOLE /D_CRT_SECURE_NO_DEPRECATE /D_CRT_NONSTDC_NO_DEPRECATE /DHAVE_STRING_H
+CF_SAM=/DWIN32 $(INC) /D_CONSOLE /D_CRT_SECURE_NO_DEPRECATE /DHAVE_STRING_H
+CFLAGS=$(CFLAGS_O) $(CF_EX) /DSKIP_MD2
+CFLAGS_M=$(CFLAGS_O) $(CF_EX) /DSKIP_MD2 /DMETACOMMAND
+CFLAGS_SAM=$(CFLAGS_O) $(CF_SAM)
+LFLAGS=/nologo /subsystem:console /machine:$(MARCH) /opt:ref
+#LFLAGS=/nologo /subsystem:console /machine:IX86 /opt:ref
+#LFLAGS=/nologo /subsystem:console /machine:IX86 /opt:ref /debug
+# LFLAGS_D=/nologo /subsystem:console /machine:I386 /opt:ref /dll
+
+# CFLAGS_W=/O2 /D_CONSOLE /D_MBCS /EHsc /ML /W3 /Zi /TP
+CFLAGS_W=/TP /EHsc $(CFLAGS)
+LFLAGS_W=/nologo /subsystem:console /machine:$(MARCH) /opt:ref
+LIBS_W=comsuppw.lib wbemuuid.lib
+# gdi32.lib comdlg32.lib shell32.lib uuid.lib
+
+CC=cl
+LINK=link
+MKDIR=-mkdir
+MKLIB=lib
+RM=del
+CP=copy
+
+LIBS_EX = advapi32.lib kernel32.lib wsock32.lib $(LIBS_W) $(LIBC_RT)
+LIBS_PEF = /LIBPATH:$(LIB_D) iphlpapi.lib
+# LIBS_EX+=wsock32.lib user32.lib gdi32.lib
+
+HEADER=ipmicmd.h imb_api.h ipmilan.h ipmidir.h ipmi_ioctls.h ipmilanplus.h \
+ ipmiutil.h
+
+SHOWSEL = showsel
+TARG_EXE=ievents.exe $(SHOWSEL)msg.dll ipmi_sample.exe ipmi_sample_evt.exe $(SAMP_DLL)
+# alarms.exe ihealth.exe $(SHOWSEL).exe $(SHOWSEL)msg.dll \
+# ireset.exe ifru.exe ilan.exe iserial.exe wdt.exe \
+# getevent.exe sensor.exe icmd.exe isolconsole.exe idiscover.exe \
+# ievents.exe
+SAMP_LIB = ipmiutil.lib
+SAMP_DLL = ipmiutillib.dll
+
+E_EXE=ipmiutil.exe
+E_OBJ=$(TMP_D)\ipmiutil.obj \
+ $(TMP_D)\ialarms.obj $(TMP_D)\ihealth.obj $(TMP_D)\iwdt.obj \
+ $(TMP_D)\ireset.obj $(TMP_D)\ifru.obj $(TMP_D)\ilan.obj \
+ $(TMP_D)\iserial.obj $(TMP_D)\icmd.obj $(TMP_D)\isol.obj \
+ $(TMP_D)\isolwin.obj $(TMP_D)\AnsiTerm.obj $(TMP_D)\idiscover.obj \
+ $(TMP_D)\iconfig.obj $(TMP_D)\igetevent.obj $(TMP_D)\isensor.obj \
+ $(TMP_D)\isel.obj $(TMP_D)\ievents.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_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
+
+###################################################################
+all: banner $(TMP_D) exe
+
+banner:
+ @echo Building ipmiutil
+
+$(TMP_D):
+ $(MKDIR) $(TMP_D)
+ @echo created $(TMP_D)
+
+lib: $(L2_OBJ)
+ cd $(LIB_D)
+ nmake /nologo -f ipmilib.mak
+ cd ../util
+
+exe: $(E_EXE) $(TARG_EXE)
+
+install:
+ $(MKDIR) $(INSTALLTOP)
+ $(MKDIR) $(INSTALLTOP)\bin
+ $(CP) $(E_EXE) $(INSTALLTOP)\bin
+ xcopy $(TARG_EXE) $(INSTALLTOP)\bin
+ xcopy *.dll $(INSTALLTOP)\bin
+
+clean:
+ $(RM) *.obj 2>NUL
+ $(RM) $(TARG_EXE) 2>NUL
+ $(RM) *.exe 2>NUL
+ $(RM) $(TMP_D)\*.obj 2>NUL
+
+distclean:
+ $(RM) *.obj 2>NUL
+ $(RM) $(TARG_EXE) 2>NUL
+ $(RM) *.exe 2>NUL
+ $(RM) $(TMP_D)\*.* 2>NUL
+ rmdir $(TMP_D) 2>NUL
+ $(RM) *.rc 2>NUL
+ $(RM) *.bin 2>NUL
+ $(RM) *.RES 2>NUL
+ $(RM) getopt.* 2>NUL
+
+getopt.obj: getopt.c
+ $(CC) /c $(CFLAGS) getopt.c
+
+imbapi.obj: imbapi.c
+ $(CC) /c $(CFLAGS_M) imbapi.c
+
+ipmicmd.obj: ipmicmd.c
+ $(CC) /c $(CFLAGS) ipmicmd.c
+
+ipmilan.obj: ipmilan.c
+ $(CC) /c $(CFLAGS) ipmilan.c
+
+ipmilanplus.obj: ipmilanplus.c
+ $(CC) /c $(CFLAGS_M) ipmilanplus.c
+
+md5.obj: md5.c
+ $(CC) /c $(CFLAGS) md5.c
+
+md2.obj: md2.c
+ $(CC) /c $(CFLAGS) md2.c
+
+ievents.obj: ievents.c
+ $(CC) /c $(CFLAGS) ievents.c
+
+ialarms.obj: ialarms.c
+ $(CC) /c $(CFLAGS) ialarms.c
+
+ihealth.obj: ihealth.c
+ $(CC) /c $(CFLAGS) ihealth.c
+
+igetevent.obj: igetevent.c
+ $(CC) /c $(CFLAGS) igetevent.c
+
+mem_if.obj: mem_if.c
+ $(CC) /c $(CFLAGS_W) mem_if.c
+
+ipmims.obj: ipmims.cpp
+ $(CC) /c $(CFLAGS_W) ipmims.cpp
+
+isel.obj: isel.c
+ $(CC) /c $(CFLAGS) isel.c
+
+ireset.obj: ireset.c
+ $(CC) /c $(CFLAGS) ireset.c
+
+ireset.exe: ireset.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:ireset.exe ireset.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+ifru.obj: ifru.c
+ $(CC) /c $(CFLAGS) ifru.c
+
+ifru.exe: ifru.obj mem_if.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:ifru.exe ifru.obj mem_if.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+ilan.obj: ilan.c
+ $(CC) /c $(CFLAGS) ilan.c
+
+ilan.exe: ilan.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:ilan.exe ilan.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_PEF) $(LIBS_EX)
+
+iserial.obj: iserial.c
+ $(CC) /c $(CFLAGS) iserial.c
+
+iserial.exe: iserial.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:iserial.exe iserial.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+isensor.obj: isensor.c
+ $(CC) /c $(CFLAGS) isensor.c
+
+isensor.exe: isensor.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:isensor.exe isensor.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+iwdt.obj: iwdt.c
+ $(CC) /c $(CFLAGS) iwdt.c
+
+iwdt.exe: iwdt.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:iwdt.exe iwdt.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+isol.obj: isol.c
+ $(CC) /c $(CFLAGS) isol.c
+
+isolwin.obj: isolwin.c
+ $(CC) /c $(CFLAGS) isolwin.c
+
+isol.exe: isol.obj isolwin.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:isol.exe isol.obj isolwin.obj \
+ $(CMD_OBJ) $(LF_LANPLUS) $(LIBS_EX)
+
+icmd.obj: icmd.c
+ $(CC) /c $(CFLAGS) icmd.c
+
+icmd.exe: icmd.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:icmd.exe icmd.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+idiscover.obj: idiscover.c
+ $(CC) /c $(CFLAGS) idiscover.c
+
+idiscover.exe: idiscover.obj getopt.obj
+ $(LINK) $(LFLAGS) /OUT:idiscover.exe idiscover.obj getopt.obj \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+ialarms.exe: ialarms.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:ialarms.exe ialarms.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+ihealth.exe: ihealth.obj mem_if.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:ihealth.exe ihealth.obj mem_if.obj $(CMD_OBJ) \
+ $(LF_LANPLUS) $(LIBS_EX)
+
+igetevent.exe: igetevent.obj ievents.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:igetevent.exe igetevent.obj ievents.obj \
+ $(CMD_OBJ) $(LF_LANPLUS) $(LIBS_EX)
+
+isel.exe: isel.obj ievents.obj $(CMD_OBJ)
+ $(LINK) $(LFLAGS) /OUT:isel.exe isel.obj ievents.obj \
+ $(CMD_OBJ) $(LF_LANPLUS) $(LIBS_EX)
+
+$(SHOWSEL).mc:
+ $(CP) ..\scripts\$(SHOWSEL).mc .
+
+$(SHOWSEL)msg.dll: $(SHOWSEL).mc
+ mc -U $(SHOWSEL).mc
+ rc -r $(SHOWSEL).rc
+ $(LINK) /machine:$(MARCH) -dll -noentry -out:$(SHOWSEL)msg.dll $(SHOWSEL).res
+
+mem_if.exe: $(TMP_D)\mem_if.obj
+ $(LINK) $(LFLAGS_W) /OUT:mem_if.exe $(TMP_D)\mem_if.obj $(LIBS_EX)
+
+$(TMP_D)\mem_if.obj: mem_if.c
+ $(CC) /c $(CFLAGS_W) /DCOMP_BIN /Fo$(TMP_D)\mem_if.obj mem_if.c
+
+ievents.exe: ievents.c
+ $(CC) /c $(CFLAGS) /DALONE ievents.c
+ $(LINK) $(LFLAGS) /OUT:ievents.exe ievents.obj $(LIBS_EX)
+ $(RM) ievents.obj
+
+ipmims.exe: ipmims.cpp
+ $(CC) /c $(CFLAGS_W) /DALONE /DTEST_BIN ipmims.cpp
+ $(LINK) $(LFLAGS_W) /OUT:ipmims.exe ipmims.obj $(LIBS_EX)
+ $(RM) ipmims.obj
+
+$(TMP_D)\ievents.obj: ievents.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ievents.obj ievents.c
+
+$(TMP_D)\ipmiutil.obj: ipmiutil.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ipmiutil.obj ipmiutil.c
+
+$(TMP_D)\ialarms.obj: ialarms.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ialarms.obj ialarms.c
+
+$(TMP_D)\ihealth.obj: ihealth.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ihealth.obj ihealth.c
+
+$(TMP_D)\iconfig.obj: iconfig.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\iconfig.obj iconfig.c
+
+$(TMP_D)\ipicmg.obj: ipicmg.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ipicmg.obj ipicmg.c
+
+$(TMP_D)\ifirewall.obj: ifirewall.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ifirewall.obj ifirewall.c
+
+$(TMP_D)\ifwum.obj: ifwum.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ifwum.obj ifwum.c
+
+$(TMP_D)\ihpm.obj: ihpm.c
+ $(CC) /c $(CFLAGS_M) /Fo$(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)\oem_fujitsu.obj: oem_fujitsu.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_fujitsu.obj oem_fujitsu.c
+
+$(TMP_D)\oem_kontron.obj: oem_kontron.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_kontron.obj oem_kontron.c
+
+$(TMP_D)\oem_intel.obj: oem_intel.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_intel.obj oem_intel.c
+
+$(TMP_D)\oem_sun.obj: oem_sun.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_sun.obj oem_sun.c
+
+$(TMP_D)\oem_dell.obj: oem_dell.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_dell.obj oem_dell.c
+
+$(TMP_D)\oem_hp.obj: oem_hp.c
+ $(CC) /c $(CFLAGS_M) /Fo$(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_quanta.obj: oem_quanta.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_quanta.obj oem_quanta.c
+
+$(TMP_D)\oem_newisys.obj: oem_newisys.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\oem_newisys.obj oem_newisys.c
+
+$(TMP_D)\iekanalyzer.obj: iekanalyzer.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\iekanalyzer.obj iekanalyzer.c
+
+$(TMP_D)\ifru_picmg.obj: ifru_picmg.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ifru_picmg.obj ifru_picmg.c
+
+$(TMP_D)\ifru.obj: ifru.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ifru.obj ifru.c
+
+$(TMP_D)\ireset.obj: ireset.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ireset.obj ireset.c
+
+$(TMP_D)\ilan.obj: ilan.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\ilan.obj ilan.c
+
+$(TMP_D)\iserial.obj: iserial.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\iserial.obj iserial.c
+
+$(TMP_D)\isensor.obj: isensor.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\isensor.obj isensor.c
+
+$(TMP_D)\icmd.obj: icmd.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\icmd.obj icmd.c
+
+$(TMP_D)\igetevent.obj: igetevent.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\igetevent.obj igetevent.c
+
+$(TMP_D)\isel.obj: isel.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\isel.obj isel.c
+
+$(TMP_D)\isol.obj: isol.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\isol.obj isol.c
+
+$(TMP_D)\isolwin.obj: isolwin.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\isolwin.obj isolwin.c
+
+$(TMP_D)\itsol.obj: itsol.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\itsol.obj itsol.c
+
+$(TMP_D)\AnsiTerm.obj: AnsiTerm.cpp
+ $(CC) /c $(CFLAGS_W) /Fo$(TMP_D)\AnsiTerm.obj AnsiTerm.cpp
+
+$(TMP_D)\idiscover.obj: idiscover.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\idiscover.obj idiscover.c
+
+$(TMP_D)\iwdt.obj: iwdt.c
+ $(CC) /c $(CFLAGS_M) /Fo$(TMP_D)\iwdt.obj iwdt.c
+
+$(E_EXE): $(E_OBJ)
+ $(LINK) $(LFLAGS) /OUT:$(E_EXE) $(E_OBJ) $(LF_LANPLUS) $(LIBS_PEF) $(LIBS_EX)
+
+ipmi_sample.obj: ipmi_sample.c
+ $(CC) /c $(CFLAGS_SAM) ipmi_sample.c
+
+$(SAMP_LIB): $(CMD_OBJ) mem_if.obj
+ $(CC) /c $(CFLAGS_SAM) ipmilanplus.c
+ $(MKLIB) /OUT:$(SAMP_LIB) /nologo $(CMD_OBJ) mem_if.obj
+ del ipmilanplus.obj
+
+$(SAMP_DLL): $(CMD_OBJ) mem_if.obj
+ $(CC) /D_WINDLL /D_USRDLL /c $(CFLAGS_SAM) ipmilanplus.c
+ $(LINK) /DLL $(LFLAGS) /OUT:$(SAMP_DLL) /def:ipmiutillib.def $(CMD_OBJ) mem_if.obj $(LIBS_PEF) $(LIBS_EX)
+ del ipmilanplus.obj
+
+ipmi_sample.exe: $(SAMP_LIB) ipmi_sample.obj
+ $(LINK) $(LFLAGS) /OUT:ipmi_sample.exe ipmi_sample.obj $(SAMP_LIB) $(LIBS_PEF) $(LIBS_EX)
+
+ipmi_sample2.exe: $(SAMP_LIB) ipmi_sample.c isensor.c ievents.c
+ $(CC) /c $(CFLAGS_SAM) /DGET_SENSORS ipmi_sample.c
+ $(CC) /c $(CFLAGS_SAM) isensor.c
+ $(CC) /c $(CFLAGS_SAM) ievents.c
+ $(LINK) $(LFLAGS) /OUT:ipmi_sample2.exe ipmi_sample.obj isensor.obj ievents.obj $(SAMP_LIB) $(LIBS_PEF) $(LIBS_EX)
+ del isensor.obj ievents.obj
+
+ipmi_sample_evt.obj: ipmi_sample_evt.c $(HEADER)
+ $(CC) /c $(CFLAGS_SAM) ipmi_sample_evt.c
+
+isensor2.obj: isensor.c isensor.h $(HEADER)
+ $(CC) /c /Foisensor2.obj $(CFLAGS_SAM) isensor.c
+
+ievents2.obj: ievents.c ievents.h $(HEADER)
+ $(CC) /c /Foievents2.obj $(CFLAGS_SAM) /DSENSORS_OK ievents.c
+
+ipmi_sample_evt.exe: $(SAMP_LIB) ipmi_sample_evt.obj ievents2.obj isensor2.obj
+ $(LINK) $(LFLAGS) /OUT:ipmi_sample_evt.exe ipmi_sample_evt.obj ievents2.obj isensor2.obj $(SAMP_LIB) $(LIBS_PEF) $(LIBS_EX)
diff --git a/util/ipmiutil2.mak b/util/ipmiutil2.mak
index 8ed0155..8d41f50 100644
--- a/util/ipmiutil2.mak
+++ b/util/ipmiutil2.mak
@@ -120,7 +120,8 @@ clean:
$(RM) *.obj 2>NUL
$(RM) $(TARG_EXE) 2>NUL
$(RM) *.exe 2>NUL
- $(RM) $(TMP_D)\*.obj 2>NUL
+ -$(RM) $(TMP_D)\*.obj 2>NUL
+ -$(RM) *.manifest 2>NUL
distclean:
$(RM) *.obj 2>NUL
diff --git a/util/ipmiutil64.mak b/util/ipmiutil64.mak
index 4c7b315..fa6b88e 100644
--- a/util/ipmiutil64.mak
+++ b/util/ipmiutil64.mak
@@ -410,6 +410,12 @@ ipmi_sample2.exe: $(SAMP_LIB) ipmi_sample.c isensor.c ievents.c
$(LINK) $(LFLAGS) /OUT:ipmi_sample2.exe ipmi_sample.obj isensor.obj ievents.obj $(SAMP_LIB) $(LIBS_PEF) $(LIBS_EX)
del isensor.obj ievents.obj
+ifruset.obj: ifruset.c
+ $(CC) /c $(CFLAGS_SAM) ifruset.c
+
+ifruset.exe: $(SAMP_LIB) ifruset.obj ifru_picmg.obj
+ $(LINK) $(LFLAGS) /OUT:ifruset.exe ifruset.obj ifru_picmg.obj $(SAMP_LIB) $(LIBS_PEF) $(LIBS_EX)
+
ipmi_sample_evt.obj: ipmi_sample_evt.c $(HEADER)
$(CC) /c $(CFLAGS_SAM) ipmi_sample_evt.c
diff --git a/util/ireset.c b/util/ireset.c
index 8116b7d..0bfdeb0 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 = "2.93";
+static char * progver = "2.96";
static char * progname = "ireset";
static uchar ipmi_maj;
static uchar ipmi_min;
@@ -486,7 +486,7 @@ static void show_usage(void)
printf(" -w Wait for BMC ready after reset\n");
printf(" -x show eXtra debug messages\n");
printf(" -y Yes, persist boot options [-befhpms]\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
}
#ifdef METACOMMAND
diff --git a/util/isel.c b/util/isel.c
index c974b24..723ae48 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 = "2.93";
+static char *progver = "2.96";
#ifdef WIN32
#define IDXFILE "sel.idx"
static char idxfile[80] = IDXFILE;
@@ -651,7 +651,7 @@ int i_sel(int argc, char **argv)
char *s1;
printf("%s: version %s\n",progname,progver);
- while ((c = getopt(argc,argv,"a:b:cdef:h:l:m:nprs:uwvx:T:V:J:EYF:P:N:U:R:Z:?")) != EOF)
+ while ((c = getopt(argc,argv,"a:b:cdef:h:l:m:np:rs:uwvx:T:V:J:EYF:P:N:U:R:Z:?")) != EOF)
switch(c) {
case 'a': faddsel = 1; /*undocumented option, to prevent misuse*/
addstr = optarg; /*text string, max 13 bytes*/
@@ -686,13 +686,14 @@ int i_sel(int argc, char **argv)
fsensdesc = 1; /*extended sensor descriptions*/
/* Note that this option does not show event data bytes */
break;
- case 'p': fall = 0; break; /*crit stop (panic) only*/
+ // case 'p': fall = 0; break; /*crit stop (panic) only*/
case 'r': fshowraw = 1; break;
case 's': min_sev = atob(optarg); break; /*show sev >= value*/
case 'u': futc = 1; break;
case 'v': fonlyver = 1; break;
case 'w': fwritesel = 1; break;
case 'x': fdebug = 1; break;
+ case 'p': /* port */
case 'N': /* nodename */
case 'U': /* remote username */
case 'P': /* remote password */
@@ -717,13 +718,13 @@ int i_sel(int argc, char **argv)
printf(" -l5 Show last 5 SEL records (reverse order)\n");
printf(" -r Show uninterpreted raw SEL records in ascii hex\n");
printf(" -n Show nominal/canonical output (same as -c)\n");
- printf(" -p Show only Panic/Critical Stop records\n");
+ //printf(" -p Show only Panic/Critical Stop records\n");
printf(" -s1 Show only Severity >= value (0,1,2,3)\n");
printf(" -u use raw UTC time\n");
printf(" -v Only show version information\n");
printf(" -w Writes new SEL records to syslog\n");
printf(" -x Display extra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(1);
ret = ERR_USAGE;
goto do_exit;
}
@@ -866,10 +867,10 @@ int i_sel(int argc, char **argv)
/* PEF alerts and other log messages fail if low free space,
so show a warning. */
if (vfree < MIN_FREE) {
- printf("WARNING: free space is very low (=%d), need to clear with -c\n",
+ printf("WARNING: free space is very low (=%d), need to clear with -d\n",
vfree);
} else if ((vfree/vsize) < ((vtotal * 20)/100)) {
- printf("WARNING: free space is low (=%d), need to clear with -c\n",
+ printf("WARNING: free space is low (=%d), need to clear with -d\n",
vfree);
}
}
diff --git a/util/iseltime.c b/util/iseltime.c
index 2562202..0d82c90 100644
--- a/util/iseltime.c
+++ b/util/iseltime.c
@@ -75,7 +75,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
/*
* Global variables
*/
-static char * progver = "2.93";
+static char * progver = "2.96";
static char * progname = "iseltime";
static char fdebug = 0;
static char fset = 0;
@@ -139,14 +139,15 @@ time_t utc2local(time_t t)
}
#define TIMESTR_SZ 30
-void show_time(time_t etime)
+void show_time(time_t etime, int doutc)
{
char buf[TIMESTR_SZ];
int bufsz = TIMESTR_SZ;
time_t t;
strcpy(buf,"00/00/00 00:00:00");
- t = utc2local(etime);
+ if (doutc) t = utc2local(etime);
+ else t = etime;
strftime(buf,bufsz, "%x %H:%M:%S", gmtime(&t)); /*or "%x %T"*/
printf("%s\n",buf);
return;
@@ -195,7 +196,7 @@ main(int argc, char **argv)
printf("Usage: %s [-sx -NUPRETVF]\n", progname);
printf(" where -s Set SEL time (usually once a day)\n");
printf(" -x show eXtra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
exit(1);
}
@@ -220,10 +221,10 @@ main(int argc, char **argv)
exit(1);
}
time(&ltime2);
- printf("Current System time: "); show_time(ltime2);
+ printf("Current System time: "); show_time(ltime2,1);
ltime1 = timebuf[0] + (timebuf[1] << 8) + (timebuf[2] << 16) +
(timebuf[3] << 24);
- printf("Current SEL time: "); show_time(ltime1);
+ printf("Current SEL time: "); show_time(ltime1,0);
// if (fdebug) ltime3 = utc2local(ltime1);
@@ -239,7 +240,7 @@ main(int argc, char **argv)
else {
ltime3 = timebuf[0] + (timebuf[1] << 8) + (timebuf[2] << 16) +
(timebuf[3] << 24);
- printf("New SEL time: "); show_time(ltime3);
+ printf("New SEL time: "); show_time(ltime3,0);
}
}
}
diff --git a/util/isensor.c b/util/isensor.c
index ac93411..e5a80e0 100644
--- a/util/isensor.c
+++ b/util/isensor.c
@@ -247,7 +247,7 @@ char *decode_entity_id(int id) {
* Global Data
************************/
static char *progname = "isensor";
-static char *progver = "2.93";
+static char *progver = "2.96";
#ifdef WIN32
static char savefile[] = "%ipmiutildir%\\thresholds.cmd";
#else
@@ -1354,6 +1354,9 @@ int get_sdr_file(char *sdrfile, uchar **sdrlist)
num = 0;
while (fgets(buff, 255, fp)) { num++; }
if (fdebug) printf("Reading %d SDRs from file %s\n",num,sdrfile);
+ if ((psdrcache != NULL) && (nsdrs > 0)) { /*already have sdrcache*/
+ printf("get_sdr_file: Already have cache\n"); /*++++*/
+ }
sdrbuf = malloc(num * SDR_SZ);
if (sdrbuf == NULL) {
fclose(fp);
@@ -1402,8 +1405,10 @@ int get_sdr_cache(uchar **pret)
if ((psdrcache != NULL) && (nsdrs > 0)) { /*already have sdrcache*/
*pret = psdrcache;
if (fdebug) printf("get_sdr_cache: already have cache (%p)\n",*pret);
+ printf("get_sdr_cache: Already have cache\n"); /*++++*/
return(0);
}
+ else printf("get_sdr_cache: Allocating cache\n"); /*++++*/
rv = GetSDRRepositoryInfo(&n,&fdevsdrs);
if (rv != 0) return(rv);
@@ -1434,6 +1439,12 @@ int get_sdr_cache(uchar **pret)
if (rv == 0xC5) { set_reserve(1); i--; } /*retry*/
else break;
} else { /*success*/
+ /* if sdrlen!=len, adjust */
+ if ((len > 5) && (len != (psdr[4] + 5)) ) {
+ if (fdebug) printf("SDR[%x] adjust len from %d to %d\n",
+ recid,psdr[4]+5,len);
+ psdr[4] = len - 5;
+ }
asz += len;
if (recnext == recid) recid = 0xffff;
else recid = recnext;
@@ -1451,19 +1462,23 @@ int get_sdr_cache(uchar **pret)
int find_nsdrs(uchar *pcache)
{
int num = 0;
- int asz = 0;
+ ulong asz = 0;
int i, len;
uchar *sdr;
ushort recid;
if (pcache == NULL) return(num);
- for (i = 0; asz < sz_sdrs; i++)
+ for (i = 0; (int)asz < sz_sdrs; i++)
{
sdr = &pcache[asz];
+ if (sdr[2] != 0x51) { /* Dell SDR length error */
+ printf("SDR[%x] length error at %ld\n",recid,asz);
+ sdr = &pcache[++asz]; /*try it if off-by-one*/
+ }
len = sdr[4] + 5;
recid = sdr[0] + (sdr[1] << 8);
+ if (fdebug) printf("SDR[%x] len=%d i=%d offset=%lx\n",recid,len,i,asz);
asz += len;
- if (fdebug) printf("SDR[%x] len=%d i=%d\n", recid,len,i);
}
num = i;
return(num);
@@ -1565,13 +1580,15 @@ int find_sdr_next(uchar *psdr, uchar *pcache, ushort id)
{
// sdr = &pcache[i * SDR_SZ];
sdr = &pcache[asz];
+ if (sdr[2] != 0x51) /* Dell SDR off-by-one error */
+ sdr = &pcache[++asz];
len = sdr[4] + 5;
recid = sdr[0] + (sdr[1] << 8);
asz += len;
// if (fdebug) printf("SDR[%x] len=%d id=%x i=%d imatch=%d\n",
// recid,len,id,i,imatch);
if (recid == id) imatch = i + 1; /*matches prev, return next one*/
- if (id == 0) { rv = 0; break; }
+ else if (id == 0) { rv = 0; break; } /* 0000 = first one */
if (i == imatch) { rv = 0; break; }
}
if (rv == 0) memcpy(psdr,sdr,len);
@@ -2861,20 +2878,20 @@ ShowPowerOnHours(void)
if (rc == 0 && cc == 0) {
/* show the hours (32-bits) */
hrs = resp[1] | (resp[2] << 8) | (resp[3] << 16) | (resp[4] << 24);
- if (resp[0] == 0) /*avoid div-by-zero*/ i = 1;
- else if (resp[0] == 60) /*normal*/ i = 1;
+ /*60=normal, more is OOB, so avoid div-by-zero*/
+ if ((resp[0] <= 0) || (resp[0] >= 60)) i = 1;
else {
i = 60 / resp[0];
hrs = hrs / i;
}
- printf(" SDR IPMI sensor: Power On Hours \t = %d hours\n",
- hrs);
+ printf(" SDR IPMI sensor: Power On Hours \t = %d hours\n",
+ hrs);
}
if (fdebug) {
- printf("PowerOnHours (rc=%d cc=%x len=%d): ",rc,cc,sresp);
- if (rc == 0)
- for (i = 0; i < sresp; i++) printf("%02x ",resp[i]);
- printf("\n");
+ printf("PowerOnHours (rc=%d cc=%x len=%d): ",rc,cc,sresp);
+ if (rc == 0)
+ for (i = 0; i < sresp; i++) printf("%02x ",resp[i]);
+ printf("\n");
}
return(rc);
}
@@ -2895,16 +2912,16 @@ int SaveThreshold(int id, int sensor_num, int sensor_lo, int sensor_hi,
histr[0] = 0; /*empty string*/
} else {
if (sensor_lo != 0xff) {
- sprintf(lostr,"-l 0x%02x",sensor_lo);
+ sprintf(lostr,"-l 0x%02x",sensor_lo);
} else lostr[0] = 0;
if (sensor_hi != 0xff) {
- sprintf(histr,"-h 0x%02x",sensor_hi);
+ sprintf(histr,"-h 0x%02x",sensor_hi);
} else histr[0] = 0;
}
fd = fopen(savefile,"a+");
if (fd == NULL) return(-1);
fprintf(fd, "ipmiutil sensor -i 0x%04x -n 0x%02x %s %s\n", id, sensor_num,
- lostr,histr);
+ lostr,histr);
fclose(fd);
return(rv);
}
@@ -2932,8 +2949,8 @@ static int get_picmg_addrinfo(uchar a1, uchar a2, uchar *addrdata)
if (rv == 0 && cc != 0) rv = cc;
if (rv == 0) {
if (fdebug) {
- printf("picmg_addr(%02x,%02x)",a1,a2);
- dump_buf("picmg_addr",rdata,rlen,0);
+ printf("picmg_addr(%02x,%02x)",a1,a2);
+ dump_buf("picmg_addr",rdata,rlen,0);
}
memcpy(addrdata,rdata,rlen);
}
@@ -2965,55 +2982,64 @@ int read_sdr_binfile(char *binfile, uchar **pbufret, int *buflen)
#ifdef WIN32
{
ulong flen;
- ret = get_filesize(binfile, &flen);
+ ret = get_filesize(binfile, &flen);
if (ret == 0) len = flen;
else {
- ret = get_LastError();
- printf("Cannot get file size for %s, error %d\n",binfile,ret);
+ ret = get_LastError();
+ printf("Cannot get file size for %s, error %d\n",binfile,ret);
return(ret);
- }
+ }
}
#endif
- fp = fopen(binfile,"r");
+ fp = fopen(binfile,"rb");
if (fp == NULL) {
- ret = get_LastError();
- printf("Cannot open file %s, error %d\n",binfile,ret);
+ ret = get_LastError();
+ printf("Cannot open file %s, error %d\n",binfile,ret);
return(ret);
}
+ fseek(fp, 0L, SEEK_SET);
#ifndef WIN32
- {
- struct stat st;
- /* use fstat to get file size and allocate buffer */
- ret = fstat(fileno(fp), &st);
- len = st.st_size; /*file size in bytes*/
- if (ret != 0) {
- ret = get_LastError();
- printf("Cannot stat file %s, error %d\n",binfile,ret);
+ { /*not windows but Linux, etc.*/
+ struct stat st;
+ /* use fstat to get file size and allocate buffer */
+ ret = fstat(fileno(fp), &st);
+ len = st.st_size; /*file size in bytes*/
+ if (ret != 0) {
+ ret = get_LastError();
+ printf("Cannot stat file %s, error %d\n",binfile,ret);
return(ret);
- }
+ }
}
#endif
- // len = nsdrs * SDR_SZ; /*estimate max size for n sdrs*/
+ /* Could estimate size for nsdrs*SDR_SZ, but we don't yet know nsdrs.
+ * It is better to use the real file size detected above. */
sz_sdrs = len;
pbuf = malloc(len);
- if (fdebug) printf("restore: malloc(%d) pbuf=%p\n",len,pbuf);
+ if (fdebug) printf("sdr_binfile: malloc(%d) pbuf=%p\n",len,pbuf);
if (pbuf == NULL) {
ret = -1;
fclose(fp);
return(ret);
}
+ psdrcache = pbuf;
/*ok, so proceed with restore*/
ret = 0;
len = (int)fread(pbuf, 1, sz_sdrs, fp);
if (len <= 0) {
- ret = get_LastError();
- printf("Error %d reading file %s\n",ret,binfile);
- sz_sdrs = 0; /*for safety*/
+ ret = get_LastError();
+ printf("Error %d reading file %s\n",ret,binfile);
+ sz_sdrs = 0; /*for safety*/
+ } else if (len < sz_sdrs) {
+ /* Show error if this happens in Windows */
+ ret = get_LastError();
+ printf("truncated fread(%s): attempted %d, got %d, error %d\n",
+ binfile,sz_sdrs,len,ret);
+ ret = 0; /*try to keep going*/
}
fclose(fp);
if (fdebug) {
- printf("SDR buffer from file (len=%d,sz=%d)\n",len,sz_sdrs);
- dump_buf("SDR buffer",pbuf,len,1);
+ printf("SDR buffer from file (len=%d,sz=%d)\n",len,sz_sdrs);
+ dump_buf("SDR buffer",pbuf,len,1);
}
*pbufret = pbuf;
*buflen = len;
@@ -3053,17 +3079,17 @@ int i_sensor(int argc, char **argv)
if (strncmp(optarg,"0x",2) == 0) frearm = htoi(&optarg[2]);
else frearm = htoi(optarg); /*was atoi()*/
break;
- case 'c': fsimple = 1; break; /* Canonical/simple output*/
- case 'd': fdump = 1; /* Dump SDRs to a file*/
+ case 'c': fsimple = 1; break; /* Canonical/simple output*/
+ case 'd': fdump = 1; /* Dump SDRs to a file*/
binfile = optarg; break;
- case 'b': fchild = 1; break; /* Bladed, so get child SDRs */
- case 'e': fchild = 1; break; /* Extra bladed child SDRs */
- case 'f': frestore = 1; /* Restore SDRs from a file*/
+ case 'b': fchild = 1; break; /* Bladed, so get child SDRs */
+ case 'e': fchild = 1; break; /* Extra bladed child SDRs */
+ case 'f': frestore = 1; /* Restore SDRs from a file*/
binfile = optarg; break;
case 's': fsimple = 1; break; /* Simple/canonical output */
/*fcanonical==fsimple*/
case 'g':
- rv = get_group_id(optarg);
+ rv = get_group_id(optarg);
if (rv < 0) {
printf("Unrecognized sensor type group (%s)\n",optarg);
ret = ERR_BAD_PARAM;
@@ -3072,27 +3098,27 @@ int i_sensor(int argc, char **argv)
if (fdebug) printf("num sensor type groups = %d\n",fshowgrp);
break;
case 'i':
- fshowidx = 1;
- get_idx_range(optarg);
+ fshowidx = 1;
+ get_idx_range(optarg);
break;
- case 'j': fjumpstart = 1; /* Load SDR cache from a file*/
+ case 'j': fjumpstart = 1; /* Load SDR cache from a file*/
binfile = optarg; break;
case 't': fshowthr = 1; break;
case 'v': fshowthr = 1; sens_verbose = 1; break;
case 'p': fsavethresh = 1; break;
- case 'q': fshowthr = 2; fwrap = 1; break;
+ case 'q': fshowthr = 2; fwrap = 1; break;
case 'r': frawsdr = 1; break;
- case 'm': /* specific MC, 3-byte address, e.g. "409600" */
- g_bus = htoi(&optarg[0]); /*bus/channel*/
- g_sa = htoi(&optarg[2]); /*device slave address*/
- g_lun = htoi(&optarg[4]); /*LUN*/
+ case 'm': /* specific MC, 3-byte address, e.g. "409600" */
+ g_bus = htoi(&optarg[0]); /*bus/channel*/
+ g_sa = htoi(&optarg[2]); /*device slave address*/
+ g_lun = htoi(&optarg[4]); /*LUN*/
if (optarg[6] == 's') {
- g_addrtype = ADDR_SMI; s1 = "SMI";
+ g_addrtype = ADDR_SMI; s1 = "SMI";
} else { g_addrtype = ADDR_IPMB; s1 = "IPMB"; }
fset_mc = 1;
printf("set MC at %s bus=%x sa=%x lun=%x\n",
- s1,g_bus,g_sa,g_lun);
- break;
+ s1,g_bus,g_sa,g_lun);
+ break;
case 'o':
fgetmem = 1;
break;
@@ -3125,22 +3151,22 @@ int i_sensor(int argc, char **argv)
case 'u': /* specify unique thresholds in hex or float */
/* raw hex format: 0xLNLCLUHNHCHU, all 6 required */
if (strncmp(optarg,"0x",2) == 0) { /*raw hex thresholds*/
- sensor_thr[0] = htoi(&optarg[2]); /*lo noncrit*/
- sensor_thr[1] = htoi(&optarg[4]); /*lo crit*/
- sensor_thr[2] = htoi(&optarg[6]); /*lo unrec*/
- sensor_thr[3] = htoi(&optarg[8]); /*hi noncrit*/
- sensor_thr[4] = htoi(&optarg[10]); /*hi crit*/
- sensor_thr[5] = htoi(&optarg[12]); /*hi unrec*/
+ sensor_thr[0] = htoi(&optarg[2]); /*lo noncrit*/
+ sensor_thr[1] = htoi(&optarg[4]); /*lo crit*/
+ sensor_thr[2] = htoi(&optarg[6]); /*lo unrec*/
+ sensor_thr[3] = htoi(&optarg[8]); /*hi noncrit*/
+ sensor_thr[4] = htoi(&optarg[10]); /*hi crit*/
+ sensor_thr[5] = htoi(&optarg[12]); /*hi unrec*/
/* validate sensor threshold ordering */
rv = validate_thresholds(&sensor_thr[0],0,NULL);
- if (rv == 0) {
- sensor_lo = sensor_thr[0];
- sensor_hi = sensor_thr[3];
+ if (rv == 0) {
+ sensor_lo = sensor_thr[0];
+ sensor_hi = sensor_thr[3];
fsetthresh = 3; /*indicates unique raw thresholds */
- } else {
+ } else {
ret = ERR_BAD_PARAM;
goto do_exit;
- }
+ }
} else {
/* assume float input thresholds, with ':' separator*/
/* format LN:LC:LU:HN:HC:HU */
@@ -3166,64 +3192,64 @@ int i_sensor(int argc, char **argv)
}
/* validate sensor threshold ordering later */
// rv = validate_thresholds(&sensor_thrf[0],1,NULL);
- // if (rv == 0) {
- sensor_lo_f = sensor_thrf[0];
- sensor_hi_f = sensor_thrf[3];
+ // if (rv == 0) {
+ sensor_lo_f = sensor_thrf[0];
+ sensor_hi_f = sensor_thrf[3];
fsetthresh = 4; /*indicates unique float thresholds */
- // } else {
+ // } else {
// ret = ERR_BAD_PARAM;
// goto do_exit;
- // }
+ // }
} /*end-else -u float thresholds*/
break;
- case 'w': fwrap = 1; break;
- case 'x': fdebug = 1; break;
+ case 'w': fwrap = 1; break;
+ case 'x': fdebug = 1; break;
case 'L': /* Loop */
- nloops = atoi(optarg);
- fdoloop = 1;
- break;
- case 'V': /* priv level */
+ nloops = atoi(optarg);
+ fdoloop = 1;
+ break;
+ case 'V': /* priv level */
fprivset = 1;
- case 'N': /* nodename */
- case 'U': /* remote username */
- case 'P': /* remote password */
- case 'R': /* remote password */
- case 'E': /* get password from IPMI_PASSWORD environment var */
- case 'F': /* force driver type */
- case 'T': /* auth type */
- case 'J': /* cipher suite */
- case 'Y': /* prompt for remote password */
- case 'Z': /* set local MC address */
- parse_lan_options(c,optarg,fdebug);
- break;
- default: /*usage*/
- printf("Usage: %s [-abcdefghijlmnprstuvwxL -NUPREFTVY]\n",progname);
- printf("where -x shows eXtra debug messages\n");
- printf(" -a snum reArms the sensor (snum) for events\n");
- printf(" -b show Bladed child MCs for PICMG (same as -e)\n");
- printf(" -c displays a simpler, Canonical output fmt\n");
- printf(" -d file Dump SDRs to a binary file\n");
+ case 'N': /* nodename */
+ case 'U': /* remote username */
+ case 'P': /* remote password */
+ case 'R': /* remote password */
+ case 'E': /* get password from IPMI_PASSWORD environment var */
+ case 'F': /* force driver type */
+ case 'T': /* auth type */
+ case 'J': /* cipher suite */
+ case 'Y': /* prompt for remote password */
+ case 'Z': /* set local MC address */
+ parse_lan_options(c,optarg,fdebug);
+ break;
+ default: /*usage*/
+ printf("Usage: %s [-abcdefghijlmnprstuvwxL -NUPREFTVY]\n",progname);
+ printf("where -x shows eXtra debug messages\n");
+ printf(" -a snum reArms the sensor (snum) for events\n");
+ printf(" -b show Bladed child MCs for PICMG (same as -e)\n");
+ printf(" -c displays a simpler, Canonical output fmt\n");
+ printf(" -d file Dump SDRs to a binary file\n");
printf(" -e show Every bladed child MC for PICMG\n");
// printf(" -f file Restore SDRs from a binary dump file\n");
- printf(" -g fan show only this sensor type group\n");
- printf(" -h tval specifies the Highest threshold to set\n");
- printf(" -i id only show these sensor ids\n");
- printf(" -j file Jump-start SDR cache from a binary file\n");
- printf(" -l tval specifies the Lowest threshold to set\n");
- printf(" -m002000 specific MC (bus 00,sa 20,lun 00)\n");
- printf(" -n snum specifies the sensor Number to set hi/lo\n");
- printf(" -o output memory DIMM information\n");
- printf(" -p persist the threshold being set\n");
- printf(" -q shows threshold values in d:d:d format\n");
- printf(" -r show Raw SDR bytes\n");
- printf(" -s displays a Simpler output format\n");
- printf(" -t shows Threshold values in text format\n");
- printf(" -u thr set Unique threshold values (e.g. 3:2:1:48:49:50)\n");
- printf(" -v Verbose: thresholds, max/min, hysteresis\n");
- printf(" -w Wrap thresholds on sensor line\n");
- printf(" -L n Loop n times\n");
- print_lan_opt_usage();
- ret = ERR_USAGE;
+ printf(" -g fan show only this sensor type group\n");
+ printf(" -h tval specifies the Highest threshold to set\n");
+ printf(" -i id only show these sensor ids\n");
+ printf(" -j file Jump-start SDR cache from a binary file\n");
+ printf(" -l tval specifies the Lowest threshold to set\n");
+ printf(" -m002000 specific MC (bus 00,sa 20,lun 00)\n");
+ printf(" -n snum specifies the sensor Number to set hi/lo\n");
+ printf(" -o output memory DIMM information\n");
+ printf(" -p persist the threshold being set\n");
+ printf(" -q shows threshold values in d:d:d format\n");
+ printf(" -r show Raw SDR bytes\n");
+ printf(" -s displays a Simpler output format\n");
+ printf(" -t shows Threshold values in text format\n");
+ printf(" -u thr set Unique threshold values (e.g. 3:2:1:48:49:50)\n");
+ printf(" -v Verbose: thresholds, max/min, hysteresis\n");
+ printf(" -w Wrap thresholds on sensor line\n");
+ printf(" -L n Loop n times\n");
+ print_lan_opt_usage(0);
+ ret = ERR_USAGE;
goto do_exit;
}
if (fjumpstart && fchild) {
@@ -3234,19 +3260,19 @@ int i_sensor(int argc, char **argv)
fremote = is_remote();
#ifndef WIN32
if (fremote == 0) {
- /* only run this as superuser for accessing IPMI devices. */
- i = geteuid();
- if (i > 1) {
- printf("Not superuser (%d)\n", i);
- ret = ERR_NOT_ALLOWED;
+ /* only run this as superuser for accessing IPMI devices. */
+ i = geteuid();
+ if (i > 1) {
+ printf("Not superuser (%d)\n", i);
+ ret = ERR_NOT_ALLOWED;
goto do_exit;
- }
+ }
}
#endif
if (fremote) {
if (!fprivset) {
/* on many systems, getting the SDR Reservation ID requires admin */
- /* if ((fsetthresh != 0) || (frearm != 0)) also require admin */
+ /* if ((fsetthresh != 0) || (frearm != 0)) also require admin */
parse_lan_options('V',"4",0);
}
}
@@ -3259,8 +3285,8 @@ int i_sensor(int argc, char **argv)
ipmi_maj = devrec[4] & 0x0f;
ipmi_min = devrec[4] >> 4;
if ((devrec[1] & 0x80) == 0x80) fdevsdrs = 1;
- vend_id = devrec[6] + (devrec[7] << 8) + (devrec[8] << 16);
- prod_id = devrec[9] + (devrec[10] << 8);
+ vend_id = devrec[6] + (devrec[7] << 8) + (devrec[8] << 16);
+ prod_id = devrec[9] + (devrec[10] << 8);
if (vend_id == VENDOR_NSC) { /*NSC mBMC*/
pstr = "mBMC";
fmBMC = 1;
@@ -3271,11 +3297,14 @@ int i_sensor(int argc, char **argv)
fmBMC = 0;
if (is_romley(vend_id,prod_id)) fRomley = 1;
if (prod_id == 0x003E || fRomley) /*Urbanna NSN2U,CG2100*/
- set_max_kcs_loops(URNLOOPS); /*longer KCS timeout*/
+ set_max_kcs_loops(URNLOOPS); /*longer KCS timeout*/
+ } else if ((vend_id == VENDOR_SUPERMICRO)
+ || (vend_id == VENDOR_SUPERMICROX)) {
+ set_max_kcs_loops(URNLOOPS); /*longer KCS timeout*/
} else { /* Other products */
pstr = "BMC";
fmBMC = 0;
- if (vend_id == VENDOR_NEC) fdevsdrs = 0;
+ if (vend_id == VENDOR_NEC) fdevsdrs = 0;
}
show_devid( devrec[2], devrec[3], ipmi_maj, ipmi_min);
// "-- %s version %x.%x, IPMI version %d.%d \n", pstr,
@@ -3298,8 +3327,8 @@ int i_sensor(int argc, char **argv)
/* fchild set above if -b is specified to get Blade child SDRs */
/* npass = 2 will get both SdrRep & DevSdr passes on CMM */
if (fpicmg && fdevsdrs) {
- npass = 2;
- g_addrtype = ADDR_IPMB;
+ npass = 2;
+ g_addrtype = ADDR_IPMB;
}
#endif
g_sa = BMC_SA;
@@ -3309,23 +3338,23 @@ int i_sensor(int argc, char **argv)
if (fremote) printf("Cannot get memory DIMM information remotely.\n");
else {
int msz;
- char desc[80];
- char szstr[25];
+ char desc[80];
+ char szstr[25];
ret = -1;
- for (j = 0; j < 1; j++) {
- for (i = 0; i < 16; i++) {
- rv = get_MemDesc(j, i, desc,&msz);
- if (rv == 0) {
- if (msz == 0) strcpy(szstr,"not present");
- else if (msz & 0x8000)
- sprintf(szstr,"size=%dKB",(msz & 0x7FFF));
- else sprintf(szstr,"size=%dMB",msz);
- printf("Memory Device (%d,%d): %s : %s\n",
- j,i,desc,szstr);
+ for (j = 0; j < 1; j++) {
+ for (i = 0; i < 16; i++) {
+ rv = get_MemDesc(j, i, desc,&msz);
+ if (rv == 0) {
+ if (msz == 0) strcpy(szstr,"not present");
+ else if (msz & 0x8000)
+ sprintf(szstr,"size=%dKB",(msz & 0x7FFF));
+ else sprintf(szstr,"size=%dMB",msz);
+ printf("Memory Device (%d,%d): %s : %s\n",
+ j,i,desc,szstr);
ret = 0;
- }
- }
- }
+ }
+ }
+ }
} /*end-else*/
goto do_exit;
}
@@ -3336,20 +3365,20 @@ int i_sensor(int argc, char **argv)
int len;
ret = get_sdr_cache(&pbuf);
if (ret == 0) {
- fp = fopen(binfile,"w");
- if (fp == NULL) {
- ret = get_LastError();
- printf("Cannot open file %s, error %d\n",binfile,ret);
- } else {
- printf("Writing SDR size %d to %s ...\n",sz_sdrs,binfile);
- len = (int)fwrite(pbuf, 1, sz_sdrs, fp);
- fclose(fp);
- if (len <= 0) {
- ret = get_LastError();
- printf("Error %d writing file %s\n",ret,binfile);
- } else ret = 0;
- }
- free_sdr_cache(pbuf);
+ fp = fopen(binfile,"wb");
+ if (fp == NULL) {
+ ret = get_LastError();
+ printf("Cannot open file %s, error %d\n",binfile,ret);
+ } else {
+ printf("Writing SDR size %d to %s ...\n",sz_sdrs,binfile);
+ len = (int)fwrite(pbuf, 1, sz_sdrs, fp);
+ fclose(fp);
+ if (len <= 0) {
+ ret = get_LastError();
+ printf("Error %d writing file %s\n",ret,binfile);
+ } else ret = 0;
+ }
+ free_sdr_cache(pbuf);
}
goto do_exit;
} /*endif fdump*/
@@ -3363,17 +3392,17 @@ int i_sensor(int argc, char **argv)
ret = read_sdr_binfile(binfile,&pbuf,&slen);
if (ret == 0) { /*successful, so write SDRs */
nsdrs = find_nsdrs(pbuf);
- printf("Ready to restore %d SDRs\n",nsdrs);
- set_reserve(1);
- ret = sdr_clear_repo(fdevsdrs);
+ printf("Ready to restore %d SDRs\n",nsdrs);
+ set_reserve(1);
+ ret = sdr_clear_repo(fdevsdrs);
if (ret != 0) {
- printf("SDR Clear Repository error %d\n",ret);
- goto do_exit;
+ printf("SDR Clear Repository error %d\n",ret);
+ goto do_exit;
}
id = 0;
- while(find_sdr_next(sdr,pbuf,id) == 0) {
+ while(find_sdr_next(sdr,pbuf,id) == 0) {
id = sdr[0] + (sdr[1] << 8);
- if (fdebug) printf("adding SDR[%x]\n",id);
+ if (fdebug) printf("adding SDR[%x]\n",id);
set_reserve(1);
ret = sdr_add_record(sdr,fdevsdrs);
if (ret != 0) {
@@ -3394,7 +3423,7 @@ int i_sensor(int argc, char **argv)
if (ret != 0) fjumpstart = 0; /* use normal method if error*/
else { /* set this as the SDR cache */
psdrcache = pbuf;
- sz_sdrs = slen;
+ sz_sdrs = slen;
nsdrs = find_nsdrs(pbuf);
if (fdebug) printf("jumpstart cache: nsdrs=%d size=%d\n",nsdrs,slen);
}
@@ -3404,13 +3433,13 @@ int i_sensor(int argc, char **argv)
{
if (fjumpstart) ; /*already got this above*/
else {
- ret = GetSDRRepositoryInfo(&j,&fdevsdrs);
- if (fdebug) printf("GetSDRRepositoryInfo: ret=%x nSDRs=%d\n",ret,j);
- if (ret == 0 && j == 0) {
- printf("SDR Repository is empty\n");
- goto do_exit;
- }
- nsdrs = j;
+ ret = GetSDRRepositoryInfo(&j,&fdevsdrs);
+ if (fdebug) printf("GetSDRRepositoryInfo: ret=%x nSDRs=%d\n",ret,j);
+ if (ret == 0 && j == 0) {
+ printf("SDR Repository is empty\n");
+ goto do_exit;
+ }
+ nsdrs = j;
}
/* show header for SDR records */
@@ -3427,43 +3456,52 @@ int i_sensor(int argc, char **argv)
else recid = 0;
while (recid != 0xffff)
{
- if (fjumpstart) {
- ret = find_sdr_next(sdrdata,psdrcache,recid);
- if (ret != 0) { ret = 0; break; } /*end of sdrs*/
- recnext = sdrdata[0] + (sdrdata[1] << 8); /*same as recid*/
+ if (fjumpstart) {
+ ret = find_sdr_next(sdrdata,psdrcache,recid);
+ if (ret != 0) { /*end of sdrs*/
+ if (fdebug) printf("find_sdr_next(%04x): ret = %d\n", recid,ret);
+ ret = 0; break;
+ }
+ recnext = sdrdata[0] + (sdrdata[1] << 8); /*same as recid*/
+ if (fdebug) printf("find_sdr_next(%04x): ret = %d, next=%04x\n",
+ recid,ret,recnext);
+ if (recid > 0 && recnext == 0) {
+ if (fdebug) printf("Error recid=%04x recnext=%04x\n",recid,recnext);
+ ret = 0; break;
+ }
sz = sdrdata[4] + 5;
- } else {
- ret = GetSDR(recid,&recnext,sdrdata,sizeof(sdrdata),&sz);
- if (fdebug)
- printf("GetSDR[%04x]: ret = %x, next=%x\n",recid,ret,recnext);
- if (ret != 0) {
- if (ret > 0) { /* ret is a completion code error */
- printf("%04x GetSDR error 0x%02x %s, rlen=%d\n",recid,ret,
+ } else {
+ ret = GetSDR(recid,&recnext,sdrdata,sizeof(sdrdata),&sz);
+ if (fdebug)
+ printf("GetSDR[%04x]: ret = %x, next=%x\n",recid,ret,recnext);
+ if (ret != 0) {
+ if (ret > 0) { /* ret is a completion code error */
+ printf("%04x GetSDR error 0x%02x %s, rlen=%d\n",recid,ret,
decode_cc((ushort)0,(uchar)ret),sz);
if (ret == 0xC5) { /* lost Reservation ID, retry */
- /* This means that some other IPMI software has
- * requested a Reservation before we finished, so
- * we need to refresh the Reservation ID * retry. */
- fDoReserve = 1; /* get a new SDR Reservation ID */
- ret = GetSDR(recid,&recnext,sdrdata,sizeof(sdrdata),&sz);
- if (fdebug)
- printf("GetSDR[%04x]: ret = %x, next=%x\n",recid,ret,
+ /* This means that some other IPMI software has
+ * requested a Reservation before we finished, so
+ * we need to refresh the Reservation ID * retry. */
+ fDoReserve = 1; /* get a new SDR Reservation ID */
+ ret = GetSDR(recid,&recnext,sdrdata,sizeof(sdrdata),&sz);
+ if (fdebug)
+ printf("GetSDR[%04x]: ret = %x, next=%x\n",recid,ret,
recnext);
- }
- } else printf("%04x GetSDR error %d, rlen = %d\n", recid,ret,sz);
- if (sz < MIN_SDR_SZ) { /* don't have recnext, so abort */
- break;
- } /* else fall through & continue */
- }
- } /*end-else*/
- if (ret == 0) { /* (ret == 0) OK, got full SDR */
- if (fdebug) {
- dump_buf("got SDR",sdrdata,sz,0);
- }
- if (sz < MIN_SDR_SZ) goto NextSdr;
+ }
+ } else printf("%04x GetSDR error %d, rlen = %d\n", recid,ret,sz);
+ if (sz < MIN_SDR_SZ) { /* don't have recnext, so abort */
+ break;
+ } /* else fall through & continue */
+ }
+ } /*end-else*/
+ if (ret == 0) { /* (ret == 0) OK, got full SDR */
+ if (fdebug) {
+ dump_buf("got SDR",sdrdata,sz,0);
+ }
+ if (sz < MIN_SDR_SZ) goto NextSdr;
/* if recid == 0, get real record id */
if (recid == 0) recid = sdrdata[0] + (sdrdata[1] << 8);
- if (fshowgrp > 0) {
+ if (fshowgrp > 0) {
for (i = 0; i < fshowgrp; i++) {
uchar styp;
if (sdrdata[3] == 0x03) styp = sdrdata[10]; /*EvtOnly*/
@@ -3479,64 +3517,64 @@ int i_sensor(int argc, char **argv)
if ((sensor_num == INIT_SNUM) || (sdrdata[7] == sensor_num)
|| fsetthresh) {
/* if -n not set or if -n matches, parse and show the SDR */
- ShowSDR("",sdrdata);
+ ShowSDR("",sdrdata);
} /* else filter SDRs if not matching -n sensor_num */
#ifdef PICMG_CHILD
- /*
- * Special logic for blade child MCs in PICMG ATCA systems
- * if fchild, try all child MCs within the chassis.
- * SDR type 12 capabilities bits (sdrdata[8]):
- * 80 = Chassis Device
- * 40 = Bridge
- * 20 = IPMB Event Generator
- * 10 = IPMB Event Receiver
- * 08 = FRU Device
- * 04 = SEL Device
- * 02 = SDR Repository Device
- * 01 = Sensor Device
- * But all child MCs use Device SDRs anyway.
- */
- if (fpicmg && fchild && (sdrdata[3] == 0x12)) { /* PICMG MC DLR */
- int _recid, _recnext, _sz;
- uchar _sdrdata[MAX_SDR_SIZE];
- int devsdrs_save;
- uchar cc;
-
- /* save the BMC globals, use IPMB MC */
- devsdrs_save = fdevsdrs;
- fdevsdrs = 1; /* use Device SDRs for the children*/
- if (fdebug)
- printf(" --- IPMB MC (sa=%02x cap=%02x id=%02x devsdrs=%d):\n",
- sdrdata[5],sdrdata[8],sdrdata[12],fdevsdrs);
- fDoReserve = 1; /* get a new SDR Reservation ID */
- ipmi_set_mc(PICMG_SLAVE_BUS,sdrdata[5],sdrdata[6],g_addrtype);
-
- _sz = 16;
- ret = ipmi_cmd_mc(GET_DEVICE_ID,NULL,0,_sdrdata,&_sz,&cc,fdebug);
- if (ret == 0 && cc == 0) {
- /* Get the SDRs from the IPMB MC */
- _recid = 0;
- while (_recid != 0xffff)
- {
- ret = GetSDR(_recid,&_recnext,_sdrdata,sizeof(_sdrdata),&_sz);
- if (ret != 0) {
- printf("%04x GetSDR error %d, rlen = %d\n",_recid,ret,_sz);
- break;
- }
- else if (_sz >= MIN_SDR_SZ)
+ /*
+ * Special logic for blade child MCs in PICMG ATCA systems
+ * if fchild, try all child MCs within the chassis.
+ * SDR type 12 capabilities bits (sdrdata[8]):
+ * 80 = Chassis Device
+ * 40 = Bridge
+ * 20 = IPMB Event Generator
+ * 10 = IPMB Event Receiver
+ * 08 = FRU Device
+ * 04 = SEL Device
+ * 02 = SDR Repository Device
+ * 01 = Sensor Device
+ * But all child MCs use Device SDRs anyway.
+ */
+ if (fpicmg && fchild && (sdrdata[3] == 0x12)) { /* PICMG MC DLR */
+ int _recid, _recnext, _sz;
+ uchar _sdrdata[MAX_SDR_SIZE];
+ int devsdrs_save;
+ uchar cc;
+
+ /* save the BMC globals, use IPMB MC */
+ devsdrs_save = fdevsdrs;
+ fdevsdrs = 1; /* use Device SDRs for the children*/
+ if (fdebug)
+ printf(" --- IPMB MC (sa=%02x cap=%02x id=%02x devsdrs=%d):\n",
+ sdrdata[5],sdrdata[8],sdrdata[12],fdevsdrs);
+ fDoReserve = 1; /* get a new SDR Reservation ID */
+ ipmi_set_mc(PICMG_SLAVE_BUS,sdrdata[5],sdrdata[6],g_addrtype);
+
+ _sz = 16;
+ ret = ipmi_cmd_mc(GET_DEVICE_ID,NULL,0,_sdrdata,&_sz,&cc,fdebug);
+ if (ret == 0 && cc == 0) {
+ /* Get the SDRs from the IPMB MC */
+ _recid = 0;
+ while (_recid != 0xffff)
+ {
+ ret = GetSDR(_recid,&_recnext,_sdrdata,sizeof(_sdrdata),&_sz);
+ if (ret != 0) {
+ printf("%04x GetSDR error %d, rlen = %d\n",_recid,ret,_sz);
+ break;
+ }
+ else if (_sz >= MIN_SDR_SZ)
ShowSDR(" ",_sdrdata);
- if (_recnext == _recid) _recid = 0xffff;
- else _recid = _recnext;
- } /*end while*/
- } /*endif ret==0*/
+ if (_recnext == _recid) _recid = 0xffff;
+ else _recid = _recnext;
+ } /*end while*/
+ } /*endif ret==0*/
- /* restore BMC globals */
- fdevsdrs = devsdrs_save;
- ipmi_restore_mc();
- fDoReserve = 1; /* get a new SDR Reservation ID */
- } /*endif fpicmg && fchild*/
+ /* restore BMC globals */
+ fdevsdrs = devsdrs_save;
+ ipmi_restore_mc();
+ fDoReserve = 1; /* get a new SDR Reservation ID */
+ } /*endif fpicmg && fchild*/
#endif
if (fdebug) printf("fsetthresh=%d snum=%02x(%02x) sa=%02x(%02x)\n",
@@ -3546,21 +3584,21 @@ int i_sensor(int argc, char **argv)
{
/* setting threshold, compute threshold raw values */
if (fsetthresh == 2) { /*set from float*/
- if (fdebug)
+ if (fdebug)
printf("lof=%.2f hif=%.2f\n", sensor_lo_f,sensor_hi_f);
- if (sensor_lo_f != 0)
- sensor_lo = FloatToRaw(sensor_lo_f,sdrdata,0);
- if (sensor_hi_f != 0)
- sensor_hi = FloatToRaw(sensor_hi_f,sdrdata,0);
+ if (sensor_lo_f != 0)
+ sensor_lo = FloatToRaw(sensor_lo_f,sdrdata,0);
+ if (sensor_hi_f != 0)
+ sensor_hi = FloatToRaw(sensor_hi_f,sdrdata,0);
} else if (fsetthresh == 1) { /*raw thresholds*/
- if (sensor_hi != 0xff)
+ if (sensor_hi != 0xff)
sensor_hi_f = RawToFloat(sensor_hi,sdrdata);
- if (sensor_lo != 0xff)
+ if (sensor_lo != 0xff)
sensor_lo_f = RawToFloat(sensor_lo,sdrdata);
} else if (fsetthresh == 3) { /*unique raw thresholds*/
- if (sensor_hi != 0xff)
+ if (sensor_hi != 0xff)
sensor_hi_f = RawToFloat(sensor_hi,sdrdata);
- if (sensor_lo != 0xff)
+ if (sensor_lo != 0xff)
sensor_lo_f = RawToFloat(sensor_lo,sdrdata);
} else if (fsetthresh == 4) { /*set unique from float*/
i = fill_thresholds(&sensor_thrf[0], sdrdata);
@@ -3575,23 +3613,23 @@ int i_sensor(int argc, char **argv)
sensor_hi_f = sensor_thrf[j]; break; }
}
}
- if (fdebug)
+ if (fdebug)
printf("lof=%.2f hif=%.2f\n", sensor_lo_f,sensor_hi_f);
/* convert thrf (float) to thr (raw) */
- if (sensor_lo_f != 0) {
- sensor_lo = FloatToRaw(sensor_lo_f,sdrdata,0);
- sensor_thr[0] = FloatToRaw(sensor_thrf[0],sdrdata,0);
- sensor_thr[1] = FloatToRaw(sensor_thrf[1],sdrdata,0);
- sensor_thr[2] = FloatToRaw(sensor_thrf[2],sdrdata,0);
+ if (sensor_lo_f != 0) {
+ sensor_lo = FloatToRaw(sensor_lo_f,sdrdata,0);
+ sensor_thr[0] = FloatToRaw(sensor_thrf[0],sdrdata,0);
+ sensor_thr[1] = FloatToRaw(sensor_thrf[1],sdrdata,0);
+ sensor_thr[2] = FloatToRaw(sensor_thrf[2],sdrdata,0);
}
- if (sensor_hi_f != 0) {
- sensor_hi = FloatToRaw(sensor_hi_f,sdrdata,0);
- sensor_thr[3] = FloatToRaw(sensor_thrf[3],sdrdata,0);
- sensor_thr[4] = FloatToRaw(sensor_thrf[4],sdrdata,0);
- sensor_thr[5] = FloatToRaw(sensor_thrf[5],sdrdata,0);
+ if (sensor_hi_f != 0) {
+ sensor_hi = FloatToRaw(sensor_hi_f,sdrdata,0);
+ sensor_thr[3] = FloatToRaw(sensor_thrf[3],sdrdata,0);
+ sensor_thr[4] = FloatToRaw(sensor_thrf[4],sdrdata,0);
+ sensor_thr[5] = FloatToRaw(sensor_thrf[5],sdrdata,0);
}
- /* validate threshold ordering */
- if (validate_thresholds(sensor_thrf,1,sdrdata) != 0) {
+ /* validate threshold ordering */
+ if (validate_thresholds(sensor_thrf,1,sdrdata) != 0) {
ret = ERR_BAD_PARAM;
goto do_exit;
}
@@ -3603,30 +3641,30 @@ int i_sensor(int argc, char **argv)
else fsetfound = recid;
}
} /*endif fsetthresh */
- } /*endif ok, got full SDR */
+ } /*endif ok, got full SDR */
NextSdr:
- if (fshowidx) {
+ if (fshowidx) {
/* if we have already read the last in the range, done. */
if (recid >= sensor_idxN) break; // recnext = 0xffff; // break;
}
if (fjumpstart) recid = recnext;
else {
- if (recnext == recid) recid = 0xffff; /*break;*/
+ if (recnext == recid) recid = 0xffff; /*break;*/
else recid = recnext;
}
} /*end while recid*/
if (fdoloop && (nloops > 1)) {
printf("\n"); /* output an empty separator line */
- os_usleep(1,0); /*delay 1 sec between loops*/
+ os_usleep(1,0); /*delay 1 sec between loops*/
}
} /*end for nloops*/
if (npass > 1) { /* npass==2 for PICMG */
- /* Switch fdevsdrs from Device to Repository */
- if (fdevsdrs == 0) fdevsdrs = 1;
- else fdevsdrs = 0;
- fDoReserve = 1; /* get a new SDR Reservation ID */
+ /* Switch fdevsdrs from Device to Repository */
+ if (fdevsdrs == 0) fdevsdrs = 1;
+ else fdevsdrs = 0;
+ fDoReserve = 1; /* get a new SDR Reservation ID */
}
} /*end for npass*/
@@ -3654,19 +3692,19 @@ NextSdr:
printf(" set(%02x): %02x %02x \n",
sensor_num,sensor_lo,sensor_hi);
#endif
- if (fsetthresh == 3 || fsetthresh == 4) {
+ if (fsetthresh == 3 || fsetthresh == 4) {
/* apply unique sensor thresholds */
pset = &sensor_thr[0];
- } else pset = NULL; /* use just hi/lo */
+ } else pset = NULL; /* use just hi/lo */
ret = SetSensorThresholds(sensor_num,sensor_hi,sensor_lo,tdata,pset);
printf("SetSensorThreshold[%02x] to lo=%02x(%4.3f) hi=%02x(%4.3f), ret = %d\n",
sensor_num,sensor_lo,sensor_lo_f,sensor_hi,sensor_hi_f,ret);
- if (fsavethresh && ret == 0) {
+ if (fsavethresh && ret == 0) {
recid = fsetfound;
- rv = SaveThreshold(recid,sensor_num,sensor_lo,sensor_hi,pset);
- if (rv == 0)
- printf("Saved thresholds for sensor %02x\n",sensor_num);
- }
+ rv = SaveThreshold(recid,sensor_num,sensor_lo,sensor_hi,pset);
+ if (rv == 0)
+ printf("Saved thresholds for sensor %02x\n",sensor_num);
+ }
fsetthresh = 0; /*only set threshold once*/
}
diff --git a/util/iserial.c b/util/iserial.c
index ce00ed3..07fc3cc 100644
--- a/util/iserial.c
+++ b/util/iserial.c
@@ -155,7 +155,7 @@ typedef struct
/*
* Global variables
*/
-static char * progver = "2.93";
+static char * progver = "2.96";
static char * progname = "iserial";
static int vend_id = 0;
static int prod_id = 0;
@@ -942,7 +942,7 @@ main(int argc, char **argv)
printf(" -t Configure serial port for shared Terminal Mode & Console (same as -c)\n");
printf(" -v4 access priVilege: 4=Admin, 3=Operator, 2=User\n");
printf(" -x eXtra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto do_exit;
}
@@ -1237,8 +1237,7 @@ main(int argc, char **argv)
#ifdef TEST
/* This MUX reading is volatile and may not be accurate */
else if (ival == CMDID_MUX) {
- /* Apparently this always shows 0x01 even if System. */
- if (pc[0] & 0x01 == 1) printf("%c BMC",bdelim);
+ if ((pc[0] & 0x01) == 1) printf("%c BMC",bdelim);
else printf("%c System",bdelim); /*BIOS*/
}
#endif
diff --git a/util/isol.c b/util/isol.c
index 381668e..50b0caf 100644
--- a/util/isol.c
+++ b/util/isol.c
@@ -165,7 +165,7 @@ void dbglog( char *pattn, ... ); /*local prototype*/
/*
* Global variables
*/
-static char * progver = "2.93";
+static char * progver = "2.96";
static char * progname = "isol";
static char fdebug = 0;
static char fpicmg = 0;
@@ -1114,7 +1114,7 @@ static void show_usage(void)
printf(" -v debug log filename (default=isoldbg.log)\n");
printf(" -x show eXtra debug messages in debug log\n");
printf(" -z show even more debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(1);
}
#ifdef METACOMMAND
@@ -1138,7 +1138,7 @@ main(int argc, char **argv)
parse_lan_options('V',"2",0); /*default to user priv*/
- while ( (c = getopt( argc, argv,"ac:dei:k:ln:o:rs:t:u:wv:xzEF:J:N:P:R:T:U:V:YZ:?")) != EOF )
+ while ( (c = getopt( argc, argv,"ac:dei:k:ln:o:p:rs:t:u:wv:xzEF:J:N:P:R:T:U:V:YZ:?")) != EOF )
switch(c) {
case 'a': factivate = 1; break; /*activate*/
case 'd': fdeactivate = 1; break; /*deactivate*/
@@ -1183,6 +1183,7 @@ main(int argc, char **argv)
case 'z': fdebug = 3; break; /*full debug messages */
case 'V': /* priv level */
fprivset = 1;
+ case 'p': /* port */
case 'N': /* nodename */
case 'U': /* remote username */
case 'P': /* remote password */
@@ -1307,7 +1308,6 @@ main(int argc, char **argv)
/*
* Spawn a console raw terminal thread now, which will wait for the
* "Activating cmd (0x02)" on success
- * Using globals: gnode,guser,gpswd, gauth_type, gpriv_level
*/
if (fdeactivate) {
/* Request admin privilege by default, since deactivate requires it. */
diff --git a/util/itsol.c b/util/itsol.c
index dc4d9fb..21e5f6c 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 = "2.93";
+static char * progver = "2.96";
static uchar g_bus = PUBLIC_BUS;
static uchar g_sa = BMC_SA;
static uchar g_lun = BMC_LUN;
diff --git a/util/iwdt.c b/util/iwdt.c
index 96d21c0..0e6d932 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 = "2.93";
+static char * progver = "2.96";
static char * progname = "iwdt";
static char fdebug = 0;
static char fdontlog = 0;
@@ -335,7 +335,7 @@ main(int argc, char **argv)
printf(" -q N set watchdog pretimeout to N sec\n");
printf(" -t N set timeout to N seconds\n");
printf(" -x show eXtra debug messages\n");
- print_lan_opt_usage();
+ print_lan_opt_usage(0);
ret = ERR_USAGE;
goto do_exit;
}
diff --git a/util/md2.h b/util/md2.h
index 29c77fd..5973d2a 100644
--- a/util/md2.h
+++ b/util/md2.h
@@ -6,26 +6,149 @@
* added md2_sum() subroutine, added WIN32 flag
* 08/14/2008 ARCress - moved md2 routines from md2.c to md2.h
*/
-/*
- Copyright (C) 2003 FreeIPMI Core Team
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
+/*
+ * (c) (C) 2003 FreeIPMI Core Team
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * is provided AS IS, WITHOUT ANY WARRANTY; without even the implied
+ * warranty of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, and
+ * NON-INFRINGEMENT. See the GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA 02111-1307, USA.
+ *
+ * In addition, as a special exception, the copyright holders give
+ * permission to link the code of portions of this program with the
+ * OpenSSL library under certain conditions as described in each
+ * individual source file, and distribute linked combinations
+ * including the two.
+ * You must obey the GNU General Public License in all respects
+ * for all of the code used other than OpenSSL. If you modify
+ * file(s) with this exception, you may extend this exception to your
+ * version of the file(s), but you are not obligated to do so. If you
+ * do not wish to do so, delete this exception statement from your
+ * version. If you delete this exception statement from all source
+ * files in the program, then also delete it here.
+ */
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- A copy of the GNU General Public License is available as
- /usr/share/common-licenses/GPL-2 in the Debian distribution or on
- the World Wide Web at http://www.gnu.org/copyleft/gpl.html. You can
- also obtain it by writing to the Free Software Foundation, Inc.,
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+/* ====================================================================
+ * Copyright (c) 1998-2001 The OpenSSL Project. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ * software must display the following acknowledgment:
+ * "This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ * nor may "OpenSSL" appear in their names without prior written
+ * permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by the OpenSSL Project
+ * for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com). This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
-*/
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to. The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code. The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * "This product includes cryptographic software written by
+ * Eric Young (eay@cryptsoft.com)"
+ * The word 'cryptographic' can be left out if the rouines from the library
+ * being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ * the apps directory (application code) you must include an acknowledgement:
+ * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed. i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
/* only include this file if MD2OK was defined */
diff --git a/util/oem_dell.c b/util/oem_dell.c
index 1911d96..0e16d95 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 = "2.93";
+static char * progver = "2.96";
static char * progname = "idelloem";
static int verbose = 0;
static char fdebug = 0;
diff --git a/util/oem_hp.c b/util/oem_hp.c
index 29a813f..4c5b4f9 100644
--- a/util/oem_hp.c
+++ b/util/oem_hp.c
@@ -86,12 +86,6 @@ int decode_sensor_hp(uchar *sdr,uchar *reading,char *pstring, int slen)
if ((reading[2] & 0x40) == 0x40) { /*Init/Unavail state*/
strncpy(pstring,"Init",slen);
rv = 0;
- } else if ((sdr[20] & 0xC0) == 0xC0) { /*unit1==discrete*/
- b = reading[2] & 0x3f;
- pstr = "DiscreteUnit";
- if (evtype == 0x0b) pstr = redund_str(b);
- snprintf(pstring,slen,"%02x%02x %s",reading[3],reading[2],pstr);
- rv = 0;
} else if (evtype == 0x6f) { /*evtype==0x6f special*/
pstr = "DiscreteEvt";
if (stype == 0x08) { /*Power Supply presence*/
@@ -127,6 +121,12 @@ int decode_sensor_hp(uchar *sdr,uchar *reading,char *pstring, int slen)
else pstr = "Unknown";
snprintf(pstring,slen,"%02x%02x %s",reading[3],reading[2],pstr);
rv = 0;
+ } else if ((sdr[20] & 0xC0) == 0xC0) { /*unit1==discrete*/
+ b = reading[2] & 0x3f;
+ pstr = "DiscreteUnit";
+ if (evtype == 0x0b) pstr = redund_str(b);
+ snprintf(pstring,slen,"%02x%02x %s",reading[3],reading[2],pstr);
+ rv = 0;
}
}
return(rv);
diff --git a/util/oem_sun.c b/util/oem_sun.c
index da413a8..65a3522 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 = "2.93";
+static char * progver = "2.96";
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 528e4f7..5d7dee9 100644
--- a/util/oem_supermicro.c
+++ b/util/oem_supermicro.c
@@ -66,7 +66,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 = "2.93";
+static char * progver = "2.96";
static char * progname = "ismcoem";
static int verbose = 0;
static char fdebug = 0;
diff --git a/util/subs.c b/util/subs.c
index 9f11423..c5f9308 100644
--- a/util/subs.c
+++ b/util/subs.c
@@ -163,6 +163,23 @@ void lperror(int level, const char * format, ...)
return;
}
+#ifdef LANHELPER
+uint32_t buf2long(uint8_t * buf);
+uint16_t buf2short(uint8_t * buf);
+void printbuf(const uint8_t * buf, int len, const char * desc);
+const char * buf2str(uint8_t * buf, int len);
+const char * oemval2str(uint16_t oem, uint16_t val, const struct oemvalstr *vs);
+const char * val2str(uint16_t val, const struct valstr *vs);
+uint16_t str2val(const char *str, const struct valstr *vs);
+#else
+ulong buf2long(uchar * buf)
+{
+ return (ulong)(buf[3] << 24 | buf[2] << 16 | buf[1] << 8 | buf[0]);
+}
+ushort buf2short(uchar * buf)
+{
+ return (ushort)(buf[1] << 8 | buf[0]);
+}
void printbuf(const uchar * buf, int len, const char * desc)
{
int i;
@@ -190,14 +207,6 @@ const char * buf2str(uchar * buf, int len)
str[len*2] = '\0';
return (const char *)str;
}
-ushort buf2short(uchar * buf)
-{
- return (ushort)(buf[1] << 8 | buf[0]);
-}
-ulong buf2long(uchar * buf)
-{
- return (ulong)(buf[3] << 24 | buf[2] << 16 | buf[1] << 8 | buf[0]);
-}
#define IPMI_OEM_PICMG 12634
#define SZUN 32
@@ -237,6 +246,7 @@ ushort str2val( char *str, struct valstr *vs)
}
return vs[i].val;
}
+#endif
void dump_buf(char *tag, uchar *pbuf, int sz, char fshowascii)