Fix for Set Chassis Capability Command
- Current IPMI Set Chassis Capability command
does not have support for excluding the
Chassis Bridge Device Address which is optional.
- Added support to make Chassis Bridge Device
Address as optional.
- Tested and verified
Set and Get Chassis Capability commands.
Change-Id: I1035667a4faad5402beb2fad7d062bdfacbdb19f
Signed-off-by: Nikhila D <nikhilad@ami.com>
diff --git a/chassishandler.cpp b/chassishandler.cpp
index fc7e2d9..d4bc27d 100644
--- a/chassishandler.cpp
+++ b/chassishandler.cpp
@@ -720,7 +720,7 @@
uint8_t smDeviceAddr,
- uint8_t bridgeDeviceAddr)
+ std::optional<uint8_t> bridgeDeviceAddr)
{
// check input data
if (reserved1 != 0)
@@ -756,11 +756,15 @@
return ipmi::responseInvalidFieldRequest();
}
- if ((bridgeDeviceAddr & ~chassisCapAddrMask) != 0)
+ if (bridgeDeviceAddr.has_value())
{
- lg2::error("Unsupported request parameter(Bridge Addr) for REQ={REQ}",
- "REQ", lg2::hex, bridgeDeviceAddr);
- return ipmi::responseInvalidFieldRequest();
+ if ((bridgeDeviceAddr.value() & ~chassisCapAddrMask) != 0)
+ {
+ lg2::error(
+ "Unsupported request parameter(Bridge Addr) for REQ={REQ}",
+ "REQ", lg2::hex, bridgeDeviceAddr.value());
+ return ipmi::responseInvalidFieldRequest();
+ }
}
try
@@ -793,9 +797,13 @@
chassisCapObject.first, chassisCapIntf,
chassisSMDevAddrProp, smDeviceAddr);
- ipmi::setDbusProperty(bus, chassisCapObject.second,
- chassisCapObject.first, chassisCapIntf,
- chassisBridgeDevAddrProp, bridgeDeviceAddr);
+ if (bridgeDeviceAddr.has_value())
+ {
+ ipmi::setDbusProperty(bus, chassisCapObject.second,
+ chassisCapObject.first, chassisCapIntf,
+ chassisBridgeDevAddrProp,
+ bridgeDeviceAddr.value());
+ }
}
catch (const std::exception& e)
{