Man Linux: Main Page and Category List

NAME

       ipmi_cmdlang - A command language interface to the IPMI library

DESCRIPTION

       ipmi_cmdlang is a command language designed to supply the full power of
       OpenIPMI on a command line.  It has a  large  number  of  commands  and
       well-formed  responses  to  each  command.  Note that this assumes some
       knowledge of OpenIPMI and how it works; you can get that from the  IPMI
       document that comes with OpenIPMI.

       ipmish  starts  up with no connections or anything of that nature.  You
       must enter commands to make connections to domains.  Then you can enter
       commands to manipulate those domains or objects inside those domains.

       Note  that you may use quotes, either ’’ or  to contain parameters with
       spaces.

COMMENTS

       Lines with a # character in the first column are ignored.

OBJECTS

       In the command language,  you  will  deal  with  various  objects  like
       sensors,  controls,  domains,  and entities.  Each of these has a name.
       The name of the domain is assigned  by  the  user  in  the  domain  new
       command, all the other names are based on the domain name of the domain
       they belong to and various attributes about the  object.   These  names
       are all well-formed.  They are

       <domain>  - A name of a domain.  Each registered domain in a system has
       a name assigned by the user.

       <entity> - Entity names are in the form:
              [<domain>[(<entity spec>)]]
       Notice that the <entity spec> is optional.  If it is not  listed,  then
       the  operation  is done on all entities in the domain.  The whole thing
       is optional, too, if nothing is given then the  operation  is  done  on
       every entity in every domain.

       The <entity spec> is either
              <entity id>.<entity instance>
       for system-relative entities, or:
              r<channel>.<IPMB>.<entity id>.<entity instance-0x60>
       for   device-relative   entities.    In  IPMI,  device-relative  entity
       instances always start at 0x60; the  specification  suggests  that  you
       subtract  off  the 0x60 from the entity instance when displaying these;
       the command language follows this suggestion.

       <sensor> -  These come in the form
              [<entity>[.name]]
       As with entities, only listing a domain will cause the operation to  be
       done  on  every sensor in the domain, just listing an entity will cause
       it to be done to every sensor in that entity.  An  empty  sensor  entry
       will cause an operation to be done on every sensor in every domain.

       <control> - These come in the form
              [<entity>[.name]]
       These work exactly like sensors.

       <mc> - A management controller.  These come in the form
              [<domain>[(<channel>.<IPMB>)]]
       As  usual,  the parts left empty will cause defaulting to all things in
       the previously specified parts.

       <connection> - A connection number, in the form
              [<domain>[.<integer>]]
       The number is the connection number of the domain.

       <pet> - A platform event trap id, in the form
              [<domain>[.<integer>]]
       The number is arbitrarily assigned by the system.

       <lanparm> - A LAN parameter id, in the form
              [<domain>[.<integer>]]
       The number is arbitrarily assigned by the system.

       <pef> - A PEF id, in the form
              [<domain>[.<integer>]]
       The number is arbitrarily assigned by the system.

       <fru> - A FRU id, in the form
              [<domain>[.<integer>]]
       The number is arbitrarily assigned by the system.

       In all cases, the object names have parts that are  optional,  and  the
       entire  object  name  is  optional.   If a part is left empty, then all
       objects that are part of the specified  parts  are  operated  on.   For
       instance, if the system has a sensor named d1(7.1).temp then specifying
       d1 would operation on all sensors in the domain named  d1.   Specifying
       d1(7.1)  Would  operation on all sensors in that entity.  Specifying an
       empty name, either with  or by just entering nothing if the  object  is
       the last thing in the command’s parameters.

       Note  this optionality gives a lot of power, but can be very dangerous.
       Entering domain close will close every domain, for instance.

       In commands, every object operated on will generate a response for that
       object.   If  no  object  is  operated  on, the command will produce an
       error.

OTHER PARAMETERS

       The commands and  displays  use  a  variety  of  other  parameters  for
       specifying various IPMI things.

       <guid>  - a 16-byte globally unique ID, all globbed together in one big
       hexadecimal thing.

       <threshold> is  a  threshold  for  a  sensor;  the  value  it  must  go
       over/under  to  generate  an  event.   It is always displayed as one of
       lower non-critical lower  critical  lower  non-recoverable  upper  non-
       critical  upper  critical  upper non-recoverable.  It may be entered as
       one of the above, or as ln, lc, lr, un, uc, ur as a short form.

       <threshold  enable>  is  the  enable  for  a  threshold.   It  is  like
       <threshold>  above,  but  also  has  a  going-high  or going-low and an
       assertion or deassertion appended to the end of the  name.   The  short
       form  will have a l or h for going-low and going high and then a a or d
       appended for assertion and deassertion  So for instance, urld is  upper
       non-recoverable going-low deassertion.

       <discrete enable> is the enable or disable for a discrete sensor and is
       specified with the sensor offset.  The long form is <integer> assertion
       or  <integer> deassertion and the short form is <integer>[ad] where the
       number is the offset and [ad] means assertion or deassertion.

       <hot-swap state> is one of not_present,  inactive  activation_requested
       activation_in_progress           active          deactivation_requested
       deactivation_in_progress or out_of_con.

       <color> is one of black, white, red, green blue yellow or orange.

       <bool> is one of true, on, t, or 1 for true and one of false,  off,  f,
       or 0 for false.  Output is always true or false.

