FreeIPMI Libraries

by 

Albert Chu
chu11@llnl.gov

The following is a short summary of the libraries and APIs available for
use in FreeIPMI.

Libfreeipmi
-----------

This is the primary library that most of the FreeIPMI tools are based
upon.  There are various sub-sections and APIs in this library:

   fiid - The "FreeIPMI Interface Definition" is an API used for the
   construction/deconstruction of packets in libfreeipmi.  The API
   works primarily around fiid-templates.  Fiid-templates are used to
   describe packets through a string-name to bit-field mapping.  The
   API allows users to read/write fields in an object using the string
   to bit-field mapping.  In some cases (such as when IPMI over LAN
   packets are needed), multiple fiid objects must be constructed
   together to form a single packet.

   fill - A large number of "fill" functions are available to make it
   easier for the user to fill fiid objects with appropriate IPMI
   data.  The fill functions cover most of the sections and packets in
   the IPMI specification.

   driver - Several IPMI in-band driver APIs are provided.  Most
   notably supported are the KCS, SSIF, and OpenIPMI driver APIs.

   locate - The locate API allows users to probe for device addresses
   and other information on the motherboard.

   udm - The "Unified Driver Model" is a higher level API that tries to
   hide the underlying driver (i.e. KCS vs. SSIF vs. LAN) away from 
   higher level IPMI functions (i.e. Get Sensor Reading).

   utility - There are a large number of utility functions in the
   library for the calculation of keys, sensor readings, etc.  There
   are also arrays and functions to aid developers in mapping integers
   to their appropriate string mapping (i.e. 0x01 = "Temperature",
   0x02 = "Voltage").

Libipmiconsole
--------------

This library implements a high level serial-over-lan (SOL) API for
remote console access.  The goal of this library is to abstract away
all of the underlying IPMI/SOL details away from the user into a
relatively simple file descriptor interface.

Libipmimonitoring
-----------------

This library implements a high level sensor monitoring API for IPMI
sensors.  The goal of this library is to abstract away all of the
underlying IPMI details away from the user.  An iterator interface is
provided that allows the user to iterate through sensor values,
groups, units, and states.



