diff options
author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2016-05-08 22:59:06 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2016-05-08 22:59:06 +0200 |
commit | a7c8ed90be739a49937a229828c470f1ad01396e (patch) | |
tree | 4cd43ff357d98a1ce5afb3bb9449afcce5a299d1 | |
parent | fa5ac2da06fae952fe1295a1e955bdb35e6d86c4 (diff) | |
parent | 342ebce798fe98ede64939a49bbc3770d8214649 (diff) |
Merge tag 'upstream/1.8.17'
Upstream version 1.8.17
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 |