• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

Makefile.amH A D11-Jun-20181.2 KiB4231

Makefile.inH A D03-May-202227.4 KiB847747

READMEH A D28-Jul-201738 KiB1,3831,207

cmd_conn.cH A D21-Jul-20125.6 KiB172123

cmd_control.cH A D14-Jul-201721.7 KiB782666

cmd_domain.cH A D21-Jul-201235.2 KiB1,3011,075

cmd_entity.cH A D14-Jul-201734.8 KiB1,156974

cmd_fru.cH A D21-Jul-201221.2 KiB775639

cmd_lanparm.cH A D05-Jan-201939.5 KiB1,4561,237

cmd_mc.cH A D05-Jan-201965.3 KiB2,2922,002

cmd_pef.cH A D05-Jan-201935 KiB1,3381,129

cmd_pet.cH A D21-Jul-201211.8 KiB417334

cmd_sel.cH A D21-Jul-201216.9 KiB586491

cmd_sensor.cH A D14-Jul-201743.9 KiB1,4631,259

cmd_solparm.cH A D05-Jan-201927.4 KiB992825

cmdlang.cH A D27-Jul-201763.4 KiB2,8222,332

ipmish.cH A D16-Dec-201925.7 KiB1,178985

os_debug.cH A D31-Jul-201712.4 KiB574458

out_fru.cH A D21-Jul-20125.2 KiB173118

README