COMMANDS

       The  command  language  is hierarchical, meaning that commands may have
       subcommands, and subcommands may have  subsubcommands,  etc.   So,  for
       instance, the command to create a domain is domain new.  The command to
       list all sensors in a domain named domain1 is sensor list domain1.

       Each command has a reponse for each object operated on, which is listed
       after  the  command  description.   In  those  responses, anything that
       begins with a % is optional.  Entries of the  form  **name**  refer  to
       object  info  descriptions  that are listed in the object info section.
       If an entry has two ’.’ indented one space below it,  then  that  entry
       may occur zero or more times.

       Each section below defines the unique subcommands of a main command.

       Help for any command is available with:

       help command [subcommand [...]]  - Help for any command.

       Some commands are common to almost all subcommands.  These are:

       list  <containing object> - List all objects of the specified type that
       are contained in the specified  object.   For  instance,  control  list
       <entity> will list all controls in the given entity.

       Response:
              <containing object type>
                Name: <name>
                 .
                 .

       info <object> - List static information about the given object.

       Response:
              <object type>
                Name: <name>
                **object info**

   domain
       These commands deal with domain objects.

       new  <domain>  <options> <parms> [<parms>] - Open a connection to a new
       domain.  <parms> are either:
              lan <IP> <port> [<IP> <port>] <enc> <auth> <name> <password>
       for a RMCP LAN connection or
              smi <smi num>
       for a system interface connection.  Note that <parms> is  listed  twice
       (second  one  is  optional);  if the system support it you can make two
       connections to two independent management controllers  in  the  system.
       Note  that  this is not for multiple IP addresses to the same BMC.  For
       that, notice that the LAN connection has an options extra IP  and  port
       for  the  second  IP address.  OpenIPMI supports these IP addresses and
       connection, detecting failures, switching between addresses, and  other
       fault-tolerant  things.   It  does  this  transparently  to  the  user.
       Mutiple  connections  may  require  special  OEM  support,   read   the
       documentation about your specific system if you need this.

       The  <IP>  is  the  IP  address  or host name of the LAN-capable BMC to
       connect  with.   The  <port>  is   generally   623.    <enc>   is   the
       authentication type, either md5, md2, straight, or none.  <auth> is the
       authentication level, either  admin,  operator  or  user.   <name>  and
       <password>  are  the user name and password of the IPMI user to use for
       the connection.  The <smi num>  is  the  driver  number,  generally  0.
       Options enable and disable various automitic processing and are:
       -[no]all  -  all  automatic  handling.   This  will  override the other
              processing options and turn  them  all  on.   This  is  true  by
              default.
       -[no]sdrs  -  sdr  fetching.  This turns on fetching SDRs when they are
              found.  This is false by default.
       -[no]frus - FRU fetching  This turns on fetching FRU  information  when
              it is found.  This is false by default.
       -[no]sel  -  SEL fetching.    This turns on fetching SELs when they are
              found.  This is false by default.
       -[no]ipmbscan - IPMB bus scanning.  This turns on scanning IPMB  busses
              when they are found.  This is false by default.
       -[no]oeminit - enable or disable special OEM processing (like ATCA).
       -[no]seteventrcvr  -  setting event receivers.  Note that setting event
              receivers and waiting til up is not affected by the -all option.
              If  this is true (the default) then OpenIPMI will attempt to set
              the event receiver for an MC it finds that does not have it  set
              to a valid destination.
       -wait_til_up  -  wait until the domain is up before returning Note that
              if you specify this and the domain  never  comes  up,  you  will
              never  get  a  prompt.  This is not affected by the -all option.
              By  default  -all  and  -seteventrcvr  are  true,  which   turns
              everything on.

       Response:
              Domain Created: <domain>

       open  <domain> <options> <parms> [<parms>] - Open a connection to a new
       domain.  <parms> are either:
              lan [-U <username>] [-P <password>] [-A <authtype>]
                [-L <privilege>] [-s] [-p[2] <port number>]
                [-Ra <auth alg>] [-Ri <integ alg>] [-Rc <conf algo>]
                [-Rl] [-Rk <bmc key>] [-H <hackname>]
                [-M <max oustanding msgs>] <IP> [<IP>]
       for a RMCP/RMCP+ LAN connection or
              smi <smi num>
       for a system interface connection.  Note that <parms> is  listed  twice
       (second  one  is  optional);  if the system support it you can make two
       connections to two independent management controllers  in  the  system.
       Note  that  this is not for multiple IP addresses to the same BMC.  For
       that, use the -s option and the second IP (and -p2) for the  second  IP
       address.    OpenIPMI  supports  these  IP  addresses  and  connections,
       detecting failures,  switching  between  addresses,  and  other  fault-
       tolerant  things.   It  does  this transparently to the user.  Multiple
       connections may require special OEM  support,  read  the  documentation
       about your specific system if you need this.

       The  <IP>  is  the  IP  address  or host name of the LAN-capable BMC to
       connect  with.   The  <port>   defaults   623.    <authtype>   is   the
       authentication  type,  either  rmcp+,  md5, md2, straight, or none.  It
       defaults to the best authentication supported by the server.  <auth> is
       the  authentication level, either admin, operator or user.  It defaults
       to admin.  <username> and <password> are the user name and password  of
       the  IPMI  user  to use for the connection.  For RMCP+ connections, the
       authentication algorithms  supported  (-Ra)  are:  bmcpick,  rakp_none,
       rakp_hmac_sha1,  and  rakp_hmac_md5.   The  integrity  algorithms (-Ri)
       supported are:  bmcpick,  none,  hmac_sha1,  hmac_md5,  and  md5.   The
       confidentiality  algorithms  (-Rc) are: bmcpick, aes_cbc_128, xrc4_128,
       and  xrc_40.   The  defaults  are   rackp_hmac_sha1,   hmac_sha1,   and
       aes_cb_128.  -Rl turns on lookup up names by the name and the privilege
       level (allowing the same name with different privileges  and  different
       passwords), the default is straight name lookup.  -Rk sets the BMC key,
       needed if the system does two-key lookups.

       For SMI types, the <smi num> is the driver number, generally 0.

       The <hackname> enables certain hacks for broken platforms.  This may be
       listed   multiple  times  to  enable  multiple  hacks.   The  currently
       available hacks are:
       intelplus - For Intel platforms that have broken RMCP+.
       rakp3_wrong_rolem - For systems that truncate role(m) in the RAKP3 msg.
       rmcpp_integ_sik  -  For  systems  that  use  SIK  instead  of  K(1) for
              integrity.

              The -M  option  sets  the  maximum  outstanding  messages.   The
              default is 2, ranges 1-63.

              Options enable and disable various automitic processing and are:
       -[no]all - all  automatic  handling.   This  will  override  the  other
              processing  options  and  turn  them  all  on.   This is true by
              default.
       -[no]sdrs - sdr fetching.  This turns on fetching SDRs  when  they  are
              found.  This is false by default.
       -[no]frus  -  FRU fetching  This turns on fetching FRU information when
              it is found.  This is false by default.
       -[no]sel - SEL fetching.    This turns on fetching SELs when  they  are
              found.  This is false by default.
       -[no]ipmbscan  - IPMB bus scanning.  This turns on scanning IPMB busses
              when they are found.  This is false by default.
       -[no]oeminit - enable or disable special OEM processing (like ATCA).
       -[no]seteventrcvr - setting event receivers.  Note that  setting  event
              receivers  is  not affected by the -all option.  If this is true
              (the default) then  OpenIPMI  will  attempt  to  set  the  event
              receiver for an MC it finds that does not have it set to a valid
              destination.  -[no]setseltime - set SEL time.  Note that setting
              the  SEL  time  is  not affected by the -all option.  If this is
              true (the default) then OpenIPMI will attempt to set the time in
              the SELs it finds.  It will set it to the current system time.
       -wait_til_up  -  wait until the domain is up before returning Note that
              if you specify this and the domain  never  comes  up,  you  will
              never  get  a  prompt.  This is not affected by the -all option.
              By  default  -all  and  -seteventrcvr  are  true,  which   turns
              everything on.

       Response:
              Domain Created: <domain>

       fru    <domain>   <is_logical>   <device_address>   <device_id>   <lun>
       <private_bus>  <channel>  -  dump  a  fru  given  all   it’s   insundry
       information.

       Response:
              Domain
                Name: <domain>
                FRU
                  **FRU INFO**

       msg  <domain>  <channel> <ipmb> <LUN> <NetFN> <Cmd> [data...]  - Send a
       command to the given IPMB address on the given channel and display  the
       response.   Note  that  this does not require the existance of an MC in
       OpenIPMI.

       Response:
                Domain: <domain>
                channel: <chan>
                ipmb: <ipmb>
                LUN: <lun>
                NetFN: <netfn>
                command: <cmd>
                Data: <data bytes>

       scan <domain> <ipmb addr> [ipmb addr] - scan an IPMB to add  or  remove
       it.  If a range is given, then scan all IPMBs in the range.

       Response:
              Scan done: <domain>

       rescan_sels <domain> - Rescan all the SELs in the domain.

       Response:
              SEL Rescan done: <domain>

       presence  <domain>  -  Audit the presence of all enities in the domain.
       Note that this just starts the process; it will run in the  background.

       Response is:
              Presence check started: <domain>

       close <domain> - close the given domain.

       Response:
              Domain closed: <domain>

       sel_rescan_time  <domain>  <time in seconds> - Set the time between SEL
       rescans for all.  It  affects  all  current  SELs  and  SELs  that  are
       discovered in the future.  Zero disables scans.

       Response:
              Domain SEL rescan time set: <domain>

       ipmb_rescan_time <domain> <time in seconds> - Set the time between IPMB
       rescans for this domain.  zero disables scans.

       Response:
              Domain IPMB rescan time set: <domain>

   fru
       These commands deal with  FRU  objects.   Note  that  FRU  objects  are
       allocated by the domain fru command, and are not allocated here.

       list - List all the frus in the system

       Response:
              Domain
                Name: <domain>
                FRUs
                  Name: <fru>
                 .
                 .
               .
               .

       info <fru> - Dump information about a FRU

       Response:
              **FRU INFO**

       areainfo <fru> - Dump the info about the FRU’s areas

       Response:
              FRU
                Name: <fru>
                FRU Length: <integer>
                Area
                  Name: <area name>
                  Number: <integer>
                  Offset: <integer>
                  Length: <integer>
                  Used Length: <Integer>
                 .
                 .

       write <fru> - Write the local FRU data out into the FRU

       Response:
              FRU written: <fru>

       close <fru> - Delete the FRU

       Response:
              FRU deleted: <fru>

       setval  <fru> <name> [num] value - Set the value of a FRU element.  The
       name is the record name, or multi-record.  The number is  required  for
       fields  that  need  it  (custom  and  multi-record).  The value is an a
       single value for integers.  For strings it is  a  string  type  (either
       binary,  ascii,  or  unicode) and the info.  Binary and unicode data is
       specified as numbers.  ascii data is specified in a string.  Note  that
       setting a ascii value with no string will clear the value.  Zero length
       strings and data is valid.

       Response:
              FRU value set: <fru>

       area_offset <fru> <area name> <offset> - Set the offset  of  the  given
       area  to  the given value.  Area names are internal_data, chassis_info,
       board_info, product_info, and multi_record.

       Response:
              FRU area offset set: <fru>

       area_length <fru> <area name> <length> - Set the length  of  the  given
       area  to  the  given value.  Area names are internal_data, chassis_info
       board_info, product_info, and multi_record

       Response:
              FRU area length set: <fru>

       area_add <fru> <area name> <offset> <length> - Add the  given  area  to
       the FRU.

       Response:
              FRU area added: <fru>

       area_delete <fru> <area name> - Delete the given area from the FRU

       Response:
              FRU area deleted: <fru>

   entity
       These commands deal with entity objects.

       list <entity> - List all the entities that meed the criteria

       Response:
              Domain
                Name: <domain>
                Entities
                  Name: <entity>
                   .
                   .
               .
               .

       info <entity> - Dump information about an entity.

       Reponse:
              Entity
                Name: <entity>
                **ENTITY INFO**
               .
               .

       fru <entity> - Dump the FRU information about the given entity.

       Reponse:
              Entity
                Name: <entity>
                FRU
                  **FRU INFO**

   entity hs
       These  commands  deal with hot-swap of entities.  Note that there is no
       info or list command for this subcommand.

       get_act_time <entity> - Get the hot-swap auto-activate time.

       Response:
              Entity
                Name: <entity>
                  Auto-Activation Time: <integer>

       set_act_time <entity> - Set the hot-swap auto-activate time.

       Reponse:
              Set act time: <entity>

       get_deact_time  <entity>  -  Get  the  hot-swap  auto-deactivate   time
       Response:
              Entity
                Name: <entity>
                   Auto-Deactivation Time: <integer>

       set_deact_time <entity> - Set the hot-swap auto-deactivate time

       Response:
              Set deact time: <entity>

       activation_request  <entity>  - Act like a user requested an activation
       of the entity.  This is generally  equivalent  to  closing  the  handle
       latch or something like that.

       Response:
              Activation requested: <entity>

       activate <entity> - activate the given entity

       Response:
              Activated: <entity>

       deactivate <entity> - deactivate the given entity

       Response:
              Deactivated: <entity>

       state <entity> - Return the current hot-swap state of the given entity.

       Response:
              Entity
                Name: <entity>
                  State: <hot-swap state>

       check <entity> - Audit the entity’s hot-swap state

       Response:
              Check started: <entity>

   sensor
       get <sensor> - Get the sensor’s current reading.

       Response:
              Sensor
                Name: <sensor>
                Event Messages Enabled: <bool>
                Sensor Scanning Enabled: <bool>
                Initial Update In Progress: <bool>
       For threshold sensors, the following will be output:
              %Value: <double>
              %Raw Value: <integer>
              Threshold
                Name: <threshold>
                Out Of Range: <bool>
       For discrete sensors, the following will be output:
              Event
                Offset: <integer>
                %Name: <string name of event offset>
                Set: <bool>
       The name field may be custom and is not explicitly specified.

       rearm <sensor> global | <threshold enable> [<threshold  enable>  ..]  |
       <discrete  enable>  [<discrete  enable>  ..]   -  Rearm the sensor.  If
       global is specified, then rearm all events in the  sensor.   Otherwise,
       if  it  is a threshold sensor, then put in a list of threshold enables.
       If it is a discrete sensor, then put in a list of discrete enables.

       Response:
              Rearm done: <sensor>

       get_thresholds <sensor> - Get the sensor’s thresholds

       Response:
              Sensor
                Name: <sensor>
                Threshold
                  Name: <threshold>
                  Value: <double>

       set_thresholds <sensor> <threshold> <value> ...   -  Set  the  sensor’s
       thresholds  to  the  given values.  If a threshold is not specified, it
       will not be modified.  Thresholds are un, uc, ur, lr, lc,  ln.   The  u
       stands  for upper, l for lower, n for non-critical, c for critical, and
       r for non-recoverable.  The value is floating point.

       Response:
              Thresholds set: <sensor>

       get_hysteresis <sensor> - Get the sensor’s hysteresis values

       Response:
              Sensor
                Name: <sensor>
                Positivie Hysteresis: <integer>
                Negative Hysteresis: <integer>

       set_hysteresis <sensor> <pos  hyst>  <neg  hyst>  -  Set  the  sensor’s
       hysteresis to the given values.  These are raw integer value; hystersis
       is specified as a raw value and it  cannot  be  converted  to  floating
       point because the function may be non-linear.

       Response:
              Hysteresis set: <sensor>

       get_event_enables <sensor> - Get the sensor’s event enable values

       Response:
              Sensor
                Name: <sensor>
                Event Messages Enabled: <bool>
                Sensor Scanning Enabled: <bool>
                Busy: <bool>
       Threshold sensors report:
              Threshold
                Name: <threshold>
                Enabled: <bool>
                 .
                 .
       only supported thresholds are listed.  Discrete sensors report:
              Event
                Offset: <integer>
                Name: <event offset name for sensor>
                %Assertion Enabled: <bool>
                %Deassertion Enabled: <bool>
       only  supported  offsets  are  listed.   The  assertion and deassertion
       enables are listed only if the offset support them.

       set_event_enables <sensor> msg|nomsg  scan|noscan  [<enable>  [<enable>
       ...]]   -  Set  the  sensor’s  event  enable values.  This turns sensor
       messages and scanning on and off and will enable all the listed enables
       and disable all over ones.  The enables are either a <threshold enable>
       or a <discrete enable>.

       Response:
              Event enables set: <sensor>

       enable_events <sensor> msg|nomsg scan|noscan [<enable> [<enable>  ...]]
       -  Enable event enable values.  This turns sensor messages and scanning
       on and off and will enable all the listed enables.  All  other  enables
       will  be  left alone.  The enables are either a <threshold enable> or a
       <discrete enable>.

       Response:
              Event enables set: <sensor>

       disable_events <sensor> msg|nomsg scan|noscan [<enable> [<enable> ...]]
       - Disable event enable values.  This turns sensor messages and scanning
       on and off and will disable all the listed enable.  All  other  enables
       will  be  left alone.  The enables are either a <threshold enable> or a
       <discrete enable>.

       Response:
              Event enables set: <sensor>

   control
       Commands dealing with controls.

       set <control> <value> [<value> ..]  - Set the value of a control.   The
       settings  depend  on control type, most take one or more integer values
       depending on the number of physical things the  control  contains.   An
       identifier  type  takes  one  or more unsigned characters.  A light set
       with settings take the form
              lc|nolc <color> <on time> <off time>
       lc and nolc turn on or of local control,  the  over  values  should  be
       obvious.   Note all lights support local control, you need to see if it
       supports the value.

       Response:
              Set done: <control>

       get <control> - Get the value of a control.  The reponse depends on the
       control type.

       Response:
              Control
                Name: <control>
       Response for setting lights is:
              Light
                Num: 0
                Local Control: <bool>
                %Color: <color>
                %On Time: <integer>
                %Off Time: <integer>
       Note  that  multiple  lights  may  be  present  if the control supports
       multiple lights.  The options values (marked  with  %  )  will  not  be
       present  if local control is set to true.  Local control means that the
       LED takes whatever default function it does on the  device  (like  disk
       activity,  ethernet  activity,  hot-swap  LED,  etc.).  Response for id
       control:
              Data: <byte1> <byte2> ...
       Response for other controls:
              Value
                Num: <integer>
                Value: <integer>
       There will be one Value for each value the control supports.

   mc
       Commands dealing with MC objects.

       reset <warm | cold> <mc> - Do a warm or cold reset on the given MC

       Response:
              Reset done: <mc>

       msg <mc> <LUN> <NetFN> <Cmd> [data...]  - Send the given command to the
       management controller and display the response.

       Response:
                MC: <mc>
                LUN: <lun>
                NetFN: <netfn>
                command: <cmd>
                Data: <data bytes>

       set_events_enable  <mc> <enable | disable> - enables or disables events
       on the MC.

       Response:
              Events enable done: <mc>

       get_events_enable <mc> - Prints out if the events are enabled  for  the
       given MC.

       Response:
              Events Enable: <bool>

       sdrs  <mc> <main | sensor> - list the SDRs for the mc.  Either gets the
       main SDR repository or the sensor SDR repository.

       Response:
              MC
                Name: <mc>
                SDR
                  Record ID: <integer>
                  Type: <integer>
                  Version: <integer>.<integer>
                  Data: <data bytes>
       One SDR will be present for each SDR in the repository.

       get_sel_time <mc> - Get the time in the SEL for the given MC.

       Response:
              MC
                Name: <mc>
                SEL Time: <integer>

       set_sel_time <mc> <time> - Set the time in the SEL for the given MC.

       Response:
              MC SEL time set
                Name: <mc>

       rescan_sel <mc> - Rescan the SEL in the MC.

       Response:
              SEL Rescan done: <mc>

       sel_rescan_time <mc> <time in seconds>  -  Set  the  time  between  SEL
       rescans for the SEL on this MC.  Zero disables scans.

       Response:
              MC SEL rescan time set: <domain>

       sel_info <mc> - Dump information about the MC’s SEL.

       Response:
              MC
                Name: <mc>
                SEL Version: <integer>.<integer>
                SEL Count: <integer>
                SEL Slots Used: <integer>
                SEL Free Bytes: <integer>
                SEL Last Addition Timestamp: <integer>
                SEL overflow: <bool>
                SEL Supports Delete: <bool>
                SEL Supports Partial Add: <bool>
                SEL Supports Reserve: <bool>
                SEL Supports Get SEL Allocation: <bool>

       chan info <mc> <channel> - Dump information about the MC’s channel.

       Response:
              Channel Info
                MC: <mc>
                Number: <integer>
                Medium: <integer>
                Protocol Type: <integer>
                Session Support: session-less|single-session|multi-session|session-based
                Vendor ID: <data bytes>
                Aux Info: <data bytes>

       chan   get_access   <mc>  <channel>  non-volatile|present|both  -  Dump
       information about the MC’s channel access.   There  are  two  different
       places  where  this is stored, the present in-use values (volatile) and
       the non-volatile storage that  is  loaded  at  startup.   Note  if  you
       specify channel 0xe, the response channel will be different; it will be
       the current channel.

       Response:
              Channel Access
                MC: <mc>
                Channel: <integer>
                Type: non-volatile|present
                Alerting Enabled: <bool>
                Per-Message Auth: <bool>
                User Auth: <bool>
                Access Mode: disable|pre-boot|always|shared
                Privilege Limit: callback|user|operator|admin|oem

       chan set_access <mc> <channel> non-volatile|present|both <parm> <value>
       ...   -  Set  information about the MC’s channel access.  There are two
       different places where  this  is  stored,  the  present  in-use  values
       (volatile)  and  the  non-volatile  storage  that is loaded at startup.
       Note if you specify channel 0xe,  the  modified  channel  will  be  the
       current channel.  Parms are:
              alert true|false
              msg_auth true|false
              user_auth true|false
              access_mode disabled|pre-boot|always|shared
              privilege_limit callback|user|operator|admin|oem

       Response:
              Channel Access Set
                MC: <mc>
                Channel: <integer>

       chan user list <mc> <channel> [<user num>] - List users associated with
       the channel.  Each user number has an associated name and password that
       is  global  in  the  MC (not associated with a channel).  There is also
       channel-specific information for each user.   This  command  lists  the
       global  user  information  and the channel-specific information for the
       channel specified.  If no user number is listed, then all users for the
       channel are listed.  Otherwise only the given user is listed.

       Response:
              Channel Access Set
                MC: <mc>
                Channel: <integer>
                Max User: <integer>
                Enabled Users: <integer>
                Fixed Users: <integer>
                User
                  Number: <integer>
                  *String Name: <string>
                  *Binary Name: <data bytes>
                 Link Auth Enabled: <bool>
                 Msg Auth Enabled: <bool>
                 Access CB Only: <bool>
                 Privilege Limit: <integer>
                 Session Limit: <integer>
                .
                .
       All  the  users  are  listed.   One  of  string  name or binary name is
       present, if the name is not a printable string, then the binary data is
       dumped.

       chan  user  set  <mc>  <channel>  <user  num> <parm> <value> ...  - Set
       information about the user  number.   Only  the  specified  values  are
       modified.   The  name  and  password  are  global values, all other are
       channel-specific.  The parms are: are:
              link_enabled true|false
              msg_enabled true|false
              cb_only true|false
              privilege_limit callback|user|operator|admin|oem|no_access
              session_limit <integer>
              name <user name string>
              password <password string, <= 16 characters>
              password2 <password string, <= 20 characters>
              enable
              disable
       The password is the 16-byte IPMI 1.5 passwords., the password2  is  for
       20-byte  IPMI  2.0  passwords.   Note that setting the session limit to
       zero means there is no session limit.  Also note that some systems have
       a bug where the session limit is not optional (as the spec says it is).
       If you get C7 errors back from this command, you will  have  to  always
       specify  the  session limit.  Note that you must enable the user for it
       to work, but there seems to be no way to get if the user is enabled  or
       not.

       Response:
              User Info Set: <mc>

   sel
       Commands dealing with the system event log.  Note that there is no info
       command.

       list <domain> - The list command is unique in this  object,  so  it  is
       specified explicitly here.  List the local copy of the system event log
       for the entire domain.

       Response:
              Domain
                Name: <domain>
                Entries: <integer>
                Slots in use: <integer>
                Event
                  **EVENT INFO**
                 .
                 .

       mc_list <domain> - List the local copy of the system event log  on  the
       given MC.

       Response:
              MC
                Name: <mc>
                Entries: <integer>
                Slots in use: <integer>
                Event
                  **EVENT INFO**
                 .
                 .

       delete <mc> <record #> - Delete the given event number from the SEL

       Response:
              Event deleted
                MC: <mc>
                Record: <integer>

       add <mc> <type> <13 bytes of data> - Add the event data to the SEL.

       Response:
              MC
                Name: <mc>
                Record ID: <integer>

       clear <domain> - clear the system event log

       Response:
              SEL Clear done: <domain>

   con
       Commands dealing with connections.

       activate <connection> - Activate the given connection

       Response:
              Connection activated: <connection>

   pet
       Commands dealing with platform event traps.

       new <domain> <connection> <channel> <ip addr> <mac_addr> <eft selector>
       <policy num> <apt selector> <lan dest selector> - Set up the domain  to
       send  PET  traps  from the given connection to the given IP/MAC address
       over the given channel.

       Response:
              PET Created: <pet>

       mcnew <mc> <channel> <ip addr> <mac_addr> <eft selector>  <policy  num>
       <apt  selector>  <lan  dest  selector>  - Set up the domain to send PET
       traps from the given connection to the given IP/MAC  address  over  the
       given channel.  This takes an MC instead of a connection.

       Response:
              PET Created: <pet>

       close <pet> - Close the pet.

       Response:
              PET destroyed: <pet>

   pef
       commands  dealing  with  platform  even  filters.   These are basically
       connections to the PEF configuration parameters in an MC.   You  use  a
       pef  to fetch a pef config, which you can then modify and write back to
       the MC.  Note that when you get a pef config, you claim a lock  on  the
       MC that must be unlocked.

       new <mc> - Create a pef for the given MC.

       Response:
              PEF: <pef>

       unlock_mc <mc> - Unlock the PEF lock on the given MC.

       Response:
              PEF unlocked: <mc>

       close <pef> - Free the given pef

       Response:
              PEF destroyed: <pef>

   pef config
       Commands  dealing  with  PEF  configurations.  These are the actual PEF
       data items.

       get <pef> - Fetch the pef data items from the  pef  and  create  a  pef
       config.

       Response:
              PEF Config
                Name: <pef config>
                **PEF CONFIG**

       update <pef config> <parm> [selector] <value> - Set the given parameter
       in the pef config to the given value.  If the parameter has a  selector
       of  some type, the selector must be given, otherwise no selector should
       be given.

       Response:
              PEF config updated: <pef config>

       set <pef> <pef config> - Write the pef data back to the pef.  Note that
       this must be the same pef used to create the config.

       Response:
              PEF config set: <pef config>

       unlock  <pef> <pef config> - Unlock the lock in the MC and mark the pef
       config as unlocked.

       Response:
              PEF config unlocked: <pef config>

       close <pef config> - Free the pef config.

       Response:
              PEF config destroyed: <pef config>

   lanparm
       Commands dealing with lanparms.  These are basically connections to the
       LAN  configuration  parameters  in an MC.  You use a lanparm to fetch a
       lanparm config, which you can then modify and write  back  to  the  MC.
       Note  that  when  you  get a lanparm config, you claim a lock on the MC
       that must be unlocked.

       new <mc> <channel> - Create a lanparm for the given MC and channel.

       Response:
              LANPARM: <lanparm>

       unlock_mc <mc> <channel> - Unlock the lanparm lock on the given MC  and
       channel.

       Response:
              LANPARM unlocked: <mc>

       close <lanparm> - Free the given lanparm

       Response:
              LANPARM destroyed: <lanparm>

   lanparm config
       Commands  dealing  with  lanparm  configurations.  These are the actual
       lanparm data items.

       get <lanparm> - Fetch the lanparm  data  items  from  the  lanparm  and
       create a lanparm config.

       Response:
              LANPARM Config
                Name: <lanparm config>
                **LANPARM CONFIG**

       set  <lanparm>  <lanparm  config>  - Write the lanparm data back to the
       lanparm.  Note that this must be the same lanparm used  to  create  the
       config.

       Response:
              LANPARM config set: <lanparm config>

       unlock  <lanparm> <lanparm config> - Unlock the lock in the MC and mark
       the lanparm config as unlocked.

       Response:
              LANPARM config unlocked: <lanparm config>

       close <lanparm config> - Free the lanparm config.

       Response:
              LANPARM config destroyed: <lanparm config>

