diff options
86 files changed, 1903 insertions, 692 deletions
| @@ -1,3 +1,79 @@ +version 1.8.17 2016-05-01 +	* Add INSTALL and NEWS, mandated by autoconf +	* Added missing ipmi_sel_supermicro.h to template Makefile.am +	* Check rsp->data_len in ipmi_sel_get_info() +	* Fix "redirecting incorrect #include <sys/poll.h> to <poll.h>" +	warning with musl libc +	* Fix automake compatibility warnings +	* Fix implicit declaration of function +	'get_nic_selection_mode_12g' in lib/ipmi_delloem.c +	* Fix implicit declaration of function 'ipmi_get_oem' in +	src/plugins/imb/imb.c +	* Fix implicit declaration of function 'ipmi_get_oem' in +	src/plugins/lanplus/lanplus.c +	* Fix implicit declaration of function 'ipmi_get_oem' in +	src/plugins/open/open.c +	* Fix implicit declarations of functions 'HpmfwupgPreUpgradeCheck' +	and 'ipmi_intf_get_max_request_data_size' in lib/ipmi_hpmfwupg.c +	* Fix implicit declarations of functions +	'ipmi_intf_set_max_request_data_size' and +	'ipmi_intf_set_max_response_data_size' in lib/hpm2.c +	* Fix implicit function declaration of +	ipmi_intf_get_max_response_data_size in lib/ipmi_sdr.c +	* Fix several implicit declarations of functions in +	lib/ipmi_main.c +	* Fix several implicit function declarations in lib/ipmi_fru.c +	* Fix warning: suggest parentheses around '+' inside '<<' +	in lib/ipmi_main.c +	* Fix warning: suggest parentheses around arithmetic in operand of +	'|' in include/ipmitool/hpm2 +	* Get rid of old INCLUDES macro, use AM_CPPFLAGS instead. +	* ID 440 - Fix 'unknown type name fd_set" error. +	* ID 440 - remove obsolete headers from lib/ipmi_sunoem.c +	* ID:322 - let 'ekanalyzer frushow' run without a working +	IPMI target +	* ID:355 - Add #include <strings.h> to lib/ipmi_sel.c +	* ID:355 - Add macros and #include and reduce number of warnings +	* ID:355 - Change CFLAG -std=c99 to -std=gnu99 +	* ID:355 - Move Super Micro stuff into dedicated header file +	* ID:355 - Remove declared, but not used variables +	* ID:404 - Edit FRU information update problem +	* ID:405 - Use meaningful Generator ID for "ipmitool sel add" +	* ID:407 - Avoid assert on mismatched session ID +	* ID:409 - Fix IPv6 socket creation on Windows/Cygwin. +	* ID:410 - Disable USB interface for Windows/Cygwin by default. +	* ID:410 - Enable/disable USB interface by "auto" +	* ID:411 - Fix HPM.2 revision check for R1.1 and subsequent +	specification revisions. +	* ID:412 - Check errors when setting a user password. +	* ID:413 - Print new line chne character when setting user +	privilege. +	* ID:414 - ekanalyzer frushow fails to show 'Product Info' +	correctly +	* ID:417 - Fix some typos +	* ID:418 - Fix Compiling under Mac OS X +	* ID:419 - List dummy.h in Makefile.am, so it gets included in +	a release tarball +	* ID:421 - Fix memleak for sol output +	* ID:423 - Don't assume internal use area is present in ekanalyzer +	* ID:424 - Update dimm_spd.c with data from the latest JEDEC List +	* ID:425 - Disable USB interface for OS X/darwin +	* ID:426 - Fallback to run-time detection of PAGESIZE if +	compile-time detection is not supported +	* ID:426 - Include sys/socket.h instead of asm/socket.h +	* ID:426 - Include wchar.h instead of defining wchar_t ourselves +	* ID:427 - Cleanup comment in ipmi_sdr_get_header() +	* ID:427 - The first two bytes of dumped raw SDR data is wrong. +	* ID:428 - Update IANA numbers / Product Name for IBM and ADLINK +	* ID:430 - Change Nokia Siemens Networks to Nokia Solutions +	and Networks +	* ID:431 - Fix correct interpretation of led states +	* ID:437 - sel: Fix "sel time set <time>" +	* Make bootstrap script part of dist packages +	* Remove #if 0 code aka not-compiled-in +	* Remove trailing white-spaces in lib/log.c +	* git-ignore autoconf-generated files +  version 1.8.16 2015-11-22  	* Add _ipmi_get_channel_access() and _ipmi_get_channel_info()  	* Add _ipmi_get_user_access() and _ipmi_set_user_access() @@ -0,0 +1,370 @@ +Installation Instructions +************************* + +Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation, +Inc. + +   Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved.  This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + +   Briefly, the shell command `./configure && make && make install' +should configure, build, and install this package.  The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package.  Some packages provide this +`INSTALL' file but do not implement all of the features documented +below.  The lack of an optional feature in a given package is not +necessarily a bug.  More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + +   The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation.  It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions.  Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + +   It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring.  Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + +   If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release.  If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + +   The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'.  You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + +   The simplest way to compile this package is: + +  1. `cd' to the directory containing the package's source code and type +     `./configure' to configure the package for your system. + +     Running `configure' might take a while.  While running, it prints +     some messages telling which features it is checking for. + +  2. Type `make' to compile the package. + +  3. Optionally, type `make check' to run any self-tests that come with +     the package, generally using the just-built uninstalled binaries. + +  4. Type `make install' to install the programs and any data files and +     documentation.  When installing into a prefix owned by root, it is +     recommended that the package be configured and built as a regular +     user, and only the `make install' phase executed with root +     privileges. + +  5. Optionally, type `make installcheck' to repeat any self-tests, but +     this time using the binaries in their final installed location. +     This target does not install anything.  Running this target as a +     regular user, particularly if the prior `make install' required +     root privileges, verifies that the installation completed +     correctly. + +  6. You can remove the program binaries and object files from the +     source code directory by typing `make clean'.  To also remove the +     files that `configure' created (so you can compile the package for +     a different kind of computer), type `make distclean'.  There is +     also a `make maintainer-clean' target, but that is intended mainly +     for the package's developers.  If you use it, you may have to get +     all sorts of other programs in order to regenerate files that came +     with the distribution. + +  7. Often, you can also type `make uninstall' to remove the installed +     files again.  In practice, not all packages have tested that +     uninstallation works correctly, even though it is required by the +     GNU Coding Standards. + +  8. Some packages, particularly those that use Automake, provide `make +     distcheck', which can by used by developers to test that all other +     targets like `make install' and `make uninstall' work correctly. +     This target is generally not run by end users. + +Compilers and Options +===================== + +   Some systems require unusual options for compilation or linking that +the `configure' script does not know about.  Run `./configure --help' +for details on some of the pertinent environment variables. + +   You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment.  Here +is an example: + +     ./configure CC=c99 CFLAGS=-g LIBS=-lposix + +   *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +   You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory.  To do this, you can use GNU `make'.  `cd' to the +directory where you want the object files and executables to go and run +the `configure' script.  `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'.  This +is known as a "VPATH" build. + +   With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory.  After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + +   On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor.  Like +this: + +     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ +                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ +                 CPP="gcc -E" CXXCPP="g++ -E" + +   This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + +   By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc.  You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + +   You can specify separate installation prefixes for +architecture-specific files and architecture-independent files.  If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + +   In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files.  Run `configure --help' for a list of the directories +you can set and what kinds of files go in them.  In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + +   The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + +   The first method involves providing an override variable for each +affected directory.  For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'.  Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated.  The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + +   The second method involves providing the `DESTDIR' variable.  For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names.  The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters.  On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + +   If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +   Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System).  The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + +   For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +   Some packages offer the ability to configure how verbose the +execution of `make' will be.  For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + +   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + +     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + +   HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved.  Use GNU `make' +instead. + +   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `<wchar.h>' header file.  The option `-nodtk' can be used as +a workaround.  If GNU CC is not installed, it is therefore recommended +to try + +     ./configure CC="cc" + +and if that doesn't work, try + +     ./configure CC="cc -nodtk" + +   On Solaris, don't put `/usr/ucb' early in your `PATH'.  This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'.  So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + +   On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'.  It is recommended to use the following options: + +     ./configure --prefix=/boot/common + +Specifying the System Type +========================== + +   There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on.  Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option.  TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + +     CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + +     OS +     KERNEL-OS + +   See the file `config.sub' for the possible values of each field.  If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + +   If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + +   If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +   If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists.  Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +   Variables not defined in a site shell script can be set in the +environment passed to `configure'.  However, some packages may run +configure again during the build, and the customized values of these +variables may be lost.  In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'.  For example: + +     ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf limitation.  Until the limitation is lifted, you can use +this workaround: + +     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + +   `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' +     Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' +     Print a summary of the options unique to this package's +     `configure', and exit.  The `short' variant lists options used +     only in the top level, while the `recursive' variant lists options +     also present in any nested packages. + +`--version' +`-V' +     Print the version of Autoconf used to generate the `configure' +     script, and exit. + +`--cache-file=FILE' +     Enable the cache: use and save the results of the tests in FILE, +     traditionally `config.cache'.  FILE defaults to `/dev/null' to +     disable caching. + +`--config-cache' +`-C' +     Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' +     Do not print messages saying which checks are being made.  To +     suppress all normal output, redirect it to `/dev/null' (any error +     messages will still be shown). + +`--srcdir=DIR' +     Look for the package's source code in directory DIR.  Usually +     `configure' can determine that directory automatically. + +`--prefix=DIR' +     Use DIR as the installation prefix.  *note Installation Names:: +     for more details, including other options available for fine-tuning +     the installation locations. + +`--no-create' +`-n' +     Run the configure checks, but stop before creating any output +     files. + +`configure' also accepts some other, not widely useful, options.  Run +`configure --help' for more details. diff --git a/Makefile.am b/Makefile.am index 94e267a..c809131 100644 --- a/Makefile.am +++ b/Makefile.am @@ -31,7 +31,7 @@  DOCDIR = $(datadir)/doc/$(PACKAGE)  DOCLIST = $(top_srcdir)/README $(top_srcdir)/COPYING $(top_srcdir)/AUTHORS $(top_srcdir)/ChangeLog -EXTRA_DIST = $(DOCLIST) +EXTRA_DIST = $(DOCLIST) bootstrap  AUTOMAKE_OPTIONS = dist-bzip2 diff --git a/Makefile.in b/Makefile.in index ad62af7..8074d84 100644 --- a/Makefile.in +++ b/Makefile.in @@ -111,8 +111,9 @@ target_triplet = @target@  subdir = .  DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \  	$(top_srcdir)/configure $(am__configure_deps) \ -	$(srcdir)/config.h.in AUTHORS COPYING ChangeLog README compile \ -	config.guess config.sub depcomp install-sh missing ltmain.sh +	$(srcdir)/config.h.in AUTHORS COPYING ChangeLog INSTALL NEWS \ +	README compile config.guess config.sub depcomp install-sh \ +	missing ltmain.sh  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4  am__aclocal_m4_deps = $(top_srcdir)/configure.ac  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -372,7 +373,7 @@ top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  DOCDIR = $(datadir)/doc/$(PACKAGE)  DOCLIST = $(top_srcdir)/README $(top_srcdir)/COPYING $(top_srcdir)/AUTHORS $(top_srcdir)/ChangeLog -EXTRA_DIST = $(DOCLIST) +EXTRA_DIST = $(DOCLIST) bootstrap  AUTOMAKE_OPTIONS = dist-bzip2  MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure configure-stamp \  	config.guess config.sub depcomp install-sh ltmain.sh missing \ @@ -24,7 +24,7 @@ Background  ==========  I originally wrote ipmitool while between projects and employeed at Sun  Microsystems.  Sun had just embarked on a new line of general-purpose x86 -servers that inclued an OEM Intel board with an IPMIv1.5 BMC on board. +servers that included an OEM Intel board with an IPMIv1.5 BMC on board.  It started with an idea that remote chassis power control would be a handy  feature for my systems in the lab and from there it grew into a multi-  purpose tool that lots of people found useful.  I decided to release it @@ -8705,10 +8705,9 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])  # configured tree to be moved without reconfiguration.  AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd`  ])  # AM_CONDITIONAL                                            -*- Autoconf -*- @@ -9175,7 +9174,8 @@ to "yes", and re-run configure.  END      AC_MSG_ERROR([Your 'rm' program is bad, sorry.])    fi -fi]) +fi +])  dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not  dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further diff --git a/bootstrap b/bootstrap new file mode 100755 index 0000000..6347427 --- /dev/null +++ b/bootstrap @@ -0,0 +1,42 @@ +#!/bin/sh -x +# +# Copyright (c) 2003 Sun Microsystems, Inc.  All Rights Reserved. +#  +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +#  +# Redistribution of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +#  +# Redistribution in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +#  +# Neither the name of Sun Microsystems, Inc. or the names of +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +#  +# This software is provided "AS IS," without a warranty of any kind. +# ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, +# INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A +# PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. +# SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE +# FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING +# OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL +# SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, +# OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR +# PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF +# LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, +# EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +aclocal +libtoolize --automake --copy + +autoheader +automake --foreign --add-missing --copy + +aclocal +autoconf +automake --foreign + diff --git a/config.guess b/config.guess index b79252d..1f5c50c 100755 --- a/config.guess +++ b/config.guess @@ -1,8 +1,8 @@  #! /bin/sh  # Attempt to guess a canonical system name. -#   Copyright 1992-2013 Free Software Foundation, Inc. +#   Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2013-06-10' +timestamp='2014-03-23'  # This file is free software; you can redistribute it and/or modify it  # under the terms of the GNU General Public License as published by @@ -50,7 +50,7 @@ version="\  GNU config.guess ($timestamp)  Originally written by Per Bothner. -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc.  This is free software; see the source for copying conditions.  There is NO  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -149,7 +149,7 @@ Linux|GNU|GNU/*)  	LIBC=gnu  	#endif  	EOF -	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` +	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`  	;;  esac @@ -826,7 +826,7 @@ EOF      *:MINGW*:*)  	echo ${UNAME_MACHINE}-pc-mingw32  	exit ;; -    i*:MSYS*:*) +    *:MSYS*:*)  	echo ${UNAME_MACHINE}-pc-msys  	exit ;;      i*:windows32*:*) @@ -969,10 +969,10 @@ EOF  	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`  	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }  	;; -    or1k:Linux:*:*) -	echo ${UNAME_MACHINE}-unknown-linux-${LIBC} +    openrisc*:Linux:*:*) +	echo or1k-unknown-linux-${LIBC}  	exit ;; -    or32:Linux:*:*) +    or32:Linux:*:* | or1k*:Linux:*:*)  	echo ${UNAME_MACHINE}-unknown-linux-${LIBC}  	exit ;;      padre:Linux:*:*) @@ -1260,16 +1260,26 @@ EOF  	if test "$UNAME_PROCESSOR" = unknown ; then  	    UNAME_PROCESSOR=powerpc  	fi -	if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then -	    if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ -		(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ -		grep IS_64BIT_ARCH >/dev/null -	    then -		case $UNAME_PROCESSOR in -		    i386) UNAME_PROCESSOR=x86_64 ;; -		    powerpc) UNAME_PROCESSOR=powerpc64 ;; -		esac +	if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then +	    if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then +		if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ +		    (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ +		    grep IS_64BIT_ARCH >/dev/null +		then +		    case $UNAME_PROCESSOR in +			i386) UNAME_PROCESSOR=x86_64 ;; +			powerpc) UNAME_PROCESSOR=powerpc64 ;; +		    esac +		fi  	    fi +	elif test "$UNAME_PROCESSOR" = i386 ; then +	    # Avoid executing cc on OS X 10.9, as it ships with a stub +	    # that puts up a graphical alert prompting to install +	    # developer tools.  Any system running Mac OS X 10.7 or +	    # later (Darwin 11 and later) is required to have a 64-bit +	    # processor. This is not true of the ARM version of Darwin +	    # that Apple uses in portable devices. +	    UNAME_PROCESSOR=x86_64  	fi  	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}  	exit ;; @@ -1361,154 +1371,6 @@ EOF  	exit ;;  esac -eval $set_cc_for_build -cat >$dummy.c <<EOF -#ifdef _SEQUENT_ -# include <sys/types.h> -# include <sys/utsname.h> -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) -  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed, -     I don't know....  */ -  printf ("mips-sony-bsd\n"); exit (0); -#else -#include <sys/param.h> -  printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 -	"4" -#else -	"" -#endif -	); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) -  printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) -  printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif -  int version; -  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; -  if (version < 4) -    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); -  else -    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); -  exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) -  printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) -  printf ("ns32k-encore-mach\n"); exit (0); -#else -  printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) -  printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) -  printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) -  printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) -    struct utsname un; - -    uname(&un); - -    if (strncmp(un.version, "V2", 2) == 0) { -	printf ("i386-sequent-ptx2\n"); exit (0); -    } -    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ -	printf ("i386-sequent-ptx1\n"); exit (0); -    } -    printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -#  include <sys/param.h> -#  if defined (BSD) -#   if BSD == 43 -      printf ("vax-dec-bsd4.3\n"); exit (0); -#   else -#    if BSD == 199006 -      printf ("vax-dec-bsd4.3reno\n"); exit (0); -#    else -      printf ("vax-dec-bsd\n"); exit (0); -#    endif -#   endif -#  else -    printf ("vax-dec-bsd\n"); exit (0); -#  endif -# else -    printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) -  printf ("i860-alliant-bsd\n"); exit (0); -#endif - -  exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && -	{ echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then -    case `getsysinfo -f cpu_type` in -    c1*) -	echo c1-convex-bsd -	exit ;; -    c2*) -	if getsysinfo -f scalar_acc -	then echo c32-convex-bsd -	else echo c2-convex-bsd -	fi -	exit ;; -    c34*) -	echo c34-convex-bsd -	exit ;; -    c38*) -	echo c38-convex-bsd -	exit ;; -    c4*) -	echo c4-convex-bsd -	exit ;; -    esac -fi -  cat >&2 <<EOF  $0: unable to guess system type @@ -1,8 +1,8 @@  #! /bin/sh  # Configuration validation subroutine script. -#   Copyright 1992-2013 Free Software Foundation, Inc. +#   Copyright 1992-2014 Free Software Foundation, Inc. -timestamp='2013-08-10' +timestamp='2014-09-11'  # This file is free software; you can redistribute it and/or modify it  # under the terms of the GNU General Public License as published by @@ -68,7 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."  version="\  GNU config.sub ($timestamp) -Copyright 1992-2013 Free Software Foundation, Inc. +Copyright 1992-2014 Free Software Foundation, Inc.  This is free software; see the source for copying conditions.  There is NO  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -265,6 +265,7 @@ case $basic_machine in  	| hexagon \  	| i370 | i860 | i960 | ia64 \  	| ip2k | iq2000 \ +	| k1om \  	| le32 | le64 \  	| lm32 \  	| m32c | m32r | m32rle | m68000 | m68k | m88k \ @@ -282,8 +283,10 @@ case $basic_machine in  	| mips64vr5900 | mips64vr5900el \  	| mipsisa32 | mipsisa32el \  	| mipsisa32r2 | mipsisa32r2el \ +	| mipsisa32r6 | mipsisa32r6el \  	| mipsisa64 | mipsisa64el \  	| mipsisa64r2 | mipsisa64r2el \ +	| mipsisa64r6 | mipsisa64r6el \  	| mipsisa64sb1 | mipsisa64sb1el \  	| mipsisa64sr71k | mipsisa64sr71kel \  	| mipsr5900 | mipsr5900el \ @@ -295,11 +298,11 @@ case $basic_machine in  	| nds32 | nds32le | nds32be \  	| nios | nios2 | nios2eb | nios2el \  	| ns16k | ns32k \ -	| open8 \ -	| or1k | or32 \ +	| open8 | or1k | or1knd | or32 \  	| pdp10 | pdp11 | pj | pjl \  	| powerpc | powerpc64 | powerpc64le | powerpcle \  	| pyramid \ +	| riscv32 | riscv64 \  	| rl78 | rx \  	| score \  	| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ @@ -324,7 +327,7 @@ case $basic_machine in  	c6x)  		basic_machine=tic6x-unknown  		;; -	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) +	m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)  		basic_machine=$basic_machine-unknown  		os=-none  		;; @@ -381,6 +384,7 @@ case $basic_machine in  	| hexagon-* \  	| i*86-* | i860-* | i960-* | ia64-* \  	| ip2k-* | iq2000-* \ +	| k1om-* \  	| le32-* | le64-* \  	| lm32-* \  	| m32c-* | m32r-* | m32rle-* \ @@ -400,8 +404,10 @@ case $basic_machine in  	| mips64vr5900-* | mips64vr5900el-* \  	| mipsisa32-* | mipsisa32el-* \  	| mipsisa32r2-* | mipsisa32r2el-* \ +	| mipsisa32r6-* | mipsisa32r6el-* \  	| mipsisa64-* | mipsisa64el-* \  	| mipsisa64r2-* | mipsisa64r2el-* \ +	| mipsisa64r6-* | mipsisa64r6el-* \  	| mipsisa64sb1-* | mipsisa64sb1el-* \  	| mipsisa64sr71k-* | mipsisa64sr71kel-* \  	| mipsr5900-* | mipsr5900el-* \ @@ -413,6 +419,7 @@ case $basic_machine in  	| nios-* | nios2-* | nios2eb-* | nios2el-* \  	| none-* | np1-* | ns16k-* | ns32k-* \  	| open8-* \ +	| or1k*-* \  	| orion-* \  	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \  	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ @@ -822,6 +829,10 @@ case $basic_machine in  		basic_machine=powerpc-unknown  		os=-morphos  		;; +	moxiebox) +		basic_machine=moxie-unknown +		os=-moxiebox +		;;  	msdos)  		basic_machine=i386-pc  		os=-msdos @@ -1367,14 +1378,14 @@ case $os in  	      | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \  	      | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \  	      | -linux-newlib* | -linux-musl* | -linux-uclibc* \ -	      | -uxpv* | -beos* | -mpeix* | -udk* \ +	      | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \  	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \  	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \  	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \  	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \  	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \  	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) +	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*)  	# Remember, each alternative MUST END IN *, to match a version number.  		;;  	-qnx*) @@ -1592,9 +1603,6 @@ case $basic_machine in  	mips*-*)  		os=-elf  		;; -	or1k-*) -		os=-elf -		;;  	or32-*)  		os=-coff  		;; @@ -1,6 +1,6 @@  #! /bin/sh  # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69. +# Generated by GNU Autoconf 2.69 for ipmitool 1.8.17.  #  #  # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -585,15 +585,14 @@ MFLAGS=  MAKEFLAGS=  # Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= +PACKAGE_NAME='ipmitool' +PACKAGE_TARNAME='ipmitool' +PACKAGE_VERSION='1.8.17' +PACKAGE_STRING='ipmitool 1.8.17' +PACKAGE_BUGREPORT='' +PACKAGE_URL=''  ac_unique_file="src/ipmitool.c" -ac_unique_file="src/ipmitool.c"  # Factoring default headers for most tests.  ac_includes_default="\  #include <stdio.h> @@ -860,7 +859,7 @@ sharedstatedir='${prefix}/com'  localstatedir='${prefix}/var'  includedir='${prefix}/include'  oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'  infodir='${datarootdir}/info'  htmldir='${docdir}'  dvidir='${docdir}' @@ -1360,7 +1359,7 @@ if test "$ac_init_help" = "long"; then    # Omit some internal or obsolete options to make the list less imposing.    # This message is too long to be a string in the A/UX 3.1 sh.    cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. +\`configure' configures ipmitool 1.8.17 to adapt to many kinds of systems.  Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1408,7 +1407,7 @@ Fine tuning of the installation directories:    --infodir=DIR           info documentation [DATAROOTDIR/info]    --localedir=DIR         locale-dependent data [DATAROOTDIR/locale]    --mandir=DIR            man documentation [DATAROOTDIR/man] -  --docdir=DIR            documentation root [DATAROOTDIR/doc/PACKAGE] +  --docdir=DIR            documentation root [DATAROOTDIR/doc/ipmitool]    --htmldir=DIR           html documentation [DOCDIR]    --dvidir=DIR            dvi documentation [DOCDIR]    --pdfdir=DIR            pdf documentation [DOCDIR] @@ -1430,7 +1429,9 @@ _ACEOF  fi  if test -n "$ac_init_help"; then - +  case $ac_init_help in +     short | recursive ) echo "Configuration of ipmitool 1.8.17:";; +   esac    cat <<\_ACEOF  Optional Features: @@ -1451,7 +1452,7 @@ Optional Features:    --enable-solaris-opt    enable all options for Solaris [default=no]    --enable-internal-md5   enable internal MD5 library [default=no]    --enable-intf-lan       enable IPMIv1.5 LAN interface [default=yes] -  --enable-intf-usb       enable IPMI USB interface [default=yes] +  --enable-intf-usb       enable IPMI USB interface [default=auto]    --enable-intf-lanplus   enable IPMIv2.0 RMCP+ LAN interface [default=auto]    --enable-intf-serial    enable direct Serial Basic/Terminal mode interface                            [default=yes] @@ -1557,7 +1558,7 @@ fi  test -n "$ac_init_help" && exit $ac_status  if $ac_init_version; then    cat <<\_ACEOF -configure +ipmitool configure 1.8.17  generated by GNU Autoconf 2.69  Copyright (C) 2012 Free Software Foundation, Inc. @@ -1922,7 +1923,7 @@ cat >config.log <<_ACEOF  This file contains any messages produced by compilers while  running configure, to aid debugging if configure makes a mistake. -It was created by $as_me, which was +It was created by ipmitool $as_me 1.8.17, which was  generated by GNU Autoconf 2.69.  Invocation command line was    $ $0 $@ @@ -2270,6 +2271,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $  ac_compiler_gnu=$ac_cv_c_compiler_gnu +  ac_aux_dir=  for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do    if test -f "$ac_dir/install-sh"; then @@ -2582,8 +2584,8 @@ test "$program_suffix" != NONE &&  ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'  program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd`  if test x"${MISSING+set}" != xset; then    case $am_aux_dir in @@ -2895,9 +2897,8 @@ fi  # Define the identity of the package. - - PACKAGE=ipmitool - VERSION=1.8.16 + PACKAGE='ipmitool' + VERSION='1.8.17'  cat >>confdefs.h <<_ACEOF @@ -2989,8 +2990,8 @@ END      as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5    fi  fi -ac_config_headers="$ac_config_headers config.h" +ac_config_headers="$ac_config_headers config.h" @@ -5163,7 +5164,7 @@ fi  done -CFLAGS="$CFLAGS -Wall -Wextra -std=c99 -pedantic -Wformat -Wformat-nonliteral" +CFLAGS="$CFLAGS -Wall -Wextra -std=gnu99 -pedantic -Wformat -Wformat-nonliteral"  case `pwd` in    *\ * | *\	*) @@ -12587,6 +12588,7 @@ solaris*)  	xenable_intf_open=no  	xenable_intf_lipmi=no  	xenable_intf_bmc=no +	xenable_intf_usb=no  	;;  *darwin*|aix*)  	# disable the linux and solaris-specific interfaces @@ -12595,6 +12597,7 @@ solaris*)  	xenable_intf_lipmi=no  	xenable_intf_bmc=no  	xenable_ipmishell=no +	xenable_intf_usb=no  	;;  *freebsd*)  	xenable_intf_imb=no @@ -12845,7 +12848,7 @@ fi  if test "${enable_intf_usb+set}" = set; then :    enableval=$enable_intf_usb; xenable_intf_usb=$enableval  else -  xenable_intf_usb=yes +  xenable_intf_usb=$xenable_intf_usb  fi  if test "x$xenable_intf_usb" = "xstatic" || test "x$xenable_intf_usb" = "xplugin"; then @@ -14466,7 +14469,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1  # report actual input values of CONFIG_FILES etc. instead of their  # values after options handling.  ac_log=" -This file was extended by $as_me, which was +This file was extended by ipmitool $as_me 1.8.17, which was  generated by GNU Autoconf 2.69.  Invocation command line was    CONFIG_FILES    = $CONFIG_FILES @@ -14532,7 +14535,7 @@ _ACEOF  cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1  ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"  ac_cs_version="\\ -config.status +ipmitool config.status 1.8.17  configured by $0, generated by GNU Autoconf 2.69,    with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index a1bcf38..16c8305 100644 --- a/configure.ac +++ b/configure.ac @@ -1,11 +1,11 @@  dnl  dnl autoconf for ipmitool  dnl -AC_INIT([src/ipmitool.c]) +AC_INIT([ipmitool], [1.8.17]) +AC_CONFIG_SRCDIR([src/ipmitool.c])  AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE([ipmitool], [1.8.16]) +AM_INIT_AUTOMAKE  AM_CONFIG_HEADER(config.h) -AC_CONFIG_SRCDIR([src/ipmitool.c])  AC_PREREQ(2.50)  AC_SUBST(ac_configure_args) @@ -32,7 +32,7 @@ AC_CHECK_FUNCS([alarm gethostbyname getaddrinfo getifaddrs socket select])  AC_CHECK_FUNCS([memmove memset strchr strdup strerror])  AC_CHECK_FUNCS([getpassphrase]) -CFLAGS="$CFLAGS -Wall -Wextra -std=c99 -pedantic -Wformat -Wformat-nonliteral" +CFLAGS="$CFLAGS -Wall -Wextra -std=gnu99 -pedantic -Wformat -Wformat-nonliteral"  AM_PROG_LIBTOOL  LIBTOOL="$LIBTOOL --silent" @@ -89,6 +89,7 @@ solaris*)  	xenable_intf_open=no  	xenable_intf_lipmi=no  	xenable_intf_bmc=no +	xenable_intf_usb=no  	;;  *darwin*|aix*)  	# disable the linux and solaris-specific interfaces @@ -97,6 +98,7 @@ solaris*)  	xenable_intf_lipmi=no  	xenable_intf_bmc=no  	xenable_ipmishell=no +	xenable_intf_usb=no  	;;  *freebsd*)  	xenable_intf_imb=no @@ -201,9 +203,9 @@ fi  dnl enable IPMI USB interface  AC_ARG_ENABLE([intf-usb],  	[AC_HELP_STRING([--enable-intf-usb], -			[enable IPMI USB interface [default=yes]])], +			[enable IPMI USB interface [default=auto]])],  		[xenable_intf_usb=$enableval], -		[xenable_intf_usb=yes]) +		[xenable_intf_usb=$xenable_intf_usb])  if test "x$xenable_intf_usb" = "xstatic" || test "x$xenable_intf_usb" = "xplugin"; then     xenable_intf_usb=yes  fi diff --git a/doc/ipmitool.1 b/doc/ipmitool.1 index 10ccb74..2e39fad 100644 --- a/doc/ipmitool.1 +++ b/doc/ipmitool.1 @@ -10,47 +10,47 @@ ipmitool [ <options> ] <command> [ <sub-commands and sub-options> ]  Any recognized option is accepted. Conditional options may be ignored or it's usage postponed until shell or exec processes relevant command.  .br -<general-options>   := [ -h | -V | -v | -I <interface> | -H <address> | -                         -d <N> | -p <port> | -c | -U <username> | -                         -L <privlvl> | -l <lun> | -m <local_address> | -                         -N <sec> | -R <count> | <password-option> | +<general\-options>   := [ \-h | \-V | \-v | \-I <interface> | \-H <address> | +                         \-d <N> | \-p <port> | \-c | \-U <username> | +                         \-L <privlvl> | \-l <lun> | \-m <local_address> | +                         \-N <sec> | \-R <count> | <password\-option> |                           <oem-option> | <bridge-options> ] -<conditional-opts>  := [ <lan-options> | <lanplus-options> | -                         <command-options> ] +<conditional\-opts>  := [ <lan\-options> | <lanplus\-options> | +                         <command\-options> ]  .br  Bridging:  .br -<bridge-options>    := -t <target_address> [ -b <channel> | -                       [ -T <address> | -B <channel> ] ] +<bridge\-options>    := \-t <target_address> [ \-b <channel> | +                       [ \-T <address> | \-B <channel> ] ]  .br -Options used with -I lan: +Options used with \-I lan:  .br -<lan-options>       := [ -A <authtype> ] +<lan\-options>       := [ \-A <authtype> ]  .br -Options used with -I lanplus: +Options used with \-I lanplus:  .br -<lanplus-options>   := [ -C <ciphersuite> | <key-option> ] +<lanplus\-options>   := [ \-C <ciphersuite> | <key\-option> ]  .br  Option groups setting same value:  .br -<key-option>        := [ -k <key> | -K | -y <hex_key> | -Y ] +<key\-option>        := [ \-k <key> | \-K | \-y <hex_key> | \-Y ]  .br -<password-option>   := [ -f <password_file> | -a | -P <password> | -E ] +<password\-option>   := [ \-f <password_file> | \-a | \-P <password> | \-E ]  .br -<oem-option>        := [ -o <oemtype> | -g | -s ] +<oem\-option>        := [ \-o <oemtype> | \-g | \-s ]  .br  Options used with specific command <command-options>:  .br -<options-sdr>       := [ -S <sdr_cache_file> ] +<options\-sdr>       := [ \-S <sdr_cache_file> ]  .br -<options-sel>       := [ -O <sel_oem> ] +<options\-sel>       := [ \-O <sel_oem> ]  .br -<options-sol>       := [ -e <sol_escape_char> ] +<options\-sol>       := [ \-e <sol_escape_char> ]  .SH "DESCRIPTION" @@ -63,7 +63,7 @@ chassis power control.  IPMI management of a local system interface requires a compatible IPMI  kernel driver to be installed and configured.  On Linux this driver is  called \fIOpenIPMI\fP and it is included in standard distributions. -On Solaris this driver is called \fIBMC\fP and is inclued in Solaris 10. +On Solaris this driver is called \fIBMC\fP and is included in Solaris 10.  Management of a remote station requires the IPMI\-over\-LAN interface to be  enabled and configured.  Depending on the particular requirements of each  system it may be possible to enable the LAN interface using ipmitool over @@ -120,7 +120,7 @@ option is absent, or if password_file is empty, the password  will default to NULL.  .TP   \fB\-g\fR -Deprecated. Use: -o intelplus +Deprecated. Use: \-o intelplus  .TP   \fB\-h\fR  Get basic usage help from the command line. @@ -151,7 +151,7 @@ combined with \fI-t target address\fP.  .TP   \fB\-m\fR <\fIlocal_address\fP>  Set the local IPMB address.  The local address defaults to 0x20 -or is auto discovered on PICMG platforms when -m is not specified. +or is auto discovered on PICMG platforms when \-m is not specified.  There should be no need to change the local address for normal operation.  .TP   \fB\-N\fR <\fIsec\fP> @@ -185,7 +185,7 @@ Command \fIraw\fP uses fixed value of one try (no retries).  Command \fIhpm\fP uses fixed value of 10 retries.  .TP   \fB\-s\fR -Deprecated. Use: -o supermicro +Deprecated. Use: \-o supermicro  .TP   \fB\-S\fR <\fIsdr_cache_file\fP>  Use local file for remote SDR cache.  Using a local SDR cache @@ -223,7 +223,7 @@ Display version information.  \fB\-y\fR <\fIhex key\fP>  Use supplied Kg key for IPMIv2.0 authentication. The key is expected in  hexadecimal format and can be used to specify keys with non-printable -characters. E.g. '-k PASSWORD' and '-y 50415353574F5244' are +characters. E.g. '\-k PASSWORD' and '\-y 50415353574F5244' are  equivalent.  The default is not to use any Kg key.  .TP  @@ -1052,7 +1052,7 @@ Display point to point physical connectivity between carriers and AMC modules.  \fIpower\fP <\fBxx=filename1\fR> <\fBxx=filename2\fR> \fB...\fr  .br -Display power supply informations between carrier and AMC modules. +Display power supply information between carrier and AMC modules.  .TP  \fIall\fP <\fBxx=filename\fR> <\fBxx=filename\fR> \fB...\fr  .br @@ -1064,7 +1064,7 @@ modules.  .TP  \fIfrushow\fP <\fBxx=filename\fR>  .br -Convert a binary FRU file into human readable text format. Use -v option to get +Convert a binary FRU file into human readable text format. Use \-v option to get  more display information.  .RE @@ -1082,56 +1082,56 @@ and an AMC module or between 2 AMC modules. Example:    AMC slot B1 port 0 ==> On-Carrier Device 0 port 16     Matching Result     - From On-Carrier Device ID 0 -    -Channel ID 11 || Lane 0: enable -    -Link Type: AMC.2 Ethernet -    -Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link -    -Link Group ID: 0 || Link Asym. Match: exact match +    \-Channel ID 11 || Lane 0: enable +    \-Link Type: AMC.2 Ethernet +    \-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link +    \-Link Group ID: 0 || Link Asym. Match: exact match     - To AMC slot B1 -    -Channel ID 0 || Lane 0: enable -    -Link Type: AMC.2 Ethernet -    -Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link -    -Link Group ID: 0 || Link Asym. Match: exact match +    \-Channel ID 0 || Lane 0: enable +    \-Link Type: AMC.2 Ethernet +    \-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link +    \-Link Group ID: 0 || Link Asym. Match: exact match     *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*    AMC slot B1 port 1 ==> On-Carrier Device 0 port 12     Matching Result     - From On-Carrier Device ID 0 -    -Channel ID 6 || Lane 0: enable -    -Link Type: AMC.2 Ethernet -    -Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link -    -Link Group ID: 0 || Link Asym. Match: exact match +    \-Channel ID 6 || Lane 0: enable +    \-Link Type: AMC.2 Ethernet +    \-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link +    \-Link Group ID: 0 || Link Asym. Match: exact match     - To AMC slot B1 -    -Channel ID 1 || Lane 0: enable -    -Link Type: AMC.2 Ethernet -    -Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link -    -Link Group ID: 0 || Link Asym. Match: exact match +    \-Channel ID 1 || Lane 0: enable +    \-Link Type: AMC.2 Ethernet +    \-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link +    \-Link Group ID: 0 || Link Asym. Match: exact match     *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*   On-Carrier Device vs AMC slot A2    AMC slot A2 port 0 ==> On-Carrier Device 0 port 3     Matching Result     - From On-Carrier Device ID 0 -    -Channel ID 9 || Lane 0: enable -    -Link Type: AMC.2 Ethernet -    -Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link -    -Link Group ID: 0 || Link Asym. Match: exact match +    \-Channel ID 9 || Lane 0: enable +    \-Link Type: AMC.2 Ethernet +    \-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link +    \-Link Group ID: 0 || Link Asym. Match: exact match     - To AMC slot A2 -    -Channel ID 0 || Lane 0: enable -    -Link Type: AMC.2 Ethernet -    -Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link -    -Link Group ID: 0 || Link Asym. Match: exact match +    \-Channel ID 0 || Lane 0: enable +    \-Link Type: AMC.2 Ethernet +    \-Link Type extension: 1000BASE-BX (SerDES Gigabit) Ethernet link +    \-Link Group ID: 0 || Link Asym. Match: exact match     *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*   AMC slot B1 vs AMC slot A2    AMC slot A2 port 2 ==> AMC slot B1 port 2     Matching Result     - From AMC slot B1 -    -Channel ID 2 || Lane 0: enable -    -Link Type: AMC.3 Storage -    -Link Type extension: Serial Attached SCSI (SAS/SATA) -    -Link Group ID: 0 || Link Asym. Match: FC or SAS interface {exact match} +    \-Channel ID 2 || Lane 0: enable +    \-Link Type: AMC.3 Storage +    \-Link Type extension: Serial Attached SCSI (SAS/SATA) +    \-Link Group ID: 0 || Link Asym. Match: FC or SAS interface {exact match}     - To AMC slot A2 -    -Channel ID 2 || Lane 0: enable -    -Link Type: AMC.3 Storage -    -Link Type extension: Serial Attached SCSI (SAS/SATA) -    -Link Group ID: 0 || Link Asym. Match: FC or SAS interface {exact match} +    \-Channel ID 2 || Lane 0: enable +    \-Link Type: AMC.3 Storage +    \-Link Type extension: Serial Attached SCSI (SAS/SATA) +    \-Link Group ID: 0 || Link Asym. Match: FC or SAS interface {exact match}   *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*  .TP  \fIunmatch\fP <\fBxx=filename\fR> <\fBxx=filename\fR> \fB...\fr @@ -2516,7 +2516,7 @@ Remove a policy. If domain is not supplied a default of platform is used.  \fIpower\fP \fImin\fP <minimum> \fImax\fP <maximum> [\fIdomain\fP <platform|CPU|Memory>]  .br -Configure Node Manager power minumum and maximum power draw limits. +Configure Node Manager power minimum and maximum power draw limits.  The \fImin\fP and \fImax\fP values must be in the range of 0-65535.  If domain is not supplied a default of platform is used. @@ -3269,7 +3269,7 @@ I2C Master Write\-Read IPMI command.  Execute the service processor command line interface commands.  Without any command string, an interactive session is started -in the service processor command line environ ment.  If a +in the service processor command line environment.  If a  command string is specified, the command string is executed  on the service processor and the connection is closed.  .TP @@ -3515,7 +3515,7 @@ a 2.4\-based kernel in order for ipmitool to work:  Incoming and outgoing message handler for IPMI interfaces.  .TP   .B ipmi_kcs_drv -An IPMI Keyboard Controler Style (KCS) interface driver for the message handler. +An IPMI Keyboard Controller Style (KCS) interface driver for the message handler.  .TP   .B ipmi_devintf  Linux character device interface for the message handler. @@ -3553,7 +3553,7 @@ ipmitool includes some sample initialization scripts that  can perform this task automatically at start\-up.  In order to have ipmitool use the OpenIPMI device interface -you can specifiy it on the command line: +you can specify it on the command line:  .PP   ipmitool \fB\-I\fR \fIopen\fP <\fIcommand\fP>  .SH "BMC INTERFACE" @@ -3664,7 +3664,7 @@ encryption algorightms.  The ipmitool \fIfree\fP interface utilizes the FreeIPMI libfreeipmi  drivers.    .LP -You can tell ipmitool to use the FreeIPMI interface with the -I option: +You can tell ipmitool to use the FreeIPMI interface with the \-I option:  .PP  ipmitool \fB\-I\fR \fIfree\fP <\fIcommand\fP> @@ -3674,7 +3674,7 @@ ipmitool \fB\-I\fR \fIfree\fP <\fIcommand\fP>  The ipmitool \fIimb\fP interface supports the Intel IMB (Intel  Inter-module Bus) Interface through the /dev/imb device.    .LP -You can tell ipmitool to use the IMB interface with the -I option: +You can tell ipmitool to use the IMB interface with the \-I option:  .PP  ipmitool \fB\-I\fR \fIimb\fP <\fIcommand\fP> diff --git a/include/ipmitool/Makefile.am b/include/ipmitool/Makefile.am index 5a9062c..160e354 100644 --- a/include/ipmitool/Makefile.am +++ b/include/ipmitool/Makefile.am @@ -38,5 +38,5 @@ noinst_HEADERS = log.h bswap.h hpm2.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \  	ipmi_oem.h ipmi_sdradd.h ipmi_isol.h ipmi_sunoem.h ipmi_picmg.h \  	ipmi_fwum.h ipmi_main.h ipmi_tsol.h ipmi_firewall.h \  	ipmi_kontronoem.h ipmi_ekanalyzer.h ipmi_gendev.h ipmi_ime.h \ -	ipmi_delloem.h ipmi_dcmi.h ipmi_vita.h +	ipmi_delloem.h ipmi_dcmi.h ipmi_vita.h ipmi_sel_supermicro.h diff --git a/include/ipmitool/Makefile.in b/include/ipmitool/Makefile.in index cf46c1f..5c55d42 100644 --- a/include/ipmitool/Makefile.in +++ b/include/ipmitool/Makefile.in @@ -317,7 +317,7 @@ noinst_HEADERS = log.h bswap.h hpm2.h helper.h ipmi.h ipmi_cc.h ipmi_intf.h \  	ipmi_oem.h ipmi_sdradd.h ipmi_isol.h ipmi_sunoem.h ipmi_picmg.h \  	ipmi_fwum.h ipmi_main.h ipmi_tsol.h ipmi_firewall.h \  	ipmi_kontronoem.h ipmi_ekanalyzer.h ipmi_gendev.h ipmi_ime.h \ -	ipmi_delloem.h ipmi_dcmi.h ipmi_vita.h +	ipmi_delloem.h ipmi_dcmi.h ipmi_vita.h ipmi_sel_supermicro.h  all: all-am diff --git a/include/ipmitool/hpm2.h b/include/ipmitool/hpm2.h index 9e2a3a6..09b6237 100644 --- a/include/ipmitool/hpm2.h +++ b/include/ipmitool/hpm2.h @@ -43,7 +43,7 @@   * MSN = present revision,   * LSN = oldest revision parameter is   * backward compatible with. */ -#define LAN_PARAM_REV(x, y)	((x) << 4 | (y) & 0xF) +#define LAN_PARAM_REV(x, y)	(((x) << 4) | ((y) & 0xF))  /* HPM.2 capabilities */  #define HPM2_CAPS_SOL_EXTENSION		0x01 diff --git a/include/ipmitool/ipmi.h b/include/ipmitool/ipmi.h index beda0ad..e978bfc 100644 --- a/include/ipmitool/ipmi.h +++ b/include/ipmitool/ipmi.h @@ -251,8 +251,15 @@ struct ipmi_rs {  /* These values are IANA numbers */ +/************************************************************************ +* Add ID String for IANA Enterprise Number of IBM & ADLINK +* https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers +************************************************************************/ +  typedef enum IPMI_OEM {       IPMI_OEM_UNKNOWN    = 0, +     /* 2 for [IBM] */ +     IPMI_OEM_IBM_2      = 2,       IPMI_OEM_HP         = 11,       IPMI_OEM_SUN        = 42,       IPMI_OEM_NOKIA      = 94, @@ -268,6 +275,8 @@ typedef enum IPMI_OEM {       IPMI_OEM_LMC        = 2168,       IPMI_OEM_RADISYS    = 4337,       IPMI_OEM_BROADCOM   = 4413, +     /* 4769 for [IBM Corporation] */ +     IPMI_OEM_IBM_4769   = 4769,       IPMI_OEM_MAGNUM     = 5593,       IPMI_OEM_TYAN       = 6653,       IPMI_OEM_QUANTA     = 7244, @@ -283,8 +292,12 @@ typedef enum IPMI_OEM {       IPMI_OEM_RARITAN    = 13742,       IPMI_OEM_KONTRON    = 15000,       IPMI_OEM_PPS        = 16394, +     /* 20301 for [IBM eServer X] */ +     IPMI_OEM_IBM_20301  = 20301,       IPMI_OEM_AMI        = 20974, -     IPMI_OEM_NOKIA_SIEMENS_NETWORKS = 28458, +     /* 24339 for [ADLINK TECHNOLOGY INC.] */ +     IPMI_OEM_ADLINK_24339 = 24339, +     IPMI_OEM_NOKIA_SOLUTIONS_AND_NETWORKS = 28458,       IPMI_OEM_SUPERMICRO_47488 = 47488  } IPMI_OEM; diff --git a/include/ipmitool/ipmi_sel.h b/include/ipmitool/ipmi_sel.h index 53a8c1f..9778784 100644 --- a/include/ipmitool/ipmi_sel.h +++ b/include/ipmitool/ipmi_sel.h @@ -194,7 +194,7 @@ static struct ipmi_event_sensor_types oem_kontron_event_types[] __attribute__((u     { 0xC7 , 0x01 , 0xff, IPMI_EVENT_CLASS_DISCRETE , "FWUM Status", "First Boot After Rollback(error)" },     { 0xC7 , 0x02 , 0xff, IPMI_EVENT_CLASS_DISCRETE , "FWUM Status", "First Boot After Errors (watchdog)" },     { 0xC7 , 0x03 , 0xff, IPMI_EVENT_CLASS_DISCRETE , "FWUM Status", "First Boot After Manual Rollback" }, -   { 0xC7 , 0x08 , 0xff, IPMI_EVENT_CLASS_DISCRETE , "FWUM Status", "Firmware Watchdog Bite, reset occured" }, +   { 0xC7 , 0x08 , 0xff, IPMI_EVENT_CLASS_DISCRETE , "FWUM Status", "Firmware Watchdog Bite, reset occurred" },     { 0xC8 , 0x00 , 0xff, IPMI_EVENT_CLASS_DISCRETE , "Switch Mngt Software Status", "Not Loaded" },     { 0xC8 , 0x01 , 0xff, IPMI_EVENT_CLASS_DISCRETE , "Switch Mngt Software Status", "Initializing" }, @@ -689,56 +689,6 @@ static struct ipmi_event_sensor_types sensor_specific_types[] __attribute__((unu  	{ 0x00, 0x00, 0x00, 0x00, NULL, NULL },  }; -static uint16_t supermicro_x9dal[] = { -		0x0635, 0xFFFF -}; - -static uint16_t supermicro_x9db[] = { -		0x0733, 0x0722, 0x0703, 0x0721, 0x0716, 0x0637, 0xFFFF -}; - -static uint16_t supermicro_x9sb[] = { -		0x0651, 0xFFFF -}; - -static uint16_t supermicro_x9[] = { -		0x0635, 0x0733, 0x0722, 0x0703, 0x0721, 0x0716, 0x0637, 0x0651, 0xFFFF -}; - -static uint16_t supermicro_b8[] = { -		0x000A, 0x061c, 0x0620, 0x0101, 0x061f, 0x0612, 0x061e, 0xFFFF -}; - -static uint16_t supermicro_h8[] = { -		0xa111, 0x0408, 0x0811, 0x1411, 0x0911, 0x1211, 0x1011, 0xcd11, 0x1111, 0xbe11, 0xce11, 0xbd11, -		0xbc11, 0xa911, 0xaa11, 0xbd11, 0xcb11, 0xad11, 0xa811, 0xac11, 0xaf11, 0xa511, 0xa011, 0x1611, -		0x2511, 0xbf11, 0x1511, 0x2211, 0x2411, 0x1911, 0xab11, 0xd011, 0xae11, 0xca11, 0x0409, 0xa211, -		0xa311, 0x1311, 0xba11, 0xa711, 0xd111, 0x1711, 0xcf11, 0x2011, 0x1811, 0xFFFF -}; - -static uint16_t supermicro_p8[] = { -		0x6480, 0x7380, 0x6280, 0x7480, 0x5980, 0xFFFF -}; - -static uint16_t supermicro_x8[] = { -		0xa880, 0x0403, 0x0100, 0x0601, 0x0001, 0x0404, 0x0606, 0x0608, 0x0632, 0x0400, 0x0401, 0x0006, -		0x040a, 0xf280, 0x060f, 0x0609, 0x0008, 0x0613, 0x061b, 0x0007, 0x0600, 0x060c, 0x060d, 0x0614, -		0x060c, 0x0003, 0x040b, 0x0621, 0x0610, 0x0638, 0xf380, 0x060b, 0x040d, 0x0605, 0x062d, 0x060e, -		0x061a, 0xf580, 0x062e, 0x0009, 0xFFFF -}; - -static uint16_t supermicro_X8[] = { -		0x000A, 0x061c, 0x0620, 0x0101, 0x061f, 0x0612, 0x061e, 0xa111, 0x0408, 0x0811, 0x1411, 0x0911, -		0x1211, 0x1011, 0xcd11, 0x1111, 0xbe11, 0xce11, 0xbd11, 0xbc11, 0xa911, 0xaa11, 0xbd11, 0xcb11, -		0xad11, 0xa811, 0xac11, 0xaf11, 0xa511, 0xa011, 0x1611, 0x2511, 0xbf11, 0x1511, 0x2211, 0x2411, -		0x1911, 0xab11, 0xd011, 0xae11, 0xca11, 0x0409, 0xa211, 0xa311, 0x1311, 0xba11, 0xa711, 0xd111, -		0x1711, 0xcf11, 0x2011, 0x1811, 0x6480, 0x7380, 0x6280, 0x7480, 0x5980, 0xa880, 0x0403, 0x0100, -		0x0601, 0x0001, 0x0404, 0x0606, 0x0608, 0x0632, 0x0400, 0x0401, 0x0006, 0x040a, 0xf280, 0x060f, -		0x0609, 0x0008, 0x0613, 0x061b, 0x0007, 0x0600, 0x060c, 0x060d, 0x0614, 0x060c, 0x0003, 0x040b, -		0x0621, 0x0610, 0x0638, 0xf380, 0x060b, 0x040d, 0x0605, 0x062d, 0x060e, 0x061a, 0xf580, 0x062e, -		0x0009, 0xFFFF -}; -  int ipmi_sel_main(struct ipmi_intf *, int, char **);  void ipmi_sel_print_std_entry(struct ipmi_intf * intf, struct sel_event_record * evt);  void ipmi_sel_print_std_entry_verbose(struct ipmi_intf * intf, struct sel_event_record * evt); diff --git a/include/ipmitool/ipmi_sel_supermicro.h b/include/ipmitool/ipmi_sel_supermicro.h new file mode 100644 index 0000000..a058a8c --- /dev/null +++ b/include/ipmitool/ipmi_sel_supermicro.h @@ -0,0 +1,87 @@ +/* + * Copyright (c) 2003 Sun Microsystems, Inc.  All Rights Reserved. + *  + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + *  + * Redistribution of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + *  + * Redistribution in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + *  + * Neither the name of Sun Microsystems, Inc. or the names of + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + *  + * This software is provided "AS IS," without a warranty of any kind. + * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, + * INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. + * SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE + * FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING + * OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.  IN NO EVENT WILL + * SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, + * OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR + * PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF + * LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, + * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + */ + + +#ifndef IPMI_SEL_SUPERMICRO_H +# define IPMI_SEL_SUPERMICRO_H + +static uint16_t supermicro_x9dal[] = { +		0x0635, 0xFFFF +}; + +static uint16_t supermicro_x9db[] = { +		0x0733, 0x0722, 0x0703, 0x0721, 0x0716, 0x0637, 0xFFFF +}; + +static uint16_t supermicro_x9sb[] = { +		0x0651, 0xFFFF +}; + +static uint16_t supermicro_x9[] = { +		0x0635, 0x0733, 0x0722, 0x0703, 0x0721, 0x0716, 0x0637, 0x0651, 0xFFFF +}; + +static uint16_t supermicro_b8[] = { +		0x000A, 0x061c, 0x0620, 0x0101, 0x061f, 0x0612, 0x061e, 0xFFFF +}; + +static uint16_t supermicro_h8[] = { +		0xa111, 0x0408, 0x0811, 0x1411, 0x0911, 0x1211, 0x1011, 0xcd11, 0x1111, 0xbe11, 0xce11, 0xbd11, +		0xbc11, 0xa911, 0xaa11, 0xbd11, 0xcb11, 0xad11, 0xa811, 0xac11, 0xaf11, 0xa511, 0xa011, 0x1611, +		0x2511, 0xbf11, 0x1511, 0x2211, 0x2411, 0x1911, 0xab11, 0xd011, 0xae11, 0xca11, 0x0409, 0xa211, +		0xa311, 0x1311, 0xba11, 0xa711, 0xd111, 0x1711, 0xcf11, 0x2011, 0x1811, 0xFFFF +}; + +static uint16_t supermicro_p8[] = { +		0x6480, 0x7380, 0x6280, 0x7480, 0x5980, 0xFFFF +}; + +static uint16_t supermicro_x8[] = { +		0xa880, 0x0403, 0x0100, 0x0601, 0x0001, 0x0404, 0x0606, 0x0608, 0x0632, 0x0400, 0x0401, 0x0006, +		0x040a, 0xf280, 0x060f, 0x0609, 0x0008, 0x0613, 0x061b, 0x0007, 0x0600, 0x060c, 0x060d, 0x0614, +		0x060c, 0x0003, 0x040b, 0x0621, 0x0610, 0x0638, 0xf380, 0x060b, 0x040d, 0x0605, 0x062d, 0x060e, +		0x061a, 0xf580, 0x062e, 0x0009, 0xFFFF +}; + +static uint16_t supermicro_X8[] = { +		0x000A, 0x061c, 0x0620, 0x0101, 0x061f, 0x0612, 0x061e, 0xa111, 0x0408, 0x0811, 0x1411, 0x0911, +		0x1211, 0x1011, 0xcd11, 0x1111, 0xbe11, 0xce11, 0xbd11, 0xbc11, 0xa911, 0xaa11, 0xbd11, 0xcb11, +		0xad11, 0xa811, 0xac11, 0xaf11, 0xa511, 0xa011, 0x1611, 0x2511, 0xbf11, 0x1511, 0x2211, 0x2411, +		0x1911, 0xab11, 0xd011, 0xae11, 0xca11, 0x0409, 0xa211, 0xa311, 0x1311, 0xba11, 0xa711, 0xd111, +		0x1711, 0xcf11, 0x2011, 0x1811, 0x6480, 0x7380, 0x6280, 0x7480, 0x5980, 0xa880, 0x0403, 0x0100, +		0x0601, 0x0001, 0x0404, 0x0606, 0x0608, 0x0632, 0x0400, 0x0401, 0x0006, 0x040a, 0xf280, 0x060f, +		0x0609, 0x0008, 0x0613, 0x061b, 0x0007, 0x0600, 0x060c, 0x060d, 0x0614, 0x060c, 0x0003, 0x040b, +		0x0621, 0x0610, 0x0638, 0xf380, 0x060b, 0x040d, 0x0605, 0x062d, 0x060e, 0x061a, 0xf580, 0x062e, +		0x0009, 0xFFFF +}; + +#endif /* IPMI_SEL_SUPERMICRO_H */ diff --git a/include/ipmitool/ipmi_sol.h b/include/ipmitool/ipmi_sol.h index 6e6c0b2..6e2fd24 100644 --- a/include/ipmitool/ipmi_sol.h +++ b/include/ipmitool/ipmi_sol.h @@ -64,7 +64,7 @@ struct sol_config_parameters {  /* - * The ACTIVATE PAYLOAD command reponse structure + * The ACTIVATE PAYLOAD command response structure   * From table 24-2 of the IPMI v2.0 spec   */  #ifdef PRAGMA_PACK diff --git a/ipmitool.spec b/ipmitool.spec index 749e82d..fbdd549 100644 --- a/ipmitool.spec +++ b/ipmitool.spec @@ -1,6 +1,6 @@  Name:         ipmitool  Summary:      ipmitool - Utility for IPMI control -Version:      1.8.16 +Version:      1.8.17  Release:      1%{?_distro:.%{_distro}}  License:      BSD  Group:        Utilities 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> @@ -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(¤t); -            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 @@ -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; @@ -70,7 +70,7 @@  #         compiler:		$LTCC  #         compiler flags:		$LTCFLAGS  #         linker:		$LD (gnu? $with_gnu_ld) -#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.7ubuntu1 +#         $progname:	(GNU libtool) 2.4.2 Debian-2.4.2-1.11  #         automake:	$automake_version  #         autoconf:	$autoconf_version  # @@ -80,7 +80,7 @@  PROGRAM=libtool  PACKAGE=libtool -VERSION="2.4.2 Debian-2.4.2-1.7ubuntu1" +VERSION="2.4.2 Debian-2.4.2-1.11"  TIMESTAMP=""  package_revision=1.3337 diff --git a/src/Makefile.am b/src/Makefile.am index ba388d3..cedf63d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -28,7 +28,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. -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  SUBDIRS			= plugins  MAINTAINERCLEANFILES	= Makefile.in diff --git a/src/Makefile.in b/src/Makefile.in index 06b33a8..07e255d 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -387,7 +387,7 @@ target_vendor = @target_vendor@  top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@ -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  SUBDIRS = plugins  MAINTAINERCLEANFILES = Makefile.in  ipmitool_SOURCES = ipmitool.c ipmishell.c diff --git a/src/ipmievd.c b/src/ipmievd.c index cc1ca0f..caefd95 100644 --- a/src/ipmievd.c +++ b/src/ipmievd.c @@ -30,6 +30,7 @@   * EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.   */  #define _XOPEN_SOURCE 700 +#define _BSD_SOURCE  #include <stdio.h>  #include <fcntl.h> @@ -70,7 +71,7 @@  # else  #  include "plugins/open/open.h"  # endif -#  include <sys/poll.h> +#  include <poll.h>  #endif /* IPMI_INTF_OPEN */  #include <ipmitool/helper.h> diff --git a/src/ipmishell.c b/src/ipmishell.c index 6cfcbe8..205cbf9 100644 --- a/src/ipmishell.c +++ b/src/ipmishell.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 <stdio.h>  #include <unistd.h> diff --git a/src/plugins/Makefile.am b/src/plugins/Makefile.am index a2c48ff..7ad8173 100644 --- a/src/plugins/Makefile.am +++ b/src/plugins/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES		= Makefile.in -INCLUDES			= -I$(top_srcdir)/include +AM_CPPFLAGS			= -I$(top_srcdir)/include  SUBDIRS				= @INTF_LAN@ @INTF_LANPLUS@ @INTF_OPEN@ @INTF_LIPMI@ @INTF_IMB@ @INTF_BMC@ @INTF_FREE@ @INTF_SERIAL@ @INTF_DUMMY@ @INTF_USB@  DIST_SUBDIRS			= lan lanplus open lipmi imb bmc free serial dummy usb diff --git a/src/plugins/Makefile.in b/src/plugins/Makefile.in index f38697a..262ff90 100644 --- a/src/plugins/Makefile.in +++ b/src/plugins/Makefile.in @@ -381,7 +381,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  SUBDIRS = @INTF_LAN@ @INTF_LANPLUS@ @INTF_OPEN@ @INTF_LIPMI@ @INTF_IMB@ @INTF_BMC@ @INTF_FREE@ @INTF_SERIAL@ @INTF_DUMMY@ @INTF_USB@  DIST_SUBDIRS = lan lanplus open lipmi imb bmc free serial dummy usb  noinst_LTLIBRARIES = libintf.la diff --git a/src/plugins/bmc/Makefile.am b/src/plugins/bmc/Makefile.am index 66080d6..f9374fe 100644 --- a/src/plugins/bmc/Makefile.am +++ b/src/plugins/bmc/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_bmc.la  noinst_LTLIBRARIES	= @INTF_BMC_LIB@ diff --git a/src/plugins/bmc/Makefile.in b/src/plugins/bmc/Makefile.in index 6ed1ee7..3cb831b 100644 --- a/src/plugins/bmc/Makefile.in +++ b/src/plugins/bmc/Makefile.in @@ -338,7 +338,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_bmc.la  noinst_LTLIBRARIES = @INTF_BMC_LIB@  libintf_bmc_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/dummy/Makefile.am b/src/plugins/dummy/Makefile.am index 8a53bbe..bbc8048 100644 --- a/src/plugins/dummy/Makefile.am +++ b/src/plugins/dummy/Makefile.am @@ -1,8 +1,8 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_dummy.la  noinst_LTLIBRARIES	= @INTF_DUMMY_LIB@  libintf_dummy_la_LIBADD	= $(top_builddir)/lib/libipmitool.la -libintf_dummy_la_SOURCES	= dummy.c +libintf_dummy_la_SOURCES	= dummy.c dummy.h diff --git a/src/plugins/dummy/Makefile.in b/src/plugins/dummy/Makefile.in index 86475ba..1850430 100644 --- a/src/plugins/dummy/Makefile.in +++ b/src/plugins/dummy/Makefile.in @@ -308,11 +308,11 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_dummy.la  noinst_LTLIBRARIES = @INTF_DUMMY_LIB@  libintf_dummy_la_LIBADD = $(top_builddir)/lib/libipmitool.la -libintf_dummy_la_SOURCES = dummy.c +libintf_dummy_la_SOURCES = dummy.c dummy.h  all: all-am  .SUFFIXES: diff --git a/src/plugins/dummy/dummy.c b/src/plugins/dummy/dummy.c index 8bfc4cf..8600a84 100644 --- a/src/plugins/dummy/dummy.c +++ b/src/plugins/dummy/dummy.c @@ -31,6 +31,7 @@  #include <errno.h>  #include <limits.h>  #include <stdio.h> +#include <stdlib.h>  #include <sys/socket.h>  #include <sys/types.h>  #include <sys/un.h> @@ -175,6 +176,14 @@ ipmi_dummyipmi_open(struct ipmi_intf *intf)  	struct sockaddr_un address;  	int len;  	int rc; +	char *dummy_sock_path; + +	dummy_sock_path = getenv("IPMI_DUMMY_SOCK"); +	if (dummy_sock_path == NULL) { +		lprintf(LOG_DEBUG, "No IPMI_DUMMY_SOCK set. Dummy mode ON."); +		intf->opened = 1; +		return intf->fd; +	}  	if (intf->opened == 1) {  		return intf->fd; @@ -185,7 +194,7 @@ ipmi_dummyipmi_open(struct ipmi_intf *intf)  		return (-1);  	}  	address.sun_family = AF_UNIX; -	strcpy(address.sun_path, DUMMY_SOCKET_PATH); +	strcpy(address.sun_path, dummy_sock_path);  	len = sizeof(address);  	rc = connect(intf->fd, (struct sockaddr *)&address, len);  	if (rc != 0) { @@ -209,6 +218,12 @@ ipmi_dummyipmi_send_cmd(struct ipmi_intf *intf, struct ipmi_rq *req)  	static struct ipmi_rs rsp;  	struct dummy_rq req_dummy;  	struct dummy_rs rsp_dummy; +	char *dummy_sock_path; +	dummy_sock_path = getenv("IPMI_DUMMY_SOCK"); +	if (dummy_sock_path == NULL) { +		lprintf(LOG_DEBUG, "No IPMI_DUMMY_SOCK set. Dummy mode ON."); +		return NULL; +	}  	if (intf == NULL || intf->fd < 0 || intf->opened != 1) {  		lprintf(LOG_ERR, "dummy failed on intf check.");  		return NULL; diff --git a/src/plugins/dummy/dummy.h b/src/plugins/dummy/dummy.h new file mode 100644 index 0000000..bbe3aa3 --- /dev/null +++ b/src/plugins/dummy/dummy.h @@ -0,0 +1,28 @@ +#ifndef IPMI_DUMMYIPMI_H +# define IPMI_DUMMYIPMI_H + +struct dummy_rq { +	struct { +		uint8_t netfn; +		uint8_t lun; +		uint8_t cmd; +		uint8_t target_cmd; +		uint16_t data_len; +		uint8_t *data; +	} msg; +}; + +struct dummy_rs { +	struct { +		uint8_t netfn; +		uint8_t cmd; +		uint8_t seq; +		uint8_t lun; +	} msg; + +	uint8_t ccode; +	int data_len; +	uint8_t *data; +}; + +#endif diff --git a/src/plugins/free/Makefile.am b/src/plugins/free/Makefile.am index 028281f..7a3a84e 100644 --- a/src/plugins/free/Makefile.am +++ b/src/plugins/free/Makefile.am @@ -1,6 +1,6 @@  MAINTAINERCLEANFILES           = Makefile.in -INCLUDES                       = -I$(top_srcdir)/include +AM_CPPFLAGS                       = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES              = libintf_free.la  noinst_LTLIBRARIES             = @INTF_FREE_LIB@ diff --git a/src/plugins/free/Makefile.in b/src/plugins/free/Makefile.in index d8eb9e6..cc33b93 100644 --- a/src/plugins/free/Makefile.in +++ b/src/plugins/free/Makefile.in @@ -312,7 +312,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_free.la  noinst_LTLIBRARIES = @INTF_FREE_LIB@  libintf_free_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/imb/Makefile.am b/src/plugins/imb/Makefile.am index 91d5966..6f1b68c 100644 --- a/src/plugins/imb/Makefile.am +++ b/src/plugins/imb/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES 		= -I$(top_srcdir)/include +AM_CPPFLAGS 		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_imb.la  noinst_LTLIBRARIES	= @INTF_IMB_LIB@ diff --git a/src/plugins/imb/Makefile.in b/src/plugins/imb/Makefile.in index d1ded78..1e40e15 100644 --- a/src/plugins/imb/Makefile.in +++ b/src/plugins/imb/Makefile.in @@ -338,7 +338,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_imb.la  noinst_LTLIBRARIES = @INTF_IMB_LIB@  libintf_imb_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/imb/imb.c b/src/plugins/imb/imb.c index 0044159..1514fa7 100644 --- a/src/plugins/imb/imb.c +++ b/src/plugins/imb/imb.c @@ -43,6 +43,7 @@  #include <ipmitool/ipmi.h>  #include <ipmitool/ipmi_intf.h>  #include <ipmitool/helper.h> +#include <ipmitool/ipmi_sel.h>  #include "imbapi.h" diff --git a/src/plugins/imb/imbapi.c b/src/plugins/imb/imbapi.c index 899c47a..84eec2e 100644 --- a/src/plugins/imb/imbapi.c +++ b/src/plugins/imb/imbapi.c @@ -97,7 +97,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  #include <string.h>  #endif  #include "imbapi.h" -#include <asm/socket.h> +#include <sys/socket.h>  #ifdef SCO_UW  #define NO_MACRO_ARGS  1 @@ -105,9 +105,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  #define IMB_DEVICE "/dev/instru/mismic"  #else  #define IMB_DEVICE "/dev/imb" -#ifndef PAGESIZE -# define PAGESIZE EXEC_PAGESIZE  #endif + +#if !defined(PAGESIZE) && defined(PAGE_SIZE) +#  define PAGESIZE PAGE_SIZE +#endif + +#if !defined(_SC_PAGESIZE) && defined(_SC_PAGE_SIZE) +#  define _SC_PAGESIZE _SC_PAGE_SIZE  #endif  /*Just to make the DEBUG code cleaner.*/ @@ -545,7 +550,7 @@ SendTimedI2cRequest (  	if( status != TRUE ) {  		DWORD error;  		error = GetLastError(); -		return ACCESN_ERROR; +		return error;  	}  	if( respLength == 0 ) {  		return ACCESN_ERROR; @@ -1134,7 +1139,7 @@ SendTimedImbpRequest (  	if( status != TRUE ) {  		DWORD error;  		error = GetLastError(); -		return ACCESN_ERROR; +		return error;  	}  	if( respLength == 0 ) {  		return ACCESN_ERROR; @@ -1211,7 +1216,7 @@ SendAsyncImbpRequest (  	if( status != TRUE ) {  		DWORD error;  		error = GetLastError(); -		return ACCESN_ERROR; +		return error;  	}  	if( respLength != 2 ) {  		return ACCESN_ERROR; @@ -1985,6 +1990,16 @@ MapPhysicalMemory(int startAddress,int addressLength, int *virtualAddress )  	off_t 				startpAddress = (off_t)startAddress;  	unsigned int 		diff;  	char 				*startvAddress; +#if defined(PAGESIZE) +	long int pagesize = PAGESIZE; +#elif defined(_SC_PAGESIZE) +	long int pagesize = sysconf(_SC_PAGESIZE); +	if (pagesize < 1) { +		perror("Invalid pagesize"); +	} +#else +#  error PAGESIZE unsupported +#endif  	if ((startAddress == 0) || (addressLength <= 0))  		return ACCESN_ERROR; @@ -1999,7 +2014,7 @@ MapPhysicalMemory(int startAddress,int addressLength, int *virtualAddress )  	}  	/* aliging the offset to a page boundary and adjusting the length */ -	diff = (int)startpAddress % PAGESIZE; +	diff = (int)startpAddress % pagesize;  	startpAddress -= diff;  	length += diff; @@ -2043,9 +2058,19 @@ ACCESN_STATUS  UnmapPhysicalMemory( int virtualAddress, int Length )  {  	unsigned int diff = 0; +#if defined(PAGESIZE) +	long int pagesize = PAGESIZE; +#elif defined(_SC_PAGESIZE) +	long int pagesize = sysconf(_SC_PAGESIZE); +	if (pagesize < 1) { +		perror("Invalid pagesize"); +	} +#else +#  error PAGESIZE unsupported +#endif  	/* page align the virtual address and adjust length accordingly  */ -	diff = 	((unsigned int) virtualAddress) % PAGESIZE; +	diff = 	((unsigned int) virtualAddress) % pagesize;  	virtualAddress -= diff;  	Length += diff;  #ifndef NO_MACRO_ARGS diff --git a/src/plugins/imb/imbapi.h b/src/plugins/imb/imbapi.h index 74975c6..6ba4121 100644 --- a/src/plugins/imb/imbapi.h +++ b/src/plugins/imb/imbapi.h @@ -46,10 +46,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  #endif  #ifndef WIN32     /* WIN32 defines this in stdio.h */ -#ifndef _WCHAR_T -#define _WCHAR_T -typedef long    wchar_t; -#endif +#include <wchar.h>  #endif  #define far  #define near diff --git a/src/plugins/ipmi_intf.c b/src/plugins/ipmi_intf.c index 19ba5e3..6cf0553 100644 --- a/src/plugins/ipmi_intf.c +++ b/src/plugins/ipmi_intf.c @@ -31,6 +31,7 @@   */  #define _XOPEN_SOURCE 700  #define _GNU_SOURCE 1 +#define _DARWIN_C_SOURCE 1  #include <stdio.h>  #include <stdlib.h> @@ -451,7 +452,7 @@ ipmi_intf_socket_connect(struct ipmi_intf * intf)  						}  						/* OK, now try to connect with the scope id from this interface address */ -						if (addr6->sin6_scope_id != 0) { +						if (addr6->sin6_scope_id != 0 || !IN6_IS_ADDR_LINKLOCAL(&tmp6->sin6_addr)) {  							if (connect(intf->fd, rp->ai_addr, rp->ai_addrlen) != -1) {  								hints.ai_family = rp->ai_family;  								lprintf(LOG_DEBUG, "Successful connected on %s interface with scope id %d", ifa->ifa_name, tmp6->sin6_scope_id); diff --git a/src/plugins/lan/Makefile.am b/src/plugins/lan/Makefile.am index 70e320f..f276f38 100644 --- a/src/plugins/lan/Makefile.am +++ b/src/plugins/lan/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_lan.la  noinst_LTLIBRARIES	= @INTF_LAN_LIB@ diff --git a/src/plugins/lan/Makefile.in b/src/plugins/lan/Makefile.in index 9d1ce80..2abda0d 100644 --- a/src/plugins/lan/Makefile.in +++ b/src/plugins/lan/Makefile.in @@ -338,7 +338,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_lan.la  noinst_LTLIBRARIES = @INTF_LAN_LIB@  libintf_lan_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/lan/lan.c b/src/plugins/lan/lan.c index 14730d3..40ba233 100644 --- a/src/plugins/lan/lan.c +++ b/src/plugins/lan/lan.c @@ -970,7 +970,7 @@ ipmi_lan_send_cmd(struct ipmi_intf * intf, struct ipmi_rq * req)  	// Example: We have to send command 23 and 2d.  	// If we send command,seq as 23,10 and if we dont get any response it will   	// retry 4 times with 23,10 and then come out here and indicate that there is no -	// reponse from the remote controller and will send the next command for  +	// response from the remote controller and will send the next command for  	// ie 2d,11. And if the BMC is slow to respond and returns 23,10 then it   	// will match it in the list and will take response of command 23 as response   	// for command 2d and return success. So ideally when retries are done and  diff --git a/src/plugins/lanplus/Makefile.am b/src/plugins/lanplus/Makefile.am index 428eb04..219440e 100644 --- a/src/plugins/lanplus/Makefile.am +++ b/src/plugins/lanplus/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_lanplus.la  noinst_LTLIBRARIES	= @INTF_LANPLUS_LIB@ diff --git a/src/plugins/lanplus/Makefile.in b/src/plugins/lanplus/Makefile.in index eef233d..d24775b 100644 --- a/src/plugins/lanplus/Makefile.in +++ b/src/plugins/lanplus/Makefile.in @@ -339,7 +339,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_lanplus.la  noinst_LTLIBRARIES = @INTF_LANPLUS_LIB@  libintf_lanplus_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/lanplus/lanplus.c b/src/plugins/lanplus/lanplus.c index 8776212..2a89a14 100644 --- a/src/plugins/lanplus/lanplus.c +++ b/src/plugins/lanplus/lanplus.c @@ -57,6 +57,7 @@  #include <ipmitool/ipmi_lanp.h>  #include <ipmitool/ipmi_channel.h>  #include <ipmitool/ipmi_intf.h> +#include <ipmitool/ipmi_sel.h>  #include <ipmitool/ipmi_strings.h>  #include <ipmitool/hpm2.h>  #include <ipmitool/bswap.h> @@ -606,7 +607,7 @@ ipmiv2_lan_ping(struct ipmi_intf * intf)   * Receive whatever comes back.  Ignore received packets that don't correspond   * to a request we've sent.   * - * Returns: the ipmi_rs packet describing the/a reponse we expect. + * Returns: the ipmi_rs packet describing the/a response we expect.   */  static struct ipmi_rs *  ipmi_lan_poll_single(struct ipmi_intf * intf) @@ -651,7 +652,7 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)  	 *  	 * 1) An IPMI 1.5 packet (the response to our GET CHANNEL  	 *    AUTHENTICATION CAPABILITIES request) -	 * 2) An RMCP+ message with an IPMI reponse payload +	 * 2) An RMCP+ message with an IPMI response payload  	 * 3) AN RMCP+ open session response  	 * 4) An RAKP-2 message (response to an RAKP 1 message)  	 * 5) An RAKP-4 message (response to an RAKP 3 message) @@ -662,6 +663,21 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)  	read_session_data(rsp, &offset, intf->session); +	/* +	 * Skip packets that are not intended for this session +	 */ +	if ((session->v2_data.session_state == LANPLUS_STATE_ACTIVE)    && +		 (rsp->session.authtype == IPMI_SESSION_AUTHTYPE_RMCP_PLUS) && +		 (rsp->session.id != intf->session->v2_data.console_id)) +	{ +		lprintf(LOG_INFO, "packet session id 0x%x does not " +			"match active session 0x%0x", +			rsp->session.id, intf->session->v2_data.console_id); +		lprintf(LOG_ERR, "ERROR: Received an Unexpected message ID"); +		/* read one more packet */ +		return (struct ipmi_rs *)1; +	} +  	if (lanplus_has_valid_auth_code(rsp, intf->session) == 0) {  		lprintf(LOG_ERR, "ERROR: Received message with invalid authcode!");  		return NULL; @@ -681,7 +697,7 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)  	}  	/* -	 * Handle IPMI responses (case #1 and #2) -- all IPMI reponses +	 * Handle IPMI responses (case #1 and #2) -- all IPMI responses  	 */  	if (rsp->session.payloadtype == IPMI_PAYLOAD_TYPE_IPMI) {  		struct ipmi_rq_entry * entry; @@ -863,7 +879,7 @@ ipmi_lan_poll_single(struct ipmi_intf * intf)   * Receive whatever comes back.  Ignore received packets that don't correspond   * to a request we've sent.   * - * Returns: the ipmi_rs packet describing the/a reponse we expect. + * Returns: the ipmi_rs packet describing the/a response we expect.   */  static struct ipmi_rs *  ipmi_lan_poll_recv(struct ipmi_intf * intf) @@ -881,7 +897,7 @@ ipmi_lan_poll_recv(struct ipmi_intf * intf)  /* - * read_open_session_reponse + * read_open_session_response   *   * Initialize the ipmi_rs from the IPMI 2.x open session response data.   * @@ -903,7 +919,7 @@ read_open_session_response(struct ipmi_rs * rsp, int offset)  	 /*  Message tag */  	 rsp->payload.open_session_response.message_tag = rsp->data[offset]; -	 /* RAKP reponse code */ +	 /* RAKP response code */  	 rsp->payload.open_session_response.rakp_return_code = rsp->data[offset + 1];  	 /* Maximum privilege level */ @@ -970,7 +986,7 @@ read_rakp2_message(  	 /*  Message tag */  	 rsp->payload.rakp2_message.message_tag = rsp->data[offset]; -	 /* RAKP reponse code */ +	 /* RAKP response code */  	 rsp->payload.rakp2_message.rakp_return_code = rsp->data[offset + 1];  	 /* Console session ID */ @@ -1051,7 +1067,7 @@ read_rakp4_message(  	 /*  Message tag */  	 rsp->payload.rakp4_message.message_tag = rsp->data[offset]; -	 /* RAKP reponse code */ +	 /* RAKP response code */  	 rsp->payload.rakp4_message.rakp_return_code = rsp->data[offset + 1];  	 /* Console session ID */ @@ -1162,19 +1178,6 @@ read_session_data_v2x(  	#endif -	/* -	 * Verify that the session ID is what we think it should be -	 */ -	if ((s->v2_data.session_state == LANPLUS_STATE_ACTIVE) && -		(rsp->session.id != s->v2_data.console_id)) -	{ -		lprintf(LOG_ERR, "packet session id 0x%x does not " -			"match active session 0x%0x", -			rsp->session.id, s->v2_data.console_id); -		assert(0); -	} - -  	/* Ignored, so far */  	memcpy(&rsp->session.seq, rsp->data + *offset, 4);  	*offset += 4; @@ -1399,10 +1402,6 @@ void getIpmiPayloadWireRep(  			msg[len++] = IPMI_REMOTE_SWID;  			msg[len++] = curr_seq << 2;  			msg[len++] = 0x34;			/* Send Message rqst */ -	#if 0  /* From lan.c example */ -			entry->req.msg.target_cmd = entry->req.msg.cmd;	/* Save target command */ -			entry->req.msg.cmd = 0x34;		/* (fixup request entry) */ -	#endif  			msg[len++] = (0x40|intf->target_channel); /* Track request*/  			payload->payload_length += 7; @@ -2101,7 +2100,7 @@ ipmi_lanplus_send_payload(  						  struct ipmi_v2_payload * payload)  {  	struct ipmi_rs      * rsp = NULL; -	uint8_t             * msg_data; +	uint8_t             * msg_data = NULL;  	int                   msg_length;  	struct ipmi_session * session = intf->session;  	struct ipmi_rq_entry * entry = NULL; @@ -2341,6 +2340,7 @@ ipmi_lanplus_send_payload(  	case IPMI_PAYLOAD_TYPE_RMCP_OPEN_REQUEST:  	case IPMI_PAYLOAD_TYPE_RAKP_1:  	case IPMI_PAYLOAD_TYPE_RAKP_3: +	case IPMI_PAYLOAD_TYPE_SOL:  		free(msg_data);  		msg_data = NULL;  		break; @@ -3416,7 +3416,7 @@ ipmi_lanplus_open(struct ipmi_intf * intf)  	if (!ipmi_oem_active(intf, "i82571spt") &&  			ipmi_get_auth_capabilities_cmd(intf, &auth_cap)) {  		lprintf(LOG_INFO, "Error issuing Get Channel " -			"Authentication Capabilies request"); +			"Authentication Capabilities request");  		goto fail;  	} diff --git a/src/plugins/lipmi/Makefile.am b/src/plugins/lipmi/Makefile.am index 61c50f4..ca7aa0a 100644 --- a/src/plugins/lipmi/Makefile.am +++ b/src/plugins/lipmi/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES		= Makefile.in -INCLUDES			= -I$(top_srcdir)/include +AM_CPPFLAGS			= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES		= libintf_lipmi.la  noinst_LTLIBRARIES		= @INTF_LIPMI_LIB@ diff --git a/src/plugins/lipmi/Makefile.in b/src/plugins/lipmi/Makefile.in index eb8000f..be4996d 100644 --- a/src/plugins/lipmi/Makefile.in +++ b/src/plugins/lipmi/Makefile.in @@ -338,7 +338,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_lipmi.la  noinst_LTLIBRARIES = @INTF_LIPMI_LIB@  libintf_lipmi_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/open/Makefile.am b/src/plugins/open/Makefile.am index 89ce711..edc4916 100644 --- a/src/plugins/open/Makefile.am +++ b/src/plugins/open/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_open.la  noinst_LTLIBRARIES	= @INTF_OPEN_LIB@ diff --git a/src/plugins/open/Makefile.in b/src/plugins/open/Makefile.in index bb4be5e..c4b7714 100644 --- a/src/plugins/open/Makefile.in +++ b/src/plugins/open/Makefile.in @@ -338,7 +338,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_open.la  noinst_LTLIBRARIES = @INTF_OPEN_LIB@  libintf_open_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/open/open.c b/src/plugins/open/open.c index fc685de..df56172 100644 --- a/src/plugins/open/open.c +++ b/src/plugins/open/open.c @@ -44,6 +44,7 @@  #include <ipmitool/ipmi.h>  #include <ipmitool/ipmi_intf.h> +#include <ipmitool/ipmi_sel.h>  #include <ipmitool/helper.h>  #include <ipmitool/log.h> diff --git a/src/plugins/serial/Makefile.am b/src/plugins/serial/Makefile.am index 5bfbd0d..c1a3083 100644 --- a/src/plugins/serial/Makefile.am +++ b/src/plugins/serial/Makefile.am @@ -30,7 +30,7 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_serial.la  noinst_LTLIBRARIES	= @INTF_SERIAL_LIB@ diff --git a/src/plugins/serial/Makefile.in b/src/plugins/serial/Makefile.in index cae1857..aa03dd8 100644 --- a/src/plugins/serial/Makefile.in +++ b/src/plugins/serial/Makefile.in @@ -338,7 +338,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_serial.la  noinst_LTLIBRARIES = @INTF_SERIAL_LIB@  libintf_serial_la_LIBADD = $(top_builddir)/lib/libipmitool.la diff --git a/src/plugins/serial/serial_basic.c b/src/plugins/serial/serial_basic.c index fe2ebff..e3322c1 100644 --- a/src/plugins/serial/serial_basic.c +++ b/src/plugins/serial/serial_basic.c @@ -45,7 +45,7 @@  #include <ctype.h>  #include <sys/types.h>  #include <sys/stat.h> -#include <sys/poll.h> +#include <poll.h>  #include <termios.h>  #include <ipmitool/ipmi.h> diff --git a/src/plugins/serial/serial_terminal.c b/src/plugins/serial/serial_terminal.c index dfcc202..cd33422 100644 --- a/src/plugins/serial/serial_terminal.c +++ b/src/plugins/serial/serial_terminal.c @@ -45,7 +45,7 @@  #include <ctype.h>  #include <sys/types.h>  #include <sys/stat.h> -#include <sys/poll.h> +#include <poll.h>  #include <termios.h>  #include <ipmitool/ipmi.h> diff --git a/src/plugins/usb/Makefile.am b/src/plugins/usb/Makefile.am index 2a431f7..ce68fb7 100644 --- a/src/plugins/usb/Makefile.am +++ b/src/plugins/usb/Makefile.am @@ -31,7 +31,7 @@  MAINTAINERCLEANFILES	= Makefile.in -INCLUDES		= -I$(top_srcdir)/include +AM_CPPFLAGS		= -I$(top_srcdir)/include  EXTRA_LTLIBRARIES	= libintf_usb.la  noinst_LTLIBRARIES	= @INTF_USB_LIB@ diff --git a/src/plugins/usb/Makefile.in b/src/plugins/usb/Makefile.in index 298e11d..c3cfc41 100644 --- a/src/plugins/usb/Makefile.in +++ b/src/plugins/usb/Makefile.in @@ -308,7 +308,7 @@ top_build_prefix = @top_build_prefix@  top_builddir = @top_builddir@  top_srcdir = @top_srcdir@  MAINTAINERCLEANFILES = Makefile.in -INCLUDES = -I$(top_srcdir)/include +AM_CPPFLAGS = -I$(top_srcdir)/include  EXTRA_LTLIBRARIES = libintf_usb.la  noinst_LTLIBRARIES = @INTF_USB_LIB@  libintf_usb_la_LIBADD = $(top_builddir)/lib/libipmitool.la | 
