This file is indexed.

/usr/include/freeipmi/spec/ipmi-comp-code-spec.h is in libfreeipmi-dev 0.8.12-3ubuntu1.

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
/*
   Copyright (C) 2003-2010 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 2, 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, write to the Free Software Foundation,
   Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.

 */


#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_REQUEST_SENSOR_DATA_OR_RECORD_NOT_PRESENT     0xCB
#define IPMI_COMP_CODE_REQUEST_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 innsufficient 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"
 */


/*
 * BMC Watchdog Timer Commands
 */

/* IPMI_CMD_RESET_WATCHDOG_TIMER */
#define IPMI_COMP_CODE_ATTEMPT_TO_START_UNINITIALIZED_WATCHDOG            0x80
#define IPMI_COMP_CODE_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_DATA_NOT_AVAILABLE                                 0x80
#define IPMI_COMP_CODE_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 " \
  "curently 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_PARAMETER_NOT_SUPPORTED            0x80
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_SYSTEM_INFO_INVALID_SET_IN_PROGRESS            0x81
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_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_WRITE_READ_ONLY_PARAMETER          0x82
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_SYSTEM_INFO_READ_WRITE_ONLY_PARAMETER          0x83
#define IPMI_COMP_CODE_SET_SYSTEM_INFO_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SYSTEM_INFO_PARAMETERS */

#define IPMI_COMP_CODE_GET_SYSTEM_INFO_PARAMETER_NOT_SUPPORTED            0x80
#define IPMI_COMP_CODE_GET_SYSTEM_INFO_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/* IPMI_CMD_GET_SESSION_CHALLENGE */

#define IPMI_COMP_CODE_INVALID_USERNAME                                   0x81
#define IPMI_COMP_CODE_INVALID_USERNAME_STR \
  "Invalid user name"

#define IPMI_COMP_CODE_NULL_USERNAME_NOT_ENABLED                          0x82
#define IPMI_COMP_CODE_NULL_USERNAME_NOT_ENABLED_STR \
  "Null user name (User 1) not enabled"

/* IPMI_CMD_ACTIVATE_SESSION */

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

#define IPMI_COMP_CODE_NO_SLOT_AVAILABLE_FOR_GIVEN_USER                   0x82
#define IPMI_COMP_CODE_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_NO_SLOT_AVAILABLE_TO_SUPPORT_USER                  0x83
#define IPMI_COMP_CODE_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_SESSION_SEQ_NUM_OUT_OF_RANGE                       0x84
#define IPMI_COMP_CODE_SESSION_SEQ_NUM_OUT_OF_RANGE_STR \
  "Session sequence number out-of-range"

#define IPMI_COMP_CODE_INVALID_SESSION_ID                                 0x85
#define IPMI_COMP_CODE_INVALID_SESSION_ID_STR \
  "Invalid session ID in request"

#define IPMI_COMP_CODE_EXCEEDS_PRIVILEGE_LEVEL                            0x86
#define IPMI_COMP_CODE_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_RQ_LEVEL_NOT_AVAILABLE_FOR_USER                    0x81
#define IPMI_COMP_CODE_RQ_LEVEL_NOT_AVAILABLE_FOR_USER_STR \
  "Requested level not available for this user"

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

#define IPMI_COMP_CODE_CANNOT_DISABLE_USER_LEVEL_AUTHENTICATION           0x83
#define IPMI_COMP_CODE_CANNOT_DISABLE_USER_LEVEL_AUTHENTICATION_STR \
  "Cannot disable User Level authentication"

/* IPMI_CMD_CLOSE_SESSION */

#define IPMI_COMP_CODE_INVALID_SESSION_ID_IN_RQ                           0x87
#define IPMI_COMP_CODE_INVALID_SESSION_ID_IN_RQ_STR \
  "Invalid session ID in request"

/* IPMI_CMD_SET_CHANNEL_ACCESS */
#define IPMI_COMP_CODE_SET_NOT_SUPPORTED_ON_SELECTED_CHANNEL              0x82
#define IPMI_COMP_CODE_SET_NOT_SUPPORTED_ON_SELECTED_CHANNEL_STR \
  "set not supported on selected channel"

