diff options
author | Yong Li <yong.b.li@linux.intel.com> | 2019-10-29 13:24:40 +0800 |
---|---|---|
committer | Yong Li <yong.b.li@linux.intel.com> | 2019-11-04 10:55:26 +0800 |
commit | ecd7bb9889e512b654ed4596e3f4d5efeadcc05b (patch) | |
tree | 066a898e8ff4247ee3719cb4235cc60d5cd8536e /systemintfcmds.cpp | |
parent | a729bf414b8d44bbb7ca28eefe1003786d37c353 (diff) | |
download | phosphor-host-ipmid-ecd7bb9889e512b654ed4596e3f4d5efeadcc05b.tar.gz phosphor-host-ipmid-ecd7bb9889e512b654ed4596e3f4d5efeadcc05b.zip |
Move set bmc global command to new API
Rewrite set bmc global command to the new API.
Tested:
ipmitool raw 6 0x2e 8
Unable to send RAW command (channel=0x0 netfn=0x6 lun=0x0 cmd=0x2e rsp=0xcc):
Invalid data field in request
ipmitool mc setenables recv_msg_intr=on system_event_log=on
Enabling Receive Message Queue Interrupt
Enabling System Event Logging
Nothing to change...
Receive Message Queue Interrupt : enabled
Event Message Buffer Full Interrupt : disabled
Event Message Buffer : disabled
System Event Logging : enabled
OEM 0 : disabled
OEM 1 : disabled
OEM 2 : disabled
Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
Change-Id: I79bb6186b880c8f26890cc6a1851ef05650efc5b
Diffstat (limited to 'systemintfcmds.cpp')
-rw-r--r-- | systemintfcmds.cpp | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/systemintfcmds.cpp b/systemintfcmds.cpp index 0c50c87..9ec65d1 100644 --- a/systemintfcmds.cpp +++ b/systemintfcmds.cpp @@ -100,30 +100,23 @@ ipmi_ret_t ipmi_app_get_bmc_global_enables(ipmi_netfn_t netfn, ipmi_cmd_t cmd, return rc; } -ipmi_ret_t ipmi_app_set_bmc_global_enables(ipmi_netfn_t netfn, ipmi_cmd_t cmd, - ipmi_request_t request, - ipmi_response_t response, - ipmi_data_len_t data_len, - ipmi_context_t context) +ipmi::RspType<> ipmiAppSetBMCGlobalEnable( + ipmi::Context::ptr ctx, bool receiveMessageQueueInterruptEnabled, + bool eventMessageBufferFullInterruptEnabled, bool eventMessageBufferEnabled, + bool systemEventLogEnable, uint1_t reserved, bool OEM0Enabled, + bool OEM1Enabled, bool OEM2Enabled) { - ipmi_ret_t rc = IPMI_CC_OK; - - uint8_t reqMask = *reinterpret_cast<uint8_t*>(request); - if (sizeof(reqMask) != *data_len) - { - *data_len = 0; - return IPMI_CC_REQ_DATA_LEN_INVALID; - } - - *data_len = 0; // Recv Message Queue and SEL are enabled by default. // Event Message buffer are disabled by default (not supported). // Any request that try to change the mask will be rejected - if (reqMask != (selEnable | recvMsgQueueEnable)) + if (!receiveMessageQueueInterruptEnabled || !systemEventLogEnable || + eventMessageBufferFullInterruptEnabled || eventMessageBufferEnabled || + OEM0Enabled || OEM1Enabled || OEM2Enabled || reserved) { - return IPMI_CC_INVALID_FIELD_REQUEST; + return ipmi::responseInvalidFieldRequest(); } - return rc; + + return ipmi::responseSuccess(); } namespace @@ -143,8 +136,9 @@ void register_netfn_app_functions() ipmi_app_read_event, SYSTEM_INTERFACE); // <Set BMC Global Enables> - ipmi_register_callback(NETFUN_APP, IPMI_CMD_SET_BMC_GLOBAL_ENABLES, NULL, - ipmi_app_set_bmc_global_enables, SYSTEM_INTERFACE); + ipmi::registerHandler(ipmi::prioOpenBmcBase, ipmi::netFnApp, + ipmi::app::cmdSetBmcGlobalEnables, + ipmi::Privilege::Admin, ipmiAppSetBMCGlobalEnable); // <Get BMC Global Enables> ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_BMC_GLOBAL_ENABLES, NULL, |