OTHER COMMANDS

       A few general commands exist.

       evinfo <bool> - Turn on or off dumping object information when an event
       comes in.  This is false by default.

       debug <type> <bool> - Turn the given debugging type on or off

EVENTS

       The  command  language  will  output  events  to  the console when they
       happen.  Events all occur in the format:
                Event
                  **EVENT INFO**

       The event info varies on the type of events.  The  defined  events  are
       listed  below.   Note  that  the  output  of some events depends on the
       setting of the evinfo command; the information about the object  itself
       may or may not be output.

       Some  events  have another event container; this is the IPMI event that
       caused the event to be output.

       The following event is output when the  domain  is  completely  up  and
       operational and finished all it SDR, FRU, and bus scans:
                EVENT
                  Object Type: Domain
                  Name: <domain>
                  Operation: Domain fully up
                  Connection Number: <integer>
                  Port Number: <integer>
                  Any Connection Up: <bool>
                  Error: <integer>

       The following comes out when domain connection infomration changes:
                EVENT
                  Object Type: Domain
                  Name: <domain>
                  Operation: Connection Change

       The following comes out when domains are added:
                EVENT
                  Object Type: Domain
                  Name: <domain>
                  Operation: Add
                  %**DOMAIN INFO**

       The following comes out when domains are destroyed:
                EVENT
                  Object Type: Domain
                  Name: <domain>
                  Operation: Delete

       The  following  comes  out  when the domain gets an event that does not
       have a handler:
                EVENT
                  Object Type: Event
                  **EVENT INFO**

       The following comes out when an entity is added:
                EVENT
                  Object Type: Entity
                  Name: <entity>
                  Operation: Add
                  %**ENTITY INFO**

       The following comes out when an entity is deleted:
                EVENT
                  Object Type: Entity
                  Name: <entity>
                  Operation: Delete

       The following comes out when an entity is changed:
                EVENT
                  Object Type: Entity
                  Name: <entity>
                  Operation: Change
                  %**ENTITY INFO**

       The following comes out when an entity’s FRU is added:
                EVENT
                  Object Type: Entity FRU
                  Name: <entity>
                  Operation: Add
                  %**FRU INFO**

       The following comes out when an entity’s FRU is deleted:
                EVENT
                  Object Type: Entity FRU
                  Name: <entity>
                  Operation: Delete

       The following comes out when an entity’s FRU is changed:
                EVENT
                  Object Type: Entity FRU
                  Name: <entity>
                  Operation: Change
                  %**FRU INFO**

       The following comes out when an entity’s presence changes:
                EVENT
                  Object Type: Entity
                  Name: <entity>
                  Operation: Presence Change
                  Present: <bool>
                  %Event
                    **EVENT INFO**

       The following comes out when an entity’s hot-swap state changes:
                EVENT
                  Object Type: Entity
                  Name: <entity>
                  Operation: Hot-Swap Change
                  Last State: <hot-swap state>
                  State: <hot-swap state>
                  %Event
                    **EVENT INFO**

       The following comes out when an MC is added:
                EVENT
                  Object Type: MC
                  Name: <mc>
                  Operation: Add
                  %**MC INFO**

       The following comes out when an MC is removed:
                EVENT
                  Object Type: MC
                  Name: <mc>
                  Operation: Delete

       The following comes out when an MC is changed:
                EVENT
                  Object Type: MC
                  Name: <mc>
                  Operation: Change
                  %**MC INFO**

       The following comes out when an MC changes active state:
                EVENT
                  Object Type: MC
                  Name: <mc>
                  Operation: Active Changed
                  Active: <bool>

       The following comes out when a discrete sensor gets an event:
                EVENT
                  Object Type: Sensor
                  Name: <sensor>
                  Operation: Event
                  Offset: <integer>
                  Direction: assertion | deassertion
                  Severity: <integer>
                  Previous Severity: <integer>
                  %Event
                    **EVENT INFO**

       The following comes out when a threshold sensor gets an event:
                EVENT
                  Object Type: Sensor
                  Name: <sensor>
                  Operation: Event
                  Threshold: <threshold>
                  High/Low: going-high | going-low
                  Direction: assertion | deassertion
                  %Value: <double>
                  %Raw Value: <integer>
                  %Event
                    **EVENT INFO**

       The following comes out when a sensor is added:
                EVENT
                  Object Type: Sensor
                  Name: <sensor>
                  Operation: Add
                  %**SENSOR INFO**

       The following comes out when a sensor is deleted:
                EVENT
                  Object Type: Sensor
                  Name: <sensor>
                  Operation: Delete

       The following comes out when a sensor is changed:
                EVENT
                  Object Type: Sensor
                  Name: <sensor>
                  Operation: Change
                  %**SENSOR INFO**

       The following comes out when a control gets an event:
                EVENT
                  Object Type: Control
                  Name: <control>
                  Operation: Event
                  Value
                    Number: <integer>
                    Value: <integer>
                  %Event
                    **EVENT INFO**

       The following comes out when a control is added:
                EVENT
                  Object Type: Control
                  Name: <control>
                  Operation: Add
                  %**CONTROL INFO**

       The following comes out when a control is deleted:
                EVENT
                  Object Type: Control
                  Name: <control>
                  Operation: Delete

       The following comes out when a control is changed:
                EVENT
                  Object Type: Control
                  Name: <control>
                  Operation: Change
                  %**CONTROL INFO**

