dbus-sdr: fix build error when enable sel-logger-clears-sel
Symptom:
When enable -Dsel-logger-clears-sel=enabled with meson build.
There is build error in function ipmiStorageClearSEL() as below:
error: 'ctx' was not declared in this scope
| ctx->bus->yield_method_call<>(ctx->yield, ec, selLoggerServiceName,
error: expected primary-expression before '>' token
| ctx->bus->yield_method_call<>(ctx->yield, ec, selLoggerServiceName,
Root cause:
There is no define "ctx" in ipmiStorageClearSEL() definition.
ipmi::RspType<uint8_t> ipmiStorageClearSEL(ipmi::Context::ptr,
Solution:
Add define "ctx" for ipmi context pointer.
ipmi::RspType<uint8_t> ipmiStorageClearSEL(ipmi::Context::ptr ctx,
Verified:
bitbake phosphor-ipmi-host and build pass without errors.
Signed-off-by: Tim Lee <timlee660101@gmail.com>
Change-Id: Id52aeb546c4c1f382873761e9ef9196ab8147dc7
diff --git a/dbus-sdr/storagecommands.cpp b/dbus-sdr/storagecommands.cpp
index 61f36e5..aaf97e1 100644
--- a/dbus-sdr/storagecommands.cpp
+++ b/dbus-sdr/storagecommands.cpp
@@ -1121,7 +1121,7 @@
return ipmi::responseSuccess(responseID);
}
-ipmi::RspType<uint8_t> ipmiStorageClearSEL(ipmi::Context::ptr,
+ipmi::RspType<uint8_t> ipmiStorageClearSEL(ipmi::Context::ptr ctx,
uint16_t reservationID,
const std::array<uint8_t, 3>& clr,
uint8_t eraseOperation)
@@ -1170,18 +1170,15 @@
}
// Reload rsyslog so it knows to start new log files
- std::shared_ptr<sdbusplus::asio::connection> dbus = getSdBus();
- sdbusplus::message_t rsyslogReload = dbus->new_method_call(
- "org.freedesktop.systemd1", "/org/freedesktop/systemd1",
- "org.freedesktop.systemd1.Manager", "ReloadUnit");
- rsyslogReload.append("rsyslog.service", "replace");
- try
+ boost::system::error_code ec;
+ callDbusMethod(ctx->yield, ec, "org.freedesktop.systemd1",
+ "/org/freedesktop/systemd1",
+ "org.freedesktop.systemd1.Manager", "ReloadUnit",
+ "rsyslog.service", "replace");
+ if (ec)
{
- sdbusplus::message_t reloadResponse = dbus->call(rsyslogReload);
- }
- catch (const sdbusplus::exception_t& e)
- {
- phosphor::logging::log<phosphor::logging::level::ERR>(e.what());
+ std::cerr << "error in reload rsyslog: " << ec << std::endl;
+ return ipmi::responseUnspecifiedError();
}
#else
boost::system::error_code ec;