#define IPMI_COMP_CODE_ACCESS_MODE_NOT_SUPPORTED                          0x83
#define IPMI_COMP_CODE_ACCESS_MODE_NOT_SUPPORTED_STR \
  "access mode not supported"

/* IPMI_CMD_GET_CHANNEL_ACCESS */
#define IPMI_COMP_CODE_COMMAND_NOT_SUPPORTED_FOR_SELECTED_CHANNEL         0x82
#define IPMI_COMP_CODE_COMMAND_NOT_SUPPORTED_FOR_SELECTED_CHANNEL_STR \
  "command not supported for selected channel"

/* IPMI_CMD_SET_USER_PASSWORD_CMD */
#define IPMI_COMP_CODE_PASSWORD_TEST_FAILED_PASSWORD_SIZE_CORRECT         0x80
#define IPMI_COMP_CODE_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_PASSWORD_TEST_FAILED_PASSWORD_SIZE_INCORRECT       0x81
#define IPMI_COMP_CODE_PASSWORD_TEST_FAILED_PASSWORD_SIZE_INCORRECT_STR \
  "password test failed.  Wrong password size was used."

/* IPMI_CMD_ACTIVATE_PAYLOAD */
#define IPMI_COMP_CODE_PAYLOAD_ALREADY_ACTIVE_ON_ANOTHER_SESSION          0x80
#define IPMI_COMP_CODE_PAYLOAD_ALREADY_ACTIVE_ON_ANOTHER_SESSION_STR \
  "Payload already active on another session"

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

#define IPMI_COMP_CODE_PAYLOAD_ACTIVATION_LIMIT_REACHED                   0x82
#define IPMI_COMP_CODE_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_CANNOT_ACTIVATE_PAYLOAD_WITH_ENCRYPTION            0x83
#define IPMI_COMP_CODE_CANNOT_ACTIVATE_PAYLOAD_WITH_ENCRYPTION_STR \
  "Cannot activate payload with encryption."

#define IPMI_COMP_CODE_CANNOT_ACTIVATE_PAYLOAD_WITHOUT_ENCRYPTION         0x84
#define IPMI_COMP_CODE_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_PAYLOAD_ALREADY_DEACTIVATED                        0x80
#define IPMI_COMP_CODE_PAYLOAD_ALREADY_DEACTIVATED_STR \
  "Payload already deactivated"

#define IPMI_COMP_CODE_PAYLOAD_TYPE_IS_DISABLED                           0x81
#define IPMI_COMP_CODE_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_PAYLOAD_TYPE_NOT_AVAILABLE_ON_GIVEN_CHANNEL        0x80
#define IPMI_COMP_CODE_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_OEM_PAYLOAD_IANA_OR_PAYLOAD_ID_NOT_SUPPORTED       0x80
#define IPMI_COMP_CODE_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_OPERATION_NOT_SUPPORTED                            0x80
#define IPMI_COMP_CODE_OPERATION_NOT_SUPPORTED_STR \
  "Operation not supported for given payload type."

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

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

#define IPMI_COMP_CODE_PAYLOAD_INSTANCE_NOT_PRESENTLY_ACTIVE              0x83
#define IPMI_COMP_CODE_PAYLOAD_INSTANCE_NOT_PRESENTLY_ACTIVE_STR \
  "The payload instance is not presently active."

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

#define IPMI_COMP_CODE_INSUFFICIENT_KEY_BYTES                            0x81
#define IPMI_COMP_CODE_INSUFFICIENT_KEY_BYTES_STR \
  "insufficient key bytes"

#define IPMI_COMP_CODE_TOO_MANY_KEY_BYTES                                0x82
#define IPMI_COMP_CODE_TOO_MANY_KEY_BYTES_STR \
  "too many key bytes"

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

#define IPMI_COMP_CODE_KR_IS_NOT_USED                                    0x84
#define IPMI_COMP_CODE_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_OPTION_PARAMETER_NOT_SUPPORTED            0x80
#define IPMI_COMP_CODE_SET_BOOT_OPTION_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_BOOT_OPTION_INVALID_SET_IN_PROGRESS            0x81
#define IPMI_COMP_CODE_SET_BOOT_OPTION_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_OPTION_WRITE_READ_ONLY_PARAMETER          0x82
#define IPMI_COMP_CODE_SET_BOOT_OPTION_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_BOOT_OPTION_READ_WRITE_ONLY_PARAMETER          0x83
#define IPMI_COMP_CODE_SET_BOOT_OPTION_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SYSTEM_BOOT_OPTIONS */