OBJECT INFO

       Many of the command responses and events contain information  about  an
       objects.  The definitions of this information output is done here.

   **EVENT INFO**
                MC: <mc>
                Record ID: <integer>
                Event type: <integer>
                Timestamp: <integer>
                Data: <data bytes>

   **DOMAIN INFO**
                Type: <domain type>
                GUID: <hex string>
                SEL Rescan Time: <time>
                IPMB Rescan Time: <time>

   **ENTITY INFO**
                Type: unknown | mc | fru | generic
                Present: <bool>
                Presence sensor always there: <bool>
                Hot swappable: <bool>
                %Supports managed hot swap: <bool>
                %Parents
                  Name: <entity>
                  Name: <entity>
                   .
                   .
                %Children
                  Name: <entity>
                  Name: <entity>
                   .
                   .
                %Physical Slot: <integer>
                %Id: <string>
                Entity ID String: <string>

       Note that Parents and Children fields will not be present if the entity
       has no parents or children.  Each entity type except unknown will  have
       its own output info.  These are:

       mc
                Channel: <channel>
                LUN: <lun>
                OEM: <oem field from SDR>
                Slave Address: <ipmb>
                ACPI_system_power_notify_required: <bool>
                ACPI_device_power_notify_required: <bool>
                controller_logs_init_agent_errors: <bool>
                log_init_agent_errors_accessing: <bool>
                global_init: <bool>
                chassis_device: <bool>
                bridge: <bool>
                IPMB_event_generator: <bool>
                IPMB_event_receiver: <bool>
                FRU_inventory_device: <bool>
                SEL_device: <bool>
                SDR_repository_device: <bool>
                sensor_device: <bool>

       fru
                Channel: <channel>
                LUN: <lun>
                OEM: <oem field from SDR>
                Slave Address: <ipmb>
                access_address: <ipmb>
                private_bus_id: <integer>
                device_type: <integer>
                device_modifier: <integer>
                is_logical_fru: <bool>
                fru_device_id: <integer>

       generic
                Channel: <channel>
                LUN: <lun>
                OEM: <oem field from SDR>
                access_address: <ipmb>
                private_bus_id: <integer>
                device_type: <integer>
                device_modifier: <integer>
                slave_address: <ipmb>
                address_span: <integer>

   **MC INFO**
                Active: <bool>
                GUID: <hex string>
                SEL Rescan Time: <integer>
                provides_device_sdrs: <bool>
                device_available: <bool>
                chassis_support: <bool>
                bridge_support: <bool>
                ipmb_event_generator: <bool>
                ipmb_event_receiver: <bool>
                fru_inventory_support: <bool>
                sel_device_support: <bool>
                sdr_repository_support: <bool>
                sensor_device_support: <bool>
                device_id: <ipmb>
                device_revision: <integer>
                fw_revision: <integer>.<integer>
                version: <integer>.<integer>
                manufacturer_id: <integer>
                product_id: <integer>
                aux_fw_revision: <integer> <integer> <integer> <integer>

   *SENSOR INFO**
                LUN: <integer>
                Number: <integer>
                Event Reading Type: <integer>
                Event Reading Type Name: one of:
                         unspecified threshold discrete_usage discrete_state
                         discrete_predictive_failure discrete_limit_exceeded
                         discrete_performance_met discrete_severity discrete_device_presense
                         discrete_device_enable discrete_availability discrete_redundancy
                         discrete_acpi_power
                Type: <integer>
                Type Name: <sensor type (a generic string)>
                %Direction: input | output
                %Event Support: per state | entire sensor | global
                Init Scanning: <bool>
                Init Events: <bool>
                Init Thresholds: <bool>
                Init Hysteresis: <bool>
                Init Type: <bool>
                Init Power Up Events: <bool>
                Init Power Up Scanning: <bool>
                Ignore If No Entity: <bool>
                Auto Rearm: <bool>
                OEM1: <integer>
                Id: <string>

       For threshold sensors, the following exist:
                Threshold Access: none | readable | settable | fixed
                Threshold
                  Name: <threshold>
                  Readable: <bool>
                  Settable: <bool>
                  Supports: going high assertion | going low assertion
                            | going high deassertion | going low deassertion
                 .
                 .
                Hysteresis Support: none | readable | settable | fixed
                %Nominal Reading: <float>
                %Normal Max: <float>
                %Normal Min: <float>
                %Sensor Max: <float>
                %Sensor Min: <float>
                Base Unit: <integer>
                Base Unit Name: <string>
                %Rate Unit: <integer>
                %Rate Unit Name: <string>
                %Modifier Use: / | *
                %Modifier Unit: <integer>
                %Modifier Unit Name: <string>

       For discrete sensors, the following exist:
                Event
                  Offset: <integer>
                  Supports: assertion | deassertion
                 .
                 .

   **CONTROL INFO**
                Type: <control type>
                Generates Events: <bool>
                Settable: <bool>
                Readable: <bool>
                Num Values: <integer>
                Id: <string>

       Controls of type light that are set with settings have the following:
                Set with: settings
                Local Control: <bool>
                Color: <color>
                 .
                 .
       One color is listed for each supported color

       Controls  of  type  light  that  are  set  with  transitions  have  the
       following:
                Light
                  Number: <integer>
                  Num Values: <integer>
                  Value
                    Number: <integer>
                    Num Transitions: <integer>
                    Transition
                      Number: <integer>
                      Color: <color>
                      Time: <integer>
                     .
                     .
                   .
                   .

       Controls of type identifier have the following:
                Max Length: <integer>

   **FRU INFO**
                Name: <fru>
                record
                  Name: <name>
                  Type: binary | ascii | unicode | integer
                  %Number: <integer>
                  Data: data depending on type
                 .
                 .
                Multi-record
                  Number: <integer>
                  Type: binary | ascii | unicode
                  Data: <data in the above format>
                 .
                 .

   **LANPARM CONFIG**
                support_auth_oem: <bool>
                support_auth_straight: <bool>
                support_auth_md5: <bool>
                support_auth_md2: <bool>
                support_auth_none: <bool>
                ip_addr_source: <integer>
                num_alert_destinations: <integer>
                %ipv4_ttl: <integer>
                %ipv4_flags: <integer>
                %ipv4_precedence: <integer>
                %ipv4_tos: <integer>
                %ip_addr: <ip addr>
                %mac_addr: <mac addr>
                %subnet_mask: <ip addr>
                %primary_rmcp_port <integer>
                %secondary_rmcp_port <integer>
                %bmc_generated_arps: <bool>
                %bmc_generated_garps: <bool>
                %garp_interval: <integer>
                %default_gateway_ip_addr: <ip addr>
                %default_gateway_mac_addr: <mac addr>
                %backup_gateway_ip_addr: <ip addr>
                %backup_gateway_mac_addr: <mac addr>
                community_string: <string>
                User
                  Name: callback
                  enable_auth_oem: <bool>
                  enable_auth_straight: <bool>
                  enable_auth_md5: <bool>
                  enable_auth_md2: <bool>
                  enable_auth_none: <bool>
                User
                  Name: user
                  enable_auth_oem: <bool>
                  enable_auth_straight: <bool>
                  enable_auth_md5: <bool>
                  enable_auth_md2: <bool>
                  enable_auth_none: <bool>
                User
                  Name: operator
                  enable_auth_oem: <bool>
                  enable_auth_straight: <bool>
                  enable_auth_md5: <bool>
                  enable_auth_md2: <bool>
                  enable_auth_none: <bool>
                User
                  Name: admin
                  enable_auth_oem: <bool>
                  enable_auth_straight: <bool>
                  enable_auth_md5: <bool>
                  enable_auth_md2: <bool>
                  enable_auth_none: <bool>
                User
                  Name: oem
                  enable_auth_oem: <bool>
                  enable_auth_straight: <bool>
                  enable_auth_md5: <bool>
                  enable_auth_md2: <bool>
                  enable_auth_none: <bool>
                Alert Destination
                  Number: <integer>
                  alert_ack: <bool>
                  dest_type: <integer>
                  alert_retry_interval: <integer>
                  max_alert_retries: <integer>
                  dest_format: <integer>
                  gw_to_use: <integer>
                  dest_ip_addr: <ip addr>
                  dest_mac_addr: <mac addr>
                 .
                 .

   **PEF CONFIG**
                alert_startup_delay_enabled: <bool>
                startup_delay_enabled: <bool>
                event_messages_enabled: <bool>
                pef_enabled: <bool>
                diagnostic_interrupt_enabled: <bool>
                oem_action_enabled: <bool>
                power_cycle_enabled: <bool>
                reset_enabled: <bool>
                power_down_enabled: <bool>
                alert_enabled: <bool>
                %startup_delay: <integer>
                %alert_startup_delay: <integer>
                guid_enabled: <bool>
                guid_val: <guid>
                num_event_filters: <integer>
                num_alert_policies: <integer>
                num_alert_strings: <integer>
                Event Filter
                  Number: <integer>
                  enable_filter: <bool>
                  filter_type: <integer>
                  diagnostic_interrupt: <bool>
                  oem_action: <bool>
                  power_cycle: <bool>
                  reset: <bool>
                  power_down: <bool>
                  alert: <bool>
                  alert_policy_number: <integer>
                  event_severity: <integer>
                  generator_id_addr: <integer>
                  generator_id_channel_lun: <integer>
                  sensor_type: <integer>
                  sensor_number: <integer>
                  event_trigger: <integer>
                  data1_offset_mask: <integer>
                  data1_mask: <integer>
                  data1_compare1: <integer>
                  data1_compare2: <integer>
                  data2_mask: <integer>
                  data2_compare1: <integer>
                  data2_compare2: <integer>
                  data3_mask: <integer>
                  data3_compare1: <integer>
                  data3_compare2: <integer>
                 .
                 .
                Alert Policy
                  Number: <integer>
                  policy_num: <integer>
                  enabled: <bool>
                  policy: <integer>
                  channel: <integer>
                  destination_selector: <integer>
                  alert_string_event_specific: <bool>
                  alert_string_selector: <integer>
                 .
                 .
                Alert String
                  event_filter: <integer>
                  alert_string_set: <integer>
                  alert_string: <string>
                 .
                 .

   **CONNECTION INFO**
                Active: <bool>
                Up: <bool>
                Port
                  Number: <integer>
                  Info: <info string>
                  Up: <bool>
                 .
                 .

   **PEF INFO**
                MC: <mc>

   **PET INFO**
                MC: <mc>
                Channel: <channel>
                IP Address: <ip address>
                MAC Address: <mac address>
                EFT Selector: <eft selector>
                Policy Number: <policy number>
                APT Selector: <apt selector>
                LAN Dest Selector: <lan dest selector>

   **LANPARM INFO**
                MC: <mc>
                Channel: <integer>

SEE ALSO

       ipmish(1)

KNOWN PROBLEMS

       None

AUTHOR

       Corey Minyard <cminyard@mvista.org>