summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Makefile.am3
-rw-r--r--lib/Makefile.in47
-rw-r--r--lib/dimm_spd.c852
-rw-r--r--lib/helper.c5
-rw-r--r--lib/hpm2.c8
-rw-r--r--lib/ipmi_chassis.c8
-rwxr-xr-xlib/ipmi_dcmi.c17
-rw-r--r--lib/ipmi_delloem.c15
-rw-r--r--lib/ipmi_ekanalyzer.c6
-rw-r--r--lib/ipmi_event.c1
-rw-r--r--lib/ipmi_fru.c65
-rw-r--r--lib/ipmi_hpmfwupg.c31
-rwxr-xr-xlib/ipmi_ime.c2
-rw-r--r--lib/ipmi_isol.c1
-rw-r--r--lib/ipmi_main.c12
-rw-r--r--lib/ipmi_mc.c2
-rw-r--r--lib/ipmi_pef.c5
-rw-r--r--lib/ipmi_picmg.c54
-rw-r--r--lib/ipmi_sdr.c11
-rw-r--r--lib/ipmi_sdradd.c1
-rw-r--r--lib/ipmi_sel.c23
-rw-r--r--lib/ipmi_sol.c6
-rw-r--r--lib/ipmi_strings.c82
-rw-r--r--lib/ipmi_sunoem.c8
-rw-r--r--lib/ipmi_tsol.c2
-rw-r--r--lib/ipmi_user.c15
-rw-r--r--lib/log.c7
27 files changed, 1007 insertions, 282 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 2a316db..359cb30 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -28,7 +28,8 @@
# LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
# EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-INCLUDES = -I$(top_srcdir)/include
+AUTOMAKE_OPTIONS = subdir-objects
+AM_CPPFLAGS = -I$(top_srcdir)/include
MAINTAINERCLEANFILES = Makefile.in
noinst_LTLIBRARIES = libipmitool.la
diff --git a/lib/Makefile.in b/lib/Makefile.in
index 5c993cb..ccb468f 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -121,6 +121,7 @@ CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__dirstamp = $(am__leading_dot)dirstamp
am_libipmitool_la_OBJECTS = helper.lo ipmi_sdr.lo ipmi_sel.lo \
ipmi_sol.lo ipmi_pef.lo ipmi_lanp.lo ipmi_fru.lo \
ipmi_chassis.lo ipmi_mc.lo log.lo dimm_spd.lo ipmi_sensor.lo \
@@ -130,7 +131,7 @@ am_libipmitool_la_OBJECTS = helper.lo ipmi_sdr.lo ipmi_sel.lo \
ipmi_tsol.lo ipmi_firewall.lo ipmi_kontronoem.lo \
ipmi_hpmfwupg.lo ipmi_sdradd.lo ipmi_ekanalyzer.lo \
ipmi_gendev.lo ipmi_ime.lo ipmi_delloem.lo ipmi_dcmi.lo \
- hpm2.lo ipmi_vita.lo md5.lo
+ hpm2.lo ipmi_vita.lo ../src/plugins/lan/md5.lo
libipmitool_la_OBJECTS = $(am_libipmitool_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -349,7 +350,8 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-INCLUDES = -I$(top_srcdir)/include
+AUTOMAKE_OPTIONS = subdir-objects
+AM_CPPFLAGS = -I$(top_srcdir)/include
MAINTAINERCLEANFILES = Makefile.in
noinst_LTLIBRARIES = libipmitool.la
libipmitool_la_SOURCES = helper.c ipmi_sdr.c ipmi_sel.c ipmi_sol.c ipmi_pef.c \
@@ -410,16 +412,27 @@ clean-noinstLTLIBRARIES:
echo rm -f $${locs}; \
rm -f $${locs}; \
}
+../src/plugins/lan/$(am__dirstamp):
+ @$(MKDIR_P) ../src/plugins/lan
+ @: > ../src/plugins/lan/$(am__dirstamp)
+../src/plugins/lan/$(DEPDIR)/$(am__dirstamp):
+ @$(MKDIR_P) ../src/plugins/lan/$(DEPDIR)
+ @: > ../src/plugins/lan/$(DEPDIR)/$(am__dirstamp)
+../src/plugins/lan/md5.lo: ../src/plugins/lan/$(am__dirstamp) \
+ ../src/plugins/lan/$(DEPDIR)/$(am__dirstamp)
libipmitool.la: $(libipmitool_la_OBJECTS) $(libipmitool_la_DEPENDENCIES) $(EXTRA_libipmitool_la_DEPENDENCIES)
$(AM_V_CCLD)$(libipmitool_la_LINK) $(libipmitool_la_OBJECTS) $(libipmitool_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
+ -rm -f ../src/plugins/lan/*.$(OBJEXT)
+ -rm -f ../src/plugins/lan/*.lo
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@../src/plugins/lan/$(DEPDIR)/md5.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dimm_spd.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/helper.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hpm2.Plo@am__quote@
@@ -456,41 +469,37 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipmi_user.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ipmi_vita.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/log.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@
.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-md5.lo: ../src/plugins/lan/md5.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5.lo -MD -MP -MF $(DEPDIR)/md5.Tpo -c -o md5.lo `test -f '../src/plugins/lan/md5.c' || echo '$(srcdir)/'`../src/plugins/lan/md5.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='../src/plugins/lan/md5.c' object='md5.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5.lo `test -f '../src/plugins/lan/md5.c' || echo '$(srcdir)/'`../src/plugins/lan/md5.c
-
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
+ -rm -rf ../src/plugins/lan/.libs ../src/plugins/lan/_libs
ID: $(am__tagged_files)
$(am__define_uniq_tagged_files); mkid -fID $$unique
@@ -604,6 +613,8 @@ clean-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)
+ -rm -f ../src/plugins/lan/$(DEPDIR)/$(am__dirstamp)
+ -rm -f ../src/plugins/lan/$(am__dirstamp)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -615,7 +626,7 @@ clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
- -rm -rf ./$(DEPDIR)
+ -rm -rf ../src/plugins/lan/$(DEPDIR) ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-tags
@@ -661,7 +672,7 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
+ -rm -rf ../src/plugins/lan/$(DEPDIR) ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
diff --git a/lib/dimm_spd.c b/lib/dimm_spd.c
index 912b211..8b6927c 100644
--- a/lib/dimm_spd.c
+++ b/lib/dimm_spd.c
@@ -186,123 +186,123 @@ const struct valstr jedec_id1_vals[] = {
{ 0x07, "Hitachi" },
{ 0x08, "Inmos" },
{ 0x89, "Intel" },
- { 0x8a, "I.T.T." },
- { 0x0b, "Intersil" },
- { 0x8c, "Monolithic Memories" },
- { 0x0d, "Mostek" },
- { 0x0e, "Motorola" },
- { 0x8f, "National" },
+ { 0x8A, "I.T.T." },
+ { 0x0B, "Intersil" },
+ { 0x8C, "Monolithic Memories" },
+ { 0x0D, "Mostek" },
+ { 0x0E, "Freescale (Motorola)" },
+ { 0x8F, "National" },
{ 0x10, "NEC" },
{ 0x91, "RCA" },
{ 0x92, "Raytheon" },
{ 0x13, "Conexant (Rockwell)" },
{ 0x94, "Seeq" },
- { 0x15, "Philips Semi. (Signetics)" },
+ { 0x15, "NXP (Philips)" },
{ 0x16, "Synertek" },
{ 0x97, "Texas Instruments" },
{ 0x98, "Toshiba" },
{ 0x19, "Xicor" },
- { 0x1a, "Zilog" },
- { 0x9b, "Eurotechnique" },
- { 0x1c, "Mitsubishi" },
- { 0x9d, "Lucent (AT&T)" },
- { 0x9e, "Exel" },
- { 0x1f, "Atmel" },
- { 0x20, "SGS/Thomson" },
- { 0xa1, "Lattice Semi." },
- { 0xa2, "NCR" },
+ { 0x1A, "Zilog" },
+ { 0x9B, "Eurotechnique" },
+ { 0x1C, "Mitsubishi" },
+ { 0x9D, "Lucent (AT&T)" },
+ { 0x9E, "Exel" },
+ { 0x1F, "Atmel" },
+ { 0x20, "STMicroelectronics" },
+ { 0xA1, "Lattice Semi." },
+ { 0xA2, "NCR" },
{ 0x23, "Wafer Scale Integration" },
- { 0xa4, "IBM" },
+ { 0xA4, "IBM" },
{ 0x25, "Tristar" },
{ 0x26, "Visic" },
- { 0xa7, "Intl. CMOS Technology" },
- { 0xa8, "SSSI" },
- { 0x29, "Microchip Technology" },
- { 0x2a, "Ricoh Ltd." },
- { 0xab, "VLSI" },
- { 0x2c, "Micron Technology" },
- { 0xad, "Hyundai Electronics" },
- { 0xae, "OKI Semiconductor" },
- { 0x2f, "ACTEL" },
- { 0xb0, "Sharp" },
+ { 0xA7, "Intl. CMOS Technology" },
+ { 0xA8, "SSSI" },
+ { 0x29, "MicrochipTechnology" },
+ { 0x2A, "Ricoh Ltd." },
+ { 0xAB, "VLSI" },
+ { 0x2C, "Micron Technology" },
+ { 0xAD, "SK Hynix" },
+ { 0xAE, "OKI Semiconductor" },
+ { 0x2F, "ACTEL" },
+ { 0xB0, "Sharp" },
{ 0x31, "Catalyst" },
{ 0x32, "Panasonic" },
- { 0xb3, "IDT" },
+ { 0xB3, "IDT" },
{ 0x34, "Cypress" },
- { 0xb5, "DEC" },
- { 0xb6, "LSI Logic" },
- { 0x37, "Zarlink" },
+ { 0xB5, "DEC" },
+ { 0xB6, "LSI Logic" },
+ { 0x37, "Zarlink (Plessey)" },
{ 0x38, "UTMC" },
- { 0xb9, "Thinking Machine" },
- { 0xba, "Thomson CSF" },
- { 0x3b, "Integrated CMOS(Vertex)" },
- { 0xbc, "Honeywell" },
- { 0x3d, "Tektronix" },
- { 0x3e, "Sun Microsystems" },
- { 0xbf, "SST" },
- { 0x40, "MOSEL" },
- { 0xc1, "Infineon" },
- { 0xc2, "Macronix" },
+ { 0xB9, "Thinking Machine" },
+ { 0xBA, "Thomson CSF" },
+ { 0x3B, "Integrated CMOS (Vertex)" },
+ { 0xBC, "Honeywell" },
+ { 0x3D, "Tektronix" },
+ { 0x3E, "Oracle Corporation" },
+ { 0xBF, "Silicon Storage Technology" },
+ { 0x40, "ProMos/Mosel Vitelic" },
+ { 0xC1, "Infineon (Siemens)" },
+ { 0xC2, "Macronix" },
{ 0x43, "Xerox" },
- { 0xc4, "Plus Logic" },
- { 0x45, "SunDisk" },
+ { 0xC4, "Plus Logic" },
+ { 0x45, "SanDisk Corporation" },
{ 0x46, "Elan Circuit Tech." },
- { 0xc7, "European Silicon Str." },
- { 0xc8, "Apple Computer" },
- { 0xc9, "Xilinx" },
- { 0x4a, "Compaq" },
- { 0xcb, "Protocol Engines" },
- { 0x4c, "SCI" },
- { 0xcd, "Seiko Instruments" },
- { 0xce, "Samsung" },
- { 0x4f, "I3 Design System" },
- { 0xd0, "Klic" },
+ { 0xC7, "European Silicon Str." },
+ { 0xC8, "Apple Computer" },
+ { 0x49, "Xilinx" },
+ { 0x4A, "Compaq" },
+ { 0xCB, "Protocol Engines" },
+ { 0x4C, "SCI" },
+ { 0xCD, "Seiko Instruments" },
+ { 0xCE, "Samsung" },
+ { 0x4F, "I3 Design System" },
+ { 0xD0, "Klic" },
{ 0x51, "Crosspoint Solutions" },
{ 0x52, "Alliance Semiconductor" },
- { 0xd3, "Tandem" },
+ { 0xD3, "Tandem" },
{ 0x54, "Hewlett-Packard" },
- { 0xd5, "Intg. Silicon Solutions" },
- { 0xd6, "Brooktree" },
+ { 0xD5, "Integrated Silicon Solutions" },
+ { 0xD6, "Brooktree" },
{ 0x57, "New Media" },
{ 0x58, "MHS Electronic" },
- { 0xd9, "Performance Semi." },
- { 0xda, "Winbond Electronic" },
- { 0x5b, "Kawasaki Steel" },
- { 0xdc, "Bright Micro" },
- { 0x5d, "TECMAR" },
- { 0x5e, "Exar" },
- { 0xdf, "PCMCIA" },
- { 0xe0, "LG Semiconductor" },
+ { 0xD9, "Performance Semi." },
+ { 0xDA, "Winbond Electronic" },
+ { 0x5B, "Kawasaki Steel" },
+ { 0xDC, "Bright Micro" },
+ { 0x5D, "TECMAR" },
+ { 0x5E, "Exar" },
+ { 0xDF, "PCMCIA" },
+ { 0xE0, "LG Semi (Goldstar)" },
{ 0x61, "Northern Telecom" },
{ 0x62, "Sanyo" },
- { 0xe3, "Array Microsystems" },
+ { 0xE3, "Array Microsystems" },
{ 0x64, "Crystal Semiconductor" },
- { 0xe5, "Analog Devices" },
- { 0xe6, "PMC-Sierra" },
+ { 0xE5, "Analog Devices" },
+ { 0xE6, "PMC-Sierra" },
{ 0x67, "Asparix" },
{ 0x68, "Convex Computer" },
- { 0xe9, "Quality Semiconductor" },
- { 0xea, "Nimbus Technology" },
- { 0x6b, "Transwitch" },
- { 0xec, "Micronas (ITT Intermetall)" },
- { 0x6d, "Cannon" },
- { 0x6e, "Altera" },
- { 0xef, "NEXCOM" },
- { 0x70, "QUALCOMM" },
- { 0xf1, "Sony" },
- { 0xf2, "Cray Research" },
- { 0x73, "AMS (Austria Micro)" },
- { 0xf4, "Vitesse" },
+ { 0xE9, "Quality Semiconductor" },
+ { 0xEA, "Nimbus Technology" },
+ { 0x6B, "Transwitch" },
+ { 0xEC, "Micronas (ITT Intermetall)" },
+ { 0x6D, "Cannon" },
+ { 0x6E, "Altera" },
+ { 0xEF, "NEXCOM" },
+ { 0x70, "Qualcomm" },
+ { 0xF1, "Sony" },
+ { 0xF2, "Cray Research" },
+ { 0x73, "AMS(Austria Micro)" },
+ { 0xF4, "Vitesse" },
{ 0x75, "Aster Electronics" },
{ 0x76, "Bay Networks (Synoptic)" },
- { 0xf7, "Zentrum" },
- { 0xf8, "TRW" },
+ { 0xF7, "Zentrum/ZMD" },
+ { 0xF8, "TRW" },
{ 0x79, "Thesys" },
- { 0x7a, "Solbourne Computer" },
- { 0xfb, "Allied-Signal" },
- { 0x7c, "Dialog" },
- { 0xfd, "Media Vision" },
- { 0xfe, "Level One Communication" },
+ { 0x7A, "Solbourne Computer" },
+ { 0xFB, "Allied-Signal" },
+ { 0x7C, "Dialog Semiconductor" },
+ { 0xFD, "Media Vision" },
+ { 0xFE, "Numonyx Corporation" },
{ 0x00, NULL },
};
@@ -314,7 +314,7 @@ const struct valstr jedec_id2_vals[] = {
{ 0x85, "Micro Linear" },
{ 0x86, "Univ. of NC" },
{ 0x07, "JTAG Technologies" },
- { 0x08, "Loral" },
+ { 0x08, "BAE Systems (Loral)" },
{ 0x89, "Nchip" },
{ 0x8A, "Galileo Tech" },
{ 0x0B, "Bestlink Systems" },
@@ -324,7 +324,7 @@ const struct valstr jedec_id2_vals[] = {
{ 0x8F, "Robert Bosch" },
{ 0x10, "Chip Express" },
{ 0x91, "DATARAM" },
- { 0x92, "United Microelec Corp." },
+ { 0x92, "United Microelectronics Corp." },
{ 0x13, "TCSI" },
{ 0x94, "Smart Modular" },
{ 0x15, "Hughes Aircraft" },
@@ -335,7 +335,7 @@ const struct valstr jedec_id2_vals[] = {
{ 0x1A, "Ericsson Components" },
{ 0x9B, "SpaSE" },
{ 0x1C, "Eon Silicon Devices" },
- { 0x9D, "Programmable Micro Corp" },
+ { 0x9D, "Integrated Silicon Solution (ISSI)" },
{ 0x9E, "DoD" },
{ 0x1F, "Integ. Memories Tech." },
{ 0x20, "Corollary Inc." },
@@ -343,10 +343,10 @@ const struct valstr jedec_id2_vals[] = {
{ 0xA2, "Omnivision" },
{ 0x23, "EIV(Switzerland)" },
{ 0xA4, "Novatel Wireless" },
- { 0x25, "Zarlink (formerly Mitel)" },
+ { 0x25, "Zarlink (Mitel)" },
{ 0x26, "Clearpoint" },
{ 0xA7, "Cabletron" },
- { 0xA8, "Silicon Technology" },
+ { 0xA8, "STEC (Silicon Tech)" },
{ 0x29, "Vanguard" },
{ 0x2A, "Hagiwara Sys-Com" },
{ 0xAB, "Vantis" },
@@ -356,7 +356,7 @@ const struct valstr jedec_id2_vals[] = {
{ 0x2F, "Rohm Company Ltd." },
{ 0xB0, "Juniper Networks" },
{ 0x31, "Libit Signal Processing" },
- { 0x32, "Enhanced Memories Inc." },
+ { 0x32, "Mushkin Enhanced Memory" },
{ 0xB3, "Tundra Semiconductor" },
{ 0x34, "Adaptec Inc." },
{ 0xB5, "LightSpeed Semi." },
@@ -364,7 +364,7 @@ const struct valstr jedec_id2_vals[] = {
{ 0x37, "AMIC Technology" },
{ 0x38, "Adobe Systems" },
{ 0xB9, "Dynachip" },
- { 0xBA, "PNY Electronics" },
+ { 0xBA, "PNY Technologies, Inc." },
{ 0x3B, "Newport Digital" },
{ 0xBC, "MMC Networks" },
{ 0x3D, "T Square" },
@@ -372,12 +372,12 @@ const struct valstr jedec_id2_vals[] = {
{ 0xBF, "Broadcom" },
{ 0x40, "Viking Components" },
{ 0xC1, "V3 Semiconductor" },
- { 0xC2, "Flextronics (formerly Orbit)" },
+ { 0xC2, "Flextronics (Orbit Semiconductor)" },
{ 0x43, "Suwa Electronics" },
{ 0xC4, "Transmeta" },
{ 0x45, "Micron CMS" },
- { 0x46, "American Computer & Digital Components Inc" },
- { 0xC7, "Enhance 3000 Inc" },
+ { 0x46, "American Computer & Digital Components Inc." },
+ { 0xC7, "Enhance 3000 Inc." },
{ 0xC8, "Tower Semiconductor" },
{ 0x49, "CPU Design" },
{ 0x4A, "Price Point" },
@@ -407,7 +407,7 @@ const struct valstr jedec_id2_vals[] = {
{ 0x62, "Super PC Memory" },
{ 0xE3, "MGV Memory" },
{ 0x64, "Galvantech" },
- { 0xE5, "Gadzoox Nteworks" },
+ { 0xE5, "Gadzoox Networks" },
{ 0xE6, "Multi Dimensional Cons." },
{ 0x67, "GateField" },
{ 0x68, "Integrated Memory System" },
@@ -448,7 +448,7 @@ const struct valstr jedec_id3_vals[] = {
{ 0x89, "Switchcore" },
{ 0x8A, "Cisco Systems, Inc." },
{ 0x0B, "Allayer Technologies" },
- { 0x8C, "WorkX AG" },
+ { 0x8C, "WorkX AG (Wichman)" },
{ 0x0D, "Oasis Semiconductor" },
{ 0x0E, "Novanet Semiconductor" },
{ 0x8F, "E-M Solutions" },
@@ -469,7 +469,7 @@ const struct valstr jedec_id3_vals[] = {
{ 0x9E, "Corsair" },
{ 0x1F, "Actrans System Inc." },
{ 0x20, "ALPHA Technologies" },
- { 0xA1, "Cygnal Integrated Products Incorporated" },
+ { 0xA1, "Silicon Laboratories, Inc. (Cygnal)" },
{ 0xA2, "Artesyn Technologies" },
{ 0x23, "Align Manufacturing" },
{ 0xA4, "Peregrine Semiconductor" },
@@ -480,12 +480,12 @@ const struct valstr jedec_id3_vals[] = {
{ 0x29, "ADTEC Corporation" },
{ 0x2A, "Kentron Technologies" },
{ 0xAB, "Win Technologies" },
- { 0x2C, "ASIC Designs Inc" },
+ { 0x2C, "Tezzaron Semiconductor" },
{ 0xAD, "Extreme Packet Devices" },
{ 0xAE, "RF Micro Devices" },
{ 0x2F, "Siemens AG" },
{ 0xB0, "Sarnoff Corporation" },
- { 0x31, "Itautec Philco SA" },
+ { 0x31, "Itautec SA" },
{ 0x32, "Radiata Inc." },
{ 0xB3, "Benchmark Elect. (AVEX)" },
{ 0x34, "Legend" },
@@ -513,7 +513,7 @@ const struct valstr jedec_id3_vals[] = {
{ 0x4A, "W.L. Gore" },
{ 0xCB, "HanBit Electronics" },
{ 0x4C, "GlobeSpan" },
- { 0xCD, "Element 14" },
+ { 0xCD, "Element 14" },
{ 0xCE, "Pycon" },
{ 0x4F, "Saifun Semiconductors" },
{ 0xD0, "Sibyte, Incorporated" },
@@ -527,7 +527,7 @@ const struct valstr jedec_id3_vals[] = {
{ 0x58, "Malaysia Micro Solutions" },
{ 0xD9, "Hyperchip" },
{ 0xDA, "Gemstone Communications" },
- { 0x5B, "Anadyne Microelectronics" },
+ { 0x5B, "Anadigm (Anadyne)" },
{ 0xDC, "3ParData" },
{ 0x5D, "Mellanox Technologies" },
{ 0x5E, "Tenx Technologies" },
@@ -536,7 +536,7 @@ const struct valstr jedec_id3_vals[] = {
{ 0x61, "Skyup Technology" },
{ 0x62, "HiNT Corporation" },
{ 0xE3, "Chiaro" },
- { 0x64, "MCI Computer GMBH" },
+ { 0x64, "MDT Technologies GmbH" },
{ 0xE5, "Exbit Technology A/S" },
{ 0xE6, "Integrated Technology Express" },
{ 0x67, "AVED Memory" },
@@ -586,7 +586,7 @@ const struct valstr jedec_id4_vals[] = {
{ 0x91, "NeoMagic" },
{ 0x92, "AuroraNetics" },
{ 0x13, "Golden Empire" },
- { 0x94, "Muskin" },
+ { 0x94, "Mushkin" },
{ 0x15, "Tioga Technologies" },
{ 0x16, "Netlist" },
{ 0x97, "TeraLogic" },
@@ -628,7 +628,7 @@ const struct valstr jedec_id4_vals[] = {
{ 0x3B, "Concept Computer" },
{ 0xBC, "SILCOM" },
{ 0x3D, "3Dlabs" },
- { 0x3E, "ct Magazine" },
+ { 0x3E, "c’t Magazine" },
{ 0xBF, "Sanera Systems" },
{ 0x40, "Silicon Packets" },
{ 0xC1, "Viasystems Group" },
@@ -654,13 +654,13 @@ const struct valstr jedec_id4_vals[] = {
{ 0xD5, "Silverback Systems" },
{ 0xD6, "Jade Star Technologies" },
{ 0x57, "Pijnenburg Securealink" },
- { 0x58, "MemorySolutioN" },
+ { 0x58, "takeMS - Ultron AG" },
{ 0xD9, "Cambridge Silicon Radio" },
{ 0xDA, "Swissbit" },
{ 0x5B, "Nazomi Communications" },
{ 0xDC, "eWave System" },
{ 0x5D, "Rockwell Collins" },
- { 0x5E, "PAION" },
+ { 0x5E, "Picocel Co. Ltd. (Paion)" },
{ 0xDF, "Alphamosaic Ltd" },
{ 0xE0, "Sandburst" },
{ 0x61, "SiCon Video" },
@@ -669,16 +669,17 @@ const struct valstr jedec_id4_vals[] = {
{ 0x64, "PrairieComm" },
{ 0xE5, "Mitac International" },
{ 0xE6, "Layer N Networks" },
- { 0x67, "Atsana Semiconductor" },
+ { 0x67, "MtekVision (Atsana)" },
{ 0x68, "Allegro Networks" },
{ 0xE9, "Marvell Semiconductors" },
{ 0xEA, "Netergy Microelectronic" },
{ 0x6B, "NVIDIA" },
{ 0xEC, "Internet Machines" },
- { 0x6D, "Peak Electronics" },
+ { 0x6D, "Memorysolution GmbH" },
+ { 0x6E, "Litchfield Communication" },
{ 0xEF, "Accton Technology" },
{ 0x70, "Teradiant Networks" },
- { 0xF1, "Europe Technologies" },
+ { 0xF1, "Scaleo Chip" },
{ 0xF2, "Cortina Systems" },
{ 0x73, "RAM Components" },
{ 0xF4, "Raqia Networks" },
@@ -711,7 +712,7 @@ const struct valstr jedec_id5_vals[] = {
{ 0x0D, "Patriot Scientific" },
{ 0x0E, "Neoaxiom Corporation" },
{ 0x8F, "3Y Power Technology" },
- { 0x10, "Europe Technologies" },
+ { 0x10, "Scaleo Chip" },
{ 0x91, "Potentia Power Systems" },
{ 0x92, "C-guys Incorporated" },
{ 0x13, "Digital Communications Technology Incorporated" },
@@ -721,22 +722,22 @@ const struct valstr jedec_id5_vals[] = {
{ 0x97, "XIOtech Corporation" },
{ 0x98, "PortalPlayer" },
{ 0x19, "Zhiying Software" },
- { 0x1A, "Direct2Data" },
+ { 0x1A, "ParkerVision, Inc." },
{ 0x9B, "Phonex Broadband" },
{ 0x1C, "Skyworks Solutions" },
{ 0x9D, "Entropic Communications" },
- { 0x9E, "Pacific Force Technology" },
+ { 0x9E, "I’M Intelligent Memory Ltd." },
{ 0x1F, "Zensys A/S" },
{ 0x20, "Legend Silicon Corp." },
- { 0xA1, "sci-worx GmbH" },
- { 0xA2, "Oasis Silicon Systems" },
- { 0x23, "Renesas Technology" },
+ { 0xA1, "Sci-worx GmbH" },
+ { 0xA2, "SMSC (Standard Microsystems)" },
+ { 0x23, "Renesas Electronics" },
{ 0xA4, "Raza Microelectronics" },
{ 0x25, "Phyworks" },
{ 0x26, "MediaTek" },
{ 0xA7, "Non-cents Productions" },
{ 0xA8, "US Modular" },
- { 0x29, "Wintegra Ltd" },
+ { 0x29, "Wintegra Ltd." },
{ 0x2A, "Mathstar" },
{ 0xAB, "StarCore" },
{ 0x2C, "Oplus Technologies" },
@@ -772,6 +773,559 @@ const struct valstr jedec_id5_vals[] = {
{ 0x4A, "Excel Semiconductor" },
{ 0xCB, "A-DATA Technology" },
{ 0x4C, "VirtualDigm" },
+ { 0xCD, "G Skill Intl" },
+ { 0xCE, "Quanta Computer" },
+ { 0x4F, "Yield Microelectronics" },
+ { 0xD0, "Afa Technologies" },
+ { 0x51, "KINGBOX Technology Co. Ltd." },
+ { 0x52, "Ceva" },
+ { 0xD3, "iStor Networks" },
+ { 0x54, "Advance Modules" },
+ { 0xD5, "Microsoft" },
+ { 0xD6, "Open-Silicon" },
+ { 0x57, "Goal Semiconductor" },
+ { 0x58, "ARC International" },
+ { 0xD9, "Simmtec" },
+ { 0xDA, "Metanoia" },
+ { 0x5B, "Key Stream" },
+ { 0xDC, "Lowrance Electronics" },
+ { 0x5D, "Adimos" },
+ { 0x5E, "SiGe Semiconductor" },
+ { 0xDF, "Fodus Communications" },
+ { 0xE0, "Credence Systems Corp." },
+ { 0x61, "Genesis Microchip Inc." },
+ { 0x62, "Vihana, Inc." },
+ { 0xE3, "WIS Technologies" },
+ { 0x64, "GateChange Technologies" },
+ { 0xE5, "High Density Devices AS" },
+ { 0xE6, "Synopsys" },
+ { 0x67, "Gigaram" },
+ { 0x68, "Enigma Semiconductor Inc." },
+ { 0xE9, "Century Micro Inc." },
+ { 0xEA, "Icera Semiconductor" },
+ { 0x6B, "Mediaworks Integrated Systems" },
+ { 0xEC, "O’Neil Product Development" },
+ { 0x6D, "Supreme Top Technology Ltd." },
+ { 0x6E, "MicroDisplay Corporation" },
+ { 0xEF, "Team Group Inc." },
+ { 0x70, "Sinett Corporation" },
+ { 0xF1, "Toshiba Corporation" },
+ { 0xF2, "Tensilica" },
+ { 0x73, "SiRF Technology" },
+ { 0xF4, "Bacoc Inc." },
+ { 0x75, "SMaL Camera Technologies" },
+ { 0x76, "Thomson SC" },
+ { 0xF7, "Airgo Networks" },
+ { 0xF8, "Wisair Ltd." },
+ { 0x79, "SigmaTel" },
+ { 0x7A, "Arkados" },
+ { 0xFB, "Compete IT gmbH Co. KG" },
+ { 0x7C, "Eudar Technology Inc." },
+ { 0xFD, "Focus Enhancements" },
+ { 0xFE, "Xyratex" },
+ { 0x00, NULL },
+};
+
+const struct valstr jedec_id6_vals[] = {
+ { 0x01, "Specular Networks" },
+ { 0x02, "Patriot Memory (PDP Systems)" },
+ { 0x83, "U-Chip Technology Corp." },
+ { 0x04, "Silicon Optix" },
+ { 0x85, "Greenfield Networks" },
+ { 0x86, "CompuRAM GmbH" },
+ { 0x07, "Stargen, Inc." },
+ { 0x08, "NetCell Corporation" },
+ { 0x89, "Excalibrus Technologies Ltd" },
+ { 0x8A, "SCM Microsystems" },
+ { 0x0B, "Xsigo Systems, Inc." },
+ { 0x8C, "CHIPS & Systems Inc" },
+ { 0x0D, "Tier 1 Multichip Solutions" },
+ { 0x0E, "CWRL Labs" },
+ { 0x8F, "Teradici" },
+ { 0x10, "Gigaram, Inc." },
+ { 0x91, "g2 Microsystems" },
+ { 0x92, "PowerFlash Semiconductor" },
+ { 0x13, "P.A. Semi, Inc." },
+ { 0x94, "NovaTech Solutions, S.A." },
+ { 0x15, "c2 Microsystems, Inc." },
+ { 0x16, "Level5 Networks" },
+ { 0x97, "COS Memory AG" },
+ { 0x98, "Innovasic Semiconductor" },
+ { 0x19, "02IC Co. Ltd" },
+ { 0x1A, "Tabula, Inc." },
+ { 0x9B, "Crucial Technology" },
+ { 0x1C, "Chelsio Communications" },
+ { 0x9D, "Solarflare Communications" },
+ { 0x9E, "Xambala Inc." },
+ { 0x1F, "EADS Astrium" },
+ { 0x20, "Terra Semiconductor, Inc." },
+ { 0xA1, "Imaging Works, Inc." },
+ { 0xA2, "Astute Networks, Inc." },
+ { 0x23, "Tzero" },
+ { 0xA4, "Emulex" },
+ { 0x25, "Power-One" },
+ { 0x26, "Pulse~LINK Inc." },
+ { 0xA7, "Hon Hai Precision Industry" },
+ { 0xA8, "White Rock Networks Inc." },
+ { 0x29, "Telegent Systems USA, Inc." },
+ { 0x2A, "Atrua Technologies, Inc." },
+ { 0xAB, "Acbel Polytech Inc." },
+ { 0x2C, "eRide Inc." },
+ { 0xAD, "ULi Electronics Inc." },
+ { 0xAE, "Magnum Semiconductor Inc." },
+ { 0x2F, "neoOne Technology, Inc." },
+ { 0xB0, "Connex Technology, Inc." },
+ { 0x31, "Stream Processors, Inc." },
+ { 0x32, "Focus Enhancements" },
+ { 0xB3, "Telecis Wireless, Inc." },
+ { 0x34, "uNav Microelectronics" },
+ { 0xB5, "Tarari, Inc." },
+ { 0xB6, "Ambric, Inc." },
+ { 0x37, "Newport Media, Inc." },
+ { 0x38, "VMTS" },
+ { 0xB9, "Enuclia Semiconductor, Inc." },
+ { 0xBA, "Virtium Technology Inc." },
+ { 0x3B, "Solid State System Co., Ltd." },
+ { 0xBC, "Kian Tech LLC" },
+ { 0x3D, "Artimi" },
+ { 0x3E, "Power Quotient International" },
+ { 0xBF, "Avago Technologies" },
+ { 0x40, "ADTechnology" },
+ { 0xC1, "Sigma Designs" },
+ { 0xC2, "SiCortex, Inc." },
+ { 0x43, "Ventura Technology Group" },
+ { 0xC4, "eASIC" },
+ { 0x45, "M.H.S. SAS" },
+ { 0x46, "Micro Star International" },
+ { 0xC7, "Rapport Inc." },
+ { 0xC8, "Makway International" },
+ { 0x49, "Broad Reach Engineering Co." },
+ { 0x4A, "Semiconductor Mfg Intl Corp" },
+ { 0xCB, "SiConnect" },
+ { 0x4C, "FCI USA Inc." },
+ { 0xCD, "Validity Sensors" },
+ { 0xCE, "Coney Technology Co. Ltd." },
+ { 0x4F, "Spans Logic" },
+ { 0xD0, "Neterion Inc." },
+ { 0x51, "Qimonda" },
+ { 0x52, "New Japan Radio Co. Ltd." },
+ { 0xD3, "Velogix" },
+ { 0x54, "Montalvo Systems" },
+ { 0xD5, "iVivity Inc." },
+ { 0xD6, "Walton Chaintech" },
+ { 0x57, "AENEON" },
+ { 0x58, "Lorom Industrial Co. Ltd." },
+ { 0xD9, "Radiospire Networks" },
+ { 0xDA, "Sensio Technologies, Inc." },
+ { 0x5B, "Nethra Imaging" },
+ { 0xDC, "Hexon Technology Pte Ltd" },
+ { 0x5D, "CompuStocx (CSX)" },
+ { 0x5E, "Methode Electronics, Inc." },
+ { 0xDF, "Connect One Ltd." },
+ { 0xE0, "Opulan Technologies" },
+ { 0x61, "Septentrio NV" },
+ { 0x62, "Goldenmars Technology Inc." },
+ { 0xE3, "Kreton Corporation" },
+ { 0x64, "Cochlear Ltd." },
+ { 0xE5, "Altair Semiconductor" },
+ { 0xE6, "NetEffect, Inc." },
+ { 0x67, "Spansion, Inc." },
+ { 0x68, "Taiwan Semiconductor Mfg" },
+ { 0xE9, "Emphany Systems Inc." },
+ { 0xEA, "ApaceWave Technologies" },
+ { 0x6B, "Mobilygen Corporation" },
+ { 0xEC, "Tego" },
+ { 0x6D, "Cswitch Corporation" },
+ { 0x6E, "Haier (Beijing) IC Design Co." },
+ { 0xEF, "MetaRAM" },
+ { 0x70, "Axel Electronics Co. Ltd." },
+ { 0xF1, "Tilera Corporation" },
+ { 0xF2, "Aquantia" },
+ { 0x73, "Vivace Semiconductor" },
+ { 0xF4, "Redpine Signals" },
+ { 0x75, "Octalica" },
+ { 0x76, "InterDigital Communications" },
+ { 0xF7, "Avant Technology" },
+ { 0xF8, "Asrock, Inc." },
+ { 0x79, "Availink" },
+ { 0x7A, "Quartics, Inc." },
+ { 0xFB, "Element CXI" },
+ { 0x7C, "Innovaciones Microelectronicas" },
+ { 0xFD, "VeriSilicon Microelectronics" },
+ { 0xFE, "W5 Networks" },
+ { 0x00, NULL },
+};
+
+const struct valstr jedec_id7_vals[] = {
+ { 0x01, "MOVEKING" },
+ { 0x02, "Mavrix Technology, Inc." },
+ { 0x83, "CellGuide Ltd." },
+ { 0x04, "Faraday Technology" },
+ { 0x85, "Diablo Technologies, Inc." },
+ { 0x86, "Jennic" },
+ { 0x07, "Octasic" },
+ { 0x08, "Molex Incorporated" },
+ { 0x89, "3Leaf Networks" },
+ { 0x8A, "Bright Micron Technology" },
+ { 0x0B, "Netxen" },
+ { 0x8C, "NextWave Broadband Inc." },
+ { 0x0D, "DisplayLink" },
+ { 0x0E, "ZMOS Technology" },
+ { 0x8F, "Tec-Hill" },
+ { 0x10, "Multigig, Inc." },
+ { 0x91, "Amimon" },
+ { 0x92, "Euphonic Technologies, Inc." },
+ { 0x13, "BRN Phoenix" },
+ { 0x94, "InSilica" },
+ { 0x15, "Ember Corporation" },
+ { 0x16, "Avexir Technologies Corporation" },
+ { 0x97, "Echelon Corporation" },
+ { 0x98, "Edgewater Computer Systems" },
+ { 0x19, "XMOS Semiconductor Ltd." },
+ { 0x1A, "GENUSION, Inc." },
+ { 0x9B, "Memory Corp NV" },
+ { 0x1C, "SiliconBlue Technologies" },
+ { 0x9D, "Rambus Inc." },
+ { 0x9E, "Andes Technology Corporation" },
+ { 0x1F, "Coronis Systems" },
+ { 0x20, "Achronix Semiconductor" },
+ { 0xA1, "Siano Mobile Silicon Ltd." },
+ { 0xA2, "Semtech Corporation" },
+ { 0x23, "Pixelworks Inc." },
+ { 0xA4, "Gaisler Research AB" },
+ { 0x25, "Teranetics" },
+ { 0x26, "Toppan Printing Co. Ltd." },
+ { 0xA7, "Kingxcon" },
+ { 0xA8, "Silicon Integrated Systems" },
+ { 0x29, "I-O Data Device, Inc." },
+ { 0x2A, "NDS Americas Inc." },
+ { 0xAB, "Solomon Systech Limited" },
+ { 0x2C, "On Demand Microelectronics" },
+ { 0xAD, "Amicus Wireless Inc." },
+ { 0xAE, "SMARDTV SNC" },
+ { 0x2F, "Comsys Communication Ltd." },
+ { 0xB0, "Movidia Ltd." },
+ { 0x31, "Javad GNSS, Inc." },
+ { 0x32, "Montage Technology Group" },
+ { 0xB3, "Trident Microsystems" },
+ { 0x34, "Super Talent" },
+ { 0xB5, "Optichron, Inc." },
+ { 0xB6, "Future Waves UK Ltd." },
+ { 0x37, "SiBEAM, Inc." },
+ { 0x38, "Inicore,Inc." },
+ { 0xB9, "Virident Systems" },
+ { 0xBA, "M2000, Inc." },
+ { 0x3B, "ZeroG Wireless, Inc." },
+ { 0xBC, "Gingle Technology Co. Ltd." },
+ { 0x3D, "Space Micro Inc." },
+ { 0x3E, "Wilocity" },
+ { 0xBF, "Novafora, Inc." },
+ { 0x40, "iKoa Corporation" },
+ { 0xC1, "ASint Technology" },
+ { 0xC2, "Ramtron" },
+ { 0x43, "Plato Networks Inc." },
+ { 0xC4, "IPtronics AS" },
+ { 0x45, "Infinite-Memories" },
+ { 0x46, "Parade Technologies Inc." },
+ { 0xC7, "Dune Networks" },
+ { 0xC8, "GigaDevice Semiconductor" },
+ { 0x49, "Modu Ltd." },
+ { 0x4A, "CEITEC" },
+ { 0xCB, "Northrop Grumman" },
+ { 0x4C, "XRONET Corporation" },
+ { 0xCD, "Sicon Semiconductor AB" },
+ { 0xCE, "Atla Electronics Co. Ltd." },
+ { 0x4F, "TOPRAM Technology" },
+ { 0xD0, "Silego Technology Inc." },
+ { 0x51, "Kinglife" },
+ { 0x52, "Ability Industries Ltd." },
+ { 0xD3, "Silicon Power Computer & Communications" },
+ { 0x54, "Augusta Technology, Inc." },
+ { 0xD5, "Nantronics Semiconductors" },
+ { 0xD6, "Hilscher Gesellschaft" },
+ { 0x57, "Quixant Ltd." },
+ { 0x58, "Percello Ltd." },
+ { 0xD9, "NextIO Inc." },
+ { 0xDA, "Scanimetrics Inc." },
+ { 0x5B, "FS-Semi Company Ltd." },
+ { 0xDC, "Infinera Corporation" },
+ { 0x5D, "SandForce Inc." },
+ { 0x5E, "Lexar Media" },
+ { 0xDF, "Teradyne Inc." },
+ { 0xE0, "Memory Exchange Corp." },
+ { 0x61, "Suzhou Smartek Electronics" },
+ { 0x62, "Avantium Corporation" },
+ { 0xE3, "ATP Electronics Inc." },
+ { 0x64, "Valens Semiconductor Ltd" },
+ { 0xE5, "Agate Logic, Inc." },
+ { 0xE6, "Netronome" },
+ { 0x67, "Zenverge, Inc." },
+ { 0x68, "N-trig Ltd" },
+ { 0xE9, "SanMax Technologies Inc." },
+ { 0xEA, "Contour Semiconductor Inc." },
+ { 0x6B, "TwinMOS" },
+ { 0xEC, "Silicon Systems, Inc." },
+ { 0x6D, "V-Color Technology Inc." },
+ { 0x6E, "Certicom Corporation" },
+ { 0xEF, "JSC ICC Milandr" },
+ { 0x70, "PhotoFast Global Inc." },
+ { 0xF1, "InnoDisk Corporation" },
+ { 0xF2, "Muscle Power" },
+ { 0x73, "Energy Micro" },
+ { 0xF4, "Innofidei" },
+ { 0x75, "CopperGate Communications" },
+ { 0x76, "Holtek Semiconductor Inc." },
+ { 0xF7, "Myson Century, Inc." },
+ { 0xF8, "FIDELIX" },
+ { 0x79, "Red Digital Cinema" },
+ { 0x7A, "Densbits Technology" },
+ { 0xFB, "Zempro" },
+ { 0x7C, "MoSys" },
+ { 0xFD, "Provigent" },
+ { 0xFE, "Triad Semiconductor, Inc." },
+ { 0x00, NULL },
+};
+
+const struct valstr jedec_id8_vals[] = {
+ { 0x01, "Siklu Communication Ltd." },
+ { 0x02, "A Force Manufacturing Ltd." },
+ { 0x83, "Strontium" },
+ { 0x04, "Abilis Systems" },
+ { 0x85, "Siglead, Inc." },
+ { 0x86, "Ubicom, Inc." },
+ { 0x07, "Unifosa Corporation" },
+ { 0x08, "Stretch, Inc." },
+ { 0x89, "Lantiq Deutschland GmbH" },
+ { 0x8A, "Visipro." },
+ { 0x0B, "EKMemory" },
+ { 0x8C, "Microelectronics Institute ZTE" },
+ { 0x0D, "Cognovo Ltd." },
+ { 0x0E, "Carry Technology Co. Ltd." },
+ { 0x8F, "Nokia" },
+ { 0x10, "King Tiger Technology" },
+ { 0x91, "Sierra Wireless" },
+ { 0x92, "HT Micron" },
+ { 0x13, "Albatron Technology Co. Ltd." },
+ { 0x94, "Leica Geosystems AG" },
+ { 0x15, "BroadLight" },
+ { 0x16, "AEXEA" },
+ { 0x97, "ClariPhy Communications, Inc." },
+ { 0x98, "Green Plug" },
+ { 0x19, "Design Art Networks" },
+ { 0x1A, "Mach Xtreme Technology Ltd." },
+ { 0x9B, "ATO Solutions Co. Ltd." },
+ { 0x1C, "Ramsta" },
+ { 0x9D, "Greenliant Systems, Ltd." },
+ { 0x9E, "Teikon" },
+ { 0x1F, "Antec Hadron" },
+ { 0x20, "NavCom Technology, Inc." },
+ { 0xA1, "Shanghai Fudan Microelectronics" },
+ { 0xA2, "Calxeda, Inc." },
+ { 0x23, "JSC EDC Electronics" },
+ { 0xA4, "Kandit Technology Co. Ltd." },
+ { 0x25, "Ramos Technology" },
+ { 0x26, "Goldenmars Technology" },
+ { 0xA7, "XeL Technology Inc." },
+ { 0xA8, "Newzone Corporation" },
+ { 0x29, "ShenZhen MercyPower Tech" },
+ { 0x2A, "Nanjing Yihuo Technology" },
+ { 0xAB, "Nethra Imaging Inc." },
+ { 0x2C, "SiTel Semiconductor BV" },
+ { 0xAD, "SolidGear Corporation" },
+ { 0xAE, "Topower Computer Ind Co Ltd." },
+ { 0x2F, "Wilocity" },
+ { 0xB0, "Profichip GmbH" },
+ { 0x31, "Gerad Technologies" },
+ { 0x32, "Ritek Corporation" },
+ { 0xB3, "Gomos Technology Limited" },
+ { 0x34, "Memoright Corporation" },
+ { 0xB5, "D-Broad, Inc." },
+ { 0xB6, "HiSilicon Technologies" },
+ { 0x37, "Syndiant Inc.." },
+ { 0x38, "Enverv Inc." },
+ { 0xB9, "Cognex" },
+ { 0xBA, "Xinnova Technology Inc." },
+ { 0x3B, "Ultron AG" },
+ { 0xBC, "Concord Idea Corporation" },
+ { 0x3D, "AIM Corporation" },
+ { 0x3E, "Lifetime Memory Products" },
+ { 0xBF, "Ramsway" },
+ { 0x40, "Recore Systems B.V." },
+ { 0xC1, "Haotian Jinshibo Science Tech" },
+ { 0xC2, "Being Advanced Memory" },
+ { 0x43, "Adesto Technologies" },
+ { 0xC4, "Giantec Semiconductor, Inc." },
+ { 0x45, "HMD Electronics AG" },
+ { 0x46, "Gloway International (HK)" },
+ { 0xC7, "Kingcore" },
+ { 0xC8, "Anucell Technology Holding" },
+ { 0x49, "Accord Software & Systems Pvt. Ltd." },
+ { 0x4A, "Active-Semi Inc." },
+ { 0xCB, "Denso Corporation" },
+ { 0x4C, "TLSI Inc." },
+ { 0xCD, "Qidan" },
+ { 0xCE, "Mustang" },
+ { 0x4F, "Orca Systems" },
+ { 0xD0, "Passif Semiconductor" },
+ { 0x51, "GigaDevice Semiconductor (Beijing) Inc." },
+ { 0x52, "Memphis Electronic" },
+ { 0xD3, "Beckhoff Automation GmbH" },
+ { 0x54, "Harmony Semiconductor Corp" },
+ { 0xD5, "Air Computers SRL" },
+ { 0xD6, "TMT Memory" },
+ { 0x57, "Eorex Corporation" },
+ { 0x58, "Xingtera" },
+ { 0xD9, "Netsol" },
+ { 0xDA, "Bestdon Technology Co. Ltd." },
+ { 0x5B, "Baysand Inc." },
+ { 0xDC, "Uroad Technology Co. Ltd." },
+ { 0x5D, "Wilk Elektronik S.A." },
+ { 0x5E, "AAI" },
+ { 0xDF, "Harman" },
+ { 0xE0, "Berg Microelectronics Inc." },
+ { 0x61, "ASSIA, Inc." },
+ { 0x62, "Visiontek Products LLC" },
+ { 0xE3, "OCMEMORY" },
+ { 0x64, "Welink Solution Inc." },
+ { 0xE5, "Shark Gaming" },
+ { 0xE6, "Avalanche Technology" },
+ { 0x67, "R&D Center ELVEES OJSC" },
+ { 0x68, "KingboMars Technology Co. Ltd." },
+ { 0xE9, "High Bridge Solutions Industria Eletronica" },
+ { 0xEA, "Transcend Technology Co. Ltd." },
+ { 0x6B, "Everspin Technologies" },
+ { 0xEC, "Hon-Hai Precision" },
+ { 0x6D, "Smart Storage Systems" },
+ { 0x6E, "Toumaz Group" },
+ { 0xEF, "Zentel Electronics Corporation" },
+ { 0x70, "Panram International Corporation" },
+ { 0xF1, "Silicon Space Technology" },
+ { 0xF2, "LITE-ON IT Corporation" },
+ { 0x73, "Inuitive" },
+ { 0xF4, "HMicro" },
+ { 0x75, "BittWare, Inc." },
+ { 0x76, "GLOBALFOUNDRIES" },
+ { 0xF7, "ACPI Digital Co. Ltd." },
+ { 0xF8, "Annapurna Labs" },
+ { 0x79, "AcSiP Technology Corporation" },
+ { 0x7A, "Idea! Electronic Systems" },
+ { 0xFB, "Gowe Technology Co. Ltd." },
+ { 0x7C, "Hermes Testing Solutions, Inc." },
+ { 0xFD, "Positivo BGH" },
+ { 0xFE, "Intelligence Silicon Technology" },
+ { 0x00, NULL },
+};
+
+const struct valstr jedec_id9_vals[] = {
+ { 0x01, "3D PLUS" },
+ { 0x02, "Diehl Aerospace" },
+ { 0x83, "Fairchild" },
+ { 0x04, "Mercury Systems" },
+ { 0x85, "Sonics, Inc." },
+ { 0x86, "GE Intelligent Platforms GmbH & Co." },
+ { 0x07, "Shenzhen Jinge Information Co. Ltd." },
+ { 0x08, "SCWW" },
+ { 0x89, "Silicon Motion Inc." },
+ { 0x8A, "Anurag" },
+ { 0x0B, "King Kong" },
+ { 0x8C, "FROM30 Co. Ltd." },
+ { 0x0D, "Gowin Semiconductor Corp" },
+ { 0x0E, "Fremont Micro Devices Ltd." },
+ { 0x8F, "Ericsson Modems" },
+ { 0x10, "Exelis" },
+ { 0x91, "Satixfy Ltd." },
+ { 0x92, "Galaxy Microsystems Ltd." },
+ { 0x13, "Gloway International Co. Ltd." },
+ { 0x94, "Lab" },
+ { 0x15, "Smart Energy Instruments" },
+ { 0x16, "Approved Memory Corporation" },
+ { 0x97, "Axell Corporation" },
+ { 0x98, "Essencore Limited" },
+ { 0x19, "Phytium" },
+ { 0x1A, "Xi’an SinoChip Semiconductor" },
+ { 0x9B, "Ambiq Micro" },
+ { 0x1C, "eveRAM Technology, Inc." },
+ { 0x9D, "Infomax" },
+ { 0x9E, "Butterfly Network, Inc." },
+ { 0x1F, "Shenzhen City Gcai Electronics" },
+ { 0x20, "Stack Devices Corporation" },
+ { 0xA1, "ADK Media Group" },
+ { 0xA2, "TSP Global Co., Ltd." },
+ { 0x23, "HighX" },
+ { 0xA4, "Shenzhen Elicks Technology" },
+ { 0x25, "ISSI/Chingis" },
+ { 0x26, "Google, Inc." },
+ { 0xA7, "Dasima International Development" },
+ { 0xA8, "Leahkinn Technology Limited" },
+ { 0x29, "HIMA Paul Hildebrandt GmbH Co KG" },
+ { 0x2A, "Keysight Technologies" },
+ { 0xAB, "Techcomp International (Fastable)" },
+ { 0x2C, "Ancore Technology Corporation" },
+ { 0xAD, "Nuvoton" },
+ { 0xAE, "Korea Uhbele International Group Ltd." },
+ { 0x2F, "Ikegami Tsushinki Co Ltd." },
+ { 0xB0, "RelChip, Inc." },
+ { 0x31, "Baikal Electronics" },
+ { 0x32, "Nemostech Inc." },
+ { 0xB3, "Memorysolution GmbH" },
+ { 0x34, "Silicon Integrated Systems Corporation" },
+ { 0xB5, "Xiede" },
+ { 0xB6, "Multilaser Components" },
+ { 0x37, "Flash Chi" },
+ { 0x38, "Jone" },
+ { 0xB9, "GCT Semiconductor Inc." },
+ { 0xBA, "Hong Kong Zetta Device Technology" },
+ { 0x3B, "Unimemory Technology(s) Pte Ltd." },
+ { 0xBC, "Cuso" },
+ { 0x3D, "Kuso" },
+ { 0x3E, "Uniquify Inc." },
+ { 0xBF, "Skymedi Corporation" },
+ { 0x40, "Core Chance Co. Ltd." },
+ { 0xC1, "Tekism Co. Ltd." },
+ { 0xC2, "Seagate Technology PLC" },
+ { 0x43, "Hong Kong Gaia Group Co. Limited" },
+ { 0xC4, "Gigacom Semiconductor LLC" },
+ { 0x45, "V2 Technologies" },
+ { 0x46, "TLi" },
+ { 0xC7, "Neotion" },
+ { 0xC8, "Lenovo" },
+ { 0x49, "Shenzhen Zhongteng Electronic Corp. Ltd." },
+ { 0x4A, "Compound Photonics" },
+ { 0xCB, "in2H2 inc" },
+ { 0x4C, "Shenzhen Pango Microsystems Co. Ltd" },
+ { 0xCD, "Vasekey" },
+ { 0xCE, "Cal-Comp Industria de Semicondutores" },
+ { 0x4F, "Eyenix Co., Ltd." },
+ { 0xD0, "Heoriady" },
+ { 0x51, "Accelerated Memory Production Inc." },
+ { 0x52, "INVECAS, Inc." },
+ { 0xD3, "AP Memory" },
+ { 0x54, "Douqi Technology" },
+ { 0xD5, "Etron Technology, Inc." },
+ { 0xD6, "Indie Semiconductor" },
+ { 0x57, "Socionext Inc." },
+ { 0x58, "HGST" },
+ { 0xD9, "EVGA" },
+ { 0xDA, "Audience Inc." },
+ { 0x5B, "EpicGear" },
+ { 0xDC, "Vitesse Enterprise Co." },
+ { 0x5D, "Foxtronn International Corporation" },
+ { 0x5E, "Bretelon Inc." },
+ { 0xDF, "Zbit Semiconductor, Inc." },
+ { 0xE0, "Eoplex Inc" },
+ { 0x61, "MaxLinear, Inc." },
+ { 0x62, "ETA Devices" },
+ { 0xE3, "LOKI" },
+ { 0x64, "IMS Semiconductor Co., Ltd" },
+ { 0xE5, "Dosilicon Co., Ltd." },
+ { 0xE6, "Dolphin Integration" },
+ { 0x67, "Shenzhen Mic Electronics Technology" },
+ { 0x68, "Boya Microelectronics Inc." },
+ { 0xE9, "Geniachip (Roche)" },
+ { 0xEA, "Axign" },
+ { 0x6B, "Kingred Electronic Technology Ltd." },
+ { 0xEC, "Chao Yue Zhuo Computer Business Dept." },
+ { 0x6D, "Guangzhou Si Nuo Electronic Technology." },
{ 0x00, NULL },
};
@@ -842,6 +1396,22 @@ ipmi_spd_print(uint8_t *spd_data, int len)
printf("%s\n", val2str(spd_data[118], jedec_id5_vals));
break;
+ case 5:
+ printf("%s\n", val2str(spd_data[118], jedec_id6_vals));
+ break;
+
+ case 6:
+ printf("%s\n", val2str(spd_data[118], jedec_id7_vals));
+ break;
+
+ case 7:
+ printf("%s\n", val2str(spd_data[118], jedec_id8_vals));
+ break;
+
+ case 8:
+ printf("%s\n", val2str(spd_data[118], jedec_id9_vals));
+ break;
+
default:
printf("%s\n", "JEDEC JEP106 update required" );
@@ -928,6 +1498,22 @@ ipmi_spd_print(uint8_t *spd_data, int len)
printf("%s\n", val2str(spd_data[321], jedec_id5_vals));
break;
+ case 5:
+ printf("%s\n", val2str(spd_data[321], jedec_id6_vals));
+ break;
+
+ case 6:
+ printf("%s\n", val2str(spd_data[321], jedec_id7_vals));
+ break;
+
+ case 7:
+ printf("%s\n", val2str(spd_data[321], jedec_id8_vals));
+ break;
+
+ case 8:
+ printf("%s\n", val2str(spd_data[321], jedec_id9_vals));
+ break;
+
default:
printf("%s\n", "JEDEC JEP106 update required");
@@ -983,12 +1569,30 @@ ipmi_spd_print(uint8_t *spd_data, int len)
else {
if (spd_data[67] != 0x7f)
printf("%s\n",
- val2str(spd_data[67],
- jedec_id4_vals));
- else
- printf("%s\n",
- val2str(spd_data[68],
- jedec_id5_vals));
+ val2str(spd_data[67], jedec_id4_vals));
+ else {
+ if (spd_data[68] != 0x7f)
+ printf("%s\n",
+ val2str(spd_data[68], jedec_id5_vals));
+ else {
+ if (spd_data[69] != 0x7f)
+ printf("%s\n",
+ val2str(spd_data[69], jedec_id6_vals));
+ else {
+ if (spd_data[70] != 0x7f)
+ printf("%s\n",
+ val2str(spd_data[70], jedec_id7_vals));
+ else {
+ if (spd_data[71] != 0x7f)
+ printf("%s\n",
+ val2str(spd_data[71], jedec_id8_vals));
+ else
+ printf("%s\n",
+ val2str(spd_data[72], jedec_id9_vals));
+ }
+ }
+ }
+ }
}
}
}
diff --git a/lib/helper.c b/lib/helper.c
index b9316c4..022a9c9 100644
--- a/lib/helper.c
+++ b/lib/helper.c
@@ -30,6 +30,11 @@
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
#define _POSIX_SOURCE
+#define /* glibc 2.19 and earlier */ _BSD_SOURCE || \
+ /* Since glibc 2.20 */_DEFAULT_SOURCE || \
+ _XOPEN_SOURCE >= 500 || \
+ _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || \
+ /* Since glibc 2.10: */ _POSIX_C_SOURCE >= 200112L \
#include <sys/types.h>
#include <sys/stat.h>
diff --git a/lib/hpm2.c b/lib/hpm2.c
index 6420629..52e5366 100644
--- a/lib/hpm2.c
+++ b/lib/hpm2.c
@@ -36,6 +36,12 @@
#include <ipmitool/log.h>
#include <ipmitool/bswap.h>
+/* From src/plugins/ipmi_intf.c: */
+void
+ipmi_intf_set_max_request_data_size(struct ipmi_intf * intf, uint16_t size);
+void
+ipmi_intf_set_max_response_data_size(struct ipmi_intf * intf, uint16_t size);
+
#if HAVE_PRAGMA_PACK
# pragma pack(push, 1)
#endif
@@ -128,7 +134,7 @@ int hpm2_get_capabilities(struct ipmi_intf * intf,
#endif
/* check HPM.2 revision */
- if (caps->hpm2_revision_id != HPM2_REVISION) {
+ if (caps->hpm2_revision_id == 0) {
lprintf(LOG_NOTICE, "Bad HPM.2 revision, rev=%d",
caps->hpm2_revision_id);
return -1;
diff --git a/lib/ipmi_chassis.c b/lib/ipmi_chassis.c
index d4e88ee..fb7c27d 100644
--- a/lib/ipmi_chassis.c
+++ b/lib/ipmi_chassis.c
@@ -29,6 +29,8 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _SVID_SOURCE || _BSD_SOURCE || _POSIX_C_SOURCE >= 1 || \
+ _XOPEN_SOURCE || _POSIX_SOURCE
#include <stdlib.h>
#include <string.h>
@@ -110,12 +112,6 @@ ipmi_chassis_power_control(struct ipmi_intf * intf, uint8_t ctl)
printf("Chassis Power Control: %s\n",
val2str(ctl, ipmi_chassis_power_control_vals));
-
-#if 0 /* this can cause sessions to hang around after power commands */
- /* sessions often get lost when changing chassis power */
- intf->abort = 1;
-#endif
-
return 0;
}
diff --git a/lib/ipmi_dcmi.c b/lib/ipmi_dcmi.c
index aeee944..2cfe48f 100755
--- a/lib/ipmi_dcmi.c
+++ b/lib/ipmi_dcmi.c
@@ -36,6 +36,7 @@
* This code conforms to the 1.0 DCMI Specification
* released by Hari Ramachandran of the Intel Corporation
*/
+#define _BSD_SOURCE
#include <stdlib.h>
#include <string.h>
@@ -671,7 +672,7 @@ chk_nm_rsp(struct ipmi_rs * rsp)
* some issue and cannot complete the command
*/
if (rsp == NULL) {
- lprintf(LOG_ERR, "\n No reponse to NM request");
+ lprintf(LOG_ERR, "\n No response to NM request");
return 1;
}
/* if the completion code is greater than zero there was an error. We'll
@@ -1426,7 +1427,7 @@ ipmi_dcmi_getthermalpolicy(struct ipmi_intf * intf, uint8_t entityID,
/* rsp->data[0] is equal to response data byte 2 in spec */
memcpy(&val, rsp->data, sizeof (val));
printf("\n");
- printf(" Persistance flag is: %s\n",
+ printf(" Persistence flag is: %s\n",
((val.exceptionActions & 0x80) ? "set" : "notset"));
printf(" Exception Actions, taken if the Temperature Limit exceeded:\n");
printf(" Hard Power Off system and log event: %s\n",
@@ -1768,16 +1769,6 @@ ipmi_dcmi_pwr_slimit(struct ipmi_intf * intf, const char * option,
uint32_t lvalue = 0;
rsp = ipmi_dcmi_pwr_glimit(intf); /* get the power limit settings */
-# if 0
- {
- unsigned char counter = 0;
- printf("DATA (%d): ", rsp->data_len);
- for(counter = 0; counter < rsp->data_len; counter ++) {
- printf("%02X ", rsp->data[counter]);
- }
- printf("\n");
- }
-# endif
/* rsp can be a null so check response before any operation on it to
* avoid sig segv
*/
@@ -3163,7 +3154,7 @@ ipmi_nm_thresh(struct ipmi_intf * intf, int argc, char **argv)
return -1;
}
if (str2ushort(argv[0], &thresh.thresholds[i++]) < 0) {
- lprintf(LOG_ERR,"threshold value %d count must be a positve integer.\n", i);
+ lprintf(LOG_ERR,"threshold value %d count must be a positive integer.\n", i);
return -1;
}
default:
diff --git a/lib/ipmi_delloem.c b/lib/ipmi_delloem.c
index 2214c99..9bb0885 100644
--- a/lib/ipmi_delloem.c
+++ b/lib/ipmi_delloem.c
@@ -251,6 +251,9 @@ static int ipmi_setled_state(struct ipmi_intf *intf, int bayId, int slotId,
int state);
static int ipmi_getdrivemap(struct ipmi_intf *intf, int b, int d, int f,
int *bayId, int *slotId);
+static int
+get_nic_selection_mode_12g(struct ipmi_intf* intf,int current_arg,
+ char ** argv, char *nic_set);
/* Function Name: ipmi_delloem_main
*
@@ -2051,7 +2054,7 @@ IsLANSupported()
return 1;
}
-int
+static int
get_nic_selection_mode_12g(struct ipmi_intf* intf,int current_arg,
char ** argv, char *nic_set)
{
@@ -2783,8 +2786,6 @@ ipmi_set_power_capstatus_command(struct ipmi_intf * intf, uint8_t val)
static int
ipmi_powermgmt(struct ipmi_intf * intf)
{
- time_t now;
- struct tm* tm;
struct ipmi_rs * rsp;
struct ipmi_rq req;
uint8_t msg_data[2];
@@ -2811,9 +2812,6 @@ ipmi_powermgmt(struct ipmi_intf * intf)
int remainder;
int wattReading;
- now = time(0);
- tm = gmtime(&now);
-
memset(&req, 0, sizeof(req));
req.msg.netfn = IPMI_NETFN_STORAGE;
req.msg.lun = 0;
@@ -2893,7 +2891,6 @@ ipmi_powermgmt(struct ipmi_intf * intf)
ipmi_time_to_str(ampPeakTimeConv, ampPeakTime);
ipmi_time_to_str(wattPeakTimeConv, wattPeakTime);
ipmi_time_to_str(bmctimeconv, bmctime);
- now = time(0);
remainder = (cumReadingConv % 1000);
cumReadingConv = cumReadingConv / 1000;
@@ -3645,7 +3642,6 @@ ipmi_set_power_cap(struct ipmi_intf * intf, int unit, int val)
uint8_t data[13], *rdata;
uint16_t powercapval;
uint64_t maxpowerbtuphr;
- uint64_t maxpowerbtuphr1;
uint64_t minpowerbtuphr;
IPMI_POWER_CAP ipmipowercap;
@@ -3733,11 +3729,10 @@ ipmi_set_power_cap(struct ipmi_intf * intf, int unit, int val)
|| (val > ipmipowercap.MaximumPowerConsmp)) && (unit == btuphr)) {
minpowerbtuphr = watt_to_btuphr_conversion(ipmipowercap.MinimumPowerConsmp);
maxpowerbtuphr = watt_to_btuphr_conversion(ipmipowercap.MaximumPowerConsmp);
- maxpowerbtuphr1 = watt_to_btuphr_conversion(ipmipowercap.MaximumPowerConsmp);
lprintf(LOG_ERR,
"Cap value is out of boundary conditon it should be between %d",
minpowerbtuphr);
- lprintf(LOG_ERR, " -%d", maxpowerbtuphr1);
+ lprintf(LOG_ERR, " -%d", maxpowerbtuphr);
return -1;
}
rc = ipmi_mc_setsysinfo(intf, 13, data);
diff --git a/lib/ipmi_ekanalyzer.c b/lib/ipmi_ekanalyzer.c
index afee48b..d6ce4c7 100644
--- a/lib/ipmi_ekanalyzer.c
+++ b/lib/ipmi_ekanalyzer.c
@@ -458,7 +458,6 @@ ipmi_ekanalyzer_main(struct ipmi_intf *intf, int argc, char **argv)
{
int rc = ERROR_STATUS;
int file_type[MAX_FILE_NUMBER];
- int tmp_ret = 0;
char *filename[MAX_FILE_NUMBER];
unsigned int argument_offset = 0;
unsigned int type_offset = 0;
@@ -508,7 +507,7 @@ ipmi_ekanalyzer_main(struct ipmi_intf *intf, int argc, char **argv)
rc = ipmi_ek_display_fru_header (filename[type_offset]);
if (rc != ERROR_STATUS) {
/* Display FRU header info in detail record */
- tmp_ret = ipmi_ek_display_fru_header_detail(filename[type_offset]);
+ rc = ipmi_ek_display_fru_header_detail(filename[type_offset]);
/* Convert from binary data into multi record structure */
rc = ipmi_ekanalyzer_fru_file2structure (filename[type_offset],
&list_head, &list_record, &list_last );
@@ -2425,7 +2424,7 @@ ipmi_ek_display_fru_header_detail(char *filename)
return (-1);
}
/*** Display FRU Internal Use Info ***/
- if (!feof(input_file)) {
+ if (header.offset.internal != 0) {
unsigned char format_version;
unsigned long len = 0;
@@ -2868,7 +2867,6 @@ ipmi_ek_display_product_info_area(FILE *input_file, long offset)
return (-1);
}
- fread(&data, 1, 1, input_file);
printf("Language Code: %d\n", data);
len--;
/* Product Mfg */
diff --git a/lib/ipmi_event.c b/lib/ipmi_event.c
index 2f1032e..16fc80d 100644
--- a/lib/ipmi_event.c
+++ b/lib/ipmi_event.c
@@ -29,6 +29,7 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _BSD_SOURCE
#include <stdlib.h>
#include <stdio.h>
diff --git a/lib/ipmi_fru.c b/lib/ipmi_fru.c
index 40f98e7..5c94b08 100644
--- a/lib/ipmi_fru.c
+++ b/lib/ipmi_fru.c
@@ -50,6 +50,16 @@
#define FRU_MULTIREC_CHUNK_SIZE (255 + sizeof(struct fru_multirec_header))
+/* From lib/dimm_spd.c: */
+int
+ipmi_spd_print_fru(struct ipmi_intf * intf, uint8_t id);
+
+/* From src/plugins/ipmi_intf.c: */
+void
+ipmi_intf_set_max_request_data_size(struct ipmi_intf * intf, uint16_t size);
+void
+ipmi_intf_set_max_response_data_size(struct ipmi_intf * intf, uint16_t size);
+
extern int verbose;
static void ipmi_fru_read_to_bin(struct ipmi_intf * intf, char * pFileName, uint8_t fruId);
@@ -810,12 +820,11 @@ fru_area_print_multirec_bloc(struct ipmi_intf * intf, struct fru_info * fru,
uint8_t id, uint32_t offset)
{
uint8_t * fru_data = NULL;
- uint32_t fru_len, i;
+ uint32_t i;
struct fru_multirec_header * h;
uint32_t last_off, len;
i = last_off = offset;
- fru_len = 0;
fru_data = malloc(fru->size + 1);
if (fru_data == NULL) {
@@ -1592,7 +1601,6 @@ static void ipmi_fru_oemkontron_get( int argc, char ** argv,uint8_t * fru_data,
printf("Kontron OEM Information Record\n");
version = oh->record_version;
- int blockstart;
uint8_t blockCount;
uint8_t blockIndex=0;
@@ -1613,7 +1621,6 @@ static void ipmi_fru_oemkontron_get( int argc, char ** argv,uint8_t * fru_data,
void * pRecordData;
uint8_t nameLen;
- blockstart = offset;
nameLen = ( fru_data[offset++] &= 0x3F );
printf(" Name: %*.*s\n",nameLen, nameLen, (const char *)(fru_data+offset));
@@ -1743,7 +1750,6 @@ static int ipmi_fru_oemkontron_edit( int argc, char ** argv,uint8_t * fru_data,
version = oh->record_version;
if( version == formatVersion ){
- int blockstart;
uint8_t blockCount;
uint8_t blockIndex=0;
@@ -1765,8 +1771,6 @@ static int ipmi_fru_oemkontron_edit( int argc, char ** argv,uint8_t * fru_data,
void * pRecordData;
uint8_t nameLen;
- blockstart = offset;
-
nameLen = ( fru_data[offset++] & 0x3F );
if( version == 0 || version == 1 )
@@ -3357,6 +3361,9 @@ ipmi_fru_edit_multirec(struct ipmi_intf * intf, uint8_t id ,
retStatus = ipmi_fru_get_multirec_location_from_fru(intf, id, &fruInfo,
&offFruMultiRec,
&fruMultiRecSize);
+ if (retStatus != 0) {
+ return retStatus;
+ }
lprintf(LOG_DEBUG, "FRU Size : %lu\n", fruMultiRecSize);
@@ -3406,14 +3413,13 @@ ipmi_fru_edit_multirec(struct ipmi_intf * intf, uint8_t id ,
{
uint8_t * fru_data;
- uint32_t fru_len, i;
+ uint32_t i;
uint32_t offset= offFruMultiRec;
struct fru_multirec_header * h;
uint32_t last_off, len;
uint8_t error=0;
i = last_off = offset;
- fru_len = 0;
memset(&fru, 0, sizeof(fru));
fru_data = malloc(fru.size + 1);
@@ -3560,6 +3566,9 @@ ipmi_fru_get_multirec(struct ipmi_intf * intf, uint8_t id ,
retStatus = ipmi_fru_get_multirec_location_from_fru(intf, id, &fruInfo,
&offFruMultiRec,
&fruMultiRecSize);
+ if (retStatus != 0) {
+ return retStatus;
+ }
lprintf(LOG_DEBUG, "FRU Size : %lu\n", fruMultiRecSize);
@@ -3609,14 +3618,13 @@ ipmi_fru_get_multirec(struct ipmi_intf * intf, uint8_t id ,
{
uint8_t * fru_data;
- uint32_t fru_len, i;
+ uint32_t i;
uint32_t offset= offFruMultiRec;
struct fru_multirec_header * h;
uint32_t last_off, len;
uint8_t error=0;
i = last_off = offset;
- fru_len = 0;
fru_data = malloc(fru.size + 1);
if (fru_data == NULL) {
@@ -4851,7 +4859,7 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
uint8_t *fru_data_new = NULL;
uint8_t *fru_area = NULL;
uint32_t fru_field_offset, fru_field_offset_tmp;
- uint32_t fru_section_len, old_section_len, header_offset;
+ uint32_t fru_section_len, header_offset;
uint32_t chassis_offset, board_offset, product_offset;
uint32_t chassis_len, board_len, product_len, product_len_new;
int num_byte_change = 0, padding_len = 0;
@@ -4925,9 +4933,6 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
goto ipmi_fru_set_field_string_rebuild_out;
}
- /* Keep length for future old section display */
- old_section_len = fru_section_len;
-
/*************************
3) Seek to field index */
for (i = 0;i <= f_index; i++) {
@@ -5042,6 +5047,11 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
header.offset.product += change_size_by_8;
}
+ if ((f_type == 'c' ) || (f_type == 'b' ) || (f_type == 'p' )) {
+ printf("Change multi offset from %d to %d\n", header.offset.multi, header.offset.multi + change_size_by_8);
+ header.offset.multi += change_size_by_8;
+ }
+
/* Adjust length of the section */
if (f_type == 'c')
{
@@ -5141,31 +5151,6 @@ ipmi_fru_set_field_string_rebuild(struct ipmi_intf * intf, uint8_t fruId,
#ifdef DBG_RESIZE_FRU
printf("Calculate New Checksum: %x\n", (0 - cksum));
#endif
-
- /****** ENABLE to show section modified before and after ********/
- #if 0
- printf("Section: ");
- for( counter = 0; counter <old_section_len; counter ++ )
- {
- if((counter %16) == 0)
- {
- printf("\n");
- }
- printf( "%02X ", *(fru_data_old + header_offset + counter) );
- }
- printf("\n");
-
- printf("Section: ");
- for( counter = 0; counter <fru_section_len; counter ++ )
- {
- if((counter %16) == 0)
- {
- printf("\n");
- }
- printf( "%02X ", *(fru_data_new + header_offset + counter) );
- }
- printf("\n");
- #endif
}
else
{
diff --git a/lib/ipmi_hpmfwupg.c b/lib/ipmi_hpmfwupg.c
index 8ada69b..9cbd4ff 100644
--- a/lib/ipmi_hpmfwupg.c
+++ b/lib/ipmi_hpmfwupg.c
@@ -30,6 +30,10 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _BSD_SOURCE || \
+ (_XOPEN_SOURCE >= 500 || \
+ _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && \
+ !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
#include <ipmitool/ipmi_intf.h>
#include <ipmitool/ipmi_mc.h>
@@ -38,14 +42,20 @@
#include <ipmitool/ipmi_strings.h>
#include <ipmitool/log.h>
#include "../src/plugins/lan/md5.h"
+#include <ctype.h>
#include <stdio.h>
#include <time.h>
#include <sys/param.h>
+#include <unistd.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
+/* From src/plugins/ipmi_intf.c: */
+uint16_t
+ipmi_intf_get_max_request_data_size(struct ipmi_intf * intf);
+
extern int verbose;
int HpmfwupgUpgrade(struct ipmi_intf *intf, char *imageFilename,
@@ -106,6 +116,10 @@ int HpmFwupgActionUploadFirmware(struct HpmfwupgComponentBitMask components,
struct ipmi_intf *intf,
int option,
int *pFlagColdReset);
+int
+HpmfwupgPreUpgradeCheck(struct ipmi_intf *intf,
+ struct HpmfwupgUpgradeCtx *pFwupgCtx,
+ int componentMask, int option);
/* HpmGetuserInput - get input from user
*
@@ -294,7 +308,6 @@ HpmfwupgTargetCheck(struct ipmi_intf *intf, int option)
struct HpmfwupgGetTargetUpgCapabilitiesCtx targetCapCmd;
int rc = HPMFWUPG_SUCCESS;
int componentId = 0;
- int flagColdReset = FALSE;
struct ipm_devid_rsp devIdrsp;
struct HpmfwupgGetComponentPropertiesCtx getCompProp;
int mode = 0;
@@ -431,13 +444,6 @@ HpmfwupgTargetCheck(struct ipmi_intf *intf, int option)
gVersionInfo[componentId].deferredAux[2] = 0xff;
gVersionInfo[componentId].deferredAux[3] = 0xff;
}
- if (gVersionInfo[componentId].coldResetRequired) {
- /*
- * If any of the component indicates that the Payload Cold reset is required
- * then set the flag
- */
- flagColdReset = TRUE;
- }
if (option & VIEW_MODE) {
HpmDisplayVersion(mode,
&gVersionInfo[componentId],
@@ -996,14 +1002,11 @@ HpmfwupgUpgradeStage(struct ipmi_intf *intf,
struct HpmfwupgActionRecord* pActionRecord;
int rc = HPMFWUPG_SUCCESS;
unsigned char *pImagePtr;
- unsigned int actionsSize;
int flagColdReset = FALSE;
/* Put pointer after image header */
pImagePtr = (unsigned char*)
(pFwupgCtx->pImageData + sizeof(struct HpmfwupgImageHeader) +
pImageHeader->oemDataLength + sizeof(unsigned char)/*checksum*/);
- /* Deternime actions size */
- actionsSize = pFwupgCtx->imageSize - sizeof(struct HpmfwupgImageHeader);
if (!(option & VIEW_MODE)) {
HpmDisplayUpgradeHeader();
}
@@ -2021,13 +2024,13 @@ HpmfwupgQueryRollbackStatus(struct ipmi_intf *intf,
memcpy(&pCtx->resp, rsp->data,
sizeof(struct HpmfwupgQueryRollbackStatusResp));
if (pCtx->resp.rollbackComp.ComponentBits.byte != 0) {
- /* Rollback occured */
+ /* Rollback occurred */
lprintf(LOG_NOTICE,
- "Rollback occured on component mask: 0x%02x",
+ "Rollback occurred on component mask: 0x%02x",
pCtx->resp.rollbackComp.ComponentBits.byte);
} else {
lprintf(LOG_NOTICE,
- "No Firmware rollback occured");
+ "No Firmware rollback occurred");
}
} else if (rsp->ccode == 0x81) {
lprintf(LOG_ERR,
diff --git a/lib/ipmi_ime.c b/lib/ipmi_ime.c
index f8e8c09..6bdca3b 100755
--- a/lib/ipmi_ime.c
+++ b/lib/ipmi_ime.c
@@ -430,11 +430,9 @@ static int ImeUpgrade(struct ipmi_intf *intf, char* imageFilename)
if(currentPercent != shownPercent)
{
- uint16_t timeElapsedSecond;
shownPercent = currentPercent;
printf("Percent: %02i, ", shownPercent);
time(&current);
- timeElapsedSecond = (current-start) + ((current-start)%60);
printf("Elapsed time %02ld:%02ld\r",((current-start)/60), ((current-start)%60));
fflush(stdout);
diff --git a/lib/ipmi_isol.c b/lib/ipmi_isol.c
index 84d7db8..bc0b08b 100644
--- a/lib/ipmi_isol.c
+++ b/lib/ipmi_isol.c
@@ -29,6 +29,7 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _XOPEN_SOURCE
#include <stdlib.h>
#include <string.h>
diff --git a/lib/ipmi_main.c b/lib/ipmi_main.c
index a752b59..e6f96f6 100644
--- a/lib/ipmi_main.c
+++ b/lib/ipmi_main.c
@@ -30,6 +30,10 @@
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
#define _XOPEN_SOURCE 700
+#define _BSD_SOURCE || \
+ (_XOPEN_SOURCE >= 500 || \
+ _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && \
+ !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
#include <stdlib.h>
#include <stdio.h>
@@ -69,6 +73,8 @@
#include <ipmitool/ipmi_oem.h>
#include <ipmitool/ipmi_ekanalyzer.h>
#include <ipmitool/ipmi_picmg.h>
+#include <ipmitool/ipmi_kontronoem.h>
+#include <ipmitool/ipmi_vita.h>
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -80,6 +86,10 @@
# define OPTION_STRING "I:46hVvcH:f:U:p:d:S:D:"
#endif
+/* From src/plugins/ipmi_intf.c: */
+void
+ipmi_intf_set_max_request_data_size(struct ipmi_intf * intf, uint16_t size);
+
extern int verbose;
extern int csv_output;
extern const struct valstr ipmi_privlvl_vals[];
@@ -332,7 +342,7 @@ ipmi_parse_hex(const char *str)
else /* it's A-F or a-f */
b = (*p | 0x20) - 'a' + 10; /* convert to lowercase and to 10-15 */
- *q = *q + b << shift;
+ *q = *q + (b << shift);
if (shift)
shift = 0;
else {
diff --git a/lib/ipmi_mc.c b/lib/ipmi_mc.c
index a93134e..5b4a080 100644
--- a/lib/ipmi_mc.c
+++ b/lib/ipmi_mc.c
@@ -779,7 +779,7 @@ ipmi_mc_rst_watchdog(struct ipmi_intf * intf)
if (rsp->ccode) {
lprintf(LOG_ERR, "Reset Watchdog Timer command failed: %s",
(rsp->ccode == IPM_WATCHDOG_RESET_ERROR) ?
- "Attempt to reset unitialized watchdog" :
+ "Attempt to reset uninitialized watchdog" :
val2str(rsp->ccode, completion_code_vals));
return -1;
}
diff --git a/lib/ipmi_pef.c b/lib/ipmi_pef.c
index 1beebf0..22f29e4 100644
--- a/lib/ipmi_pef.c
+++ b/lib/ipmi_pef.c
@@ -267,7 +267,7 @@ ipmi_pef_print_lan_dest(struct ipmi_intf * intf, uint8_t ch, uint8_t dest)
struct pef_lan_cfgparm_dest_type * ptype;
struct pef_lan_cfgparm_dest_info * pinfo;
char buf[32];
- uint8_t tbl_size, dsttype, timeout, retries;
+ uint8_t dsttype, timeout, retries;
memset(&lsel, 0, sizeof(lsel));
lsel.id = PEF_LAN_CFGPARM_ID_DEST_COUNT;
@@ -283,9 +283,6 @@ ipmi_pef_print_lan_dest(struct ipmi_intf * intf, uint8_t ch, uint8_t dest)
"Alert destination count");
return;
}
- tbl_size = (rsp->data[1] & PEF_LAN_DEST_TABLE_SIZE_MASK);
- //if (tbl_size == 0 || dest == 0) /* LAN alerting not supported */
- // return;
lsel.id = PEF_LAN_CFGPARM_ID_DESTTYPE;
lsel.set = dest;
diff --git a/lib/ipmi_picmg.c b/lib/ipmi_picmg.c
index f47577e..70f845d 100644
--- a/lib/ipmi_picmg.c
+++ b/lib/ipmi_picmg.c
@@ -1280,49 +1280,53 @@ ipmi_picmg_get_led_state(struct ipmi_intf * intf, int argc, char ** argv)
}
printf("LED states: %x ", rsp->data[1] );
- if (rsp->data[1] == 0x1)
- printf("[LOCAL CONTROL]\n");
- else if (rsp->data[1] == 0x2)
- printf("[OVERRIDE]\n");
- else if (rsp->data[1] == 0x4)
- printf("[LAMPTEST]\n");
- else
- printf("\n");
+
+ if (!(rsp->data[1] & 0x1)) {
+ printf("[NO LOCAL CONTROL]\n");
+ return 0;
+ }
+
+ printf("[LOCAL CONTROL");
+
+ if (rsp->data[1] & 0x2) {
+ printf("|OVERRIDE");
+ }
+
+ if (rsp->data[1] & 0x4) {
+ printf("|LAMPTEST");
+ }
+
+ printf("]\n");
printf(" Local Control function: %x ", rsp->data[2] );
- if (rsp->data[2] == 0x0)
+ if (rsp->data[2] == 0x0) {
printf("[OFF]\n");
- else if (rsp->data[2] == 0xff)
+ } else if (rsp->data[2] == 0xff) {
printf("[ON]\n");
- else
+ } else {
printf("[BLINKING]\n");
+ }
printf(" Local Control On-Duration: %x\n", rsp->data[3] );
printf(" Local Control Color: %x [%s]\n", rsp->data[4], led_color_str[ rsp->data[4] ]);
/* override state or lamp test */
- if (rsp->data[1] == 0x02) {
+ if (rsp->data[1] & 0x02) {
printf(" Override function: %x ", rsp->data[5] );
- if (rsp->data[2] == 0x0)
+ if (rsp->data[2] == 0x0) {
printf("[OFF]\n");
- else if (rsp->data[2] == 0xff)
+ } else if (rsp->data[2] == 0xff) {
printf("[ON]\n");
- else
+ } else {
printf("[BLINKING]\n");
+ }
printf(" Override On-Duration: %x\n", rsp->data[6] );
printf(" Override Color: %x [%s]\n", rsp->data[7], led_color_str[ rsp->data[7] ]);
- }else if (rsp->data[1] == 0x06) {
- printf(" Override function: %x ", rsp->data[5] );
- if (rsp->data[2] == 0x0)
- printf("[OFF]\n");
- else if (rsp->data[2] == 0xff)
- printf("[ON]\n");
- else
- printf("[BLINKING]\n");
- printf(" Override On-Duration: %x\n", rsp->data[6] );
- printf(" Override Color: %x [%s]\n", rsp->data[7], led_color_str[ rsp->data[7] ]);
+ }
+
+ if (rsp->data[1] & 0x04) {
printf(" Lamp test duration: %x\n", rsp->data[8] );
}
diff --git a/lib/ipmi_sdr.c b/lib/ipmi_sdr.c
index 292a7d3..e3122dc 100644
--- a/lib/ipmi_sdr.c
+++ b/lib/ipmi_sdr.c
@@ -32,6 +32,7 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _BSD_SOURCE
#include <string.h>
@@ -69,6 +70,10 @@ static struct ipmi_sdr_iterator *sdr_list_itr = NULL;
void printf_sdr_usage();
+/* From src/plugins/ipmi_intf.c: */
+uint16_t
+ipmi_intf_get_max_response_data_size(struct ipmi_intf * intf);
+
/* ipmi_sdr_get_unit_string - return units for base/modifier
*
* @pct: units are a percentage
@@ -864,9 +869,11 @@ ipmi_sdr_get_header(struct ipmi_intf *intf, struct ipmi_sdr_iterator *itr)
* situation, we cheat and put the original record id back in.
* Otherwise, a later Get SDR Record command will fail with
* completion code CBh = "Requested Sensor, data, or record
- * not present"
+ * not present". Exception is if 'Record ID' is specified as 0000h.
+ * For further information see IPMI v2.0 Spec, Section 33.12
*/
- if (sdr_rs.id != itr->next) {
+ if ((itr->next != 0x0000) &&
+ (sdr_rs.id != itr->next)) {
lprintf(LOG_DEBUG, "SDR record id mismatch: 0x%04x", sdr_rs.id);
sdr_rs.id = itr->next;
}
diff --git a/lib/ipmi_sdradd.c b/lib/ipmi_sdradd.c
index f5bf78a..52848a3 100644
--- a/lib/ipmi_sdradd.c
+++ b/lib/ipmi_sdradd.c
@@ -38,6 +38,7 @@
#include <stdio.h>
#include <time.h>
#include <fcntl.h>
+#include <unistd.h>
#include <ipmitool/helper.h>
#include <ipmitool/log.h>
diff --git a/lib/ipmi_sel.c b/lib/ipmi_sel.c
index 5df66a7..b6629a2 100644
--- a/lib/ipmi_sel.c
+++ b/lib/ipmi_sel.c
@@ -29,8 +29,10 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _BSD_SOURCE
#include <string.h>
+#include <strings.h>
#include <math.h>
#define __USE_XOPEN /* glibc2 needs this for strptime */
#include <time.h>
@@ -43,6 +45,7 @@
#include <ipmitool/ipmi_mc.h>
#include <ipmitool/ipmi_intf.h>
#include <ipmitool/ipmi_sel.h>
+#include <ipmitool/ipmi_sel_supermicro.h>
#include <ipmitool/ipmi_sdr.h>
#include <ipmitool/ipmi_fru.h>
#include <ipmitool/ipmi_sensor.h>
@@ -419,7 +422,12 @@ ipmi_sel_add_entries_fromfile(struct ipmi_intf * intf, const char * filename)
memset(&sel_event, 0, sizeof(struct sel_event_record));
sel_event.record_id = 0x0000;
sel_event.record_type = 0x02;
- sel_event.sel_type.standard_type.gen_id = 0x00;
+ /*
+ * IPMI spec §32.1 generator ID
+ * Bit 0 = 1 "Software defined"
+ * Bit 1-7: SWID (IPMI spec §5.5), using 2 = "System management software"
+ */
+ sel_event.sel_type.standard_type.gen_id = 0x41;
sel_event.sel_type.standard_type.evm_rev = rqdata[0];
sel_event.sel_type.standard_type.sensor_type = rqdata[1];
sel_event.sel_type.standard_type.sensor_num = rqdata[2];
@@ -1461,11 +1469,14 @@ ipmi_sel_get_info(struct ipmi_intf * intf)
if (rsp == NULL) {
lprintf(LOG_ERR, "Get SEL Info command failed");
return -1;
- }
- if (rsp->ccode > 0) {
+ } else if (rsp->ccode > 0) {
lprintf(LOG_ERR, "Get SEL Info command failed: %s",
val2str(rsp->ccode, completion_code_vals));
return -1;
+ } else if (rsp->data_len != 14) {
+ lprintf(LOG_ERR, "Get SEL Info command failed: "
+ "Invalid data length %d", rsp->data_len);
+ return (-1);
}
if (verbose > 2)
printbuf(rsp->data, rsp->data_len, "sel_info");
@@ -2731,24 +2742,26 @@ ipmi_sel_set_time(struct ipmi_intf * intf, const char * time_string)
{
//modify UTC time to local time expressed in number of seconds from 1/1/70 0:0:0 1970 GMT
struct tm * tm_tmp = {0};
- int gt_year,gt_yday,gt_hour,lt_year,lt_yday,lt_hour;
+ int gt_year,gt_yday,gt_hour,gt_min,lt_year,lt_yday,lt_hour,lt_min;
int delta_hour;
tm_tmp=gmtime(&t);
gt_year=tm_tmp->tm_year;
gt_yday=tm_tmp->tm_yday;
gt_hour=tm_tmp->tm_hour;
+ gt_min=tm_tmp->tm_min;
memset(&*tm_tmp, 0, sizeof(struct tm));
tm_tmp=localtime(&t);
lt_year=tm_tmp->tm_year;
lt_yday=tm_tmp->tm_yday;
lt_hour=tm_tmp->tm_hour;
+ lt_min=tm_tmp->tm_min;
delta_hour=lt_hour - gt_hour;
if ( (lt_year > gt_year) || ((lt_year == gt_year) && (lt_yday > gt_yday)) )
delta_hour += 24;
if ( (lt_year < gt_year) || ((lt_year == gt_year) && (lt_yday < gt_yday)) )
delta_hour -= 24;
- t += (delta_hour * 60 * 60);
+ t += (delta_hour * 60 * 60) + (lt_min - gt_min) * 60;
}
timei = (uint32_t)t;
diff --git a/lib/ipmi_sol.c b/lib/ipmi_sol.c
index 5415ea7..333ce90 100644
--- a/lib/ipmi_sol.c
+++ b/lib/ipmi_sol.c
@@ -29,6 +29,11 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _XOPEN_SOURCE
+#define _BSD_SOURCE || \
+ (_XOPEN_SOURCE >= 500 || \
+ _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && \
+ !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
#include <stdlib.h>
#include <string.h>
@@ -92,7 +97,6 @@ static struct termios _saved_tio;
static int _in_raw_mode = 0;
static int _disable_keepalive = 0;
static int _use_sol_for_keepalive = 0;
-static int _keepalive_retries = 0;
extern int verbose;
diff --git a/lib/ipmi_strings.c b/lib/ipmi_strings.c
index 4a1ff46..7fefee9 100644
--- a/lib/ipmi_strings.c
+++ b/lib/ipmi_strings.c
@@ -64,13 +64,37 @@ const struct valstr ipmi_oem_info[] = {
{ IPMI_OEM_TOSHIBA, "Toshiba" },
{ IPMI_OEM_HITACHI_116, "Hitachi" },
{ IPMI_OEM_HITACHI_399, "Hitachi" },
- { IPMI_OEM_NOKIA_SIEMENS_NETWORKS, "Nokia Siemens Networks" },
+ { IPMI_OEM_NOKIA_SOLUTIONS_AND_NETWORKS, "Nokia Solutions and Networks (formerly 'Nokia Siemens Networks')" },
{ IPMI_OEM_BULL, "Bull Company" },
{ IPMI_OEM_PPS, "Pigeon Point Systems" },
{ IPMI_OEM_BROADCOM, "Broadcom Corporation" },
{ IPMI_OEM_ERICSSON, "Ericsson AB"},
{ IPMI_OEM_QUANTA, "Quanta" },
{ IPMI_OEM_ADVANTECH, "Advantech" },
+ /************************************************************************
+ * Add ID String for IANA Enterprise Number of IBM & ADLINK
+ * https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers
+ * 2
+ * IBM
+ * Kristine Adamson
+ * adamson&us.ibm.com
+ * 4769
+ * IBM Corporation
+ * Victor Sample
+ * vsample&us.ibm.com
+ * 20301
+ * IBM eServer X
+ * Lynn Fore
+ * sls&us.ibm.com
+ * 24339
+ * ADLINK TECHNOLOGY INC.
+ * Ryan Hsu
+ * ryan.hsu&adlinktech.com
+ ************************************************************************/
+ { IPMI_OEM_IBM_2, "IBM" },
+ { IPMI_OEM_IBM_4769, "IBM Corporation" },
+ { IPMI_OEM_IBM_20301, "IBM eServer X" },
+ { IPMI_OEM_ADLINK_24339, "ADLINK Technology Inc." },
{ 0xffff , NULL },
};
@@ -202,6 +226,62 @@ const struct oemvalstr ipmi_oem_product_info[] = {
{ IPMI_OEM_ADVANTECH, 0x9212, "ESP-9212" },
{ IPMI_OEM_ADVANTECH, 0x6000, "CGS-6000" },
{ IPMI_OEM_ADVANTECH, 0x6010, "CGS-6010" },
+ /* ADLINK Technology Inc. */
+ /* AdvancedTCA Processor Blades */
+ { IPMI_OEM_ADLINK_24339, 0x3100, "aTCA-3100" },
+ { IPMI_OEM_ADLINK_24339, 0x3110, "aTCA-3110" },
+ { IPMI_OEM_ADLINK_24339, 0x3150, "aTCA-3150" },
+ { IPMI_OEM_ADLINK_24339, 0x3420, "aTCA-3420" },
+ { IPMI_OEM_ADLINK_24339, 0x3710, "aTCA-3710" },
+ { IPMI_OEM_ADLINK_24339, 0x6100, "aTCA-6100" },
+ { IPMI_OEM_ADLINK_24339, 0x6200, "aTCA-6200" },
+ { IPMI_OEM_ADLINK_24339, 0x6250, "aTCA-6250/6250STW" },
+ { IPMI_OEM_ADLINK_24339, 0x6270, "aTCA-R6270" },
+ { IPMI_OEM_ADLINK_24339, 0x6280, "aTCA-R6280" },
+ { IPMI_OEM_ADLINK_24339, 0x6890, "aTCA-6890" },
+ { IPMI_OEM_ADLINK_24339, 0x6891, "aTCA-6891" },
+ { IPMI_OEM_ADLINK_24339, 0x6900, "aTCA-6900" },
+ { IPMI_OEM_ADLINK_24339, 0x6905, "aTCA-R6905" },
+ { IPMI_OEM_ADLINK_24339, 0x690A, "aTCA-R6900" },
+ { IPMI_OEM_ADLINK_24339, 0x8214, "aTCA-8214" },
+ { IPMI_OEM_ADLINK_24339, 0x8606, "aTCA-8606" },
+ { IPMI_OEM_ADLINK_24339, 0x9300, "aTCA-9300" },
+ { IPMI_OEM_ADLINK_24339, 0x9700, "aTCA-9700" },
+ { IPMI_OEM_ADLINK_24339, 0x9700, "aTCA-R9700" },
+ { IPMI_OEM_ADLINK_24339, 0x970D, "aTCA-9700D" },
+ { IPMI_OEM_ADLINK_24339, 0x9710, "aTCA-9710" },
+ { IPMI_OEM_ADLINK_24339, 0x9710, "aTCA-R9710" },
+ { IPMI_OEM_ADLINK_24339, 0xF001, "aTCA-FN001" },
+ { IPMI_OEM_ADLINK_24339, 0xF2A0, "aTCA-F2AX" },
+ { IPMI_OEM_ADLINK_24339, 0xF5A0, "aTCA-F5AX" },
+ /* CompactPCI Blades */
+ { IPMI_OEM_ADLINK_24339, 0x3510, "cPCI-3510" },
+ { IPMI_OEM_ADLINK_24339, 0x3970, "cPCI-3970" },
+ { IPMI_OEM_ADLINK_24339, 0x6010, "cPCI-6010" },
+ { IPMI_OEM_ADLINK_24339, 0x6210, "cPCI-6210" },
+ { IPMI_OEM_ADLINK_24339, 0x6510, "cPCI-6510" },
+ { IPMI_OEM_ADLINK_24339, 0x6520, "cPCI-6520" },
+ { IPMI_OEM_ADLINK_24339, 0x6525, "cPCI-6525" },
+ { IPMI_OEM_ADLINK_24339, 0x6530, "cPCI-6530/6530BL" },
+ { IPMI_OEM_ADLINK_24339, 0x6600, "cPCI-6600" },
+ { IPMI_OEM_ADLINK_24339, 0x6840, "cPCI-6840" },
+ { IPMI_OEM_ADLINK_24339, 0x6870, "cPCI-6870" },
+ { IPMI_OEM_ADLINK_24339, 0x6880, "cPCI-6880" },
+ { IPMI_OEM_ADLINK_24339, 0x6910, "cPCI-6910" },
+ { IPMI_OEM_ADLINK_24339, 0x6920, "cPCI-6920" },
+ { IPMI_OEM_ADLINK_24339, 0x6930, "cPCI-6930" },
+ { IPMI_OEM_ADLINK_24339, 0x6940, "cPCI-6940" },
+ /* VPX Blades */
+ { IPMI_OEM_ADLINK_24339, 0x3000, "VPX3000" },
+ { IPMI_OEM_ADLINK_24339, 0x3001, "VPX3001" },
+ { IPMI_OEM_ADLINK_24339, 0x3002, "VPX3002" },
+ { IPMI_OEM_ADLINK_24339, 0x3010, "VPX3010" },
+ { IPMI_OEM_ADLINK_24339, 0x3F10, "VPX3G10" },
+ { IPMI_OEM_ADLINK_24339, 0x6000, "VPX6000" },
+ /* Network Appliance */
+ { IPMI_OEM_ADLINK_24339, 0x0410, "MXN-0410" },
+ { IPMI_OEM_ADLINK_24339, 0x2600, "MCN-2600" },
+ { IPMI_OEM_ADLINK_24339, 0x1500, "MCN-1500" },
{ 0xffffff , 0xffff , NULL },
};
diff --git a/lib/ipmi_sunoem.c b/lib/ipmi_sunoem.c
index 7f7a58b..e4fae65 100644
--- a/lib/ipmi_sunoem.c
+++ b/lib/ipmi_sunoem.c
@@ -29,14 +29,13 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _XOPEN_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <strings.h>
-#include <sys/types.h>
#include <sys/socket.h>
-#include <sys/time.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
@@ -47,6 +46,7 @@
#include <sys/time.h>
#include <limits.h>
#include <fcntl.h>
+#include <sys/select.h>
#include <termios.h>
@@ -469,7 +469,7 @@ ipmi_sunoem_led_get(struct ipmi_intf * intf, int argc, char ** argv)
ledtype = str2val(argv[1], sunoem_led_type_vals);
if (ledtype == 0xFF)
lprintf(LOG_ERR,
- "Unknow ledtype, will use data from the SDR oem field");
+ "Unknown ledtype, will use data from the SDR oem field");
}
if (strncasecmp(argv[0], "all", 3) == 0) {
@@ -676,7 +676,7 @@ ipmi_sunoem_led_set(struct ipmi_intf * intf, int argc, char ** argv)
ledtype = str2val(argv[2], sunoem_led_type_vals);
if (ledtype == 0xFF)
lprintf(LOG_ERR,
- "Unknow ledtype, will use data from the SDR oem field");
+ "Unknown ledtype, will use data from the SDR oem field");
}
if (strncasecmp(argv[0], "all", 3) == 0) {
diff --git a/lib/ipmi_tsol.c b/lib/ipmi_tsol.c
index 70d7357..d89bcfd 100644
--- a/lib/ipmi_tsol.c
+++ b/lib/ipmi_tsol.c
@@ -33,7 +33,7 @@
#include <sys/types.h>
#include <sys/stat.h>
-#include <sys/poll.h>
+#include <poll.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
diff --git a/lib/ipmi_user.c b/lib/ipmi_user.c
index 6074209..2780e61 100644
--- a/lib/ipmi_user.c
+++ b/lib/ipmi_user.c
@@ -29,6 +29,10 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _BSD_SOURCE || \
+ (_XOPEN_SOURCE >= 500 || \
+ _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) && \
+ !(_POSIX_C_SOURCE >= 200112L || _XOPEN_SOURCE >= 600)
#include <stdlib.h>
#include <string.h>
@@ -590,7 +594,7 @@ ipmi_user_priv(struct ipmi_intf *intf, int argc, char **argv)
user_access.user_id);
return (-1);
} else {
- printf("Set Privilege Level command successful (user %d)",
+ printf("Set Privilege Level command successful (user %d)\n",
user_access.user_id);
return 0;
}
@@ -602,6 +606,7 @@ ipmi_user_mod(struct ipmi_intf *intf, int argc, char **argv)
/* Disable / Enable */
uint8_t user_id;
uint8_t operation;
+ uint8_t ccode;
if (argc != 2) {
print_user_usage();
@@ -613,8 +618,14 @@ ipmi_user_mod(struct ipmi_intf *intf, int argc, char **argv)
operation = (strncmp(argv[0], "disable", 7) == 0) ?
IPMI_PASSWORD_DISABLE_USER : IPMI_PASSWORD_ENABLE_USER;
- return _ipmi_set_user_password(intf, user_id, operation,
+ ccode = _ipmi_set_user_password(intf, user_id, operation,
(char *)NULL, 0);
+ if (eval_ccode(ccode) != 0) {
+ lprintf(LOG_ERR, "Set User Password command failed (user %d)",
+ user_id);
+ return (-1);
+ }
+ return 0;
}
int
diff --git a/lib/log.c b/lib/log.c
index bc80542..2738e18 100644
--- a/lib/log.c
+++ b/lib/log.c
@@ -29,6 +29,9 @@
* LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE,
* EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
*/
+#define _SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE >= 500 || \
+ _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED || \
+ /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L
#include <unistd.h>
#include <stdio.h>
@@ -96,7 +99,7 @@ void lperror(int level, const char * format, ...)
return;
}
-/*
+/*
* open connection to syslog if daemon
*/
void log_init(const char * name, int isdaemon, int verbose)
@@ -115,7 +118,7 @@ void log_init(const char * name, int isdaemon, int verbose)
if (logpriv->name == NULL)
fprintf(stderr, "ipmitool: malloc failure\n");
-
+
logpriv->daemon = isdaemon;
logpriv->level = verbose + LOG_NOTICE;