Update mfg mode query to D-Bus interface
Updated manufacturing mode query to be based on D-Bus interface
instead of uint8_t as earlier. This is done to be in sync
with common D-Bus interface
Tested:
With updated special-mode-mgr daemon, which follows the
D-Bus interface
1. Verified that manufacturing mode commands are executed as
before, when in manufacturing mode.
Change-Id: I1828739751272b8d9151e2ab4a32c4861bbe90d7
Signed-off-by: Richard Marian Thomaiyar <richard.marian.thomaiyar@linux.intel.com>
diff --git a/src/manufacturingcommands.cpp b/src/manufacturingcommands.cpp
index 9d81930..8b3d846 100644
--- a/src/manufacturingcommands.cpp
+++ b/src/manufacturingcommands.cpp
@@ -668,7 +668,7 @@
if (request->payload.size() > 4)
{
// Allow write data count > 1, only if it is in MFG mode
- if (mtm.getAccessLvl() != MtmLvl::mtmAvailable)
+ if (!mtm.isMfgMode())
{
return ipmi::ccInsufficientPrivilege;
}
@@ -687,7 +687,7 @@
case makeCmdKey(ipmi::netFnStorage, ipmi::storage::cmdWriteFruData):
// Check for MTM mode
- if (mtm.getAccessLvl() != MtmLvl::mtmAvailable)
+ if (!mtm.isMfgMode())
{
return ipmi::ccInvalidCommand;
}
@@ -820,7 +820,7 @@
// only in MFG mode.
if (writeCount > 1)
{
- if (mtm.getAccessLvl() < MtmLvl::mtmAvailable)
+ if (!mtm.isMfgMode())
{
return ipmi::responseInsufficientPrivilege();
}
@@ -861,8 +861,7 @@
std::vector<uint8_t> writeData = {0x60, 0x1};
std::vector<uint8_t> readBuf(0);
- // TODO Needs to enhance the below security checking
- if (mtm.getAccessLvl() < MtmLvl::mtmAvailable)
+ if (!mtm.isMfgMode())
{
return ipmi::responseInsufficientPrivilege();
}
diff --git a/src/oemcommands.cpp b/src/oemcommands.cpp
index a6eb4a1..9c1a70d 100644
--- a/src/oemcommands.cpp
+++ b/src/oemcommands.cpp
@@ -44,6 +44,7 @@
#include <xyz/openbmc_project/Control/Boot/Source/server.hpp>
#include <xyz/openbmc_project/Control/PowerSupplyRedundancy/server.hpp>
#include <xyz/openbmc_project/Control/Security/RestrictionMode/server.hpp>
+#include <xyz/openbmc_project/Control/Security/SpecialMode/server.hpp>
namespace ipmi
{
@@ -2573,10 +2574,11 @@
restrictionModeValue = static_cast<uint8_t>(
securityNameSpace::RestrictionMode::convertModesFromString(
std::get<std::string>(varRestrMode)));
- auto varSpecialMode = ctx->bus->yield_method_call<std::variant<uint8_t>>(
- ctx->yield, ec, specialModeService, specialModeBasePath,
- dBusPropertyIntf, dBusPropertyGetMethod, specialModeIntf,
- specialModeProperty);
+ auto varSpecialMode =
+ ctx->bus->yield_method_call<std::variant<std::string>>(
+ ctx->yield, ec, specialModeService, specialModeBasePath,
+ dBusPropertyIntf, dBusPropertyGetMethod, specialModeIntf,
+ specialModeProperty);
if (ec)
{
phosphor::logging::log<phosphor::logging::level::ERR>(
@@ -2587,7 +2589,9 @@
}
else
{
- specialModeValue = std::get<uint8_t>(varSpecialMode);
+ specialModeValue = static_cast<uint8_t>(
+ securityNameSpace::SpecialMode::convertModesFromString(
+ std::get<std::string>(varSpecialMode)));
}
return ipmi::responseSuccess(restrictionModeValue, specialModeValue);
}