summaryrefslogtreecommitdiffstats
path: root/systemintfcmds.cpp
diff options
context:
space:
mode:
authorYong Li <yong.b.li@linux.intel.com>2019-10-29 13:24:40 +0800
committerYong Li <yong.b.li@linux.intel.com>2019-11-04 10:55:26 +0800
commitecd7bb9889e512b654ed4596e3f4d5efeadcc05b (patch)
tree066a898e8ff4247ee3719cb4235cc60d5cd8536e /systemintfcmds.cpp
parenta729bf414b8d44bbb7ca28eefe1003786d37c353 (diff)
downloadphosphor-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.cpp34
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,
OpenPOWER on IntegriCloud