
This is the OpenIPMI library, a library that makes simplifies building
complex IPMI systems.

Note that most of the OpenIPMI library was designed for building
complicated systems that continuously monitor IPMI hardware.  It's not
for little things that simply want to get some information, do
something, and leave (unless that information is elaborate
information).

It does include the utility "ipmicmd" which lets you do direct IPMI
commands to a connection.  ipmicmd can connect using the OpenIPMI
driver or via IPMI LAN.

OpenIPMI also includes a LAN to system interface converter, it can sit
on top of an OpenIPMI driver and supply a LAN connection to the BMC.
Note that to work the best, the LAN converter needs at least the v22
version of the OpenIPMI driver to support setting retries and timeouts
for messages.

Note that parts of OpenIPMI could be used inside other systems.
However, the LGPL license may be a restriction.  If you are interested
in re-licensing parts of OpenIPMI, contact MontaVista software.


The source tree here consists of the following directories:

  include - Most of the include files used by the systems, all the
  public ones.

  utils - Basic utilities (mostly authentication) that other parts of
  the system use.  This is a non-shared library that the other shared
  libraries pick up stuff from.

  lib - The main library for OpenIPMI.

  ui - A cheesy user interface for OpenIPMI, mostly for testing.

  lanserv - An IPMI LAN server, it turns an SMI interface into a LAN
  interface.

  sample - Some sample code, and the ipmicmd utility.

  doc - The documentation.

  man - The man pages.


The OpenIPMI ipmi_ui command has an optional trap handler.  It will
use incoming traps as an indication that something is waiting in the
SEL for it to fetch and immediately start a fetch.  You have to have
the UCD snmp library (or something compatible) installed for this to
work, and you have to start ipmi_ui with the '-snmp' option.  You must
do this as root, as the SNMP Trap port is 162.

Note that if you UCD SNMP library is in a non-standard location, you
will need to use the '-with-ucdsnmp=path' option to configure.

You may ask why the trap is not directly used, why does it just
trigger an SEL fetch?  Well, that's because the IPMI trap does not
have enough information to determine the correct sensor (it's missing
the channel and LUN) and it does not have enough information to
correlate the SEL entries with the trap (It doesn't have the record ID
or necessarily the proper timestamp).