{
    "content": [
        {
            "type": "text",
            "text": "# ipmi_cmdlang(7) (man)\n\n**Summary:** ipmicmdlang - A command language interface to the IPMI library\n\n## See Also\n\n- ipmish(1)\n\n## Section Outline\n\n- **NAME** (3 lines)\n- **DESCRIPTION** (12 lines)\n- **COMMENTS** (3 lines)\n- **OBJECTS** (73 lines)\n- **OTHER PARAMETERS** (29 lines)\n- **COMMANDS** (37 lines) — 15 subsections\n  - domain (37 lines)\n  - -wait (65 lines)\n  - -wait (63 lines)\n  - fru (79 lines)\n  - entity (32 lines)\n  - entity hs (54 lines)\n  - sensor (109 lines)\n  - control (215 lines)\n  - sel (47 lines)\n  - con (8 lines)\n  - pet (22 lines)\n  - pef (21 lines)\n  - pef config (33 lines)\n  - lanparm (21 lines)\n  - lanparm config (27 lines)\n- **OTHER COMMANDS** (9 lines)\n- **EVENTS** (211 lines)\n- **OBJECT INFO** (61 lines) — 2 subsections\n  - fru (11 lines)\n  - generic (317 lines)\n- **SEE ALSO** (3 lines)\n- **KNOWN PROBLEMS** (3 lines)\n- **AUTHOR** (5 lines)\n\n## Full Content\n\n### NAME\n\nipmicmdlang - A command language interface to the IPMI library\n\n### DESCRIPTION\n\nipmicmdlang is a command language designed to supply the full power of OpenIPMI on a command\nline.  It has a large number of commands and well-formed responses  to  each  command.   Note\nthat this assumes some knowledge of OpenIPMI and how it works; you can get that from the IPMI\ndocument that comes with OpenIPMI.\n\nipmish starts up with no connections or anything of that nature.  You must enter commands  to\nmake  connections to domains.  Then you can enter commands to manipulate those domains or ob‐\njects inside those domains.\n\nNote that you may use quotes, either '' or  to contain parameters with spaces.\n\n### COMMENTS\n\nLines with a # character in the first column are ignored.\n\n### OBJECTS\n\nIn the command language, you will deal with various objects like sensors, controls,  domains,\nand  entities.   Each of these has a name.  The name of the domain is assigned by the user in\nthe domain new command, all the other names are based on the domain name of the  domain  they\nbelong  to  and  various attributes about the object.  These names are all well-formed.  They\nare\n\n<domain> - A name of a domain.  Each registered domain in a system has a name assigned by the\nuser.\n\n<entity> - Entity names are in the form:\n[<domain>[(<entity spec>)]]\nNotice  that  the <entity spec> is optional.  If it is not listed, then the operation is done\non all entities in the domain.  The whole thing is optional, too, if nothing  is  given  then\nthe operation is done on every entity in every domain.\n\nThe <entity spec> is either\n<entity id>.<entity instance>\nfor system-relative entities, or:\nr<channel>.<IPMB>.<entity id>.<entity instance-0x60>\nfor  device-relative  entities.   In  IPMI,  device-relative entity instances always start at\n0x60; the specification suggests that you subtract off the 0x60 from the entity instance when\ndisplaying these; the command language follows this suggestion.\n\n<sensor> -  These come in the form\n[<entity>[.name]]\nAs  with  entities, only listing a domain will cause the operation to be done on every sensor\nin the domain, just listing an entity will cause it to be done to every sensor  in  that  en‐\ntity.   An empty sensor entry will cause an operation to be done on every sensor in every do‐\nmain.\n\n<control> - These come in the form\n[<entity>[.name]]\nThese work exactly like sensors.\n\n<mc> - A management controller.  These come in the form\n[<domain>[(<channel>.<IPMB>)]]\nAs usual, the parts left empty will cause defaulting to all things in the  previously  speci‐\nfied parts.\n\n<connection> - A connection number, in the form\n[<domain>[.<integer>]]\nThe number is the connection number of the domain.\n\n<pet> - A platform event trap id, in the form\n[<domain>[.<integer>]]\nThe number is arbitrarily assigned by the system.\n\n<lanparm> - A LAN parameter id, in the form\n[<domain>[.<integer>]]\nThe number is arbitrarily assigned by the system.\n\n<pef> - A PEF id, in the form\n[<domain>[.<integer>]]\nThe number is arbitrarily assigned by the system.\n\n<fru> - A FRU id, in the form\n[<domain>[.<integer>]]\nThe number is arbitrarily assigned by the system.\n\nIn  all  cases,  the object names have parts that are optional, and the entire object name is\noptional.  If a part is left empty, then all objects that are part of the specified parts are\noperated  on.  For instance, if the system has a sensor named d1(7.1).temp then specifying d1\nwould operation on all sensors in the domain named d1.  Specifying d1(7.1) Would operation on\nall sensors in that entity.  Specifying an empty name, either with  or by just entering noth‐\ning if the object is the last thing in the command's parameters.\n\nNote this optionality gives a lot of power, but can be very dangerous.  Entering domain close\nwill close every domain, for instance.\n\nIn commands, every object operated on will generate a response for that object.  If no object\nis operated on, the command will produce an error.\n\n### OTHER PARAMETERS\n\nThe commands and displays use a variety of  other  parameters  for  specifying  various  IPMI\nthings.\n\n<guid> - a 16-byte globally unique ID, all globbed together in one big hexadecimal thing.\n\n<threshold>  is  a  threshold  for  a  sensor; the value it must go over/under to generate an\nevent.  It is always displayed as one of lower non-critical lower critical lower non-recover‐‐\nable  upper  non-critical  upper critical upper non-recoverable.  It may be entered as one of\nthe above, or as ln, lc, lr, un, uc, ur as a short form.\n\n<threshold enable> is the enable for a threshold.  It is like <threshold> above, but also has\na  going-high  or  going-low and an assertion or deassertion appended to the end of the name.\nThe short form will have a l or h for going-low and going high and then a a or d appended for\nassertion  and deassertion  So for instance, urld is upper non-recoverable going-low deasser‐\ntion.\n\n<discrete enable> is the enable or disable for a discrete sensor and is  specified  with  the\nsensor  offset.   The long form is <integer> assertion or <integer> deassertion and the short\nform is <integer>[ad] where the number is the offset and [ad] means assertion or deassertion.\n\n<hot-swap state> is one of notpresent, inactive activationrequested  activationinprogress\nactive deactivationrequested deactivationinprogress or outofcon.\n\n<color> is one of black, white, red, green blue yellow or orange.\n\n<bool> is one of true, on, t, or 1 for true and one of false, off, f, or 0 for false.  Output\nis always true or false.\n\n### COMMANDS\n\nThe command language is hierarchical, meaning that commands may have subcommands, and subcom‐\nmands  may have subsubcommands, etc.  So, for instance, the command to create a domain is do‐‐\nmain new.  The command to list all sensors in a domain named domain1 is sensor list domain1.\n\nEach command has a reponse for each object operated on, which is listed after the command de‐\nscription.   In  those  responses, anything that begins with a % is optional.  Entries of the\nform name refer to object info descriptions that are listed in the object  info  section.\nIf  an  entry has two '.' indented one space below it, then that entry may occur zero or more\ntimes.\n\nEach section below defines the unique subcommands of a main command.\n\nHelp for any command is available with:\n\nhelp command [subcommand [...]]  - Help for any command.\n\nSome commands are common to almost all subcommands.  These are:\n\nlist <containing object> - List all objects of the specified type that are contained  in  the\nspecified  object.   For  instance, control list <entity> will list all controls in the given\nentity.\n\nResponse:\n<containing object type>\nName: <name>\n.\n.\n\n\ninfo <object> - List static information about the given object.\n\nResponse:\n<object type>\nName: <name>\nobject info\n\n#### domain\n\nThese commands deal with domain objects.\n\nnew <domain> <options> <parms> [<parms>] - Open a connection to a new  domain.   <parms>  are\neither:\nlan <IP> <port> [<IP> <port>] <enc> <auth> <name> <password>\nfor a RMCP LAN connection or\nsmi <smi num>\nfor  a  system  interface  connection.   Note that <parms> is listed twice (second one is op‐\ntional); if the system support it you can make two connections to two independent  management\ncontrollers  in the system.  Note that this is not for multiple IP addresses to the same BMC.\nFor that, notice that the LAN connection has an options extra IP and port for the  second  IP\naddress.   OpenIPMI supports these IP addresses and connection, detecting failures, switching\nbetween addresses, and other fault-tolerant things.  It does this transparently to the  user.\nMutiple  connections  may require special OEM support, read the documentation about your spe‐\ncific system if you need this.\n\nThe <IP> is the IP address or host name of the LAN-capable BMC to connect with.   The  <port>\nis  generally  623.   <enc>  is  the authentication type, either md5, md2, straight, or none.\n<auth> is the authentication level, either admin, operator or user.   <name>  and  <password>\nare  the user name and password of the IPMI user to use for the connection.  The <smi num> is\nthe driver number, generally 0.  Options enable and disable various automitic processing  and\nare:\n-[no]all  - all automatic handling.  This will override the other processing options and turn\nthem all on.  This is true by default.\n-[no]sdrs - sdr fetching.  This turns on fetching SDRs when they are found.  This is false by\ndefault.\n-[no]frus  -  FRU fetching  This turns on fetching FRU information when it is found.  This is\nfalse by default.\n-[no]sel - SEL fetching.    This turns on fetching SELs when they are found.  This  is  false\nby default.\n-[no]ipmbscan  -  IPMB bus scanning.  This turns on scanning IPMB busses when they are found.\nThis is false by default.\n-[no]oeminit - enable or disable special OEM processing (like ATCA).\n-[no]seteventrcvr - setting event receivers.  Note that setting event receivers  and  waiting\ntil  up  is  not  affected  by  the  -all  option.  If this is true (the default) then\nOpenIPMI will attempt to set the event receiver for an MC it finds that does not  have\nit set to a valid destination.\n\n#### -wait\n\nthe domain never comes up, you will never get a prompt.  This is not affected  by  the\n-all option.  By default -all and -seteventrcvr are true, which turns everything on.\n\nResponse:\nDomain Created: <domain>\n\nopen  <domain>  <options> <parms> [<parms>] - Open a connection to a new domain.  <parms> are\neither:\nlan [-U <username>] [-P <password>] [-A <authtype>]\n[-L <privilege>] [-s] [-p[2] <port number>]\n[-Ra <auth alg>] [-Ri <integ alg>] [-Rc <conf algo>]\n[-Rl] [-Rk <bmc key>] [-H <hackname>]\n[-M <max oustanding msgs>] <IP> [<IP>]\nfor a RMCP/RMCP+ LAN connection or\nsmi <smi num>\nfor a system interface connection.  Note that <parms> is listed  twice  (second  one  is  op‐\ntional);  if the system support it you can make two connections to two independent management\ncontrollers in the system.  Note that this is not for multiple IP addresses to the same  BMC.\nFor  that, use the -s option and the second IP (and -p2) for the second IP address.  OpenIPMI\nsupports these IP addresses and connections, detecting failures, switching between addresses,\nand  other  fault-tolerant things.  It does this transparently to the user.  Multiple connec‐\ntions may require special OEM support, read the documentation about your specific  system  if\nyou need this.\n\nThe  <IP>  is the IP address or host name of the LAN-capable BMC to connect with.  The <port>\ndefaults 623.  <authtype> is the authentication type, either rmcp+, md5,  md2,  straight,  or\nnone.  It defaults to the best authentication supported by the server.  <auth> is the authen‐\ntication level, either admin, operator or user.  It defaults to admin.  <username> and <pass‐\nword>  are  the user name and password of the IPMI user to use for the connection.  For RMCP+\nconnections,  the  authentication  algorithms  supported  (-Ra)  are:   bmcpick,   rakpnone,\nrakphmacsha1,  and  rakphmacmd5.   The integrity algorithms (-Ri) supported are: bmcpick,\nnone, hmacsha1, hmacmd5, and md5.   The  confidentiality  algorithms  (-Rc)  are:  bmcpick,\naescbc128,  xrc4128,  and  xrc40.   The  defaults  are  rackphmacsha1,  hmacsha1,  and\naescb128.  -Rl turns on lookup up names by the name and the privilege level  (allowing  the\nsame  name  with  different privileges and different passwords), the default is straight name\nlookup.  -Rk sets the BMC key, needed if the system does two-key lookups.\n\nFor SMI types, the <smi num> is the driver number, generally 0.\n\nThe <hackname> enables certain hacks for broken platforms.  This may be listed multiple times\nto enable multiple hacks.  The currently available hacks are:\nintelplus - For Intel platforms that have broken RMCP+.\nrakp3wrongrolem - For systems that truncate role(m) in the RAKP3 msg.\nrmcppintegsik - For systems that use SIK instead of K(1) for integrity.\n\nThe -M option sets the maximum outstanding messages.  The default is 2, ranges 1-63.\n\nOptions enable and disable various automitic processing and are:\n-[no]all  - all automatic handling.  This will override the other processing options and turn\nthem all on.  This is true by default.\n-[no]sdrs - sdr fetching.  This turns on fetching SDRs when they are found.  This is false by\ndefault.\n-[no]frus  -  FRU fetching  This turns on fetching FRU information when it is found.  This is\nfalse by default.\n-[no]sel - SEL fetching.    This turns on fetching SELs when they are found.  This  is  false\nby default.\n-[no]ipmbscan  -  IPMB bus scanning.  This turns on scanning IPMB busses when they are found.\nThis is false by default.\n-[no]oeminit - enable or disable special OEM processing (like ATCA).\n-[no]seteventrcvr - setting event receivers.  Note that setting event receivers  is  not  af‐\nfected  by  the -all option.  If this is true (the default) then OpenIPMI will attempt\nto set the event receiver for an MC it finds that does not have it set to a valid des‐\ntination.   -[no]setseltime - set SEL time.  Note that setting the SEL time is not af‐\nfected by the -all option.  If this is true (the default) then OpenIPMI  will  attempt\nto set the time in the SELs it finds.  It will set it to the current system time.\n\n#### -wait\n\nthe domain never comes up, you will never get a prompt.  This is not affected  by  the\n-all option.  By default -all and -seteventrcvr are true, which turns everything on.\n\nResponse:\nDomain Created: <domain>\n\nfru <domain> <islogical> <deviceaddress> <deviceid> <lun> <privatebus> <channel> - dump a\nfru given all it's insundry information.\n\nResponse:\nDomain\nName: <domain>\nFRU\nFRU INFO\n\nmsg <domain> <channel> <ipmb> <LUN> <NetFN> <Cmd> [data...]  - Send a command  to  the  given\nIPMB  address on the given channel and display the response.  Note that this does not require\nthe existance of an MC in OpenIPMI.\n\nResponse:\nDomain: <domain>\nchannel: <chan>\nipmb: <ipmb>\nLUN: <lun>\nNetFN: <netfn>\ncommand: <cmd>\nData: <data bytes>\n\nscan <domain> <ipmb addr> [ipmb addr] - scan an IPMB to add or remove  it.   If  a  range  is\ngiven, then scan all IPMBs in the range.\n\nResponse:\nScan done: <domain>\n\nrescansels <domain> - Rescan all the SELs in the domain.\n\nResponse:\nSEL Rescan done: <domain>\n\npresence  <domain>  -  Audit  the presence of all enities in the domain.  Note that this just\nstarts the process; it will run in the background.\n\nResponse is:\nPresence check started: <domain>\n\nclose <domain> - close the given domain.\n\nResponse:\nDomain closed: <domain>\n\nselrescantime <domain> <time in seconds> - Set the time between SEL rescans  for  all.   It\naffects all current SELs and SELs that are discovered in the future.  Zero disables scans.\n\nResponse:\nDomain SEL rescan time set: <domain>\n\nipmbrescantime  <domain> <time in seconds> - Set the time between IPMB rescans for this do‐\nmain.  zero disables scans.\n\nResponse:\nDomain IPMB rescan time set: <domain>\n\n#### fru\n\nThese commands deal with FRU objects.  Note that FRU objects are allocated by the domain  fru\ncommand, and are not allocated here.\n\nlist - List all the frus in the system\n\nResponse:\nDomain\nName: <domain>\nFRUs\nName: <fru>\n.\n.\n.\n.\n\ninfo <fru> - Dump information about a FRU\n\nResponse:\nFRU INFO\n\nareainfo <fru> - Dump the info about the FRU's areas\n\nResponse:\nFRU\nName: <fru>\nFRU Length: <integer>\nArea\nName: <area name>\nNumber: <integer>\nOffset: <integer>\nLength: <integer>\nUsed Length: <Integer>\n.\n.\n\nwrite <fru> - Write the local FRU data out into the FRU\n\nResponse:\nFRU written: <fru>\n\nclose <fru> - Delete the FRU\n\nResponse:\nFRU deleted: <fru>\n\nsetval  <fru>  <name>  [num]  value - Set the value of a FRU element.  The name is the record\nname, or multi-record.  The number is required for fields that need  it  (custom  and  multi-\nrecord).   The value is an a single value for integers.  For strings it is a string type (ei‐\nther binary, ascii, or unicode) and the info.  Binary and unicode data is specified  as  num‐\nbers.   ascii  data is specified in a string.  Note that setting a ascii value with no string\nwill clear the value.  Zero length strings and data is valid.\n\nResponse:\nFRU value set: <fru>\n\nareaoffset <fru> <area name> <offset> - Set the offset of the given area to the given value.\nArea names are internaldata, chassisinfo, boardinfo, productinfo, and multirecord.\n\nResponse:\nFRU area offset set: <fru>\n\narealength <fru> <area name> <length> - Set the length of the given area to the given value.\nArea names are internaldata, chassisinfo boardinfo, productinfo, and multirecord\n\nResponse:\nFRU area length set: <fru>\n\nareaadd <fru> <area name> <offset> <length> - Add the given area to the FRU.\n\nResponse:\nFRU area added: <fru>\n\nareadelete <fru> <area name> - Delete the given area from the FRU\n\nResponse:\nFRU area deleted: <fru>\n\n#### entity\n\nThese commands deal with entity objects.\n\nlist <entity> - List all the entities that meed the criteria\n\nResponse:\nDomain\nName: <domain>\nEntities\nName: <entity>\n.\n.\n.\n.\n\ninfo <entity> - Dump information about an entity.\n\nReponse:\nEntity\nName: <entity>\nENTITY INFO\n.\n.\n\nfru <entity> - Dump the FRU information about the given entity.\n\nReponse:\nEntity\nName: <entity>\nFRU\nFRU INFO\n\n#### entity hs\n\nThese commands deal with hot-swap of entities.  Note that there is no info  or  list  command\nfor this subcommand.\n\ngetacttime <entity> - Get the hot-swap auto-activate time.\n\nResponse:\nEntity\nName: <entity>\nAuto-Activation Time: <integer>\n\nsetacttime <entity> - Set the hot-swap auto-activate time.\n\nReponse:\nSet act time: <entity>\n\ngetdeacttime <entity> - Get the hot-swap auto-deactivate time Response:\nEntity\nName: <entity>\nAuto-Deactivation Time: <integer>\n\nsetdeacttime <entity> - Set the hot-swap auto-deactivate time\n\nResponse:\nSet deact time: <entity>\n\nactivationrequest <entity> - Act like a user requested an activation of the entity.  This is\ngenerally equivalent to closing the handle latch or something like that.\n\nResponse:\nActivation requested: <entity>\n\nactivate <entity> - activate the given entity\n\nResponse:\nActivated: <entity>\n\ndeactivate <entity> - deactivate the given entity\n\nResponse:\nDeactivated: <entity>\n\nstate <entity> - Return the current hot-swap state of the given entity.\n\nResponse:\nEntity\nName: <entity>\nState: <hot-swap state>\n\ncheck <entity> - Audit the entity's hot-swap state\n\nResponse:\nCheck started: <entity>\n\n#### sensor\n\nget <sensor> - Get the sensor's current reading.\n\nResponse:\nSensor\nName: <sensor>\nEvent Messages Enabled: <bool>\nSensor Scanning Enabled: <bool>\nInitial Update In Progress: <bool>\nFor threshold sensors, the following will be output:\n%Value: <double>\n%Raw Value: <integer>\nThreshold\nName: <threshold>\nOut Of Range: <bool>\nFor discrete sensors, the following will be output:\nEvent\nOffset: <integer>\n%Name: <string name of event offset>\nSet: <bool>\nThe name field may be custom and is not explicitly specified.\n\nrearm <sensor> global | <threshold enable> [<threshold enable> ..] | <discrete enable> [<dis‐‐\ncrete  enable> ..]  - Rearm the sensor.  If global is specified, then rearm all events in the\nsensor.  Otherwise, if it is a threshold sensor, then put in a list of threshold enables.  If\nit is a discrete sensor, then put in a list of discrete enables.\n\nResponse:\nRearm done: <sensor>\n\ngetthresholds <sensor> - Get the sensor's thresholds\n\nResponse:\nSensor\nName: <sensor>\nThreshold\nName: <threshold>\nValue: <double>\n\nsetthresholds  <sensor>  <threshold> <value> ...  - Set the sensor's thresholds to the given\nvalues.  If a threshold is not specified, it will not be modified.  Thresholds  are  un,  uc,\nur, lr, lc, ln.  The u stands for upper, l for lower, n for non-critical, c for critical, and\nr for non-recoverable.  The value is floating point.\n\nResponse:\nThresholds set: <sensor>\n\ngethysteresis <sensor> - Get the sensor's hysteresis values\n\nResponse:\nSensor\nName: <sensor>\nPositivie Hysteresis: <integer>\nNegative Hysteresis: <integer>\n\nsethysteresis <sensor> <pos hyst> <neg hyst> - Set the sensor's hysteresis to the given val‐\nues.   These  are  raw  integer value; hystersis is specified as a raw value and it cannot be\nconverted to floating point because the function may be non-linear.\n\nResponse:\nHysteresis set: <sensor>\n\ngeteventenables <sensor> - Get the sensor's event enable values\n\nResponse:\nSensor\nName: <sensor>\nEvent Messages Enabled: <bool>\nSensor Scanning Enabled: <bool>\nBusy: <bool>\nThreshold sensors report:\nThreshold\nName: <threshold>\nEnabled: <bool>\n.\n.\nonly supported thresholds are listed.  Discrete sensors report:\nEvent\nOffset: <integer>\nName: <event offset name for sensor>\n%Assertion Enabled: <bool>\n%Deassertion Enabled: <bool>\nonly supported offsets are listed.  The assertion and deassertion enables are listed only  if\nthe offset support them.\n\nseteventenables  <sensor>  msg|nomsg  scan|noscan [<enable> [<enable> ...]]  - Set the sen‐\nsor's event enable values.  This turns sensor messages and scanning on and off and  will  en‐\nable  all  the listed enables and disable all over ones.  The enables are either a <threshold\nenable> or a <discrete enable>.\n\nResponse:\nEvent enables set: <sensor>\n\nenableevents <sensor> msg|nomsg scan|noscan [<enable> [<enable> ...]]  - Enable event enable\nvalues.   This  turns  sensor messages and scanning on and off and will enable all the listed\nenables.  All other enables will be left alone.  The enables are either a <threshold  enable>\nor a <discrete enable>.\n\nResponse:\nEvent enables set: <sensor>\n\ndisableevents  <sensor> msg|nomsg scan|noscan [<enable> [<enable> ...]]  - Disable event en‐\nable values.  This turns sensor messages and scanning on and off and  will  disable  all  the\nlisted  enable.   All  other enables will be left alone.  The enables are either a <threshold\nenable> or a <discrete enable>.\n\nResponse:\nEvent enables set: <sensor>\n\n#### control\n\nCommands dealing with controls.\n\nset <control> <value> [<value> ..]  - Set the value of a control.   The  settings  depend  on\ncontrol type, most take one or more integer values depending on the number of physical things\nthe control contains.  An identifier type takes one or more unsigned characters.  A light set\nwith settings take the form\nlc|nolc <color> <on time> <off time>\nlc  and nolc turn on or of local control, the over values should be obvious.  Note all lights\nsupport local control, you need to see if it supports the value.\n\nResponse:\nSet done: <control>\n\nget <control> - Get the value of a control.  The reponse depends on the control type.\n\nResponse:\nControl\nName: <control>\nResponse for setting lights is:\nLight\nNum: 0\nLocal Control: <bool>\n%Color: <color>\n%On Time: <integer>\n%Off Time: <integer>\nNote that multiple lights may be present if the control supports multiple  lights.   The  op‐\ntions  values  (marked  with  % ) will not be present if local control is set to true.  Local\ncontrol means that the LED takes whatever default function it does on the device  (like  disk\nactivity, ethernet activity, hot-swap LED, etc.).  Response for id control:\nData: <byte1> <byte2> ...\nResponse for other controls:\nValue\nNum: <integer>\nValue: <integer>\nThere will be one Value for each value the control supports.\n\n\nmc\nCommands dealing with MC objects.\n\nreset <warm | cold> <mc> - Do a warm or cold reset on the given MC\n\nResponse:\nReset done: <mc>\n\nmsg <mc> <LUN> <NetFN> <Cmd> [data...]  - Send the given command to the management controller\nand display the response.\n\nResponse:\nMC: <mc>\nLUN: <lun>\nNetFN: <netfn>\ncommand: <cmd>\nData: <data bytes>\n\nseteventsenable <mc> <enable | disable> - enables or disables events on the MC.\n\nResponse:\nEvents enable done: <mc>\n\ngeteventsenable <mc> - Prints out if the events are enabled for the given MC.\n\nResponse:\nEvents Enable: <bool>\n\nsdrs <mc> <main | sensor> - list the SDRs for the mc.  Either gets the main SDR repository or\nthe sensor SDR repository.\n\nResponse:\nMC\nName: <mc>\nSDR\nRecord ID: <integer>\nType: <integer>\nVersion: <integer>.<integer>\nData: <data bytes>\nOne SDR will be present for each SDR in the repository.\n\ngetseltime <mc> - Get the time in the SEL for the given MC.\n\nResponse:\nMC\nName: <mc>\nSEL Time: <integer>\n\nsetseltime <mc> <time> - Set the time in the SEL for the given MC.\n\nResponse:\nMC SEL time set\nName: <mc>\n\nrescansel <mc> - Rescan the SEL in the MC.\n\nResponse:\nSEL Rescan done: <mc>\n\nselrescantime <mc> <time in seconds> - Set the time between SEL rescans for the SEL on this\nMC.  Zero disables scans.\n\nResponse:\nMC SEL rescan time set: <domain>\n\nselinfo <mc> - Dump information about the MC's SEL.\n\nResponse:\nMC\nName: <mc>\nSEL Version: <integer>.<integer>\nSEL Count: <integer>\nSEL Slots Used: <integer>\nSEL Free Bytes: <integer>\nSEL Last Addition Timestamp: <integer>\nSEL overflow: <bool>\nSEL Supports Delete: <bool>\nSEL Supports Partial Add: <bool>\nSEL Supports Reserve: <bool>\nSEL Supports Get SEL Allocation: <bool>\n\nchan info <mc> <channel> - Dump information about the MC's channel.\n\nResponse:\nChannel Info\nMC: <mc>\nNumber: <integer>\nMedium: <integer>\nProtocol Type: <integer>\nSession Support: session-less|single-session|multi-session|session-based\nVendor ID: <data bytes>\nAux Info: <data bytes>\n\nchan getaccess <mc> <channel> non-volatile|present|both - Dump information  about  the  MC's\nchannel access.  There are two different places where this is stored, the present in-use val‐\nues (volatile) and the non-volatile storage that is loaded at startup.  Note if  you  specify\nchannel 0xe, the response channel will be different; it will be the current channel.\n\nResponse:\nChannel Access\nMC: <mc>\nChannel: <integer>\nType: non-volatile|present\nAlerting Enabled: <bool>\nPer-Message Auth: <bool>\nUser Auth: <bool>\nAccess Mode: disable|pre-boot|always|shared\nPrivilege Limit: callback|user|operator|admin|oem\n\nchan  setaccess  <mc> <channel> non-volatile|present|both <parm> <value> ...  - Set informa‐\ntion about the MC's channel access.  There are two different places where this is stored, the\npresent  in-use  values  (volatile)  and  the non-volatile storage that is loaded at startup.\nNote if you specify channel 0xe, the modified channel will be  the  current  channel.   Parms\nare:\nalert true|false\nmsgauth true|false\nuserauth true|false\naccessmode disabled|pre-boot|always|shared\nprivilegelimit callback|user|operator|admin|oem\n\nResponse:\nChannel Access Set\nMC: <mc>\nChannel: <integer>\n\nchan  user  list  <mc> <channel> [<user num>] - List users associated with the channel.  Each\nuser number has an associated name and password that is global in the MC (not associated with\na  channel).   There  is also channel-specific information for each user.  This command lists\nthe global user information and the channel-specific information for the  channel  specified.\nIf  no  user number is listed, then all users for the channel are listed.  Otherwise only the\ngiven user is listed.\n\nResponse:\nChannel Access Set\nMC: <mc>\nChannel: <integer>\nMax User: <integer>\nEnabled Users: <integer>\nFixed Users: <integer>\nUser\nNumber: <integer>\n*String Name: <string>\n*Binary Name: <data bytes>\nLink Auth Enabled: <bool>\nMsg Auth Enabled: <bool>\nAccess CB Only: <bool>\nPrivilege Limit: <integer>\nSession Limit: <integer>\n.\n.\nAll the users are listed.  One of string name or binary name is present, if the name is not a\nprintable string, then the binary data is dumped.\n\nchan  user set <mc> <channel> <user num> <parm> <value> ...  - Set information about the user\nnumber.  Only the specified values are modified.  The name and password  are  global  values,\nall other are channel-specific.  The parms are: are:\nlinkenabled true|false\nmsgenabled true|false\ncbonly true|false\nprivilegelimit callback|user|operator|admin|oem|noaccess\nsessionlimit <integer>\nname <user name string>\npassword <password string, <= 16 characters>\npassword2 <password string, <= 20 characters>\nenable\ndisable\nThe  password is the 16-byte IPMI 1.5 passwords., the password2 is for 20-byte IPMI 2.0 pass‐\nwords.  Note that setting the session limit to zero means there is no  session  limit.   Also\nnote  that  some systems have a bug where the session limit is not optional (as the spec says\nit is). If you get C7 errors back from this command, you will have to always specify the ses‐\nsion  limit.  Note that you must enable the user for it to work, but there seems to be no way\nto get if the user is enabled or not.\n\nResponse:\nUser Info Set: <mc>\n\n#### sel\n\nCommands dealing with the system event log.  Note that there is no info command.\n\nlist <domain> - The list command is unique in this object,  so  it  is  specified  explicitly\nhere.  List the local copy of the system event log for the entire domain.\n\nResponse:\nDomain\nName: <domain>\nEntries: <integer>\nSlots in use: <integer>\nEvent\nEVENT INFO\n.\n.\n\nmclist <domain> - List the local copy of the system event log on the given MC.\n\nResponse:\nMC\nName: <mc>\nEntries: <integer>\nSlots in use: <integer>\nEvent\nEVENT INFO\n.\n.\n\ndelete <mc> <record #> - Delete the given event number from the SEL\n\nResponse:\nEvent deleted\nMC: <mc>\nRecord: <integer>\n\nadd <mc> <type> <13 bytes of data> - Add the event data to the SEL.\n\nResponse:\nMC\nName: <mc>\nRecord ID: <integer>\n\nclear <domain> - clear the system event log\n\nResponse:\nSEL Clear done: <domain>\n\n#### con\n\nCommands dealing with connections.\n\nactivate <connection> - Activate the given connection\n\nResponse:\nConnection activated: <connection>\n\n#### pet\n\nCommands dealing with platform event traps.\n\nnew <domain> <connection> <channel> <ip addr> <macaddr> <eft selector> <policy num> <apt se‐\nlector> <lan dest selector> - Set up the domain to send PET traps from the  given  connection\nto the given IP/MAC address over the given channel.\n\nResponse:\nPET Created: <pet>\n\nmcnew  <mc>  <channel>  <ip  addr> <macaddr> <eft selector> <policy num> <apt selector> <lan\ndest selector> - Set up the domain to send PET traps from the given connection to  the  given\nIP/MAC address over the given channel.  This takes an MC instead of a connection.\n\nResponse:\nPET Created: <pet>\n\nclose <pet> - Close the pet.\n\nResponse:\nPET destroyed: <pet>\n\n#### pef\n\ncommands dealing with platform even filters.  These are basically connections to the PEF con‐\nfiguration parameters in an MC.  You use a pef to fetch a pef config, which you can then mod‐\nify  and  write back to the MC.  Note that when you get a pef config, you claim a lock on the\nMC that must be unlocked.\n\nnew <mc> - Create a pef for the given MC.\n\nResponse:\nPEF: <pef>\n\nunlockmc <mc> - Unlock the PEF lock on the given MC.\n\nResponse:\nPEF unlocked: <mc>\n\nclose <pef> - Free the given pef\n\nResponse:\nPEF destroyed: <pef>\n\n#### pef config\n\nCommands dealing with PEF configurations.  These are the actual PEF data items.\n\nget <pef> - Fetch the pef data items from the pef and create a pef config.\n\nResponse:\nPEF Config\nName: <pef config>\nPEF CONFIG\n\nupdate <pef config> <parm> [selector] <value> - Set the given parameter in the pef config  to\nthe  given  value.  If the parameter has a selector of some type, the selector must be given,\notherwise no selector should be given.\n\nResponse:\nPEF config updated: <pef config>\n\nset <pef> <pef config> - Write the pef data back to the pef.  Note that this must be the same\npef used to create the config.\n\nResponse:\nPEF config set: <pef config>\n\nunlock <pef> <pef config> - Unlock the lock in the MC and mark the pef config as unlocked.\n\nResponse:\nPEF config unlocked: <pef config>\n\nclose <pef config> - Free the pef config.\n\nResponse:\nPEF config destroyed: <pef config>\n\n#### lanparm\n\nCommands dealing with lanparms.  These are basically connections to the LAN configuration pa‐\nrameters in an MC.  You use a lanparm to fetch a lanparm config, which you  can  then  modify\nand  write  back to the MC.  Note that when you get a lanparm config, you claim a lock on the\nMC that must be unlocked.\n\nnew <mc> <channel> - Create a lanparm for the given MC and channel.\n\nResponse:\nLANPARM: <lanparm>\n\nunlockmc <mc> <channel> - Unlock the lanparm lock on the given MC and channel.\n\nResponse:\nLANPARM unlocked: <mc>\n\nclose <lanparm> - Free the given lanparm\n\nResponse:\nLANPARM destroyed: <lanparm>\n\n#### lanparm config\n\nCommands dealing with lanparm configurations.  These are the actual lanparm data items.\n\nget <lanparm> - Fetch the lanparm data items from the lanparm and create a lanparm config.\n\nResponse:\nLANPARM Config\nName: <lanparm config>\nLANPARM CONFIG\n\nset <lanparm> <lanparm config> - Write the lanparm data back to the lanparm.  Note that  this\nmust be the same lanparm used to create the config.\n\nResponse:\nLANPARM config set: <lanparm config>\n\nunlock  <lanparm> <lanparm config> - Unlock the lock in the MC and mark the lanparm config as\nunlocked.\n\nResponse:\nLANPARM config unlocked: <lanparm config>\n\nclose <lanparm config> - Free the lanparm config.\n\nResponse:\nLANPARM config destroyed: <lanparm config>\n\n### OTHER COMMANDS\n\nA few general commands exist.\n\nevinfo <bool> - Turn on or off dumping object information when an event comes  in.   This  is\nfalse by default.\n\ndebug <type> <bool> - Turn the given debugging type on or off\n\n### EVENTS\n\nThe command language will output events to the console when they happen.  Events all occur in\nthe format:\nEvent\nEVENT INFO\n\nThe event info varies on the type of events.  The defined events are listed below.  Note that\nthe output of some events depends on the setting of the evinfo command; the information about\nthe object itself may or may not be output.\n\nSome events have another event container; this is the IPMI event that caused the event to  be\noutput.\n\nThe  following  event is output when the domain is completely up and operational and finished\nall it SDR, FRU, and bus scans:\nEVENT\nObject Type: Domain\nName: <domain>\nOperation: Domain fully up\nConnection Number: <integer>\nPort Number: <integer>\nAny Connection Up: <bool>\nError: <integer>\n\nThe following comes out when domain connection infomration changes:\nEVENT\nObject Type: Domain\nName: <domain>\nOperation: Connection Change\n\nThe following comes out when domains are added:\nEVENT\nObject Type: Domain\nName: <domain>\nOperation: Add\n%DOMAIN INFO\n\nThe following comes out when domains are destroyed:\nEVENT\nObject Type: Domain\nName: <domain>\nOperation: Delete\n\nThe following comes out when the domain gets an event that does not have a handler:\nEVENT\nObject Type: Event\nEVENT INFO\n\nThe following comes out when an entity is added:\nEVENT\nObject Type: Entity\nName: <entity>\nOperation: Add\n%ENTITY INFO\n\nThe following comes out when an entity is deleted:\nEVENT\nObject Type: Entity\nName: <entity>\nOperation: Delete\n\nThe following comes out when an entity is changed:\nEVENT\nObject Type: Entity\nName: <entity>\nOperation: Change\n%ENTITY INFO\n\nThe following comes out when an entity's FRU is added:\nEVENT\nObject Type: Entity FRU\nName: <entity>\nOperation: Add\n%FRU INFO\n\nThe following comes out when an entity's FRU is deleted:\nEVENT\nObject Type: Entity FRU\nName: <entity>\nOperation: Delete\n\nThe following comes out when an entity's FRU is changed:\nEVENT\nObject Type: Entity FRU\nName: <entity>\nOperation: Change\n%FRU INFO\n\nThe following comes out when an entity's presence changes:\nEVENT\nObject Type: Entity\nName: <entity>\nOperation: Presence Change\nPresent: <bool>\n%Event\nEVENT INFO\n\nThe following comes out when an entity's hot-swap state changes:\nEVENT\nObject Type: Entity\nName: <entity>\nOperation: Hot-Swap Change\nLast State: <hot-swap state>\nState: <hot-swap state>\n%Event\nEVENT INFO\n\nThe following comes out when an MC is added:\nEVENT\nObject Type: MC\nName: <mc>\nOperation: Add\n%MC INFO\n\nThe following comes out when an MC is removed:\nEVENT\nObject Type: MC\nName: <mc>\nOperation: Delete\n\nThe following comes out when an MC is changed:\nEVENT\nObject Type: MC\nName: <mc>\nOperation: Change\n%MC INFO\n\nThe following comes out when an MC changes active state:\nEVENT\nObject Type: MC\nName: <mc>\nOperation: Active Changed\nActive: <bool>\n\nThe following comes out when a discrete sensor gets an event:\nEVENT\nObject Type: Sensor\nName: <sensor>\nOperation: Event\nOffset: <integer>\nDirection: assertion | deassertion\nSeverity: <integer>\nPrevious Severity: <integer>\n%Event\nEVENT INFO\n\nThe following comes out when a threshold sensor gets an event:\nEVENT\nObject Type: Sensor\nName: <sensor>\nOperation: Event\nThreshold: <threshold>\nHigh/Low: going-high | going-low\nDirection: assertion | deassertion\n%Value: <double>\n%Raw Value: <integer>\n%Event\nEVENT INFO\n\nThe following comes out when a sensor is added:\nEVENT\nObject Type: Sensor\nName: <sensor>\nOperation: Add\n%SENSOR INFO\n\nThe following comes out when a sensor is deleted:\nEVENT\nObject Type: Sensor\nName: <sensor>\nOperation: Delete\n\nThe following comes out when a sensor is changed:\nEVENT\nObject Type: Sensor\nName: <sensor>\nOperation: Change\n%SENSOR INFO\n\nThe following comes out when a control gets an event:\nEVENT\nObject Type: Control\nName: <control>\nOperation: Event\nValue\nNumber: <integer>\nValue: <integer>\n%Event\nEVENT INFO\n\nThe following comes out when a control is added:\nEVENT\nObject Type: Control\nName: <control>\nOperation: Add\n%CONTROL INFO\n\nThe following comes out when a control is deleted:\nEVENT\nObject Type: Control\nName: <control>\nOperation: Delete\n\nThe following comes out when a control is changed:\nEVENT\nObject Type: Control\nName: <control>\nOperation: Change\n%CONTROL INFO\n\n### OBJECT INFO\n\nMany of the command responses and events contain information about an objects.   The  defini‐\ntions of this information output is done here.\n\n\nEVENT INFO\nMC: <mc>\nRecord ID: <integer>\nEvent type: <integer>\nTimestamp: <integer>\nData: <data bytes>\n\n\nDOMAIN INFO\nType: <domain type>\nGUID: <hex string>\nSEL Rescan Time: <time>\nIPMB Rescan Time: <time>\n\n\nENTITY INFO\nType: unknown | mc | fru | generic\nPresent: <bool>\nPresence sensor always there: <bool>\nHot swappable: <bool>\n%Supports managed hot swap: <bool>\n%Parents\nName: <entity>\nName: <entity>\n.\n.\n%Children\nName: <entity>\nName: <entity>\n.\n.\n%Physical Slot: <integer>\n%Id: <string>\nEntity ID String: <string>\n\nNote  that  Parents  and  Children fields will not be present if the entity has no parents or\nchildren.  Each entity type except unknown will have its own output info.  These are:\n\nmc\nChannel: <channel>\nLUN: <lun>\nOEM: <oem field from SDR>\nSlave Address: <ipmb>\nACPIsystempowernotifyrequired: <bool>\nACPIdevicepowernotifyrequired: <bool>\ncontrollerlogsinitagenterrors: <bool>\nloginitagenterrorsaccessing: <bool>\nglobalinit: <bool>\nchassisdevice: <bool>\nbridge: <bool>\nIPMBeventgenerator: <bool>\nIPMBeventreceiver: <bool>\nFRUinventorydevice: <bool>\nSELdevice: <bool>\nSDRrepositorydevice: <bool>\nsensordevice: <bool>\n\n#### fru\n\nChannel: <channel>\nLUN: <lun>\nOEM: <oem field from SDR>\nSlave Address: <ipmb>\naccessaddress: <ipmb>\nprivatebusid: <integer>\ndevicetype: <integer>\ndevicemodifier: <integer>\nislogicalfru: <bool>\nfrudeviceid: <integer>\n\n#### generic\n\nChannel: <channel>\nLUN: <lun>\nOEM: <oem field from SDR>\naccessaddress: <ipmb>\nprivatebusid: <integer>\ndevicetype: <integer>\ndevicemodifier: <integer>\nslaveaddress: <ipmb>\naddressspan: <integer>\n\n\nMC INFO\nActive: <bool>\nGUID: <hex string>\nSEL Rescan Time: <integer>\nprovidesdevicesdrs: <bool>\ndeviceavailable: <bool>\nchassissupport: <bool>\nbridgesupport: <bool>\nipmbeventgenerator: <bool>\nipmbeventreceiver: <bool>\nfruinventorysupport: <bool>\nseldevicesupport: <bool>\nsdrrepositorysupport: <bool>\nsensordevicesupport: <bool>\ndeviceid: <ipmb>\ndevicerevision: <integer>\nfwrevision: <integer>.<integer>\nversion: <integer>.<integer>\nmanufacturerid: <integer>\nproductid: <integer>\nauxfwrevision: <integer> <integer> <integer> <integer>\n\n\n*SENSOR INFO\nLUN: <integer>\nNumber: <integer>\nEvent Reading Type: <integer>\nEvent Reading Type Name: one of:\nunspecified threshold discreteusage discretestate\ndiscretepredictivefailure discretelimitexceeded\ndiscreteperformancemet discreteseverity discretedevicepresence\ndiscretedeviceenable discreteavailability discreteredundancy\ndiscreteacpipower\nType: <integer>\nType Name: <sensor type (a generic string)>\n%Direction: input | output\n%Event Support: per state | entire sensor | global\nInit Scanning: <bool>\nInit Events: <bool>\nInit Thresholds: <bool>\nInit Hysteresis: <bool>\nInit Type: <bool>\nInit Power Up Events: <bool>\nInit Power Up Scanning: <bool>\nIgnore If No Entity: <bool>\nAuto Rearm: <bool>\nOEM1: <integer>\nId: <string>\n\nFor threshold sensors, the following exist:\nThreshold Access: none | readable | settable | fixed\nThreshold\nName: <threshold>\nReadable: <bool>\nSettable: <bool>\nSupports: going high assertion | going low assertion\n| going high deassertion | going low deassertion\n.\n.\nHysteresis Support: none | readable | settable | fixed\n%Nominal Reading: <float>\n%Normal Max: <float>\n%Normal Min: <float>\n%Sensor Max: <float>\n%Sensor Min: <float>\nBase Unit: <integer>\nBase Unit Name: <string>\n%Rate Unit: <integer>\n%Rate Unit Name: <string>\n%Modifier Use: / | *\n%Modifier Unit: <integer>\n%Modifier Unit Name: <string>\n\nFor discrete sensors, the following exist:\nEvent\nOffset: <integer>\nSupports: assertion | deassertion\n.\n.\n\n\nCONTROL INFO\nType: <control type>\nGenerates Events: <bool>\nSettable: <bool>\nReadable: <bool>\nNum Values: <integer>\nId: <string>\n\nControls of type light that are set with settings have the following:\nSet with: settings\nLocal Control: <bool>\nColor: <color>\n.\n.\nOne color is listed for each supported color\n\nControls of type light that are set with transitions have the following:\nLight\nNumber: <integer>\nNum Values: <integer>\nValue\nNumber: <integer>\nNum Transitions: <integer>\nTransition\nNumber: <integer>\nColor: <color>\nTime: <integer>\n.\n.\n.\n.\n\nControls of type identifier have the following:\nMax Length: <integer>\n\n\nFRU INFO\nName: <fru>\nrecord\nName: <name>\nType: binary | ascii | unicode | integer\n%Number: <integer>\nData: data depending on type\n.\n.\nMulti-record\nNumber: <integer>\nType: binary | ascii | unicode\nData: <data in the above format>\n.\n.\n\n\nLANPARM CONFIG\nsupportauthoem: <bool>\nsupportauthstraight: <bool>\nsupportauthmd5: <bool>\nsupportauthmd2: <bool>\nsupportauthnone: <bool>\nipaddrsource: <integer>\nnumalertdestinations: <integer>\n%ipv4ttl: <integer>\n%ipv4flags: <integer>\n%ipv4precedence: <integer>\n%ipv4tos: <integer>\n%ipaddr: <ip addr>\n%macaddr: <mac addr>\n%subnetmask: <ip addr>\n%primaryrmcpport <integer>\n%secondaryrmcpport <integer>\n%bmcgeneratedarps: <bool>\n%bmcgeneratedgarps: <bool>\n%garpinterval: <integer>\n%defaultgatewayipaddr: <ip addr>\n%defaultgatewaymacaddr: <mac addr>\n%backupgatewayipaddr: <ip addr>\n%backupgatewaymacaddr: <mac addr>\ncommunitystring: <string>\nUser\nName: callback\nenableauthoem: <bool>\nenableauthstraight: <bool>\nenableauthmd5: <bool>\nenableauthmd2: <bool>\nenableauthnone: <bool>\nUser\nName: user\nenableauthoem: <bool>\nenableauthstraight: <bool>\nenableauthmd5: <bool>\nenableauthmd2: <bool>\nenableauthnone: <bool>\nUser\nName: operator\nenableauthoem: <bool>\nenableauthstraight: <bool>\nenableauthmd5: <bool>\nenableauthmd2: <bool>\nenableauthnone: <bool>\nUser\nName: admin\nenableauthoem: <bool>\nenableauthstraight: <bool>\nenableauthmd5: <bool>\nenableauthmd2: <bool>\nenableauthnone: <bool>\nUser\nName: oem\nenableauthoem: <bool>\nenableauthstraight: <bool>\nenableauthmd5: <bool>\nenableauthmd2: <bool>\nenableauthnone: <bool>\nAlert Destination\nNumber: <integer>\nalertack: <bool>\ndesttype: <integer>\nalertretryinterval: <integer>\nmaxalertretries: <integer>\ndestformat: <integer>\ngwtouse: <integer>\ndestipaddr: <ip addr>\ndestmacaddr: <mac addr>\n.\n.\n\n\nPEF CONFIG\nalertstartupdelayenabled: <bool>\nstartupdelayenabled: <bool>\neventmessagesenabled: <bool>\npefenabled: <bool>\ndiagnosticinterruptenabled: <bool>\noemactionenabled: <bool>\npowercycleenabled: <bool>\nresetenabled: <bool>\npowerdownenabled: <bool>\nalertenabled: <bool>\n%startupdelay: <integer>\n%alertstartupdelay: <integer>\nguidenabled: <bool>\nguidval: <guid>\nnumeventfilters: <integer>\nnumalertpolicies: <integer>\nnumalertstrings: <integer>\nEvent Filter\nNumber: <integer>\nenablefilter: <bool>\nfiltertype: <integer>\ndiagnosticinterrupt: <bool>\noemaction: <bool>\npowercycle: <bool>\nreset: <bool>\npowerdown: <bool>\nalert: <bool>\nalertpolicynumber: <integer>\neventseverity: <integer>\ngeneratoridaddr: <integer>\ngeneratoridchannellun: <integer>\nsensortype: <integer>\nsensornumber: <integer>\neventtrigger: <integer>\ndata1offsetmask: <integer>\ndata1mask: <integer>\ndata1compare1: <integer>\ndata1compare2: <integer>\ndata2mask: <integer>\ndata2compare1: <integer>\ndata2compare2: <integer>\ndata3mask: <integer>\ndata3compare1: <integer>\ndata3compare2: <integer>\n.\n.\nAlert Policy\nNumber: <integer>\npolicynum: <integer>\nenabled: <bool>\npolicy: <integer>\nchannel: <integer>\ndestinationselector: <integer>\nalertstringeventspecific: <bool>\nalertstringselector: <integer>\n.\n.\nAlert String\neventfilter: <integer>\nalertstringset: <integer>\nalertstring: <string>\n.\n.\n\n\nCONNECTION INFO\nActive: <bool>\nUp: <bool>\nPort\nNumber: <integer>\nInfo: <info string>\nUp: <bool>\n.\n.\n\n\nPEF INFO\nMC: <mc>\n\n\nPET INFO\nMC: <mc>\nChannel: <channel>\nIP Address: <ip address>\nMAC Address: <mac address>\nEFT Selector: <eft selector>\nPolicy Number: <policy number>\nAPT Selector: <apt selector>\nLAN Dest Selector: <lan dest selector>\n\n\nLANPARM INFO\nMC: <mc>\nChannel: <integer>\n\n### SEE ALSO\n\nipmish(1)\n\n### KNOWN PROBLEMS\n\nNone\n\n### AUTHOR\n\nCorey Minyard <cminyard@mvista.com>\n\n\n\nOpenIPMI                                      05/13/03                               ipmicmdlang(7)\n\n"
        }
    ],
    "structuredContent": {
        "command": "ipmi_cmdlang",
        "section": "7",
        "mode": "man",
        "summary": "ipmicmdlang - A command language interface to the IPMI library",
        "synopsis": null,
        "tldr_summary": null,
        "tldr_examples": [],
        "tldr_source": null,
        "flags": [],
        "examples": [],
        "see_also": [
            {
                "name": "ipmish",
                "section": "1",
                "url": "https://www.chedong.com/phpMan.php/man/ipmish/1/json"
            }
        ],
        "section_outline": [
            {
                "name": "NAME",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "DESCRIPTION",
                "lines": 12,
                "subsections": []
            },
            {
                "name": "COMMENTS",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "OBJECTS",
                "lines": 73,
                "subsections": []
            },
            {
                "name": "OTHER PARAMETERS",
                "lines": 29,
                "subsections": []
            },
            {
                "name": "COMMANDS",
                "lines": 37,
                "subsections": [
                    {
                        "name": "domain",
                        "lines": 37
                    },
                    {
                        "name": "-wait",
                        "lines": 65
                    },
                    {
                        "name": "-wait",
                        "lines": 63
                    },
                    {
                        "name": "fru",
                        "lines": 79
                    },
                    {
                        "name": "entity",
                        "lines": 32
                    },
                    {
                        "name": "entity hs",
                        "lines": 54
                    },
                    {
                        "name": "sensor",
                        "lines": 109
                    },
                    {
                        "name": "control",
                        "lines": 215
                    },
                    {
                        "name": "sel",
                        "lines": 47
                    },
                    {
                        "name": "con",
                        "lines": 8
                    },
                    {
                        "name": "pet",
                        "lines": 22
                    },
                    {
                        "name": "pef",
                        "lines": 21
                    },
                    {
                        "name": "pef config",
                        "lines": 33
                    },
                    {
                        "name": "lanparm",
                        "lines": 21
                    },
                    {
                        "name": "lanparm config",
                        "lines": 27
                    }
                ]
            },
            {
                "name": "OTHER COMMANDS",
                "lines": 9,
                "subsections": []
            },
            {
                "name": "EVENTS",
                "lines": 211,
                "subsections": []
            },
            {
                "name": "OBJECT INFO",
                "lines": 61,
                "subsections": [
                    {
                        "name": "fru",
                        "lines": 11
                    },
                    {
                        "name": "generic",
                        "lines": 317
                    }
                ]
            },
            {
                "name": "SEE ALSO",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "KNOWN PROBLEMS",
                "lines": 3,
                "subsections": []
            },
            {
                "name": "AUTHOR",
                "lines": 5,
                "subsections": []
            }
        ]
    }
}