blob: 92432e0cb4af8cf7b9af2f744ec69092b1133c42 [file] [log] [blame]
Vernon Mauerye08fbff2019-04-03 09:19:34 -07001/*
2 * Copyright © 2018 Intel Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16 */
17#pragma once
Vernon Mauerye08fbff2019-04-03 09:19:34 -070018#include <ipmid/iana.hpp>
Patrick Williamsfbc6c9d2023-05-10 07:50:16 -050019
20#include <cstdint>
Vernon Mauerye08fbff2019-04-03 09:19:34 -070021#include <optional>
22#include <tuple>
23
24namespace ipmi
25{
26
27using Iana = oem::Number;
28
29using Group = uint8_t;
30constexpr Group groupPICMG = 0x00;
31constexpr Group groupDMTG = 0x01;
32constexpr Group groupSSI = 0x02;
33constexpr Group groupVSO = 0x03;
34constexpr Group groupDCMI = 0xDC;
35
36/*
37 * Set the priority as the lowest number that is necessary so
38 * it is possible that others can override it if desired.
39 * This may be linked to what level of integration the handler
40 * is being created at.
41 */
42constexpr int prioOpenBmcBase = 10;
43constexpr int prioOemBase = 20;
44constexpr int prioOdmBase = 30;
45constexpr int prioCustomBase = 40;
46constexpr int prioMax = 50;
47
48/*
49 * Channel IDs pulled from the IPMI 2.0 specification
50 */
51constexpr int channelPrimaryIpmb = 0x00;
52// 0x01-0x0B Implementation specific
53// Implementation specific channel numbers are specified
54// by a configuration file external to ipmid
55// 0x0C-0x0D reserved
56constexpr int channelCurrentIface = 0x0E; // 'Present I/F'
57constexpr int channelSystemIface = 0x0F;
58
59/*
60 * Specifies the minimum privilege level required to execute the command
61 * This means the command can be executed at a given privilege level or higher
62 * privilege level. Those commands which can be executed via system interface
63 * only should use SYSTEM_INTERFACE
64 */
65enum class Privilege : uint8_t
66{
67 None = 0x00,
68 Callback,
69 User,
70 Operator,
71 Admin,
72 Oem,
73};
74
75// IPMI Net Function number as specified by IPMI V2.0 spec.
76using NetFn = uint8_t;
77
78// IPMI Command for a Net Function number as specified by IPMI V2.0 spec.
79using Cmd = uint8_t;
80
81// ipmi function return the status code
82using Cc = uint8_t;
83
84// IPMI 2.0 and DCMI 1.5 standard commands, namespaced by NetFn
85// OEM and non-standard commands should be defined where they are used
86namespace app
87{
88// 0x00 reserved
89constexpr Cmd cmdGetDeviceId = 0x01;
90constexpr Cmd cmdColdReset = 0x02;
91constexpr Cmd cmdWarmReset = 0x03;
92constexpr Cmd cmdGetSelfTestResults = 0x04;
93constexpr Cmd cmdManufacturingTestOn = 0x05;
94constexpr Cmd cmdSetAcpiPowerState = 0x06;
95constexpr Cmd cmdGetAcpiPowerState = 0x07;
96constexpr Cmd cmdGetDeviceGuid = 0x08;
97constexpr Cmd cmdGetNetFnSupport = 0x09;
98constexpr Cmd cmdGetCmdSupport = 0x0A;
99constexpr Cmd cmdGetCmdSubFnSupport = 0x0B;
100constexpr Cmd cmdGetConfigurableCmds = 0x0C;
101constexpr Cmd cmdGetConfigurableCmdSubFns = 0x0D;
102// 0x0E-0x21 unassigned
103constexpr Cmd cmdResetWatchdogTimer = 0x22;
104// 0x23 unassigned
105constexpr Cmd cmdSetWatchdogTimer = 0x24;
106constexpr Cmd cmdGetWatchdogTimer = 0x25;
107// 0x26-0x2D unassigned
108constexpr Cmd cmdSetBmcGlobalEnables = 0x2E;
109constexpr Cmd cmdGetBmcGlobalEnables = 0x2F;
110constexpr Cmd cmdClearMessageFlags = 0x30;
111constexpr Cmd cmdGetMessageFlags = 0x31;
112constexpr Cmd cmdEnableMessageChannelRcv = 0x32;
113constexpr Cmd cmdGetMessage = 0x33;
114constexpr Cmd cmdSendMessage = 0x34;
115constexpr Cmd cmdReadEventMessageBuffer = 0x35;
116constexpr Cmd cmdGetBtIfaceCapabilities = 0x36;
117constexpr Cmd cmdGetSystemGuid = 0x37;
118constexpr Cmd cmdGetChannelAuthCapabilities = 0x38;
119constexpr Cmd cmdGetSessionChallenge = 0x39;
120constexpr Cmd cmdActivateSession = 0x3A;
121constexpr Cmd cmdSetSessionPrivilegeLevel = 0x3B;
122constexpr Cmd cmdCloseSession = 0x3C;
123constexpr Cmd cmdGetSessionInfo = 0x3D;
124// 0x3E unassigned
125constexpr Cmd cmdGetAuthCode = 0x3F;
126constexpr Cmd cmdSetChannelAccess = 0x40;
127constexpr Cmd cmdGetChannelAccess = 0x41;
128constexpr Cmd cmdGetChannelInfoCommand = 0x42;
129constexpr Cmd cmdSetUserAccessCommand = 0x43;
130constexpr Cmd cmdGetUserAccessCommand = 0x44;
131constexpr Cmd cmdSetUserName = 0x45;
132constexpr Cmd cmdGetUserNameCommand = 0x46;
133constexpr Cmd cmdSetUserPasswordCommand = 0x47;
134constexpr Cmd cmdActivatePayload = 0x48;
135constexpr Cmd cmdDeactivatePayload = 0x49;
136constexpr Cmd cmdGetPayloadActivationStatus = 0x4A;
137constexpr Cmd cmdGetPayloadInstanceInfo = 0x4B;
138constexpr Cmd cmdSetUserPayloadAccess = 0x4C;
139constexpr Cmd cmdGetUserPayloadAccess = 0x4D;
140constexpr Cmd cmdGetChannelPayloadSupport = 0x4E;
141constexpr Cmd cmdGetChannelPayloadVersion = 0x4F;
142constexpr Cmd cmdGetChannelOemPayloadInfo = 0x50;
143// 0x51 unassigned
144constexpr Cmd cmdMasterWriteRead = 0x52;
145// 0x53 unassigned
146constexpr Cmd cmdGetChannelCipherSuites = 0x54;
147constexpr Cmd cmdSuspendResumePayloadEnc = 0x55;
148constexpr Cmd cmdSetChannelSecurityKeys = 0x56;
149constexpr Cmd cmdGetSystemIfCapabilities = 0x57;
150constexpr Cmd cmdSetSystemInfoParameters = 0x58;
151constexpr Cmd cmdGetSystemInfoParameters = 0x59;
152// 0x5A-0x5F unassigned
153constexpr Cmd cmdSetCommandEnables = 0x60;
154constexpr Cmd cmdGetCommandEnables = 0x61;
155constexpr Cmd cmdSetCommandSubFnEnables = 0x62;
156constexpr Cmd cmdGetCommandSubFnEnables = 0x63;
157constexpr Cmd cmdGetOemNetFnIanaSupport = 0x64;
158// 0x65-0xff unassigned
159} // namespace app
160
161namespace chassis
162{
163constexpr Cmd cmdGetChassisCapabilities = 0x00;
164constexpr Cmd cmdGetChassisStatus = 0x01;
165constexpr Cmd cmdChassisControl = 0x02;
166constexpr Cmd cmdChassisReset = 0x03;
167constexpr Cmd cmdChassisIdentify = 0x04;
168constexpr Cmd cmdSetChassisCapabilities = 0x05;
169constexpr Cmd cmdSetPowerRestorePolicy = 0x06;
170constexpr Cmd cmdGetSystemRestartCause = 0x07;
171constexpr Cmd cmdSetSystemBootOptions = 0x08;
172constexpr Cmd cmdGetSystemBootOptions = 0x09;
173constexpr Cmd cmdSetFrontPanelButtonEnables = 0x0A;
174constexpr Cmd cmdSetPowerCycleInterval = 0x0B;
175// 0x0C-0x0E unassigned
176constexpr Cmd cmdGetPohCounter = 0x0F;
177// 0x10-0xFF unassigned
178} // namespace chassis
179
180namespace sensor_event
181{
182constexpr Cmd cmdSetEventReceiver = 0x00;
183constexpr Cmd cmdGetEventReceiver = 0x01;
184constexpr Cmd cmdPlatformEvent = 0x02;
185// 0x03-0x0F unassigned
186constexpr Cmd cmdGetPefCapabilities = 0x10;
187constexpr Cmd cmdArmPefPostponeTimer = 0x11;
188constexpr Cmd cmdSetPefConfigurationParams = 0x12;
189constexpr Cmd cmdGetPefConfigurationParams = 0x13;
190constexpr Cmd cmdSetLastProcessedEventId = 0x14;
191constexpr Cmd cmdGetLastProcessedEventId = 0x15;
192constexpr Cmd cmdAlertImmediate = 0x16;
193constexpr Cmd cmdPetAcknowledge = 0x17;
194constexpr Cmd cmdGetDeviceSdrInfo = 0x20;
195constexpr Cmd cmdGetDeviceSdr = 0x21;
196constexpr Cmd cmdReserveDeviceSdrRepository = 0x22;
197constexpr Cmd cmdGetSensorReadingFactors = 0x23;
198constexpr Cmd cmdSetSensorHysteresis = 0x24;
199constexpr Cmd cmdGetSensorHysteresis = 0x25;
200constexpr Cmd cmdSetSensorThreshold = 0x26;
201constexpr Cmd cmdGetSensorThreshold = 0x27;
202constexpr Cmd cmdSetSensorEventEnable = 0x28;
203constexpr Cmd cmdGetSensorEventEnable = 0x29;
204constexpr Cmd cmdRearmSensorEvents = 0x2A;
205constexpr Cmd cmdGetSensorEventStatus = 0x2B;
206constexpr Cmd cmdGetSensorReading = 0x2D;
207constexpr Cmd cmdSetSensorType = 0x2E;
208constexpr Cmd cmdGetSensorType = 0x2F;
209constexpr Cmd cmdSetSensorReadingAndEvtSts = 0x30;
210// 0x31-0xFF unassigned
211} // namespace sensor_event
212
213namespace storage
214{
215// 0x00-0x0F unassigned
216constexpr Cmd cmdGetFruInventoryAreaInfo = 0x10;
217constexpr Cmd cmdReadFruData = 0x11;
218constexpr Cmd cmdWriteFruData = 0x12;
219// 0x13-0x1F unassigned
220constexpr Cmd cmdGetSdrRepositoryInfo = 0x20;
221constexpr Cmd cmdGetSdrRepositoryAllocInfo = 0x21;
222constexpr Cmd cmdReserveSdrRepository = 0x22;
223constexpr Cmd cmdGetSdr = 0x23;
224constexpr Cmd cmdAddSdr = 0x24;
225constexpr Cmd cmdPartialAddSdr = 0x25;
226constexpr Cmd cmdDeleteSdr = 0x26;
227constexpr Cmd cmdClearSdrRepository = 0x27;
228constexpr Cmd cmdGetSdrRepositoryTime = 0x28;
229constexpr Cmd cmdSetSdrRepositoryTime = 0x29;
230constexpr Cmd cmdEnterSdrRepoUpdateMode = 0x2A;
231constexpr Cmd cmdExitSdrReposUpdateMode = 0x2B;
232constexpr Cmd cmdRunInitializationAgent = 0x2C;
233// 0x2D-0x3F unassigned
234constexpr Cmd cmdGetSelInfo = 0x40;
235constexpr Cmd cmdGetSelAllocationInfo = 0x41;
236constexpr Cmd cmdReserveSel = 0x42;
237constexpr Cmd cmdGetSelEntry = 0x43;
238constexpr Cmd cmdAddSelEntry = 0x44;
239constexpr Cmd cmdPartialAddSelEntry = 0x45;
240constexpr Cmd cmdDeleteSelEntry = 0x46;
241constexpr Cmd cmdClearSel = 0x47;
242constexpr Cmd cmdGetSelTime = 0x48;
243constexpr Cmd cmdSetSelTime = 0x49;
244constexpr Cmd cmdGetAuxiliaryLogStatus = 0x5A;
245constexpr Cmd cmdSetAuxiliaryLogStatus = 0x5B;
246constexpr Cmd cmdGetSelTimeUtcOffset = 0x5C;
247constexpr Cmd cmdSetSelTimeUtcOffset = 0x5D;
248// 0x5E-0xFF unassigned
249} // namespace storage
250
251namespace transport
252{
253constexpr Cmd cmdSetLanConfigParameters = 0x01;
254constexpr Cmd cmdGetLanConfigParameters = 0x02;
255constexpr Cmd cmdSuspendBmcArps = 0x03;
256constexpr Cmd cmdGetIpUdpRmcpStatistics = 0x04;
257constexpr Cmd cmdSetSerialModemConfig = 0x10;
258constexpr Cmd cmdGetSerialModemConfig = 0x11;
259constexpr Cmd cmdSetSerialModemMux = 0x12;
260constexpr Cmd cmdGetTapResponseCodes = 0x13;
261constexpr Cmd cmdSetPppUdpProxyTransmitData = 0x14;
262constexpr Cmd cmdGetPppUdpProxyTransmitData = 0x15;
263constexpr Cmd cmdSendPppUdpProxyPacket = 0x16;
264constexpr Cmd cmdGetPppUdpProxyReceiveData = 0x17;
265constexpr Cmd cmdSerialModemConnActive = 0x18;
266constexpr Cmd cmdCallback = 0x19;
267constexpr Cmd cmdSetUserCallbackOptions = 0x1A;
268constexpr Cmd cmdGetUserCallbackOptions = 0x1B;
269constexpr Cmd cmdSetSerialRoutingMux = 0x1C;
270constexpr Cmd cmdSolActivating = 0x20;
271constexpr Cmd cmdSetSolConfigParameters = 0x21;
272constexpr Cmd cmdGetSolConfigParameters = 0x22;
273constexpr Cmd cmdForwardedCommand = 0x30;
274constexpr Cmd cmdSetForwardedCommands = 0x31;
275constexpr Cmd cmdGetForwardedCommands = 0x32;
276constexpr Cmd cmdEnableForwardedCommands = 0x33;
277} // namespace transport
278
279namespace bridge
280{
281constexpr Cmd cmdGetBridgeState = 0x00;
282constexpr Cmd cmdSetBridgeState = 0x01;
283constexpr Cmd cmdGetIcmbAddress = 0x02;
284constexpr Cmd cmdSetIcmbAddress = 0x03;
285constexpr Cmd cmdSetBridgeProxyAddress = 0x04;
286constexpr Cmd cmdGetBridgeStatistics = 0x05;
287constexpr Cmd cmdGetIcmbCapabilities = 0x06;
288constexpr Cmd cmdClearBridgeStatistics = 0x08;
289constexpr Cmd cmdGetBridgeProxyAddress = 0x09;
290constexpr Cmd cmdGetIcmbConnectorInfo = 0x0A;
291constexpr Cmd cmdGetIcmbConnectionId = 0x0B;
292constexpr Cmd cmdSendIcmbConnectionId = 0x0C;
293constexpr Cmd cmdPrepareForDiscovery = 0x10;
294constexpr Cmd cmdGetAddresses = 0x11;
295constexpr Cmd cmdSetDiscovered = 0x12;
296constexpr Cmd cmdGetChassisDeviceId = 0x13;
297constexpr Cmd cmdSetChassisDeviceId = 0x14;
298constexpr Cmd cmdBridgeRequest = 0x20;
299constexpr Cmd cmdBridgeMessage = 0x21;
300// 0x22-0x2F unassigned
301constexpr Cmd cmdGetEventCount = 0x30;
302constexpr Cmd cmdSetEventDestination = 0x31;
303constexpr Cmd cmdSetEventReceptionState = 0x32;
304constexpr Cmd cmdSendIcmbEventMessage = 0x33;
305constexpr Cmd cmdGetEventDestination = 0x34;
306constexpr Cmd cmdGetEventReceptionState = 0x35;
307// 0xC0-0xFE OEM Commands
308constexpr Cmd cmdErrorReport = 0xFF;
309} // namespace bridge
310
311namespace dcmi
312{
313constexpr Cmd cmdGetDcmiCapabilitiesInfo = 0x01;
314constexpr Cmd cmdGetPowerReading = 0x02;
315constexpr Cmd cmdGetPowerLimit = 0x03;
316constexpr Cmd cmdSetPowerLimit = 0x04;
317constexpr Cmd cmdActDeactivatePwrLimit = 0x05;
318constexpr Cmd cmdGetAssetTag = 0x06;
319constexpr Cmd cmdGetDcmiSensorInfo = 0x07;
320constexpr Cmd cmdSetAssetTag = 0x08;
321constexpr Cmd cmdGetMgmtCntlrIdString = 0x09;
322constexpr Cmd cmdSetMgmtCntlrIdString = 0x0A;
323constexpr Cmd cmdSetThermalLimit = 0x0B;
324constexpr Cmd cmdGetThermalLimit = 0x0C;
325constexpr Cmd cmdGetTemperatureReadings = 0x10;
326constexpr Cmd cmdSetDcmiConfigParameters = 0x12;
327constexpr Cmd cmdGetDcmiConfigParameters = 0x13;
328} // namespace dcmi
329
330// These are the command network functions, the response
331// network functions are the function + 1. So to determine
332// the proper network function which issued the command
333// associated with a response, subtract 1.
334// Note: these will be left shifted when combined with the LUN
335constexpr NetFn netFnChassis = 0x00;
336constexpr NetFn netFnBridge = 0x02;
337constexpr NetFn netFnSensor = 0x04;
338constexpr NetFn netFnApp = 0x06;
339constexpr NetFn netFnFirmware = 0x08;
340constexpr NetFn netFnStorage = 0x0A;
341constexpr NetFn netFnTransport = 0x0C;
342// reserved 0Eh..28h
343constexpr NetFn netFnGroup = 0x2C;
344constexpr NetFn netFnOem = 0x2E;
345constexpr NetFn netFnOemOne = 0x30;
346constexpr NetFn netFnOemTwo = 0x32;
347constexpr NetFn netFnOemThree = 0x34;
348constexpr NetFn netFnOemFour = 0x36;
349constexpr NetFn netFnOemFive = 0x38;
350constexpr NetFn netFnOemSix = 0x3A;
351constexpr NetFn netFnOemSeven = 0x3C;
352constexpr NetFn netFnOemEight = 0x3E;
353
354// IPMI commands for net functions. Callbacks using this should be careful to
355// parse arguments to the sub-functions and can take advantage of the built-in
356// message handling mechanism to create custom routing
357constexpr Cmd cmdWildcard = 0xFF;
358
359// IPMI standard completion codes specified by the IPMI V2.0 spec.
360//
361// This might have been an enum class, but that would make it hard for
362// OEM- and command-specific completion codes to be added elsewhere.
363//
364// Custom completion codes can be defined in individual modules for
365// command specific errors in the 0x80-0xBE range
366//
367// Alternately, OEM completion codes are in the 0x01-0x7E range
368constexpr Cc ccSuccess = 0x00;
369constexpr Cc ccBusy = 0xC0;
370constexpr Cc ccInvalidCommand = 0xC1;
371constexpr Cc ccInvalidCommandOnLun = 0xC2;
Karol Niczyjd18dfc42021-07-15 14:18:56 +0200372constexpr Cc ccTimeout = 0xC3;
Sharad Yadava0de4002021-01-05 17:38:30 +0530373constexpr Cc ccOutOfSpace = 0xC4;
Vernon Mauerye08fbff2019-04-03 09:19:34 -0700374constexpr Cc ccInvalidReservationId = 0xC5;
375constexpr Cc ccReqDataTruncated = 0xC6;
376constexpr Cc ccReqDataLenInvalid = 0xC7;
377constexpr Cc ccReqDataLenExceeded = 0xC8;
378constexpr Cc ccParmOutOfRange = 0xC9;
379constexpr Cc ccRetBytesUnavailable = 0xCA;
380constexpr Cc ccSensorInvalid = 0xCB;
381constexpr Cc ccInvalidFieldRequest = 0xCC;
382constexpr Cc ccIllegalCommand = 0xCD;
383constexpr Cc ccResponseError = 0xCE;
384constexpr Cc ccDuplicateRequest = 0xCF;
385constexpr Cc ccCmdFailSdrMode = 0xD0;
386constexpr Cc ccCmdFailFwUpdMode = 0xD1;
387constexpr Cc ccCmdFailInitAgent = 0xD2;
388constexpr Cc ccDestinationUnavailable = 0xD3;
389constexpr Cc ccInsufficientPrivilege = 0xD4;
390constexpr Cc ccCommandNotAvailable = 0xD5;
391constexpr Cc ccCommandDisabled = 0xD6;
392constexpr Cc ccUnspecifiedError = 0xFF;
393
394/* ipmi often has two return types:
395 * 1. Failure: CC is non-zero; no trailing data
396 * 2. Success: CC is zero; trailing data (usually a fixed type)
397 *
398 * using ipmi::response(cc, ...), it will automatically always pack
399 * the correct type for the response without having to explicitly type out all
400 * the parameters that the function would return.
401 *
402 * To enable this feature, you just define the ipmi function as returning an
403 * ipmi::RspType which has the optional trailing data built in, with your types
404 * defined as parameters.
405 */
406
407template <typename... RetTypes>
408using RspType = std::tuple<ipmi::Cc, std::optional<std::tuple<RetTypes...>>>;
409
410/**
411 * @brief helper function to create an IPMI response tuple
412 *
413 * IPMI handlers all return a tuple with two parts: a completion code and an
414 * optional tuple containing the rest of the data to return. This helper
415 * function makes it easier by constructing that out of an arbitrary number of
416 * arguments.
417 *
418 * @param cc - the completion code for the response
419 * @param args... - the optional list of values to return
420 *
421 * @return a standard IPMI return type (as described above)
422 */
423template <typename... Args>
424static inline auto response(ipmi::Cc cc, Args&&... args)
425{
426 return std::make_tuple(cc, std::make_optional(std::make_tuple(args...)));
427}
428static inline auto response(ipmi::Cc cc)
429{
430 return std::make_tuple(cc, std::nullopt);
431}
432
433/**
434 * @brief helper function to create an IPMI success response tuple
435 *
436 * IPMI handlers all return a tuple with two parts: a completion code and an
437 * optional tuple containing the rest of the data to return. This helper
438 * function makes it easier by constructing that out of an arbitrary number of
439 * arguments. Because it is a success response, this automatically packs
440 * the completion code, without needing to explicitly pass it in.
441 *
442 * @param args... - the optional list of values to return
443 *
444 * @return a standard IPMI return type (as described above)
445 */
446template <typename... Args>
447static inline auto responseSuccess(Args&&... args)
448{
Vernon Mauerybea53922019-04-03 09:37:43 -0700449 return response(ipmi::ccSuccess, args...);
Vernon Mauerye08fbff2019-04-03 09:19:34 -0700450}
451static inline auto responseSuccess()
452{
Vernon Mauerybea53922019-04-03 09:37:43 -0700453 return response(ipmi::ccSuccess);
454}
455
456/* helper functions for the various standard error response types */
457static inline auto responseBusy()
458{
459 return response(ccBusy);
460}
461static inline auto responseInvalidCommand()
462{
463 return response(ccInvalidCommand);
464}
465static inline auto responseInvalidCommandOnLun()
466{
467 return response(ccInvalidCommandOnLun);
468}
469static inline auto responseTimeout()
470{
471 return response(ccTimeout);
472}
473static inline auto responseOutOfSpace()
474{
475 return response(ccOutOfSpace);
476}
477static inline auto responseInvalidReservationId()
478{
479 return response(ccInvalidReservationId);
480}
481static inline auto responseReqDataTruncated()
482{
483 return response(ccReqDataTruncated);
484}
485static inline auto responseReqDataLenInvalid()
486{
487 return response(ccReqDataLenInvalid);
488}
489static inline auto responseReqDataLenExceeded()
490{
491 return response(ccReqDataLenExceeded);
492}
493static inline auto responseParmOutOfRange()
494{
495 return response(ccParmOutOfRange);
496}
497static inline auto responseRetBytesUnavailable()
498{
499 return response(ccRetBytesUnavailable);
500}
501static inline auto responseSensorInvalid()
502{
503 return response(ccSensorInvalid);
504}
505static inline auto responseInvalidFieldRequest()
506{
507 return response(ccInvalidFieldRequest);
508}
509static inline auto responseIllegalCommand()
510{
511 return response(ccIllegalCommand);
512}
513static inline auto responseResponseError()
514{
515 return response(ccResponseError);
516}
517static inline auto responseDuplicateRequest()
518{
519 return response(ccDuplicateRequest);
520}
521static inline auto responseCmdFailSdrMode()
522{
523 return response(ccCmdFailSdrMode);
524}
525static inline auto responseCmdFailFwUpdMode()
526{
527 return response(ccCmdFailFwUpdMode);
528}
529static inline auto responseCmdFailInitAgent()
530{
531 return response(ccCmdFailInitAgent);
532}
533static inline auto responseDestinationUnavailable()
534{
535 return response(ccDestinationUnavailable);
536}
537static inline auto responseInsufficientPrivilege()
538{
539 return response(ccInsufficientPrivilege);
540}
541static inline auto responseCommandNotAvailable()
542{
543 return response(ccCommandNotAvailable);
544}
545static inline auto responseCommandDisabled()
546{
547 return response(ccCommandDisabled);
548}
549static inline auto responseUnspecifiedError()
550{
551 return response(ccUnspecifiedError);
Vernon Mauerye08fbff2019-04-03 09:19:34 -0700552}
553
554} // namespace ipmi