Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ipmi_cmdlang(7) 	Shell interface to an IPMI system	 ipmi_cmdlang(7)

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  op-
     tional, 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 sys-
     tem 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 pa-
     rameters.

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

     In commands, every object operated on will generate a response for that ob-
     ject.  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 up-
     per 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	deasser-
     tion  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 de-
     assertion.

     <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 acti-
     vation_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 sub-
     commands, and subcommands may have subsubcommands, etc.  So, for  instance,
     the command to create a domain is domain new.  The command to list all sen-
     sors in a domain named domain1 is sensor list domain1.

     Each command has a reponse for each object operated on, which is listed af-
     ter the command description.  In those responses, anything that begins with
     a	%  is  optional.   Entries of the form **name** refer to object info de-
     scriptions 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 do-
     main.  <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 (sec-
     ond 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,  ei-
     ther  md5, md2, straight, or none.  <auth> is the authentication level, ei-
     ther 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  re-
	    ceivers  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  do-
     main.  <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 (sec-
     ond 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, ei-
     ther rmcp+, md5, md2, straight, or none.  It defaults to the best authenti-
     cation 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 algo-
     rithms  (-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 de-
     fault 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  re-
	    ceivers  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 com-
     mand to the given IPMB address on the given channel  and  display	the  re-
     sponse.   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  res-
     cans  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 uni-
     code) 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> ..] | <dis-
     crete 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 dis-
     crete 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 thresh-
     olds 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  en-
     able>.

     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 en-
     able>.

     Response:
	    Event enables set: <sensor>

   control
     Commands dealing with controls.

     set <control> <value> [<value> ..]  - Set the value of a control.	The set-
     tings  depend on control type, most take one or more integer values depend-
     ing 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 activ-
     ity, 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  stor-
     age  that	is  loaded at startup.	Note if you specify channel 0xe, the re-
     sponse 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  chan-
     nel 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 in-
     formation	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 informa-
     tion 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 speci-
     fied 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  connec-
     tions 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 un-
     locked.

     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 con-
     fig 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  lan-
     parm.  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 opera-
     tional 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 ob-
     jects.  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_presence
		       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.com>

OpenIPMI			    05/13/03			 ipmi_cmdlang(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ipmi_cmdlang&sektion=7&manpath=FreeBSD+Ports+15.1.quarterly>

home | help