📄 ipmi_cmd.cpp
字号:
/* * * Copyright (c) 2003 by FORCE Computers. * * 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. This * file and program are licensed under a BSD style license. See * the Copying file included with the OpenHPI distribution for * full licensing terms. * * Authors: * Thomas Kanngieser <thomas.kanngieser@fci.com> */#include "ipmi_cmd.h"struct cConvMap{ const char *m_name; int m_value;};const char *ConvIntToString( int flags, const cConvMap *map, const char *def ){ for( int i = 0; map->m_name; i++, map++ ) if ( flags == map->m_value ) return map->m_name; return def;}static cConvMap netfn_map[] ={ { "Chassis" , eIpmiNetfnChassis }, { "Bridge" , eIpmiNetfnBridge }, { "SensorEvent", eIpmiNetfnSensorEvent }, { "App" , eIpmiNetfnApp }, { "Firmware" , eIpmiNetfnFirmware }, { "Storage " , eIpmiNetfnStorage }, { "Transport" , eIpmiNetfnTransport }, { "Picmg " , eIpmiNetfnPicmg }, { 0, 0 }}; const char *IpmiNetfnToString( tIpmiNetfn netfn ){ return ConvIntToString( netfn, netfn_map, "Invalid" ); }static cConvMap completion_code_map[] ={ { "Ok" , eIpmiCcOk }, { "NodeBusy" , eIpmiCcNodeBusy }, { "InvalidCmd" , eIpmiCcInvalidCmd }, { "CommandInvalidForLun" , eIpmiCcCommandInvalidForLun }, { "Timeout" , eIpmiCcTimeout }, { "OutOfSpace" , eIpmiCcOutOfSpace }, { "InvalidReservation" , eIpmiCcInvalidReservation }, { "RequestDataTruncated" , eIpmiCcRequestDataTruncated }, { "RequestDataLengthInvalid" , eIpmiCcRequestDataLengthInvalid }, { "RequestedDataLengthExceeded", eIpmiCcRequestedDataLengthExceeded }, { "ParameterOutOfRange" , eIpmiCcParameterOutOfRange }, { "CannotReturnReqLength" , eIpmiCcCannotReturnReqLength }, { "NotPresent" , eIpmiCcNotPresent }, { "InvalidDataField" , eIpmiCcInvalidDataField }, { "CommandIllegalForSensor" , eIpmiCcCommandIllegalForSensor }, { "CouldNotProvideResponse" , eIpmiCcCouldNotProvideResponse }, { "CannotExecDuplicateRequest" , eIpmiCcCannotExecDuplicateRequest }, { "RepositoryInUpdateMode" , eIpmiCcRepositoryInUpdateMode }, { "DeviceInFirmwareUpdate" , eIpmiCcDeviceInFirmwareUpdate }, { "BmcInitInProgress" , eIpmiCcBmcInitInProgress }, { "DestinationUnavailable" , eIpmiCcDestinationUnavailable }, { "InsufficientPrivilege" , eIpmiCcInsufficientPrivilege }, { "NotSupportedInPresentState" , eIpmiCcNotSupportedInPresentState }, { "UnknownErr" , eIpmiCcUnknownErr }, { 0, 0 }};const char *IpmiCompletionCodeToString( tIpmiCompletionCode cc ){ return ConvIntToString( cc, completion_code_map, "Invalid" ); }struct cIpmiCmdToClass{ const char *m_name; tIpmiNetfn m_netfn; tIpmiCmd m_cmd;};static cIpmiCmdToClass cmd_class_map[] ={ // Chassis netfn { "GetChassisCapabilities" , eIpmiNetfnChassis , eIpmiCmdGetChassisCapabilities }, { "GetChassisStatus" , eIpmiNetfnChassis , eIpmiCmdGetChassisStatus }, { "ChassisControl" , eIpmiNetfnChassis , eIpmiCmdChassisControl }, { "ChassisReset" , eIpmiNetfnChassis , eIpmiCmdChassisReset }, { "ChassisIdentify" , eIpmiNetfnChassis , eIpmiCmdChassisIdentify }, { "SetChassisCapabilities" , eIpmiNetfnChassis , eIpmiCmdSetChassisCapabilities }, { "SetPowerRestorePolicy" , eIpmiNetfnChassis , eIpmiCmdSetPowerRestorePolicy }, { "GetSystemRestartCause" , eIpmiNetfnChassis , eIpmiCmdGetSystemRestartCause }, { "SetSystemBootOptions" , eIpmiNetfnChassis , eIpmiCmdSetSystemBootOptions }, { "GetSystemBootOptions" , eIpmiNetfnChassis , eIpmiCmdGetSystemBootOptions }, { "GetPohCounter" , eIpmiNetfnChassis , eIpmiCmdGetPohCounter }, // Bridge netfn { "GetBridgeState" , eIpmiNetfnBridge , eIpmiCmdGetBridgeState }, { "SetBridgeState" , eIpmiNetfnBridge , eIpmiCmdSetBridgeState }, { "GetIcmbAddress" , eIpmiNetfnBridge , eIpmiCmdGetIcmbAddress }, { "SetIcmbAddress" , eIpmiNetfnBridge , eIpmiCmdSetIcmbAddress }, { "SetBridgeProxyAddress" , eIpmiNetfnBridge , eIpmiCmdSetBridgeProxyAddress }, { "GetBridgeStatistics" , eIpmiNetfnBridge , eIpmiCmdGetBridgeStatistics }, { "GetIcmbCapabilities" , eIpmiNetfnBridge , eIpmiCmdGetIcmbCapabilities }, { "ClearBridgeStatistics" , eIpmiNetfnBridge , eIpmiCmdClearBridgeStatistics }, { "GetBridgeProxyAddress" , eIpmiNetfnBridge , eIpmiCmdGetBridgeProxyAddress }, { "GetIcmbConnectorInfo" , eIpmiNetfnBridge , eIpmiCmdGetIcmbConnectorInfo }, { "SetIcmbConnectorInfo" , eIpmiNetfnBridge , eIpmiCmdSetIcmbConnectorInfo }, { "SendIcmbConnectionId" , eIpmiNetfnBridge , eIpmiCmdSendIcmbConnectionId }, { "PrepareForDiscovery" , eIpmiNetfnBridge , eIpmiCmdPrepareForDiscovery }, { "GetAddresses" , eIpmiNetfnBridge , eIpmiCmdGetAddresses }, { "SetDiscovered" , eIpmiNetfnBridge , eIpmiCmdSetDiscovered }, { "GetChassisDeviceId" , eIpmiNetfnBridge , eIpmiCmdGetChassisDeviceId }, { "SetChassisDeviceId" , eIpmiNetfnBridge , eIpmiCmdSetChassisDeviceId }, { "BridgeRequest" , eIpmiNetfnBridge , eIpmiCmdBridgeRequest }, { "BridgeMessage" , eIpmiNetfnBridge , eIpmiCmdBridgeMessage }, { "GetEventCount" , eIpmiNetfnBridge , eIpmiCmdGetEventCount }, { "SetEventdestination" , eIpmiNetfnBridge , eIpmiCmdSetEventdestination }, { "SetEventReceptionState" , eIpmiNetfnBridge , eIpmiCmdSetEventReceptionState }, { "SendIcmbEventMessage" , eIpmiNetfnBridge , eIpmiCmdSendIcmbEventMessage }, { "GetEventDestiation" , eIpmiNetfnBridge , eIpmiCmdGetEventDestiation }, { "GetEventReceptionState" , eIpmiNetfnBridge , eIpmiCmdGetEventReceptionState }, { "ErrorReport" , eIpmiNetfnBridge , eIpmiCmdErrorReport }, // Sensor/Event netfn { "SetEventReceiver" , eIpmiNetfnSensorEvent, eIpmiCmdSetEventReceiver }, { "GetEventReceiver" , eIpmiNetfnSensorEvent, eIpmiCmdGetEventReceiver }, { "PlatformEvent" , eIpmiNetfnSensorEvent, eIpmiCmdPlatformEvent }, { "GetPefCapabilities" , eIpmiNetfnSensorEvent, eIpmiCmdGetPefCapabilities }, { "ArmPefPostponeTimer" , eIpmiNetfnSensorEvent, eIpmiCmdArmPefPostponeTimer }, { "SetPefConfigParms" , eIpmiNetfnSensorEvent, eIpmiCmdSetPefConfigParms }, { "GetPefConfigParms" , eIpmiNetfnSensorEvent, eIpmiCmdGetPefConfigParms },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -