This file is indexed.

/usr/include/freeipmi/spec/ipmi-comp-code-spec.h is in libfreeipmi-dev 1.4.11-1.1+b1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
/*
 * Copyright (C) 2003-2014 FreeIPMI Core Team
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * 
 */


#ifndef IPMI_COMP_CODE_SPEC_H
#define IPMI_COMP_CODE_SPEC_H

#ifdef __cplusplus
extern "C" {
#endif

#define IPMI_COMP_CODE_COMMAND_SUCCESS                               0x00
#define IPMI_COMP_CODE_COMMAND_SUCCESS_STR \
  "Command Completed Normally."

#define IPMI_COMP_CODE_NODE_BUSY                                     0xC0
#define IPMI_COMP_CODE_NODE_BUSY_STR \
  "Node Busy. Command could not be processed because command " \
  "processing resources are temporarily unavailable."

#define IPMI_COMP_CODE_INVALID_COMMAND                               0xC1
#define IPMI_COMP_CODE_INVALID_COMMAND_STR \
  "Invalid Command. Used to indicate an unrecognized or unsupported command."


#define IPMI_COMP_CODE_COMMAND_INVALID_FOR_LUN                       0xC2
#define IPMI_COMP_CODE_COMMAND_INVALID_FOR_LUN_STR \
  "Command invalid for given LUN."

#define IPMI_COMP_CODE_COMMAND_TIMEOUT                               0xC3
#define IPMI_COMP_CODE_COMMAND_TIMEOUT_STR \
  "Timeout while processing command. Response unavailable."

#define IPMI_COMP_CODE_OUT_OF_SPACE                                  0xC4
#define IPMI_COMP_CODE_OUT_OF_SPACE_STR \
  "Out of space. Command could not be completed because of a " \
  "lack of storage space required to execute the given command " \
  "operation."

#define IPMI_COMP_CODE_RESERVATION_CANCELLED                         0xC5
#define IPMI_COMP_CODE_RESERVATION_CANCELLED_STR \
  "Reservation Canceled or Invalid Reservation ID."

#define IPMI_COMP_CODE_INVALID_RESERVATION_ID     IPMI_COMP_CODE_RESERVATION_CANCELLED
#define IPMI_COMP_CODE_INVALID_RESERVATION_ID_STR IPMI_COMP_CODE_RESERVATION_CANCELLED_STR

#define IPMI_COMP_CODE_REQUEST_DATA_TRUNCATED                        0xC6
#define IPMI_COMP_CODE_REQUEST_DATA_TRUNCATED_STR \
  "Request data truncated."

#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_INVALID                   0xC7
#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_INVALID_STR \
  "Request data length invalid."

#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_LIMIT_EXCEEDED            0xC8
#define IPMI_COMP_CODE_REQUEST_DATA_LENGTH_LIMIT_EXCEEDED_STR \
  "Request data field length limit exceeded."

#define IPMI_COMP_CODE_PARAMETER_OUT_OF_RANGE                        0xC9
#define IPMI_COMP_CODE_PARAMETER_OUT_OF_RANGE_STR \
  "Parameter out of range. One or more parameters in the data " \
  "field of the Request are out of range. This is different from  " \
  "'Invalid data field' (CCh) code in that it indicates that the " \
  "erroneous field(s) has a contiguous range of possible values."

#define IPMI_COMP_CODE_CANNOT_RETURN_REQUESTED_NUMBER_OF_BYTES       0xCA
#define IPMI_COMP_CODE_CANNOT_RETURN_REQUESTED_NUMBER_OF_BYTES_STR \
  "Cannot return number of requested data bytes."

#define IPMI_COMP_CODE_REQUESTED_SENSOR_DATA_OR_RECORD_NOT_PRESENT   0xCB
#define IPMI_COMP_CODE_REQUESTED_SENSOR_DATA_OR_RECORD_NOT_PRESENT_STR \
  "Requested Sensor, data, or record not present."

#define IPMI_COMP_CODE_INVALID_DATA_FIELD_IN_REQUEST                 0xCC
#define IPMI_COMP_CODE_INVALID_DATA_FIELD_IN_REQUEST_STR \
  "Invalid data field in Request"

#define IPMI_COMP_CODE_COMMAND_ILLEGAL_FOR_SENSOR_OR_RECORD_TYPE     0xCD
#define IPMI_COMP_CODE_COMMAND_ILLEGAL_FOR_SENSOR_OR_RECORD_TYPE_STR \
  "Command illegal for specified sensor or record type."

#define IPMI_COMP_CODE_COMMAND_RESPONSE_COULD_NOT_BE_PROVIDED        0xCE
#define IPMI_COMP_CODE_COMMAND_RESPONSE_COULD_NOT_BE_PROVIDED_STR \
  "Command response could not be provided."

#define IPMI_COMP_CODE_CANNOT_EXECUTE_DUPLICATE_REQUEST              0xCF
#define IPMI_COMP_CODE_CANNOT_EXECUTE_DUPLICATE_REQUEST_STR \
  "Cannot execute duplicated request. This completion code is " \
  "for devices which cannot return the response that was returned " \
  "for the original instance of the request. Such devices should " \
  "provide separate commands that allow the completion status of " \
  "the original request to be determined. An Event Receiver does not " \
  "use this completion code, but returns the 00h completion code in " \
  "the response to (valid) duplicated requests."

#define IPMI_COMP_CODE_SDR_REPOSITORY_IN_UPDATE_MODE                 0xD0
#define IPMI_COMP_CODE_SDR_REPOSITORY_IN_UPDATE_MODE_STR \
  "Command response could not be provided. SDR Repository in " \
  "update mode."

#define IPMI_COMP_CODE_DEVICE_IN_FIRMWARE_UPDATE_MODE                0xD1
#define IPMI_COMP_CODE_DEVICE_IN_FIRMWARE_UPDATE_MODE_STR \
  "Command response could not be provided. Device in firmware " \
  "update mode."

#define IPMI_COMP_CODE_BMC_INITIALIZATION_IN_PROGRESS                0xD2
#define IPMI_COMP_CODE_BMC_INITIALIZATION_IN_PROGRESS_STR \
  "Command response could not be provided. BMC initialization or " \
  "initialization agent in progress."

#define IPMI_COMP_CODE_DESTINATION_UNAVAILABLE                       0xD3
#define IPMI_COMP_CODE_DESTINATION_UNAVAILABLE_STR \
  "Destination unavailable. Cannot deliver request to selected " \
  "destination. E.g. this code can be returned if a request message " \
  "is targeted to SMS, but receive message queue reception is disabled " \
  "for the particular channel."

#define IPMI_COMP_CODE_INSUFFICIENT_PRIVILEGE_LEVEL                  0xD4
#define IPMI_COMP_CODE_INSUFFICIENT_PRIVILEGE_LEVEL_STR \
  "Cannot execute command due to insufficient privilege level or other " \
  "security-based restriction (e.g. disabled for 'firmware firewall')."

#define IPMI_COMP_CODE_REQUEST_PARAMETER_NOT_SUPPORTED               0xD5
#define IPMI_COMP_CODE_REQUEST_PARAMETER_NOT_SUPPORTED_STR \
  "Cannot execute command. Command, or request parameter(s), not " \
  "supported in present state."

#define IPMI_COMP_CODE_REQUEST_PARAMETER_ILLEGAL                     0xD6
#define IPMI_COMP_CODE_REQUEST_PARAMETER_ILLEGAL_STR \
  "Cannot execute command. Parameter is illegal because command " \
  "sub-function has been disabled or is unavailable " \
  "(e.g. disabled for 'firmware firewall')."

#define IPMI_COMP_CODE_UNSPECIFIED_ERROR                             0xFF
#define IPMI_COMP_CODE_UNSPECIFIED_ERROR_STR \
  "Unspecified error."

/* DEVICE-SPECIFIC (OEM) CODES 01h-7Eh
   This range is used for command-specific codes that are also
   specific for a particular device and version. A-priori knowledge of
   the device command set is required for interpretation of these
   codes. */

/* COMMAND-SPECIFIC CODES 80h-BEh 80h-BEh
   Standard command-specific codes. This range is reserved for
   command-specific completion codes for commands specified in this
   document. */

/*
 * IPMI Device "Global Commands"
 */

/* IPMI_CMD_SET_COMMAND_ENABLES */
#define IPMI_COMP_CODE_SET_COMMAND_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND                  0x80
#define IPMI_COMP_CODE_SET_COMMAND_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND_STR \
  "attempt to enable an unsupported or un-configurable command"

/* IPMI_CMD_SET_COMMAND_SUB_FUNCTION_ENABLES */
#define IPMI_COMP_CODE_SET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND     0x80
#define IPMI_COMP_CODE_SET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND_STR \
  "attempt to enable an unsupported or un-configurable command"

/* IPMI_CMD_GET_COMMAND_SUB_FUNCTION_ENABLES */
#define IPMI_COMP_CODE_GET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND     0x80
#define IPMI_COMP_CODE_GET_COMMAND_SUB_FUNCTION_ENABLES_ATTMPT_TO_ENABLE_AN_UNSUPPORTED_OR_UNCONFIGURABLE_COMMAND_STR \
  "attempt to enable an unsupported or un-configurable command"

/*
 * BMC Watchdog Timer Commands
 */

/* IPMI_CMD_RESET_WATCHDOG_TIMER */
#define IPMI_COMP_CODE_RESET_WATCHDOG_TIMER_ATTEMPT_TO_START_UNINITIALIZED_WATCHDOG                                   0x80
#define IPMI_COMP_CODE_RESET_WATCHDOG_TIMER_ATTEMPT_TO_START_UNINITIALIZED_WATCHDOG_STR \
  "Attempt to start un-initialized watchdog."

/*
 * BMC Device and Messaging Commands
 */

/* IPMI_CMD_GET_MESSAGE */

#define IPMI_COMP_CODE_GET_MESSAGE_DATA_NOT_AVAILABLE                                                                 0x80
#define IPMI_COMP_CODE_GET_MESSAGE_DATA_NOT_AVAILABLE_STR \
  "data not available (queue/buffer empty)"

/* IPMI_CMD_SEND_MESSAGE */

#define IPMI_COMP_CODE_SEND_MESSAGE_INVALID_SESSION_HANDLE                                                            0x80
#define IPMI_COMP_CODE_SEND_MESSAGE_INVALID_SESSION_HANDLE_STR \
  "Invalid Session Handle.  The session handle does not match up with any " \
  "currently active sessions for this channel."

#define IPMI_COMP_CODE_SEND_MESSAGE_LOST_ARBITRATION                                                                  0x81
#define IPMI_COMP_CODE_SEND_MESSAGE_LOST_ARBITRATION_STR \
  "Lost Arbitration"

#define IPMI_COMP_CODE_SEND_MESSAGE_BUS_ERROR                                                                         0x82
#define IPMI_COMP_CODE_SEND_MESSAGE_BUS_ERROR_STR \
  "Bus Error"

#define IPMI_COMP_CODE_SEND_MESSAGE_NAK_ON_WRITE                                                                      0x83
#define IPMI_COMP_CODE_SEND_MESSAGE_NAK_ON_WRITE_STR \
  "NAK on Write"

/* IPMI_CMD_MASTER_WRITE_READ */

#define IPMI_COMP_CODE_MASTER_WRITE_READ_LOST_ARBITRATION                                                             0x81
#define IPMI_COMP_CODE_MASTER_WRITE_READ_LOST_ARBITRATION_STR \
  "Lost Arbitration"

#define IPMI_COMP_CODE_MASTER_WRITE_READ_BUS_ERROR                                                                    0x82
#define IPMI_COMP_CODE_MASTER_WRITE_READ_BUS_ERROR_STR \
  "Bus Error"

#define IPMI_COMP_CODE_MASTER_WRITE_READ_NAK_ON_WRITE                                                                 0x83
#define IPMI_COMP_CODE_MASTER_WRITE_READ_NAK_ON_WRITE_STR \
  "NAK on Write"

#define IPMI_COMP_CODE_MASTER_WRITE_READ_TRUNCATED_READ                                                               0x84
#define IPMI_COMP_CODE_MASTER_WRITE_READ_TRUNCATED_READ_STR \
  "Truncated Read"

/* IPMI_CMD_SET_SYSTEM_INFO_PARAMETERS */

#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED                                             0x80
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_INVALID_SET_IN_PROGRESS                                             0x81
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
  "attempt to set the 'set in progress' value (in parameter #0) " \
  "when not int the 'set complete' state."

#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_WRITE_READ_ONLY_PARAMETER                                           0x82
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_READ_WRITE_ONLY_PARAMETER                                           0x83
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SYSTEM_INFO_PARAMETERS */

#define IPMI_COMP_CODE_GET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED                                             0x80
#define IPMI_COMP_CODE_GET_SYSTEM_INFO_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/* IPMI_CMD_GET_SESSION_CHALLENGE */

#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_INVALID_USERNAME                                                         0x81
#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_INVALID_USERNAME_STR \
  "Invalid user name"

#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_NULL_USERNAME_NOT_ENABLED                                                0x82
#define IPMI_COMP_CODE_GET_SESSION_CHALLENGE_NULL_USERNAME_NOT_ENABLED_STR \
  "Null user name (User 1) not enabled"

/* IPMI_CMD_ACTIVATE_SESSION */

#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SESSION_SLOT_AVAILABLE                                                     0x81
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SESSION_SLOT_AVAILABLE_STR \
  "No session slot available (BMC cannot accept any more sessions)"

#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILABLE_FOR_GIVEN_USER                                              0x82
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILABLE_FOR_GIVEN_USER_STR \
  "No slot available for given user. (Limit of user sessions " \
  "allowed under that name has been reached)"

#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILABLE_TO_SUPPORT_USER                                             0x83
#define IPMI_COMP_CODE_ACTIVATE_SESSION_NO_SLOT_AVAILALBE_TO_SUPPORT_USER_STR \
  "No slot available to support user due to maximum privilege " \
  "capability. (An implementation may only be able to support " \
  "a certain number of sessions based on what authentication " \
  "resources are required. For example, if User Level " \
  "Authentication is disabled, an implementation may be able " \
  "to allow a larger number of users that are limited to User " \
  "Level privilege, than users that require higher privilege."

#define IPMI_COMP_CODE_ACTIVATE_SESSION_SESSION_SEQ_NUM_OUT_OF_RANGE                                                  0x84
#define IPMI_COMP_CODE_ACTIVATE_SESSION_SESSION_SEQ_NUM_OUT_OF_RANGE_STR \
  "Session sequence number out-of-range"

#define IPMI_COMP_CODE_ACTIVATE_SESSION_INVALID_SESSION_ID                                                            0x85
#define IPMI_COMP_CODE_ACTIVATE_SESSION_INVALID_SESSION_ID_STR \
  "Invalid session ID in request"

#define IPMI_COMP_CODE_ACTIVATE_SESSION_EXCEEDS_PRIVILEGE_LEVEL                                                       0x86
#define IPMI_COMP_CODE_ACTIVATE_SESSION_EXCEEDS_PRIVILEGE_LEVEL_STR \
  "Requested maximum privilege level exceeds user and/or " \
  "channel privilege limit"

/* IPMI_CMD_SET_SESSION_PRIVILEGE_LEVEL */

#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_NOT_AVAILABLE_FOR_USER                             0x81
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_NOT_AVAILABLE_FOR_USER_STR \
  "Requested level not available for this user"

#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_EXCEEDS_USER_PRIVILEGE_LIMIT                       0x82
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_REQUESTED_LEVEL_EXCEEDS_USER_PRIVILEGE_LIMIT_STR \
  "Requested level exceeds Channel and/or User Privilege Limit"

#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_CANNOT_DISABLE_USER_LEVEL_AUTHENTICATION                           0x83
#define IPMI_COMP_CODE_SET_SESSION_PRIVILEGE_LEVEL_CANNOT_DISABLE_USER_LEVEL_AUTHENTICATION_STR \
  "Cannot disable User Level authentication"

/* IPMI_CMD_CLOSE_SESSION */

#define IPMI_COMP_CODE_CLOSE_SESSION_INVALID_SESSION_ID_IN_REQUEST                                                    0x87
#define IPMI_COMP_CODE_CLOSE_SESSION_INVALID_SESSION_ID_IN_REQUEST_STR \
  "Invalid session ID in request"

/* IPMI_CMD_SET_CHANNEL_ACCESS */
#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_SET_NOT_SUPPORTED_ON_SELECTED_CHANNEL                                       0x82
#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_SET_NOT_SUPPORTED_ON_SELECTED_CHANNEL_STR \
  "set not supported on selected channel"

#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_ACCESS_MODE_NOT_SUPPORTED                                                   0x83
#define IPMI_COMP_CODE_SET_CHANNEL_ACCESS_ACCESS_MODE_NOT_SUPPORTED_STR \
  "access mode not supported"

/* IPMI_CMD_GET_CHANNEL_ACCESS */
#define IPMI_COMP_CODE_GET_CHANNEL_ACCESS_COMMAND_NOT_SUPPORTED_FOR_SELECTED_CHANNEL                                  0x82
#define IPMI_COMP_CODE_GET_CHANNEL_ACCESS_COMMAND_NOT_SUPPORTED_FOR_SELECTED_CHANNEL_STR \
  "command not supported for selected channel"

/* IPMI_CMD_SET_USER_PASSWORD_COMMAND */
#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_CORRECT                           0x80
#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_CORRECT_STR \
  "password test failed.  Password size correct, but password " \
  "data does not match stored value."

#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_INCORRECT                         0x81
#define IPMI_COMP_CODE_SET_USER_PASSWORD_COMMAND_PASSWORD_TEST_FAILED_PASSWORD_SIZE_INCORRECT_STR \
  "password test failed.  Wrong password size was used."

/* IPMI_CMD_ACTIVATE_PAYLOAD */
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ALREADY_ACTIVE_ON_ANOTHER_SESSION                                     0x80
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ALREADY_ACTIVE_ON_ANOTHER_SESSION_STR \
  "Payload already active on another session"

#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED                                                      0x81
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED_STR \
  "Payload type disabled.  Given payload type is not configured " \
  "to be enabled for activation."

#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ACTIVATION_LIMIT_REACHED                                              0x82
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_PAYLOAD_ACTIVATION_LIMIT_REACHED_STR \
  "Payload activation limit reached.  Cannot activate given payload type " \
  "because the maximum number of simultaneous instances of that payload type " \
  "are already running."

#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITH_ENCRYPTION                                       0x83
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITH_ENCRYPTION_STR \
  "Cannot activate payload with encryption."

#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITHOUT_ENCRYPTION                                    0x84
#define IPMI_COMP_CODE_ACTIVATE_PAYLOAD_CANNOT_ACTIVATE_PAYLOAD_WITHOUT_ENCRYPTION_STR \
  "Cannot activate payload without encryption.  BMC requires encryption " \
  "for all payloads for given privilege level."

/* IPMI_CMD_DEACTIVATE_PAYLOAD */
#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_ALREADY_DEACTIVATED                                                 0x80
#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_ALREADY_DEACTIVATED_STR \
  "Payload already deactivated"

#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED                                                    0x81
#define IPMI_COMP_CODE_DEACTIVATE_PAYLOAD_PAYLOAD_TYPE_IS_DISABLED_STR \
  "Payload type disabled.  Given payload type is not configured " \
  "to be enabled for activation."

/* IPMI_CMD_GET_CHANNEL_PAYLOAD_VERSION */
#define IPMI_COMP_CODE_GET_CHANNEL_PAYLOAD_VERSION_PAYLOAD_TYPE_NOT_AVAILABLE_ON_GIVEN_CHANNEL                        0x80
#define IPMI_COMP_CODE_GET_CHANNEL_PAYLOAD_VERSION_PAYLOAD_TYPE_NOT_AVAILABLE_ON_GIVEN_CHANNEL_STR \
  "Payload type not available on given channel"

/* IPMI_CMD_GET_CHANNEL_OEM_PAYLOAD_INFO */
#define IPMI_COMP_CODE_GET_CHANNEL_OEM_PAYLOAD_INFO_OEM_PAYLOAD_IANA_OR_PAYLOAD_ID_NOT_SUPPORTED                      0x80
#define IPMI_COMP_CODE_GET_CHANNEL_OEM_PAYLOAD_INFO_OEM_PAYLOAD_IANA_OR_PAYLOAD_ID_NOT_SUPPORTED_STR \
  "OEM Payload IANA and/or Payload ID not supported"

/* IPMI_CMD_SUSPEND_RESUME_PAYLOAD_ENCRYPTION */
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_SUPPORTED                                      0x80
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_SUPPORTED_STR \
  "Operation not supported for given payload type."

#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_ALLOWED_UNDER_PRESENT_CONFIGURATION            0x81
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_OPERATION_NOT_ALLOWED_UNDER_PRESENT_CONFIGURATION_STR \
  "Operation now allowed under present configuration for given payload type."

#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_ENCRYPTION_IS_NOT_AVAILABLE_FOR_SESSION                      0x82
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_ENCRYPTION_IS_NOT_AVAILABLE_FOR_SESSION_STR \
  "Encryption is not available for session that payload type is active under."

#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_PAYLOAD_INSTANCE_NOT_PRESENTLY_ACTIVE                        0x83
#define IPMI_COMP_CODE_SUSPEND_RESUME_PAYLOAD_ENCRYPTION_PAYLOAD_INSTANCE_NOT_PRESENTLY_ACTIVE_STR \
  "The payload instance is not presently active."

/* IPMI_CMD_SET_CHANNEL_SECURITY_KEYS */
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_CANNOT_PERFORM_SET_CONFIRM_KEY_IS_LOCKED                             0x80
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_CANNOT_PERFORM_SET_CONFIRM_KEY_IS_LOCKED_STR \
  "Cannot perform set/confirm.  Key is locked"

#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_INSUFFICIENT_KEY_BYTES                                               0x81
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_INSUFFICIENT_KEY_BYTES_STR \
  "insufficient key bytes"

#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_TOO_MANY_KEY_BYTES                                                   0x82
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_TOO_MANY_KEY_BYTES_STR \
  "too many key bytes"

#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KEY_VALUE_DOES_NOT_MEET_CRITERIA                                     0x83
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KEY_VALUE_DOES_NOT_MEET_CRITERIA_STR \
  "key value does not meet criteria for specified type of key"

#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KR_IS_NOT_USED                                                       0x84
#define IPMI_COMP_CODE_SET_CHANNEL_SECURITY_KEYS_KR_IS_NOT_USED_STR \
  "K_R is not used.  BMC uses a random number generation approach " \
  "that does not require a K_R value"

/*
 * Chassis Device Commands
 */

/* IPMI_CMD_SET_SYSTEM_BOOT_OPTIONS */

#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED                                                       0x80
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_INVALID_SET_IN_PROGRESS                                                       0x81
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_INVALID_SET_IN_PROGRESS_STR \
  "attempt to set the 'set in progress' value (in parameter #0) " \
  "when not int the 'set complete' state."

#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_WRITE_READ_ONLY_PARAMETER                                                     0x82
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_READ_WRITE_ONLY_PARAMETER                                                     0x83
#define IPMI_COMP_CODE_SET_BOOT_OPTIONS_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SYSTEM_BOOT_OPTIONS */

#define IPMI_COMP_CODE_GET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED                                                       0x80
#define IPMI_COMP_CODE_GET_BOOT_OPTIONS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/*
 * Event Commands
 */

/*
 * PEF and Alerting Commands
 */

/* IPMI_CMD_SET_PEF_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED                                       0x80
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS                                       0x81
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
  "attempt to set the 'set in progress' value (in parameter #0) " \
  "when not int the 'set complete' state."

#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER                                     0x82
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER                                     0x83
#define IPMI_COMP_CODE_SET_PEF_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_PEF_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_GET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED                                       0x80
#define IPMI_COMP_CODE_GET_PEF_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/* IPMI_CMD_SET_LAST_PROCESSED_EVENT_ID */
#define IPMI_COMP_CODE_SET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS                                              0x81
#define IPMI_COMP_CODE_SET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS_STR \
  "cannot execute command, SEL erase in progress"

/* IPMI_CMD_GET_LAST_PROCESSED_EVENT_ID */
#define IPMI_COMP_CODE_GET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS                                              0x81
#define IPMI_COMP_CODE_GET_LAST_PROCESSED_EVENT_ID_SEL_ERASE_IN_PROGRESS_STR \
  "cannot execute command, SEL erase in progress"

/* IPMI_CMD_ALERT_IMMEDIATE */
#define IPMI_COMP_CODE_ALERT_ALREADY_IN_PROGRESS                                                                      0x81
#define IPMI_COMP_CODE_ALERT_ALREADY_IN_PROGRESS_STR \
  "Alert Immediate rejected due to alert already in progress"

#define IPMI_COMP_CODE_ALERT_IPMI_MESSAGING_SESSION_ACTIVE                                                            0x82
#define IPMI_COMP_CODE_ALERT_IPMI_MESSAGING_SESSION_ACTIVE_STR \
  "Alert Immedate rejected due to IPMI messaging session active on this channel"

/*
 * Sensor Device Commands
 */
/* IPMI_CMD_SET_SENSOR_READING_AND_EVENT_STATUS */
#define IPMI_COMP_CODE_SENSOR_READING_OR_STATUS_NOT_SETTABLE                                                          0x80
#define IPMI_COMP_CODE_SENSOR_READING_OR_STATUS_NOT_SETTABLE_STR \
  "Attempt to change reading or set or clear status bits that " \
  "are not settable via this command"

#define IPMI_COMP_CODE_EVENT_DATA_BYTES_NOT_SETTABLE                                                                  0x81
#define IPMI_COMP_CODE_EVENT_DATA_BYTES_NOT_SETTABLE_STR \
  "Attempted to set Event Data Bytes, but setting Event Data Bytes is not " \
  "supported for this sensor."

/*
 * FRU Device Commands
 */

/* IPMI_CMD_READ_FRU_DATA */
#define IPMI_COMP_CODE_READ_FRU_DATA_FRU_DEVICE_BUSY                                                                 0x81
#define IPMI_COMP_CODE_READ_FRU_DATA_FRU_DEVICE_BUSY_STR \
  "FRU device busy. The requested cannot be completed because the " \
  "implementation of the logical FRU device is in a state where the FRU " \
  "information is temporarily unavailable.  This could be due to a " \
  "condition such as a loss of arbitration if the FRU is implemented as a " \
  "device on a shared bus."

/* IPMI_CMD_WRITE_FRU_DATA */
#define IPMI_COMP_CODE_WRITE_FRU_DATA_WRITE_PROTECTED_OFFSET                                                          0x80
#define IPMI_COMP_CODE_WRITE_FRU_DATA_WRITE_PROTECTED_OFFSET_STR \
  "write-protected offset. Cannot complete write because one or more " \
  "bytes of FRU data are to a write-protected offset in the FRU device. " \
  "Note that an implementation may have allowed a 'partial write' of the " \
  "data to occur."

#define IPMI_COMP_CODE_WRITE_FRU_DATA_FRU_DEVICE_BUSY                                                                 0x81
#define IPMI_COMP_CODE_WRITE_FRU_DATA_FRU_DEVICE_BUSY_STR \
  "FRU device busy. The requested cannot be completed because the " \
  "implementation of the logical FRU device is in a state where the FRU " \
  "information is temporarily unavailable.  This could be due to a " \
  "condition such as a loss of arbitration if the FRU is implemented as a " \
  "device on a shared bus."

/*
 * SDR Device Commands
 */

/*
 * SEL Device Commands
 */

/* IPMI_CMD_GET_SEL_ENTRY */
#define IPMI_COMP_CODE_GET_SEL_ENTRY_SEL_ERASE_IN_PROGRESS                                                            0x81
#define IPMI_COMP_CODE_GET_SEL_ENTRY_SEL_ERASE_IN_PROGRESS_STR \
  "cannot execute command, SEL erase in progress"

/* IPMI_CMD_DELETE_SEL_ENTRY */
#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_OPERATION_NOT_SUPPORTED                                                   0x80
#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_OPERATION_NOT_SUPPORTED_STR \
  "Operation not supported for this Record Type"

#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_ERASE_IN_PROGRESS                                                         0x81
#define IPMI_COMP_CODE_DELETE_SEL_ENTRY_SEL_ERASE_IN_PROGRESS_STR \
  "cannot execute command, SEL erase in progress"

/*
 * LAN Device Commands
 */

/* IPMI_CMD_SET_LAN_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED                                       0x80
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS                                       0x81
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
  "attempt to set the 'set in progress' value (in parameter #0) " \
  "when not int the 'set complete' state."

#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER                                     0x82
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER                                     0x83
#define IPMI_COMP_CODE_SET_LAN_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_LAN_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_GET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED                                       0x80
#define IPMI_COMP_CODE_GET_LAN_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/*
 * Serial/Modem Device Commands
 */

/* IPMI_CMD_SET_SERIAL_MODEM_CONFIGURATION */
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED                                         0x80
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_INVALID_SET_IN_PROGRESS                                         0x81
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_INVALID_SET_IN_PROGRESS_STR \
  "attempt to set the 'set in progress' value (in parameter #0) " \
  "when not int the 'set complete' state."

#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_WRITE_READ_ONLY_PARAMETER                                       0x82
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_READ_WRITE_ONLY_PARAMETER                                       0x83
#define IPMI_COMP_CODE_SET_SERIAL_MODEM_CONFIGURATION_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SERIAL_MODEM_CONFIGURATION */
#define IPMI_COMP_CODE_GET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED                                         0x80
#define IPMI_COMP_CODE_GET_SERIAL_MODEM_CONFIGURATION_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/* IPMI_CMD_SET_SOL_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED                                       0x80
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS                                       0x81
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_INVALID_SET_IN_PROGRESS_STR \
  "attempt to set the 'set in progress' value (in parameter #0) " \
  "when not int the 'set complete' state."

#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER                                     0x82
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER                                     0x83
#define IPMI_COMP_CODE_SET_SOL_CONFIGURATION_PARAMETERS_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SOL_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_GET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED                                       0x80
#define IPMI_COMP_CODE_GET_SOL_CONFIGURATION_PARAMETERS_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/*
 * Bridge Management Commands (ICMB)
 */

/*
 * Discovery Commands (ICMB)
 */

/*
 * Bridging Commands (ICMB)
 */

/*
 * Event Commands (ICMB)
 */

/*
 * OEM Commands for Bridge NetFN
 */

/*
 * OEM Bridge Commands
 */

#define IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MIN 0xC0
#define IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MAX 0xFF

#define IPMI_COMP_CODE_GENERIC_COMPLETION_CODES(__comp_code) \
  (((__comp_code) == IPMI_COMP_CODE_COMMAND_SUCCESS \
    || ((__comp_code) >= IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MIN \
	&& (__comp_code) <= IPMI_COMP_CODE_GENERIC_COMPLETION_CODES_MAX)) ? 1 : 0)

#define IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MIN 0x01
#define IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MAX 0x7E

#define IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES(__comp_code) \
  (((__comp_code) >= IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MIN \
    && (__comp_code) <= IPMI_COMP_CODE_DEVICE_SPECIFIC_CODES_MAX) ? 1 : 0)

#define IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MIN 0x80
#define IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MAX 0xBE

#define IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES(__comp_code) \
  (((__comp_code) >= IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MIN \
    && (__comp_code) <= IPMI_COMP_CODE_COMMAND_SPECIFIC_CODES_MAX) ? 1 : 0)

#ifdef __cplusplus
}
#endif

#endif /* IPMI_COMP_CODE_SPEC_H */