summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/ipmid/handler.hpp11
-rw-r--r--ipmid-new.cpp2
2 files changed, 8 insertions, 5 deletions
diff --git a/include/ipmid/handler.hpp b/include/ipmid/handler.hpp
index 1643e58..17beb42 100644
--- a/include/ipmid/handler.hpp
+++ b/include/ipmid/handler.hpp
@@ -278,12 +278,14 @@ template <>
class IpmiHandler<ipmid_callback_t> final : public HandlerBase
{
public:
- explicit IpmiHandler(const ipmid_callback_t& handler) : handler_(handler)
+ explicit IpmiHandler(const ipmid_callback_t& handler, void* ctx = nullptr) :
+ handler_(handler), handlerCtx(ctx)
{
}
private:
ipmid_callback_t handler_;
+ void* handlerCtx;
/** @brief call the registered handler with the request
*
@@ -315,7 +317,7 @@ class IpmiHandler<ipmid_callback_t> final : public HandlerBase
{
ccRet = handler_(request->ctx->netFn, request->ctx->cmd,
request->payload.data(), response->payload.data(),
- &len, nullptr);
+ &len, handlerCtx);
}
catch (const std::exception& e)
{
@@ -453,9 +455,10 @@ class IpmiHandler<oem::Handler> final : public HandlerBase
*
* @return A shared_ptr to the created handler object
*/
-inline auto makeLegacyHandler(const ipmid_callback_t& handler)
+inline auto makeLegacyHandler(const ipmid_callback_t& handler,
+ void* ctx = nullptr)
{
- HandlerBase::ptr ptr(new IpmiHandler<ipmid_callback_t>(handler));
+ HandlerBase::ptr ptr(new IpmiHandler<ipmid_callback_t>(handler, ctx));
return ptr;
}
diff --git a/ipmid-new.cpp b/ipmid-new.cpp
index 24d1ce5..ed45173 100644
--- a/ipmid-new.cpp
+++ b/ipmid-new.cpp
@@ -461,7 +461,7 @@ void ipmi_register_callback(ipmi_netfn_t netFn, ipmi_cmd_t cmd,
ipmi_context_t context, ipmid_callback_t handler,
ipmi_cmd_privilege_t priv)
{
- auto h = ipmi::makeLegacyHandler(handler);
+ auto h = ipmi::makeLegacyHandler(handler, context);
// translate priv from deprecated enum to current
ipmi::Privilege realPriv;
switch (priv)
OpenPOWER on IntegriCloud