#define IPMI_COMP_CODE_GET_BOOT_OPTION_PARAMETER_NOT_SUPPORTED            0x80
#define IPMI_COMP_CODE_GET_BOOT_OPTION_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_PARAMETER_NOT_SUPPORTED                    0x80
#define IPMI_COMP_CODE_SET_PEF_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_PEF_INVALID_SET_IN_PROGRESS                    0x81
#define IPMI_COMP_CODE_SET_PEF_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_WRITE_READ_ONLY_PARAMETER                  0x82
#define IPMI_COMP_CODE_SET_PEF_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_PEF_READ_WRITE_ONLY_PARAMETER                  0x83
#define IPMI_COMP_CODE_SET_PEF_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_PEF_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_GET_PEF_PARAMETER_NOT_SUPPORTED                    0x80
#define IPMI_COMP_CODE_GET_PEF_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
 */

/*
 * FRU Device Commands
 */

#define IPMI_COMP_CODE_WRITE_PROTECTED_OFFSET                             0x80
#define IPMI_COMP_CODE_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_FRU_DEVICE_BUSY                                    0x81
#define IPMI_COMP_CODE_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_PARAMETER_NOT_SUPPORTED                    0x80
#define IPMI_COMP_CODE_SET_LAN_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_LAN_INVALID_SET_IN_PROGRESS                    0x81
#define IPMI_COMP_CODE_SET_LAN_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_WRITE_READ_ONLY_PARAMETER                  0x82
#define IPMI_COMP_CODE_SET_LAN_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_LAN_READ_WRITE_ONLY_PARAMETER                  0x83
#define IPMI_COMP_CODE_SET_LAN_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_LAN_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_GET_LAN_PARAMETER_NOT_SUPPORTED                    0x80
#define IPMI_COMP_CODE_GET_LAN_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/*
 * Serial/Modem Device Commands
 */

/* IPMI_CMD_SET_SERIAL_MODEM_CONFIGURATION */
#define IPMI_COMP_CODE_SET_SERIAL_PARAMETER_NOT_SUPPORTED                 0x80
#define IPMI_COMP_CODE_SET_SERIAL_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_SERIAL_INVALID_SET_IN_PROGRESS                 0x81
#define IPMI_COMP_CODE_SET_SERIAL_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_WRITE_READ_ONLY_PARAMETER               0x82
#define IPMI_COMP_CODE_SET_SERIAL_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_SERIAL_READ_WRITE_ONLY_PARAMETER               0x83
#define IPMI_COMP_CODE_SET_SERIAL_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SERIAL_MODEM_CONFIGURATION */
#define IPMI_COMP_CODE_GET_SERIAL_PARAMETER_NOT_SUPPORTED                 0x80
#define IPMI_COMP_CODE_GET_SERIAL_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

/* IPMI_CMD_SET_SOL_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_SET_SOL_PARAMETER_NOT_SUPPORTED                    0x80
#define IPMI_COMP_CODE_SET_SOL_PARAMETER_NOT_SUPPORTED_STR \
  "parameter not supported."

#define IPMI_COMP_CODE_SET_SOL_INVALID_SET_IN_PROGRESS                    0x81
#define IPMI_COMP_CODE_SET_SOL_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_WRITE_READ_ONLY_PARAMETER                  0x82
#define IPMI_COMP_CODE_SET_SOL_WRITE_READ_ONLY_PARAMETER_STR \
  "attempt to write read-only parameter"

#define IPMI_COMP_CODE_SET_SOL_READ_WRITE_ONLY_PARAMETER                  0x83
#define IPMI_COMP_CODE_SET_SOL_READ_WRITE_ONLY_PARAMETER_STR \
  "attempt to read write-only parameter"

/* IPMI_CMD_GET_SOL_CONFIGURATION_PARAMETERS */

#define IPMI_COMP_CODE_GET_SOL_PARAMETER_NOT_SUPPORTED                    0x80
#define IPMI_COMP_CODE_GET_SOL_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
 */

#ifdef __cplusplus
}
#endif

#endif /* _IPMI_COMP_CODE_SPEC_H */