1This is the OpenIPMI command language, which allows each access to
2pretty much everything about OpenIPMI.  It can be used to add an
3OpenIPMI command shell into an application to give the user full
4access into everything OpenIPMI can do.
5
6The interface is very simple.  You call the command interpreter with a
7string.  You pass in two functions, an output handler and a "done"
8functions.  If an error occurs, the command interpreter generates some
9output and returns an error code.  Otherwise, it will generate output
10and call the done function when it is complete.
11
12The command language is hierarchical.  There are several top-level
13commands, each of these has sub-commands, and those may have
14sub-commands, and so on.
15
16The commands may take parameters.  Some general ones are:
17
18* <domain> - A name of a domain.  Each registered domain in a system
19  has a name.
20* <entity> - Entity names are in the form: [<domain>[(entity spec)]]
21  Notice that the entity spec is optional.  If it is not listed, then
22  the operation is done on all entities in the domain.  The whole
23  thing is optional, too, if nothing is given then the operation is
24  done on every entity in every domain.
25  The entity spec is either:
26   <entity id>.<entity instance>
27  for system-reltive entities, or:
28   r<channel>.<IPMB>.<entity id>.<entity instance-0x60>
29  for device-relative entities.
30* <sensor> - These come in the form [<entity>[.name]] If no name is
31  given, the operation is performed on all sensors in the entity.
32  If the entity is just a domain, then all sensors in the domain, and
33  if the whole thing is empty, then all sensors on all domains.
34* <control> - These come in the form [<entity>[.name]] If no name is
35  given, the operation is performed on all controls in the entity.
36  If the entity is just a domain, then all controls in the domain, and
37  if the whole thing is empty, then all controls on all domains.
38* <mc> - A management controller.  These come in the form
39  [<domain>[(<channel>.<IPMB>)]].  As usual, the optional parts will
40  cause defaulting to all things.
41* <connection> - A connection number, in the form: <domain>.<num>
42* <pet> - A platform event trap id, in the form [<domain>][.<integer>]
43* <lanparm> - A LAN parameter id, in the form [<domain>][.<integer>]
44* <pef> - A PEF id, in the form [<domain>][.<integer>]
45* <guid> - a 16-byte globally unique ID, all globbed together in
46  one big hexidecimal thing.
47
48Note that the domain name and sensor/control name may have spaces in
49them; the names may be bracketed by quotes (' or ").  A backslash (\)
50may be used to add a quote character (or a backslash) into a string.
51An empty parameters should be specified as "", although if nothing
52comes after the parameter it may just be left empty.
53
54
55
56The command hierarchy is:
57
58* help - get general help.  Type the specific command after help to
59  get info for that command.
60
61* domain
62
63  * list - List all domains
64    Response is:
65    Domains
66      Name: <domain1>
67      Name: <domain2>
68      .
69      .
70
71  * info <domain> - List information about the given domain
72    Response is:
73    Domain
74      Name: <domain>
75      **DOMAIN INFO**
76
77  * new <domain> <options> <parms...> - Open a connection to a new domain
78    Parms are either:
79     lan <IP> <port> <enc> <auth> <name> <password>"
80    or
81     smi <smi num>
82    <enc> is the authentication type, either "md5", "md2", "straight",
83    or "none".  <auth> is the authentication level, either "admin",
84    "operator", or "user".  The <port> is generally 623.
85    The <smi num> is the driver number, generally 0.
86    Options enable and disable various automitic processing and are:
87      -[no]all - all automatic handling
88      -[no]sdrs - sdr fetching
89      -[no]frus - FRU fetching
90      -[no]sel - SEL fetching,"
91      -[no]ipmbscan - IPMB bus scanning
92      -[no]oeminit - special OEM processing (like ATCA)
93      -[no]seteventrcvr - setting event receivers
94      -wait_til_up - wait until the domain is up before returning
95       Note that if you specify this and the domain never comes up,
96       you will never get a prompt.
97
98    Note that setting event receivers it not affected by the -all
99    option.  By default -all -seteventrcvr is true, which turns
100    everything on.
101    Response is:
102    Domain Created: <domain>
103
104  * fru <domain> <is_logical> <device_address> <device_id> <lun> <private_bus>
105    <channel> - dump a fru given all it's insundry information.
106    Response is:
107    Domain
108      Name: <domain>
109      FRU
110        **FRU INFO**
111
112  * msg <domain> <channel> <ipmb> <LUN> <NetFN> <Cmd> [data...] - Send
113    a command to the given IPMB address on the given channel and display the
114    response.  Note that this does not require the existance of an
115    MC in OpenIPMI.  The response is:
116    Response
117      Domain: <domain>
118      channel: <chan>
119      ipmb: <ipmb>
120      LUN: <lun>
121      NetFN: <netfn>
122      command: <cmd>
123      Data: <data bytes>
124
125  * scan <domain> <ipmb addr> [ipmb addr] - scan an IPMB to add or remove it.
126    If a range is given, then scan all IPMBs in the range.
127    Response is:
128    Scan done: <domain>
129
130  * presence - Check the presence of entities.
131    Response is:
132    Presence check started: <domain>
133
134  * close <domain> - close the given domain.
135    Response is:
136    Domain closed: <domain>
137
138  * sel_rescan_time <domain> <time in seconds> - Set the time between
139    SEL rescans for all SELs in the system.  zero disables scans.
140    Response is:
141    Domain SEL rescan time set: <domain>
142
143  * ipmb_rescan_time <domain> <time in seconds> - Set the time between
144    IPMB rescans for this domain.  zero disables scans.
145    Response is:
146    Domain IPMB rescan time set: <domain>
147
148* entity
149
150  * list <domain> - List all entities.
151    Response is:
152    Domain
153      Name: <domain>
154      Entities
155        Name: <entity1>
156        Name: <entity2>
157        .
158        .
159
160  * info <entity> - List information about the given entity
161    Response is:
162    Entity
163      Name: <entity>
164      **ENTITY INFO**
165
166  * fru <entity> - Dump the FRU information about the given entity.
167    Response is:
168    Entity
169      Name: <entity>
170      FRU
171        **FRU INFO**
172
173    "FRU" will only be present if the entity can have FRU info.  FRU
174    info may be empty.
175
176  * hs - hot-swap control
177
178    * get_act_time <entity> - Get the hot-swap auto-activate time
179      Response is:
180      Entity
181        Name: <entity>
182        Auto-Activation Time: <integer>
183
184    * set_act_time <entity> - Set the hot-swap auto-activate time
185      Response is:
186      Set act time: <entity>
187
188    * get_deact_time <entity> - Get the hot-swap auto-deactivate time
189      Response is:
190      Entity
191        Name: <entity>
192        Auto-Deactivation Time: <integer>
193
194    * set_deact_time <entity> - Set the hot-swap auto-deactivate time
195      Response is:
196      Set deact time: <entity>
197
198    * activation_request <entity> Act like a user requested an
199      activation of the entity.  This is generally equivalent to
200      closing the handle latch or something like that.
201      Response is:
202      Activation requested: <entity>
203
204    * activate <entity> - activate the given entity
205      Response is:
206      Activated: <entity>
207
208    * deactivate <entity> - deactivate the given entity
209      Response is:
210      Deactivated: <entity>
211
212    * state <entity> - Return the current hot-swap state of the given
213      entity.
214      Response is:
215      Entity
216        Name: <entity>
217        State: not_present | inactive | activation_requested |
218               activation_in_progress | active | deactivation_requested |
219               deactivation_in_progress | out_of_con
220
221    * check <entity> - Audit the entities hot-swap state
222      Response is:
223      Check started: <entity>
224
225* sensor
226
227  * list <entity> - List all sensors
228    Response is:
229    Entity
230      Name: <entity>
231      Sensors
232        Name: <sensor1>
233        Name: <sensor2>
234        .
235        .
236
237  * info <sensor>
238    Response is:
239    Sensor
240      Name: <sensor>
241      **SENSOR INFO**
242
243  * get <sensor> - Get the sensor's current reading.
244    Response is:
245    Sensor
246      Name: <sensor>
247      Event Messages Enabled: true | false
248      Sensor Scanning Enabled: true | false
249      Initial Update In Progress: true | false
250
251    For sensors of type "threshold", the following exist:
252    %Value: <double>
253    %Raw Value: <integer>
254    Threshold
255      Name: lower non critical | lower critical | lower non recoverable
256            | upper non critical | upper critical | upper non recoverable
257      Out Of Range: true | false
258
259    For discrete sensors, the following exist:
260    Event
261      Offset: <integer>
262      %Name: <string name of event offset>
263      Set: true | false
264
265  * rearm <sensor> global | <thresholds> | <discrete states> -
266    Rearm the sensor.  If global is specified, then rearm
267    all events in the sensor.  If it is a threshold sensor, then
268    put in a list of thresholds of the form '[ul][ncr][hl][ad]
269    where [ul] means upper or lower, [ncr] means non-critical,
270    critical, or non-recoverable, [hl] means going high or going
271    low, and [ad] means assertion or deassertion.  If it is a
272    discrete sensor, then the form is <num>[ad] where the number
273    is the offset and [ad] means assertion or deassertion
274    Response is:
275    Rearm done: <sensor>
276
277  * get_thresholds <sensor> - Get the sensor's thresholds
278    Response is:
279    Sensor
280      Name: <sensor>
281      Threshold
282        Name: lower non critical | lower critical | lower non recoverable
283              | upper non critical | upper critical | upper non recoverable
284        Value: <double>
285
286  * set_thresholds <sensor> <threshold> <value> ... - Set the sensor's
287    thresholds to the given values.  If a threshold is not specified,
288    it will not be modified.  Thresholds are unc, uc, unr, lnr, lc.
289    The u stands for upper, l for lower, nc for non-critical, c for
290    critical, and nr for non-recoverable.  The value is floating point.
291    Response is:
292    Thresholds set: <sensor>
293
294  * get_hysteresis <sensor> - Get the sensor's hysteresis values
295    Response is:
296    Sensor
297      Name: <sensor>
298      Positivie Hysteresis: <integer>
299      Negative Hysteresis: <integer>
300
301  * set_hysteresis <sensor> <pos hyst> <neg hyst> - Set the sensor's
302    hysteresis to the given values.  These are raw integer
303    value; hystersis is specified as a raw value and it cannot be
304    converted to floating point because the function may be
305    non-linear.
306    Response is:
307    Hysteresis set: <sensor>
308
309  * get_event_enables <sensor> - Get the sensor's event enable values
310    Response is:
311    Sensor
312      Name: <sensor>
313      Event Messages Enabled: true | false
314      Sensor Scanning Enabled: true | false
315      Busy: true | false
316
317    Threshold sensors report:
318    Threshold
319      Name: <threshold name>
320      Enabled: true | false
321     .
322     .
323    only supported thresholds are listed
324
325    Discrete sensors report:
326    Event
327      Offset: <integer>
328      Name: <event offset name for sensor>
329      %Assertion Enabled: true | false
330      %Deassertion Enabled: true | false
331    only supported offsets are listed.  The assertion and deassertion
332    enables are listed only if the offset support them.
333
334
335  * set_event_enables <sensor> msg|nomsg scan|noscan [<event> [<event> ...]]
336    - Set the sensor's event enable values.  This turns sensor messages and
337    scanning on and off and will enable all the listed events and
338    disable all over events.  The events are in the same format as
339    the rearm subcommand and depend on the sensor type.  See the
340    rearm command for details.
341    Response is:
342    Event enables set: <sensor>
343
344  * enable_events <sensor> msg|nomsg scan|noscan [<event> [<event> ...]]
345    - Enable event enable values.  This turns sensor messages and
346    scanning on and off and will enable all the listed events.  The
347    events are in the same format as the rearm subcommand and depend
348    on the sensor type.  See the rearm command for details.  This will
349    only enable the given events, the other events will be left alone.
350    Response is:
351    Event enables set: <sensor>
352
353  * disable_events <sensor> msg|nomsg scan|noscan [<event> [<event> ...]]
354    - Disable event enable values.  This turns sensor messages and
355    scanning on and off and will disable all the listed events.  The
356    events are in the same format as the rearm subcommand and depend
357    on the sensor type.  See the rearm command for details.  This will
358    only disable the given events, the other events will be left alone.
359    Response is:
360    Event enables set: <sensor>
361
362* control
363
364  * list <entity> - List all controls
365    Response is:
366    Entity
367      Name: <entity>
368      Controls
369        Name: <control1>
370        Name: <control2>
371      .
372      .
373
374  * info <control>
375    Response is:
376    Control
377      Name: <control>
378      **CONTROL INFO**
379
380  * set <control> <values> - Set the value of a control.  The settings
381    depend on control type, most take one or more integer values.
382    An identifier type takes one or more unsigned characters.  A
383    light set with settings take the form 'lc|nolc <color> <on time>
384    <off time>.  lc and nolc turn on or of local control, the over
385    values should be obvious.  Note all lights support local control,
386    you need to see if it supports the value.
387
388  * get <control> - Get the value of a control.  The reponse depends
389    on the control type.  The main part is:
390    Control
391      Name: <control>
392
393    Response for setting lights is:
394    Light
395      Num: 0
396      Local Control: true | false
397      %Color: black | white | red | green | blue | yellow | orange
398      %On Time: <integer>
399      %Off Time: <integer>
400     .
401     .
402    Note that multiple lights may be present if the control supports
403    multiple lights.  The options values (marked with %) will not be
404    present if local control is set to true.  Local control means that
405    the LED takes whatever default function it does on the device
406    (like disk activity, ethernet activity, hot-swap LED, etc.).
407
408    Response for id control:
409    Data: <byte1> <byte2> ...
410
411    Response for other controls:
412    Value
413      Num: <integer>
414      Value: <integer>
415     .
416     .
417    There will be one Value for each value the control supports.
418
419* mc
420
421  * list <domain> - List all MCs
422    Response is:
423    Domain
424      Name: <domain>
425      MCs
426        Name: <mc1>
427        Name: <mc2>
428        .
429        .
430
431  * info <mc>
432    Response is:
433    MC
434      Name: <mc>
435      **MC INFO**
436
437  * reset <warm | cold> <mc> - Do a warm or cold reset on the given MC
438    Response is:
439    Reset done: <mc>
440
441  * msg <mc> <LUN> <NetFN> <Cmd> [data...] - Send the given command"
442    to the management controller and display the response.
443    Response
444      MC: <mc>
445      LUN: <lun>
446      NetFN: <netfn>
447      command: <cmd>
448      Data: <data bytes>
449
450  * set_events_enable <mc> <enable | disable> - enables or disables
451    events on the MC.
452    Response is:
453    Events enable done: <mc>
454
455  * get_events_enable <mc> - Prints out if the events are enabled for
456    the given MC.
457    Response is:
458    Events Enable: true | false
459
460  * sdrs <mc> <main | sensor> - list the SDRs for the mc.  Either gets
461    the main SDR repository or the sensor SDR repository.
462    Response is:
463    MC
464      Name: <mc>
465      SDR
466        Record ID: <integer>
467        Type: <integer>
468        Version: <integer>.<integer>
469        Data: <data bytes>
470      SDR
471        Record ID: <integer>
472        Type: <integer>
473        Version: <integer>.<integer>
474        Data: <data bytes>
475      .
476      .
477
478  * get_sel_time <mc> - Get the time in the SEL for the given MC
479    MC
480      Name: <mc>
481      SEL Time: <integer>
482
483  * sel_info <mc> - Dump information about the MC's SEL.
484    Response is:
485    SEL Count: <integer>
486    SEL Slots Used: <integer>
487
488* sel
489
490  * list <domain> - list the local copy of the system event log
491    Response is:
492    Domain
493      Name: <domain>
494      Entries: <integer>
495      Slots in use: <integer>
496      Event
497        **EVENT INFO**
498       .
499       .
500
501  * delete <mc> <record #> - Delete the given event number from the
502    SEL
503    Response is:
504    Event deleted
505      MC: <mc>
506      Record: <integer>
507
508  * add <mc> <type> <13 bytes of data> - Add the
509    event data to the SEL.
510    Response is:
511    MC
512      Name: <mc>
513      Record ID: <integer>
514
515  * clear <domain> - clear the system event log
516
517* con
518  * list <domain> - List all the connections in the domain.
519    Response is:
520    Domain
521      Name: <domain>
522      Connections
523        Name: <connection>
524        Name: <connection>
525        .
526        .
527
528  * info <connection>
529    Response is:
530    Connection
531      Name: <connection>
532      Active: true | false
533
534  * activate <connection> - Activate the given connection
535    Response is:
536    Connection activated: <connection>
537
538* pet
539
540  * list <domain> - List all the pets in the domain.
541    Response is:
542    Name: <pet>
543    Name: <pet>
544      .
545      .
546
547  * info <pet> - Dump information about a pet.
548    Response is:
549    PET
550      MC: <mc>
551      Channel: <channel>
552      IP Address: <ip address>
553      MAC Address: <mac address>
554      EFT Selector: <eft selector>
555      Policy Number: <policy number>
556      APT Selector: <apt selector>
557      LAN Dest Selector: <lan dest selector>
558
559  * new <domain> <connection> <channel> <ip addr> <mac_addr> <eft selector>
560    <policy num> <apt selector> <lan dest selector>
561    - Set up the domain to send PET traps from the given connection
562    to the given IP/MAC address over the given channel.
563    Response is:
564    PET Created: <pet>
565
566  * mcnew <mc> <channel> <ip addr> <mac_addr> <eft selector>
567    <policy num> <apt selector> <lan dest selector>
568    - Set up the domain to send PET traps from the given connection
569    to the given IP/MAC address over the given channel.  This takes
570    an MC instead of a connection.
571    Response is:
572    PET Created: <pet>
573
574  * close <pet> - Close the pet.
575    PET destroyed: <pet>
576
577* pef - commands dealing with platform even filters.  These are
578  basically connections to the PEF configuration parameters in an MC.
579  You use a pef to fetch a pef config, which you can then modify and
580  write back to the MC.  Note that when you get a pef config, you
581  claim a lock on the MC that must be unlocked.
582
583  * list <domain> - List all the pefs that currently exist in the
584    domain.
585    Response is:
586    Name: <pef>
587    Name: <pef>
588      .
589      .
590
591  * info <pef> - Dump info about the pef.
592    Response is:
593    PEF
594      Name: <pef>
595      MC: <mc>
596
597  * new <mc> - Create a pef for the given MC.
598    Response is:
599    PEF: <pef>
600
601  * unlock_mc <mc> - Unlock the PEF lock on the given MC.
602    Response is:
603    PEF unlocked: <mc>
604
605  * close <pef> - Free the given pef
606    PEF destroyed: <pef>
607
608  * config - commands dealing with PEF configurations.  These
609    are the actual PEF data items.
610
611    * list - list all the PEF configs
612      Response is:
613      PEFs
614        Name: <pef config>
615        Name: <pef config>
616        .
617        .
618
619    * info <pef config> - Dump information about the pef config.
620      Response is:
621      PEF Config
622        Name: <pef config>
623        ** PEF CONFIG **
624
625    * get <pef> - Fetch the pef data items from the pef
626      and create a pef config.
627      Response is:
628      PEF Config
629        Name: <pef config>
630        ** PEF CONFIG **
631
632    * update <pef config> <parm> [selector] <value> - Set the given parameter
633      in the pef config to the given value.  If the parameter has
634      a selector of some type, the selector must be given, otherwise
635      no selector should be given.
636      Response is:
637      PEF config updated: <pef config>
638
639    * set <pef> <pef config> - Write the pef data back
640      to the pef.  Note that this must be the same pef used
641      to create the config.
642      Response is:
643      PEF config set: <pef config>
644
645    * unlock <pef> <pef config> - Unlock the lock in the
646      MC and mark the pef config as unlocked.
647      Response is:
648      PEF config unlocked: <pef config>
649
650    * close <pef config> - Free the pef config.
651      PEF config destroyed: <pef config>
652
653* lanparm - commands dealing with lanparms.  These are basically
654  connections to the LAN configuration parameters in an MC.  You
655  use a lanparm to fetch a lanparm config, which you can then
656  modify and write back to the MC.  Note that when you get a
657  lanparm config, you claim a lock on the MC that must be
658  unlocked.
659
660  * list <domain> - List all the lanparms that currently exist in the
661    domain.
662    Response is:
663    Domain
664      Name: <domain>
665      LANPARMs
666        Name: <lanparm>
667        Name: <lanparm>
668        .
669        .
670
671  * info <lanparm> - Dump info about the lanparm.
672    Response is:
673    LANPARM
674      Name: <lanparm>
675      MC: <mc>
676      Channel: <integer>
677
678  * new <mc> <channel> - Create a lanparm for the given MC and
679    channel.
680    Response is:
681    LANPARM: <lanparm>
682
683  * unlock_mc <mc> <channel> - Unlock the lanparm lock on the given
684    MC and channel.
685    Response is:
686    LANPARM unlocked: <mc>
687
688  * close <lanparm> - Free the given lanparm
689    Response is:
690    LANPARM destroyed: <lanparm>
691
692  * config - commands dealing with lanparm configurations.  These
693    are the actual lanparm data items.
694
695    * list - list all the lanparm configs
696      Response is:
697      LANPARMS
698        Name: <lanparm config>
699        Name: <lanparm config>
700        .
701        .
702
703    * info <lanparm config> - Dump information about the lanparm config.
704      Response is:
705      LANPARM Config
706        Name: <lanparm config>
707        ** LANPARM CONFIG **
708
709    * get <lanparm> - Fetch the lanparm data items from the lanparm
710      and create a lanparm config.
711      Response is:
712      LANPARM Config
713        Name: <lanparm config>
714        ** LANPARM CONFIG **
715
716    * set <lanparm> <lanparm config> - Write the lanparm data back
717      to the lanparm.  Note that this must be the same lanparm used
718      to create the config.
719      Response is:
720      LANPARM config set: <lanparm config>
721
722    * unlock <lanparm> <lanparm config> - Unlock the lock in the
723      MC and mark the lanparm config as unlocked.
724      Response is:
725      LANPARM config unlocked: <lanparm config>
726
727    * close <lanparm config> - Free the lanparm config.
728      Response is:
729      LANPARM config destroyed: <lanparm config>
730
731* general
732  * evinfo true | false - Turn on or off dumping object information
733    when an event comes in.  This is false by default.
734
735  * debug <type> on|off - Turn the given debugging type on or off
736
737
738EVENTS
739======
740
741The command language will output events to the console when they
742happen.  Events all occur in the format:
743  Event
744    **EVENT INFO**
745
746The event info varies on the type of events.  The defined events are
747listed.
748
749The following event is output when the domain is completely up and
750operational and finished all it SDR, FRU, and bus scans:
751  EVENT
752    Object Type: Domain
753    Name: <domain>
754    Operation: Domain fully up
755    Connection Number: <integer>
756    Port Number: <integer>
757    Any Connection Up: true | false
758    Error: <integer>
759
760The following comes out when domain connection infomration changes:
761  EVENT
762    Object Type: Domain
763    Name: <domain>
764    Operation: Connection Change
765
766The following comes out when domains are added:
767  EVENT
768    Object Type: Domain
769    Name: <domain>
770    Operation: Add
771    %**DOMAIN INFO**
772
773The following comes out when domains are destroyed:
774  EVENT
775    Object Type: Domain
776    Name: <domain>
777    Operation: Delete
778
779The following comes out when the domain gets an event that does not
780have a handler:
781  EVENT
782    Object Type: Event
783    **EVENT INFO**
784
785The following comes out when an entity is added:
786  EVENT
787    Object Type: Entity
788    Name: <entity>
789    Operation: Add
790    %**ENTITY INFO**
791
792The following comes out when an entity is deleted:
793  EVENT
794    Object Type: Entity
795    Name: <entity>
796    Operation: Delete
797
798The following comes out when an entity is changed:
799  EVENT
800    Object Type: Entity
801    Name: <entity>
802    Operation: Change
803    %**ENTITY INFO**
804
805The following comes out when an entity's FRU is added:
806  EVENT
807    Object Type: Entity FRU
808    Name: <entity>
809    Operation: Add
810    %**FRU INFO**
811
812The following comes out when an entity's FRU is deleted:
813  EVENT
814    Object Type: Entity FRU
815    Name: <entity>
816    Operation: Delete
817
818The following comes out when an entity's FRU is changed:
819  EVENT
820    Object Type: Entity FRU
821    Name: <entity>
822    Operation: Change
823    %**FRU INFO**
824
825The following comes out when an entity's presence changes:
826  EVENT
827    Object Type: Entity
828    Name: <entity>
829    Operation: Presence Change
830    Present: true | false
831    %Event
832      **EVENT INFO**
833
834The following comes out when an entity's hot-swap state changes:
835  EVENT
836    Object Type: Entity
837    Name: <entity>
838    Operation: Hot-Swap Change
839    Last State: not_present | inactive | activation_requested |
840               activation_in_progress | active | deactivation_requested |
841               deactivation_in_progress | out_of_con
842    State: not_present | inactive | activation_requested |
843               activation_in_progress | active | deactivation_requested |
844               deactivation_in_progress | out_of_con
845    %Event
846      **EVENT INFO**
847
848The following comes out when a discrete sensor gets an event:
849  EVENT
850    Object Type: Sensor
851    Name: <sensor>
852    Operation: Event
853    Offset: <integer>
854    Direction: assertion | deassertion
855    Severity: <integer>
856    Previous Severity: <integer>
857    %Event
858      **EVENT INFO**
859
860The following comes out when a threshold sensor gets an event:
861  EVENT
862    Object Type: Sensor
863    Name: <sensor>
864    Operation: Event
865    Threshold: lower non critical | lower critical | lower non recoverable
866              | upper non critical | upper critical | upper non recoverable
867    High/Low: going high | going low
868    Direction: assertion | deassertion
869    %Value: <double>
870    %Raw Value: <integer>
871    %Event
872      **EVENT INFO**
873
874The following comes out when a sensor is added:
875  EVENT
876    Object Type: Sensor
877    Name: <sensor>
878    Operation: Add
879    %**SENSOR INFO**
880
881The following comes out when a sensor is deleted:
882  EVENT
883    Object Type: Sensor
884    Name: <sensor>
885    Operation: Delete
886
887The following comes out when a sensor is changed:
888  EVENT
889    Object Type: Sensor
890    Name: <sensor>
891    Operation: Change
892    %**SENSOR INFO**
893
894The following comes out when a control gets an event:
895  EVENT
896    Object Type: Control
897    Name: <control>
898    Operation: Event
899    Value
900      Number: <integer>
901      Value: <integer>
902    %Event
903      **EVENT INFO**
904
905The following comes out when a control is added:
906  EVENT
907    Object Type: Control
908    Name: <control>
909    Operation: Add
910    %**CONTROL INFO**
911
912The following comes out when a control is deleted:
913  EVENT
914    Object Type: Control
915    Name: <control>
916    Operation: Delete
917
918The following comes out when a control is changed:
919  EVENT
920    Object Type: Control
921    Name: <control>
922    Operation: Change
923    %**CONTROL INFO**
924
925
926OBJECT INFO
927===========
928
929**EVENT INFO**
930  MC: <mc>
931  Record ID: <integer>
932  Event type: <integer>
933  Timestamp: <integer>
934  Data: <data bytes>
935
936
937**DOMAIN INFO**
938  Type: <domain type>
939  SEL Rescan Time: <time>
940  IPMB Rescan Time: <time>
941
942
943**ENTITY INFO**
944  Type: unknown | mc | fru | generic
945  Present: true | false
946  Presence sensor always there: true | false
947  Hot swappable: true | false
948  Parents
949    Name: <entity>
950    Name: <entity>
951      .
952      .
953  Children
954    Name: <entity>
955    Name: <entity>
956      .
957      .
958
959Note that Parents and Children fields will not be present if the
960entity has no parents or children.  Each entity type except "unknown"
961will have its own output info.  These are:
962
963mc:
964  Channel: <channel>
965  LUN: <lun>
966  OEM: <oem field from SDR>
967  Slave Address: <ipmb>
968  ACPI_system_power_notify_required: true | false
969  ACPI_device_power_notify_required: true | false
970  controller_logs_init_agent_errors: true | false
971  log_init_agent_errors_accessing: true | false
972  global_init: true | false
973  chassis_device: true | false
974  bridge: true | false
975  IPMB_event_generator: true | false
976  IPMB_event_receiver: true | false
977  FRU_inventory_device: true | false
978  SEL_device: true | false
979  SDR_repository_device: true | false
980  sensor_device: true | false
981
982fru:
983  Channel: <channel>
984  LUN: <lun>
985  OEM: <oem field from SDR>
986  Slave Address: <ipmb>
987  access_address: <ipmb>
988  private_bus_id: <integer>
989  device_type: <integer>
990  device_modifier: <integer>
991  is_logical_fru: true | false
992  fru_device_id: <integer>
993
994generic:
995  Channel: <channel>
996  LUN: <lun>
997  OEM: <oem field from SDR>
998  access_address: <ipmb>
999  private_bus_id: <integer>
1000  device_type: <integer>
1001  device_modifier: <integer>
1002  slave_address: <ipmb>
1003  address_span: <integer>
1004
1005
1006**MC INFO **
1007  provides_device_sdrs: true | false
1008  device_available: true | false
1009  chassis_support: true | false
1010  bridge_support: true | false
1011  ipmb_event_generator: true | false
1012  ipmb_event_receiver: true | false
1013  fru_inventory_support: true | false
1014  sel_device_support: true | false
1015  sdr_repository_support: true | false
1016  sensor_device_support: true | false
1017  device_id: <ipmb>
1018  device_revision: <integer>
1019  fw_revision: <integer>.<integer>
1020  version: <integer>.<integer>
1021  manufacturer_id: <integer>
1022  product_id: <integer>
1023  aux_fw_revision: <integer> <integer> <integer> <integer>
1024
1025
1026*SENSOR INFO**
1027  LUN: <integer>
1028  Number: <integer>
1029  Event Reading Type: <integer>
1030  Event Reading Type Name: one of:
1031           unspecified threshold discrete_usage discrete_state
1032           discrete_predictive_failure discrete_limit_exceeded
1033           discrete_performance_met discrete_severity discrete_device_presence
1034           discrete_device_enable discrete_availability discrete_redundancy
1035           discrete_acpi_power
1036
1037  Type: <integer>
1038  Type Name: <sensor type (a generic string)>
1039  %Event Support: per state | entire sensor | global
1040  Init Scanning: true | false
1041  Init Events: true | false
1042  Init Thresholds: true | false
1043  Init Hysteresis: true | false
1044  Init Type: true | false
1045  Init Power Up Events: true | false
1046  Init Power Up Scanning: true | false
1047  Ignore If No Entity: true | false
1048  Auto Rearm: true | false
1049  OEM1: <integer>
1050  Id: <string>
1051
1052For sensors of type "threshold", the following exist:
1053  Threshold Access: none | readable | settable | fixed
1054  Threshold
1055    Name: lower non critical | lower critical | lower non recoverable
1056          | upper non critical | upper critical | upper non recoverable
1057    Readable: true | false
1058    Settable: true | false
1059    Supports: going high assertion | going low assertion
1060              | going high deassertion | going low deassertion
1061      .
1062      .
1063    .
1064    .
1065    Hysteresis Support: none | readable | settable | fixed
1066    %Nominal Reading: <float>
1067    %Normal Max: <float>
1068    %Normal Min: <float>
1069    %Sensor Max: <float>
1070    %Sensor Min: <float>
1071    Base Unit: <integer>
1072    Base Unit Name: <string>
1073    %Rate Unit: <integer>
1074    %Rate Unit Name: <string>
1075    %Modifier Use: / | *
1076    %Modifier Unit: <integer>
1077    %Modifier Unit Name: <string>
1078
1079For sensors of type not "threshold", the following exist:
1080  Event
1081    Offset: <integer>
1082    Supports: assertion | deassertion
1083      .
1084      .
1085    .
1086    .
1087
1088Fields marked with % are optional
1089
1090
1091**CONTROL INFO**
1092  Type: <control type>
1093  Generates Events: true | false
1094  Settable: true | false
1095  Readable: true | false
1096  Num Values: <integer>
1097  Id: <string>
1098
1099  Controls of type light that are set with settings have the
1100  following:
1101  Set with: settings
1102  Local Control: true | false
1103  Color: black | white | red | green | blue | yellow | orange
1104    .
1105    .
1106  One color is listed for each supported color
1107
1108  Controls of type light that are set with transitions have the
1109  following:
1110  Light
1111    Number: <integer>
1112    Num Values: <integer>
1113    Value
1114      Number: <integer>
1115      Num Transitions: <integer>
1116      Transition
1117        Number: <integer>
1118        Color: black | white | red | green | blue | yellow | orange
1119        Time: <integer>
1120        .
1121        .
1122      .
1123      .
1124    .
1125    .
1126
1127  Controls of type identifier have the following:
1128  Max Length: <integer>
1129
1130
1131**FRU INFO**
1132  %Internal area version: <integer>
1133  %Internal area length: <integer>
1134  %Internal area data: <data bytes>
1135  %Chassis info version: <integer>
1136  %Chassis info type: <integer>
1137  %Record
1138    Name: Chassis info part number
1139    Type: binary | ascii | unicode
1140    Data: <data in the above format>
1141  %Record
1142    Name: Chassis info serial number
1143    Type: binary | ascii | unicode
1144    Data: <data in the above format>
1145  %String Field
1146    Name: Chassis info
1147    Number: <integer>
1148    Type: binary | ascii | unicode
1149    Data: <data in the above format>
1150   .
1151   .
1152  %Board info version: <integer>
1153  %Board info lang code: <integer>
1154  %Board info mfg time: <integer>
1155  %Record
1156    Name: Board info board manufacturer
1157    Type: binary | ascii | unicode
1158    Data: <data in the above format>
1159  %Record
1160    Name: Board info board product name
1161    Type: binary | ascii | unicode
1162    Data: <data in the above format>
1163  %Record
1164    Name: Board info board serial number
1165    Type: binary | ascii | unicode
1166    Data: <data in the above format>
1167  %Record
1168    Name: Board info board part number
1169    Type: binary | ascii | unicode
1170    Data: <data in the above format>
1171  %Record
1172    Name: Board info fru file id
1173    Type: binary | ascii | unicode
1174    Data: <data in the above format>
1175  %String Field
1176    Name: Board info
1177    Number: <integer>
1178    Type: binary | ascii | unicode
1179    Data: <data in the above format>
1180   .
1181   .
1182  %Product info version: <integer>
1183  %Product info lang code: <integer>
1184  %Record
1185    Name: Product info manufacturer name
1186    Type: binary | ascii | unicode
1187    Data: <data in the above format>
1188  %Record
1189    Name: Product info product name
1190    Type: binary | ascii | unicode
1191    Data: <data in the above format>
1192  %Record
1193    Name: Product info product part model number
1194    Type: binary | ascii | unicode
1195    Data: <data in the above format>
1196  %Record
1197    Name: Product info product version
1198    Type: binary | ascii | unicode
1199    Data: <data in the above format>
1200  %Record
1201    Name: Product info product serial number
1202    Type: binary | ascii | unicode
1203    Data: <data in the above format>
1204  %Record
1205    Name: Product info asset tag
1206    Type: binary | ascii | unicode
1207    Data: <data in the above format>
1208  %Record
1209    Name: Product info fru file id
1210    Type: binary | ascii | unicode
1211    Data: <data in the above format>
1212  %String Field
1213    Name: Product info
1214    Number: <integer>
1215    Type: binary | ascii | unicode
1216    Data: <data in the above format>
1217   .
1218   .
1219  %Multi-record
1220    Number: <integer>
1221    Type: binary | ascii | unicode
1222    Data: <data in the above format>
1223
1224
1225** LANPARM CONFIG **
1226  support_auth_oem: true | false
1227  support_auth_straight: true | false
1228  support_auth_md5: true | false
1229  support_auth_md2: true | false
1230  support_auth_none: true | false
1231  ip_addr_source: <integer>
1232  num_alert_destinations: <integer>
1233  %ipv4_ttl: <integer>
1234  %ipv4_flags: <integer>
1235  %ipv4_precedence: <integer>
1236  %ipv4_tos: <integer>
1237  %ip_addr: <ip addr>
1238  %mac_addr: <mac addr>
1239  %subnet_mask: <ip addr>
1240  %primary_rmcp_port <integer>
1241  %secondary_rmcp_port <integer>
1242  %bmc_generated_arps: true | false
1243  %bmc_generated_garps: true | false
1244  %garp_interval: <integer>
1245  %default_gateway_ip_addr: <ip addr>
1246  %default_gateway_mac_addr: <mac addr>
1247  %backup_gateway_ip_addr: <ip addr>
1248  %backup_gateway_mac_addr: <mac addr>
1249  community_string: <string>
1250  User
1251    Name: callback
1252    enable_auth_oem: true | false
1253    enable_auth_straight: true | false
1254    enable_auth_md5: true | false
1255    enable_auth_md2: true | false
1256    enable_auth_none: true | false
1257  User
1258    Name: user
1259    enable_auth_oem: true | false
1260    enable_auth_straight: true | false
1261    enable_auth_md5: true | false
1262    enable_auth_md2: true | false
1263    enable_auth_none: true | false
1264  User
1265    Name: operator
1266    enable_auth_oem: true | false
1267    enable_auth_straight: true | false
1268    enable_auth_md5: true | false
1269    enable_auth_md2: true | false
1270    enable_auth_none: true | false
1271  User
1272    Name: admin
1273    enable_auth_oem: true | false
1274    enable_auth_straight: true | false
1275    enable_auth_md5: true | false
1276    enable_auth_md2: true | false
1277    enable_auth_none: true | false
1278  User
1279    Name: oem
1280    enable_auth_oem: true | false
1281    enable_auth_straight: true | false
1282    enable_auth_md5: true | false
1283    enable_auth_md2: true | false
1284    enable_auth_none: true | false
1285  Alert Destination
1286    Number: <integer>
1287    alert_ack: true | false
1288    dest_type: <integer>
1289    alert_retry_interval: <integer>
1290    max_alert_retries: <integer>
1291    dest_format: <integer>
1292    gw_to_use: <integer>
1293    dest_ip_addr: <ip addr>
1294    dest_mac_addr: <mac addr>
1295   .
1296   .
1297
1298
1299** PEF CONFIG **
1300  alert_startup_delay_enabled: true | false
1301  startup_delay_enabled: true | false
1302  event_messages_enabled: true | false
1303  pef_enabled: true | false
1304  diagnostic_interrupt_enabled: true | false
1305  oem_action_enabled: true | false
1306  power_cycle_enabled: true | false
1307  reset_enabled: true | false
1308  power_down_enabled: true | false
1309  alert_enabled: true | false
1310  %startup_delay: <integer>
1311  %alert_startup_delay: <integer>
1312  guid_enabled: true | false
1313  guid_val: <guid>
1314  num_event_filters: <integer>
1315  num_alert_policies: <integer>
1316  num_alert_strings: <integer>
1317  Event Filter
1318    Number: <integer>
1319    enable_filter: true | false
1320    filter_type: <integer>
1321    diagnostic_interrupt: true | false
1322    oem_action: true | false
1323    power_cycle: true | false
1324    reset: true | false
1325    power_down: true | false
1326    alert: true | false
1327    alert_policy_number: <integer>
1328    event_severity: <integer>
1329    generator_id_addr: <integer>
1330    generator_id_channel_lun: <integer>
1331    sensor_type: <integer>
1332    sensor_number: <integer>
1333    event_trigger: <integer>
1334    data1_offset_mask: <integer>
1335    data1_mask: <integer>
1336    data1_compare1: <integer>
1337    data1_compare2: <integer>
1338    data2_mask: <integer>
1339    data2_compare1: <integer>
1340    data2_compare2: <integer>
1341    data3_mask: <integer>
1342    data3_compare1: <integer>
1343    data3_compare2: <integer>
1344   .
1345   .
1346  Alert Policy
1347    Number: <integer>
1348    policy_num: <integer>
1349    enabled: true | false
1350    policy: <integer>
1351    channel: <integer>
1352    destination_selector: <integer>
1353    alert_string_event_specific: true | false
1354    alert_string_selector: <integer>
1355   .
1356   .
1357  Alert String
1358    event_filter: <integer>
1359    alert_string_set: <integer>
1360    alert_string: <string>
1361   .
1362   .
1363
1364**CONNECTION INFO**
1365  Active: true | false
1366
1367**PEF INFO**
1368  MC: <mc>
1369
1370**PET INFO**
1371  MC: <mc>
1372  Channel: <channel>
1373  IP Address: <ip address>
1374  MAC Address: <mac address>
1375  EFT Selector: <eft selector>
1376  Policy Number: <policy number>
1377  APT Selector: <apt selector>
1378  LAN Dest Selector: <lan dest selector>
1379
1380**LANPARM INFO**
1381  MC: <mc>
1382  Channel: <integer>
1383