summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Venture <venture@google.com>2018-08-31 11:55:55 -0700
committerPatrick Venture <venture@google.com>2018-09-07 23:45:41 +0000
commit0b02be925a29357f69abbc9e9a58e7c5aaed2eab (patch)
treec1b39f817d98ffda7b987f9e3f864f576e3bf9ea
parent26f80ab2cc41deadc913190d906f71266c4ed224 (diff)
downloadphosphor-host-ipmid-0b02be925a29357f69abbc9e9a58e7c5aaed2eab.zip
phosphor-host-ipmid-0b02be925a29357f69abbc9e9a58e7c5aaed2eab.tar.gz
add .clang-format
Change-Id: I7c2a527b4751a560703a61fcbe9638b150546af5 Signed-off-by: Patrick Venture <venture@google.com>
-rw-r--r--.clang-format99
-rw-r--r--app/channel.cpp93
-rw-r--r--app/channel.hpp54
-rw-r--r--app/watchdog.cpp85
-rw-r--r--app/watchdog.hpp36
-rw-r--r--app/watchdog_service.cpp20
-rw-r--r--app/watchdog_service.hpp165
-rw-r--r--apphandler.cpp320
-rw-r--r--apphandler.h24
-rw-r--r--chassishandler.cpp730
-rw-r--r--chassishandler.h33
-rw-r--r--dcmihandler.cpp467
-rw-r--r--dcmihandler.hpp442
-rw-r--r--elog-errors.hpp594
-rw-r--r--error-HostEvent.hpp14
-rw-r--r--fruread.hpp3
-rw-r--r--globalhandler.cpp21
-rw-r--r--groupext.cpp18
-rw-r--r--host-cmd-manager.cpp53
-rw-r--r--host-cmd-manager.hpp154
-rw-r--r--host-interface.cpp47
-rw-r--r--host-interface.hpp73
-rw-r--r--host-ipmid/ipmid-api.h67
-rw-r--r--host-ipmid/ipmid-host-cmd-utils.hpp71
-rw-r--r--host-ipmid/ipmid-host-cmd.hpp5
-rw-r--r--host-ipmid/oemopenbmc.hpp5
-rw-r--r--host-ipmid/oemrouter.hpp48
-rw-r--r--ipmi_fru_info_area.cpp195
-rw-r--r--ipmi_fru_info_area.hpp5
-rw-r--r--ipmid.cpp381
-rw-r--r--ipmid.hpp11
-rw-r--r--ipmisensor.cpp546
-rw-r--r--ipmiwhitelist.hpp2
-rw-r--r--net.cpp5
-rw-r--r--oemrouter.cpp59
-rw-r--r--read_fru_data.cpp77
-rw-r--r--read_fru_data.hpp9
-rw-r--r--sample.cpp2
-rw-r--r--selutility.cpp118
-rw-r--r--selutility.hpp71
-rw-r--r--sensordatahandler.cpp130
-rw-r--r--sensordatahandler.hpp84
-rw-r--r--sensorhandler.cpp472
-rw-r--r--sensorhandler.h169
-rw-r--r--settings.cpp29
-rw-r--r--settings.hpp56
-rw-r--r--softoff/mainapp.cpp22
-rw-r--r--softoff/softoff.cpp51
-rw-r--r--softoff/softoff.hpp241
-rw-r--r--softoff/test/utest.cpp136
-rw-r--r--storageaddsel.cpp176
-rw-r--r--storageaddsel.h2
-rw-r--r--storagehandler.cpp271
-rw-r--r--storagehandler.h82
-rw-r--r--systemintfcmds.cpp69
-rw-r--r--systemintfcmds.h12
-rw-r--r--test/oemrouter_unittest.cpp76
-rw-r--r--test/sample_unittest.cpp4
-rw-r--r--testaddsel.cpp69
-rw-r--r--testit.cpp115
-rw-r--r--timer.cpp17
-rw-r--r--timer.hpp156
-rw-r--r--transporthandler.cpp464
-rw-r--r--transporthandler.hpp21
-rw-r--r--types.hpp102
-rw-r--r--utils.cpp260
-rw-r--r--utils.hpp168
67 files changed, 4311 insertions, 4365 deletions
diff --git a/.clang-format b/.clang-format
new file mode 100644
index 0000000..ea71ad6
--- /dev/null
+++ b/.clang-format
@@ -0,0 +1,99 @@
+---
+Language: Cpp
+# BasedOnStyle: LLVM
+AccessModifierOffset: -2
+AlignAfterOpenBracket: Align
+AlignConsecutiveAssignments: false
+AlignConsecutiveDeclarations: false
+AlignEscapedNewlinesLeft: false
+AlignOperands: true
+AlignTrailingComments: true
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortBlocksOnASingleLine: false
+AllowShortCaseLabelsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: None
+AllowShortIfStatementsOnASingleLine: false
+AllowShortLoopsOnASingleLine: false
+AlwaysBreakAfterDefinitionReturnType: None
+AlwaysBreakAfterReturnType: None
+AlwaysBreakBeforeMultilineStrings: false
+AlwaysBreakTemplateDeclarations: true
+BinPackArguments: true
+BinPackParameters: true
+BraceWrapping:
+ AfterClass: true
+ AfterControlStatement: true
+ AfterEnum: true
+ AfterFunction: true
+ AfterNamespace: true
+ AfterObjCDeclaration: true
+ AfterStruct: true
+ AfterUnion: true
+ BeforeCatch: true
+ BeforeElse: true
+ IndentBraces: false
+BreakBeforeBinaryOperators: None
+BreakBeforeBraces: Custom
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializers: AfterColon
+ColumnLimit: 80
+CommentPragmas: '^ IWYU pragma:'
+ConstructorInitializerAllOnOneLineOrOnePerLine: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: true
+DerivePointerAlignment: false
+PointerAlignment: Left
+DisableFormat: false
+ExperimentalAutoDetectBinPacking: false
+FixNamespaceComments: true
+ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
+IncludeBlocks: Regroup
+IncludeCategories:
+ - Regex: '^[<"](gtest|gmock)'
+ Priority: 5
+ - Regex: '^"config.h"'
+ Priority: -1
+ - Regex: '^".*\.hpp"'
+ Priority: 1
+ - Regex: '^<.*\.h>'
+ Priority: 2
+ - Regex: '^<.*'
+ Priority: 3
+ - Regex: '.*'
+ Priority: 4
+IndentCaseLabels: true
+IndentWidth: 4
+IndentWrappedFunctionNames: true
+KeepEmptyLinesAtTheStartOfBlocks: true
+MacroBlockBegin: ''
+MacroBlockEnd: ''
+MaxEmptyLinesToKeep: 1
+NamespaceIndentation: None
+ObjCBlockIndentWidth: 2
+ObjCSpaceAfterProperty: false
+ObjCSpaceBeforeProtocolList: true
+PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakComment: 300
+PenaltyBreakFirstLessLess: 120
+PenaltyBreakString: 1000
+PenaltyExcessCharacter: 1000000
+PenaltyReturnTypeOnItsOwnLine: 60
+ReflowComments: true
+SortIncludes: true
+SortUsingDeclarations: true
+SpaceAfterCStyleCast: false
+SpaceBeforeAssignmentOperators: true
+SpaceBeforeParens: ControlStatements
+SpaceInEmptyParentheses: false
+SpacesBeforeTrailingComments: 1
+SpacesInAngles: false
+SpacesInContainerLiterals: true
+SpacesInCStyleCastParentheses: false
+SpacesInParentheses: false
+SpacesInSquareBrackets: false
+Standard: Cpp11
+TabWidth: 4
+UseTab: Never
+...
+
diff --git a/app/channel.cpp b/app/channel.cpp
index 3c011fd..2fee5cc 100644
--- a/app/channel.cpp
+++ b/app/channel.cpp
@@ -1,17 +1,17 @@
#include "channel.hpp"
-#include "types.hpp"
+
+#include "net.hpp"
#include "transporthandler.hpp"
+#include "types.hpp"
#include "utils.hpp"
-#include "net.hpp"
-#include <fstream>
-#include <string>
#include <arpa/inet.h>
-#include <phosphor-logging/log.hpp>
+#include <fstream>
#include <phosphor-logging/elog-errors.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
-
+#include <phosphor-logging/log.hpp>
+#include <string>
+#include <xyz/openbmc_project/Common/error.hpp>
using namespace phosphor::logging;
using namespace sdbusplus::xyz::openbmc_project::Common::Error;
@@ -22,8 +22,8 @@ using namespace sdbusplus::xyz::openbmc_project::Common::Error;
*/
struct GetChannelAccessRequest
{
- uint8_t channelNumber; //!< Channel number.
- uint8_t volatileSetting; //!< Get non-volatile or the volatile setting.
+ uint8_t channelNumber; //!< Channel number.
+ uint8_t volatileSetting; //!< Get non-volatile or the volatile setting.
} __attribute__((packed));
/** @struct GetChannelAccessResponse
@@ -32,20 +32,21 @@ struct GetChannelAccessRequest
*/
struct GetChannelAccessResponse
{
- uint8_t settings; //!< Channel settings.
- uint8_t privilegeLimit; //!< Channel privilege level limit.
+ uint8_t settings; //!< Channel settings.
+ uint8_t privilegeLimit; //!< Channel privilege level limit.
} __attribute__((packed));
-
ipmi_ret_t ipmi_get_channel_access(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
- auto requestData = reinterpret_cast<const GetChannelAccessRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const GetChannelAccessRequest*>(request);
std::vector<uint8_t> outPayload(sizeof(GetChannelAccessResponse));
- auto responseData = reinterpret_cast<GetChannelAccessResponse*>
- (outPayload.data());
+ auto responseData =
+ reinterpret_cast<GetChannelAccessResponse*>(outPayload.data());
/*
* The value Eh is used as a way to identify the current channel that
@@ -71,7 +72,7 @@ ipmi_ret_t ipmi_get_channel_access(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
constexpr auto channelSetting = 0x32;
responseData->settings = channelSetting;
- //Defaulting the channel privilege to administrator level.
+ // Defaulting the channel privilege to administrator level.
responseData->privilegeLimit = PRIVILEGE_ADMIN;
*data_len = outPayload.size();
@@ -91,26 +92,35 @@ ipmi_ret_t ipmi_get_channel_access(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
#define IPMI_CHANNEL_MEDIUM_TYPE_OTHER 6
ipmi_ret_t ipmi_app_channel_info(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
- uint8_t resp[] = {
- 1,
- IPMI_CHANNEL_MEDIUM_TYPE_OTHER,
- IPMI_CHANNEL_TYPE_IPMB,
- 1,0x41,0xA7,0x00,0,0};
- uint8_t *p = (uint8_t*) request;
+ uint8_t resp[] = {1,
+ IPMI_CHANNEL_MEDIUM_TYPE_OTHER,
+ IPMI_CHANNEL_TYPE_IPMB,
+ 1,
+ 0x41,
+ 0xA7,
+ 0x00,
+ 0,
+ 0};
+ uint8_t* p = (uint8_t*)request;
int channel = (*p) & CHANNEL_MASK;
std::string ethdevice = ipmi::network::ChanneltoEthernet(channel);
// The supported channels numbers are those which are configured.
// Channel Number E is used as way to identify the current channel
// that the command is being is received from.
- if (channel != 0xe && ethdevice.empty()) {
+ if (channel != 0xe && ethdevice.empty())
+ {
rc = IPMI_CC_PARM_OUT_OF_RANGE;
*data_len = 0;
- } else {
+ }
+ else
+ {
*data_len = sizeof(resp);
memcpy(response, resp, *data_len);
}
@@ -161,7 +171,6 @@ std::vector<uint8_t> getCipherRecords()
records.push_back(record.value(oem, 0));
records.push_back(record.value(oem, 0) >> 8);
records.push_back(record.value(oem, 0) >> 16);
-
}
else
{
@@ -182,10 +191,9 @@ std::vector<uint8_t> getCipherRecords()
return records;
}
-} //namespace cipher
+} // namespace cipher
-ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
- ipmi_cmd_t cmd,
+ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_request_t request,
ipmi_response_t response,
ipmi_data_len_t data_len,
@@ -197,7 +205,6 @@ ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
auto requestData =
reinterpret_cast<const GetChannelCipherRequest*>(request);
-
if (*data_len < sizeof(GetChannelCipherRequest))
{
*data_len = 0;
@@ -208,7 +215,7 @@ ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
// Support only for list algorithms by cipher suite
if (cipher::listCipherSuite !=
- (requestData->listIndex & cipher::listTypeMask))
+ (requestData->listIndex & cipher::listTypeMask))
{
return IPMI_CC_INVALID_FIELD_REQUEST;
}
@@ -220,7 +227,7 @@ ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
records = cipher::getCipherRecords();
recordInit = true;
}
- catch (const std::exception &e)
+ catch (const std::exception& e)
{
return IPMI_CC_UNSPECIFIED_ERROR;
}
@@ -228,17 +235,16 @@ ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
// List index(00h-3Fh), 0h selects the first set of 16, 1h selects the next
// set of 16 and so on.
- auto index = static_cast<size_t>(
- requestData->listIndex & cipher::listIndexMask);
+ auto index =
+ static_cast<size_t>(requestData->listIndex & cipher::listIndexMask);
// Calculate the number of record data bytes to be returned.
auto start = std::min(index * cipher::respSize, records.size());
- auto end = std::min((index * cipher::respSize) + cipher::respSize,
- records.size());
+ auto end =
+ std::min((index * cipher::respSize) + cipher::respSize, records.size());
auto size = end - start;
- auto responseData = reinterpret_cast<GetChannelCipherRespHeader*>
- (response);
+ auto responseData = reinterpret_cast<GetChannelCipherRespHeader*>(response);
responseData->channelNumber = cipher::defaultChannelNumber;
if (!size)
@@ -247,8 +253,7 @@ ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
}
else
{
- std::copy_n(records.data() + start,
- size,
+ std::copy_n(records.data() + start, size,
static_cast<uint8_t*>(response) + 1);
*data_len = size + sizeof(GetChannelCipherRespHeader);
}
diff --git a/app/channel.hpp b/app/channel.hpp
index 79522e4..1b761f8 100644
--- a/app/channel.hpp
+++ b/app/channel.hpp
@@ -12,13 +12,11 @@
*
* @return IPMI_CC_OK on success, non-zero otherwise.
*/
-ipmi_ret_t ipmi_set_channel_access(
- 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_ret_t ipmi_set_channel_access(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);
/** @brief The get channel access IPMI command.
*
@@ -31,13 +29,11 @@ ipmi_ret_t ipmi_set_channel_access(
*
* @return IPMI_CC_OK on success, non-zero otherwise.
*/
-ipmi_ret_t ipmi_get_channel_access(
- 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_ret_t ipmi_get_channel_access(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);
/** @brief The get channel info IPMI command.
*
@@ -50,13 +46,11 @@ ipmi_ret_t ipmi_get_channel_access(
*
* @return IPMI_CC_OK on success, non-zero otherwise.
*/
-ipmi_ret_t ipmi_app_channel_info(
- 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_ret_t ipmi_app_channel_info(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);
/** @brief Implementation of get channel cipher suites command
*
@@ -69,8 +63,7 @@ ipmi_ret_t ipmi_app_channel_info(
*
* @return IPMI_CC_OK on success, non-zero otherwise.
*/
-ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn,
- ipmi_cmd_t cmd,
+ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_request_t request,
ipmi_response_t response,
ipmi_data_len_t data_len,
@@ -86,8 +79,7 @@ static constexpr auto listIndexMask = 0x3F;
static constexpr auto respSize = 16;
using Json = nlohmann::json;
-static constexpr auto configFile =
- "/usr/share/ipmi-providers/cipher_list.json";
+static constexpr auto configFile = "/usr/share/ipmi-providers/cipher_list.json";
static constexpr auto cipher = "cipher";
static constexpr auto stdCipherSuite = 0xC0;
static constexpr auto oemCipherSuite = 0xC1;
@@ -98,7 +90,7 @@ static constexpr auto integrityTag = 0x40;
static constexpr auto conf = "confidentiality";
static constexpr auto confTag = 0x80;
-} //namespace cipher
+} // namespace cipher
/** @struct GetChannelCipherRequest
*
@@ -106,9 +98,9 @@ static constexpr auto confTag = 0x80;
*/
struct GetChannelCipherRequest
{
- uint8_t channelNumber; //!< Channel Number
- uint8_t payloadType; //!< Payload type number
- uint8_t listIndex; //!< List Index
+ uint8_t channelNumber; //!< Channel Number
+ uint8_t payloadType; //!< Payload type number
+ uint8_t listIndex; //!< List Index
} __attribute__((packed));
/** @struct GetChannelCipherRespHeader
@@ -117,7 +109,5 @@ struct GetChannelCipherRequest
*/
struct GetChannelCipherRespHeader
{
- uint8_t channelNumber; //!< Channel Number
+ uint8_t channelNumber; //!< Channel Number
} __attribute__((packed));
-
-
diff --git a/app/watchdog.cpp b/app/watchdog.cpp
index da8ccf3..ad167df 100644
--- a/app/watchdog.cpp
+++ b/app/watchdog.cpp
@@ -1,29 +1,29 @@
#include "watchdog.hpp"
-#include <cstdint>
+#include "ipmid.hpp"
+#include "watchdog_service.hpp"
+
#include <endian.h>
-#include <phosphor-logging/elog.hpp>
+
+#include <cstdint>
#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/log.hpp>
#include <string>
#include <xyz/openbmc_project/Common/error.hpp>
-#include "watchdog_service.hpp"
#include "host-ipmid/ipmid-api.h"
-#include "ipmid.hpp"
using phosphor::logging::level;
using phosphor::logging::log;
using phosphor::logging::report;
using sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
-ipmi_ret_t ipmi_app_watchdog_reset(
- 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_ret_t ipmi_app_watchdog_reset(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)
{
// We never return data with this command so immediately get rid of it
*data_len = 0;
@@ -66,7 +66,8 @@ ipmi_ret_t ipmi_app_watchdog_reset(
static constexpr uint8_t wd_dont_stop = 0x1 << 6;
static constexpr uint8_t wd_timeout_action_mask = 0x3;
-enum class IpmiAction : uint8_t {
+enum class IpmiAction : uint8_t
+{
None = 0x0,
HardReset = 0x1,
PowerOff = 0x2,
@@ -79,7 +80,7 @@ enum class IpmiAction : uint8_t {
*/
WatchdogService::Action ipmiActionToWdAction(IpmiAction ipmi_action)
{
- switch(ipmi_action)
+ switch (ipmi_action)
{
case IpmiAction::None:
{
@@ -104,24 +105,23 @@ WatchdogService::Action ipmiActionToWdAction(IpmiAction ipmi_action)
}
}
-struct wd_set_req {
+struct wd_set_req
+{
uint8_t timer_use;
uint8_t timer_action;
- uint8_t pretimeout; // (seconds)
+ uint8_t pretimeout; // (seconds)
uint8_t expire_flags;
- uint16_t initial_countdown; // Little Endian (deciseconds)
-} __attribute__ ((packed));
+ uint16_t initial_countdown; // Little Endian (deciseconds)
+} __attribute__((packed));
static_assert(sizeof(wd_set_req) == 6, "wd_set_req has invalid size.");
static_assert(sizeof(wd_set_req) <= MAX_IPMI_BUFFER,
- "wd_get_res can't fit in request buffer.");
+ "wd_get_res can't fit in request buffer.");
-ipmi_ret_t ipmi_app_watchdog_set(
- 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_ret_t ipmi_app_watchdog_set(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)
{
// Extract the request data
if (*data_len < sizeof(wd_set_req))
@@ -144,8 +144,8 @@ ipmi_ret_t ipmi_app_watchdog_set(
}
// Set the action based on the request
- const auto ipmi_action = static_cast<IpmiAction>(
- req.timer_action & wd_timeout_action_mask);
+ const auto ipmi_action =
+ static_cast<IpmiAction>(req.timer_action & wd_timeout_action_mask);
wd_service.setExpireAction(ipmiActionToWdAction(ipmi_action));
// Set the new interval and the time remaining deci -> mill seconds
@@ -158,7 +158,7 @@ ipmi_ret_t ipmi_app_watchdog_set(
return IPMI_CC_OK;
}
- catch (const std::domain_error &)
+ catch (const std::domain_error&)
{
return IPMI_CC_INVALID_FIELD_REQUEST;
}
@@ -188,7 +188,7 @@ ipmi_ret_t ipmi_app_watchdog_set(
*/
IpmiAction wdActionToIpmiAction(WatchdogService::Action wd_action)
{
- switch(wd_action)
+ switch (wd_action)
{
case WatchdogService::Action::None:
{
@@ -216,28 +216,27 @@ IpmiAction wdActionToIpmiAction(WatchdogService::Action wd_action)
}
}
-struct wd_get_res {
+struct wd_get_res
+{
uint8_t timer_use;
uint8_t timer_action;
uint8_t pretimeout;
uint8_t expire_flags;
- uint16_t initial_countdown; // Little Endian (deciseconds)
- uint16_t present_countdown; // Little Endian (deciseconds)
-} __attribute__ ((packed));
+ uint16_t initial_countdown; // Little Endian (deciseconds)
+ uint16_t present_countdown; // Little Endian (deciseconds)
+} __attribute__((packed));
static_assert(sizeof(wd_get_res) == 8, "wd_get_res has invalid size.");
static_assert(sizeof(wd_get_res) <= MAX_IPMI_BUFFER,
- "wd_get_res can't fit in response buffer.");
+ "wd_get_res can't fit in response buffer.");
static constexpr uint8_t wd_dont_log = 0x1 << 7;
static constexpr uint8_t wd_running = 0x1 << 6;
-ipmi_ret_t ipmi_app_watchdog_get(
- 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_ret_t ipmi_app_watchdog_get(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)
{
// Assume we will fail and send no data outside the return code
*data_len = 0;
@@ -250,8 +249,8 @@ ipmi_ret_t ipmi_app_watchdog_get(
// Build and return the response
wd_get_res res;
res.timer_use = wd_dont_log;
- res.timer_action = static_cast<uint8_t>(
- wdActionToIpmiAction(wd_prop.expireAction));
+ res.timer_action =
+ static_cast<uint8_t>(wdActionToIpmiAction(wd_prop.expireAction));
if (wd_prop.enabled)
{
res.timer_use |= wd_running;
diff --git a/app/watchdog.hpp b/app/watchdog.hpp
index 5359a33..507695f 100644
--- a/app/watchdog.hpp
+++ b/app/watchdog.hpp
@@ -13,13 +13,11 @@
*
* @return IPMI_CC_OK on success, an IPMI error code otherwise.
*/
-ipmi_ret_t ipmi_app_watchdog_reset(
- 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_ret_t ipmi_app_watchdog_reset(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);
/** @brief The SET watchdog IPMI command.
*
@@ -32,13 +30,11 @@ ipmi_ret_t ipmi_app_watchdog_reset(
*
* @return IPMI_CC_OK on success, an IPMI error code otherwise.
*/
-ipmi_ret_t ipmi_app_watchdog_set(
- 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_ret_t ipmi_app_watchdog_set(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);
/** @brief The GET watchdog IPMI command.
* @param[in] netfn
@@ -50,10 +46,8 @@ ipmi_ret_t ipmi_app_watchdog_set(
*
* @return IPMI_CC_OK on success, an IPMI error code otherwise.
*/
-ipmi_ret_t ipmi_app_watchdog_get(
- 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_ret_t ipmi_app_watchdog_get(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);
diff --git a/app/watchdog_service.cpp b/app/watchdog_service.cpp
index 6c9edd4..923264b 100644
--- a/app/watchdog_service.cpp
+++ b/app/watchdog_service.cpp
@@ -1,8 +1,8 @@
#include "watchdog_service.hpp"
#include <exception>
-#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/elog.hpp>
#include <phosphor-logging/log.hpp>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/message.hpp>
@@ -13,8 +13,8 @@
#include "host-ipmid/ipmid-api.h"
-using phosphor::logging::entry;
using phosphor::logging::elog;
+using phosphor::logging::entry;
using phosphor::logging::level;
using phosphor::logging::log;
using sdbusplus::message::variant_ns::get;
@@ -29,16 +29,14 @@ static constexpr char prop_intf[] = "org.freedesktop.DBus.Properties";
ipmi::ServiceCache WatchdogService::wd_service(wd_intf, wd_path);
-WatchdogService::WatchdogService()
- : bus(ipmid_get_sd_bus_connection())
+WatchdogService::WatchdogService() : bus(ipmid_get_sd_bus_connection())
{
}
void WatchdogService::resetTimeRemaining(bool enableWatchdog)
{
bool wasValid = wd_service.isValid(bus);
- auto request = wd_service.newMethodCall(
- bus, wd_intf, "ResetTimeRemaining");
+ auto request = wd_service.newMethodCall(bus, wd_intf, "ResetTimeRemaining");
request.append(enableWatchdog);
auto response = bus.call(request);
if (response.is_method_error())
@@ -50,8 +48,8 @@ void WatchdogService::resetTimeRemaining(bool enableWatchdog)
return resetTimeRemaining(enableWatchdog);
}
log<level::ERR>(
- "WatchdogService: Method error resetting time remaining",
- entry("ENABLE_WATCHDOG=%d", !!enableWatchdog));
+ "WatchdogService: Method error resetting time remaining",
+ entry("ENABLE_WATCHDOG=%d", !!enableWatchdog));
elog<InternalFailure>();
}
}
@@ -81,7 +79,7 @@ WatchdogService::Properties WatchdogService::getProperties()
wd_prop.initialized = get<bool>(properties.at("Initialized"));
wd_prop.enabled = get<bool>(properties.at("Enabled"));
wd_prop.expireAction = Watchdog::convertActionFromString(
- get<std::string>(properties.at("ExpireAction")));
+ get<std::string>(properties.at("ExpireAction")));
wd_prop.interval = get<uint64_t>(properties.at("Interval"));
wd_prop.timeRemaining = get<uint64_t>(properties.at("TimeRemaining"));
return wd_prop;
@@ -97,7 +95,7 @@ WatchdogService::Properties WatchdogService::getProperties()
// Needed instead of elog<InternalFailure>() since the compiler can't
// deduce the that elog<>() always throws
throw std::runtime_error(
- "WatchdogService: Should not reach end of getProperties");
+ "WatchdogService: Should not reach end of getProperties");
}
template <typename T>
@@ -137,7 +135,7 @@ T WatchdogService::getProperty(const std::string& key)
// Needed instead of elog<InternalFailure>() since the compiler can't
// deduce the that elog<>() always throws
throw std::runtime_error(
- "WatchdogService: Should not reach end of getProperty");
+ "WatchdogService: Should not reach end of getProperty");
}
template <typename T>
diff --git a/app/watchdog_service.hpp b/app/watchdog_service.hpp
index dfc913a..8056fb7 100644
--- a/app/watchdog_service.hpp
+++ b/app/watchdog_service.hpp
@@ -1,104 +1,107 @@
#pragma once
+#include "utils.hpp"
+
#include <sdbusplus/bus.hpp>
#include <xyz/openbmc_project/State/Watchdog/server.hpp>
-#include "utils.hpp"
-
/** @class WatchdogService
* @brief Access to the running OpenBMC watchdog implementation.
* @details Easy accessor for servers that implement the
* xyz.openbmc_project.State.Watchdog DBus API.
*/
-class WatchdogService {
- public:
- WatchdogService();
+class WatchdogService
+{
+ public:
+ WatchdogService();
- using Action = sdbusplus::xyz::openbmc_project::State::server::Watchdog::Action;
+ using Action =
+ sdbusplus::xyz::openbmc_project::State::server::Watchdog::Action;
- /** @brief Resets the time remaining on the watchdog.
- * Equivalent to setTimeRemaining(getInterval()).
- * Optionally enables the watchdog.
- *
- * @param[in] enableWatchdog - Should the call also enable the watchdog
- */
- void resetTimeRemaining(bool enableWatchdog);
+ /** @brief Resets the time remaining on the watchdog.
+ * Equivalent to setTimeRemaining(getInterval()).
+ * Optionally enables the watchdog.
+ *
+ * @param[in] enableWatchdog - Should the call also enable the watchdog
+ */
+ void resetTimeRemaining(bool enableWatchdog);
- /** @brief Contains a copy of the properties enumerated by the
- * watchdog service.
- */
- struct Properties {
- bool initialized;
- bool enabled;
- Action expireAction;
- uint64_t interval;
- uint64_t timeRemaining;
- };
+ /** @brief Contains a copy of the properties enumerated by the
+ * watchdog service.
+ */
+ struct Properties
+ {
+ bool initialized;
+ bool enabled;
+ Action expireAction;
+ uint64_t interval;
+ uint64_t timeRemaining;
+ };
- /** @brief Retrieves a copy of the currently set properties on the
- * host watchdog
- *
- * @return A populated WatchdogProperties struct
- */
- Properties getProperties();
+ /** @brief Retrieves a copy of the currently set properties on the
+ * host watchdog
+ *
+ * @return A populated WatchdogProperties struct
+ */
+ Properties getProperties();
- /** @brief Get the value of the initialized property on the host
- * watchdog
- *
- * @return The value of the property
- */
- bool getInitialized();
+ /** @brief Get the value of the initialized property on the host
+ * watchdog
+ *
+ * @return The value of the property
+ */
+ bool getInitialized();
- /** @brief Sets the value of the initialized property on the host
- * watchdog
- *
- * @param[in] initialized - The new initializedvalue
- */
- void setInitialized(bool initialized);
+ /** @brief Sets the value of the initialized property on the host
+ * watchdog
+ *
+ * @param[in] initialized - The new initializedvalue
+ */
+ void setInitialized(bool initialized);
- /** @brief Sets the value of the enabled property on the host watchdog
- *
- * @param[in] enabled - The new enabled value
- */
- void setEnabled(bool enabled);
+ /** @brief Sets the value of the enabled property on the host watchdog
+ *
+ * @param[in] enabled - The new enabled value
+ */
+ void setEnabled(bool enabled);
- /** @brief Sets the value of the expireAction property on the host watchdog
- *
- * @param[in] expireAction - The new expireAction value
- */
- void setExpireAction(Action expireAction);
+ /** @brief Sets the value of the expireAction property on the host watchdog
+ *
+ * @param[in] expireAction - The new expireAction value
+ */
+ void setExpireAction(Action expireAction);
- /** @brief Sets the value of the interval property on the host watchdog
- *
- * @param[in] interval - The new interval value
- */
- void setInterval(uint64_t interval);
+ /** @brief Sets the value of the interval property on the host watchdog
+ *
+ * @param[in] interval - The new interval value
+ */
+ void setInterval(uint64_t interval);
- /** @brief Sets the value of the timeRemaining property on the host
- * watchdog
- *
- * @param[in] timeRemaining - The new timeRemaining value
- */
- void setTimeRemaining(uint64_t timeRemaining);
+ /** @brief Sets the value of the timeRemaining property on the host
+ * watchdog
+ *
+ * @param[in] timeRemaining - The new timeRemaining value
+ */
+ void setTimeRemaining(uint64_t timeRemaining);
- private:
- /** @brief sdbusplus handle */
- sdbusplus::bus::bus bus;
- /** @brief The name of the mapped host watchdog service */
- static ipmi::ServiceCache wd_service;
+ private:
+ /** @brief sdbusplus handle */
+ sdbusplus::bus::bus bus;
+ /** @brief The name of the mapped host watchdog service */
+ static ipmi::ServiceCache wd_service;
- /** @brief Gets the value of the property on the host watchdog
- *
- * @param[in] key - The name of the property
- * @return The value of the property
- */
- template <typename T>
- T getProperty(const std::string& key);
+ /** @brief Gets the value of the property on the host watchdog
+ *
+ * @param[in] key - The name of the property
+ * @return The value of the property
+ */
+ template <typename T>
+ T getProperty(const std::string& key);
- /** @brief Sets the value of the property on the host watchdog
- *
- * @param[in] key - The name of the property
- * @param[in] val - The new value
- */
- template <typename T>
- void setProperty(const std::string& key, const T& val);
+ /** @brief Sets the value of the property on the host watchdog
+ *
+ * @param[in] key - The name of the property
+ * @param[in] val - The new value
+ */
+ template <typename T>
+ void setProperty(const std::string& key, const T& val);
};
diff --git a/apphandler.cpp b/apphandler.cpp
index 05da67e..b089331 100644
--- a/apphandler.cpp
+++ b/apphandler.cpp
@@ -1,43 +1,46 @@
#include "apphandler.h"
-#include "app/channel.hpp"
-#include "app/watchdog.hpp"
+
+#include <arpa/inet.h>
+#include <mapper.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <systemd/sd-bus.h>
+
#include "host-ipmid/ipmid-api.h"
-#include "ipmid.hpp"
-#include "nlohmann/json.hpp"
-#include "types.hpp"
-#include "utils.hpp"
#if __has_include(<filesystem>)
#include <filesystem>
#elif __has_include(<experimental/filesystem>)
#include <experimental/filesystem>
-namespace std {
- // splice experimental::filesystem into std
- namespace filesystem = std::experimental::filesystem;
-}
+namespace std
+{
+// splice experimental::filesystem into std
+namespace filesystem = std::experimental::filesystem;
+} // namespace std
#else
-# error filesystem not available
+#error filesystem not available
#endif
-#include <fstream>
-#include <stdio.h>
-#include <stdint.h>
-#include <systemd/sd-bus.h>
-#include <mapper.h>
-#include <array>
-#include <vector>
-#include <string>
-#include <cstddef>
-#include <arpa/inet.h>
+#include "app/channel.hpp"
+#include "app/watchdog.hpp"
+#include "ipmid.hpp"
+#include "nlohmann/json.hpp"
#include "transporthandler.hpp"
+#include "types.hpp"
+#include "utils.hpp"
-#include <phosphor-logging/log.hpp>
+#include <array>
+#include <cstddef>
+#include <fstream>
#include <phosphor-logging/elog-errors.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
-#include "xyz/openbmc_project/Software/Version/server.hpp"
-#include "xyz/openbmc_project/Software/Activation/server.hpp"
+#include <phosphor-logging/log.hpp>
+#include <string>
+#include <vector>
+#include <xyz/openbmc_project/Common/error.hpp>
+#include <xyz/openbmc_project/Software/Activation/server.hpp>
+#include <xyz/openbmc_project/Software/Version/server.hpp>
-extern sd_bus *bus;
+extern sd_bus* bus;
constexpr auto bmc_interface = "xyz.openbmc_project.Inventory.Item.Bmc";
constexpr auto bmc_guid_interface = "xyz.openbmc_project.Common.UUID";
@@ -46,8 +49,7 @@ constexpr auto bmc_guid_len = 16;
static constexpr auto redundancyIntf =
"xyz.openbmc_project.Software.RedundancyPriority";
-static constexpr auto versionIntf =
- "xyz.openbmc_project.Software.Version";
+static constexpr auto versionIntf = "xyz.openbmc_project.Software.Version";
static constexpr auto activationIntf =
"xyz.openbmc_project.Software.Activation";
static constexpr auto softwareRoot = "/xyz/openbmc_project/software";
@@ -64,15 +66,15 @@ namespace fs = std::filesystem;
// Offset in get device id command.
typedef struct
{
- uint8_t id;
- uint8_t revision;
- uint8_t fw[2];
- uint8_t ipmi_ver;
- uint8_t addn_dev_support;
- uint8_t manuf_id[3];
- uint8_t prod_id[2];
- uint8_t aux[4];
-}__attribute__((packed)) ipmi_device_id_t;
+ uint8_t id;
+ uint8_t revision;
+ uint8_t fw[2];
+ uint8_t ipmi_ver;
+ uint8_t addn_dev_support;
+ uint8_t manuf_id[3];
+ uint8_t prod_id[2];
+ uint8_t aux[4];
+} __attribute__((packed)) ipmi_device_id_t;
/**
* @brief Returns the Version info from primary s/w object
@@ -90,8 +92,8 @@ std::string getActiveSoftwareVersionInfo()
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
std::string revision{};
- auto objectTree = ipmi::getAllDbusObjects(bus, softwareRoot, redundancyIntf,
- "");
+ auto objectTree =
+ ipmi::getAllDbusObjects(bus, softwareRoot, redundancyIntf, "");
if (objectTree.empty())
{
log<level::ERR>("No Obj has implemented the s/w redundancy interface",
@@ -149,10 +151,11 @@ std::string getActiveSoftwareVersionInfo()
return revision;
}
-
ipmi_ret_t ipmi_app_set_acpi_power_state(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
*data_len = 0;
@@ -183,16 +186,16 @@ typedef struct
/* Additional details : If the option group exists it will force Auxiliary */
/* Firmware Revision Information 4th byte to 1 indicating the build was */
/* derived with additional edits */
-int convert_version(const char * p, rev_t *rev)
+int convert_version(const char* p, rev_t* rev)
{
std::string s(p);
std::string token;
uint16_t commits;
- auto location = s.find_first_of('v');
+ auto location = s.find_first_of('v');
if (location != std::string::npos)
{
- s = s.substr(location+1);
+ s = s.substr(location + 1);
}
if (!s.empty())
@@ -200,9 +203,9 @@ int convert_version(const char * p, rev_t *rev)
location = s.find_first_of(".");
if (location != std::string::npos)
{
- rev->major = static_cast<char>(
- std::stoi(s.substr(0, location), 0, 16));
- token = s.substr(location+1);
+ rev->major =
+ static_cast<char>(std::stoi(s.substr(0, location), 0, 16));
+ token = s.substr(location + 1);
}
if (!token.empty())
@@ -211,8 +214,8 @@ int convert_version(const char * p, rev_t *rev)
if (location != std::string::npos)
{
rev->minor = static_cast<char>(
- std::stoi(token.substr(0, location), 0, 16));
- token = token.substr(location+1);
+ std::stoi(token.substr(0, location), 0, 16));
+ token = token.substr(location + 1);
}
}
@@ -222,43 +225,46 @@ int convert_version(const char * p, rev_t *rev)
if (!token.empty())
{
commits = std::stoi(token.substr(0, location), 0, 16);
- rev->d[0] = (commits>>8) | (commits<<8);
+ rev->d[0] = (commits >> 8) | (commits << 8);
// commit number we skip
location = token.find_first_of(".-");
if (location != std::string::npos)
{
- token = token.substr(location+1);
+ token = token.substr(location + 1);
}
}
- else {
+ else
+ {
rev->d[0] = 0;
}
if (location != std::string::npos)
{
- token = token.substr(location+1);
+ token = token.substr(location + 1);
}
// Any value of the optional parameter forces it to 1
location = token.find_first_of(".-");
if (location != std::string::npos)
{
- token = token.substr(location+1);
+ token = token.substr(location + 1);
}
commits = (!token.empty()) ? 1 : 0;
- //We do this operation to get this displayed in least significant bytes
- //of ipmitool device id command.
- rev->d[1] = (commits>>8) | (commits<<8);
+ // We do this operation to get this displayed in least significant bytes
+ // of ipmitool device id command.
+ rev->d[1] = (commits >> 8) | (commits << 8);
}
return 0;
}
ipmi_ret_t ipmi_app_get_device_id(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
int r = -1;
@@ -282,7 +288,8 @@ ipmi_ret_t ipmi_app_get_device_id(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
log<level::ERR>(e.what());
}
- if( r >= 0 ) {
+ if (r >= 0)
+ {
// bit7 identifies if the device is available
// 0=normal operation
// 1=device firmware, SDR update,
@@ -317,7 +324,7 @@ ipmi_ret_t ipmi_app_get_device_id(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
dev_id.aux[1] = data.value("aux", 0) >> 16;
dev_id.aux[0] = data.value("aux", 0) >> 24;
- //Don't read the file every time if successful
+ // Don't read the file every time if successful
dev_id_initialized = true;
}
else
@@ -340,8 +347,10 @@ ipmi_ret_t ipmi_app_get_device_id(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_app_get_self_test_results(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
@@ -379,30 +388,32 @@ ipmi_ret_t ipmi_app_get_self_test_results(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_app_get_device_guid(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
- const char *objname = "/org/openbmc/control/chassis0";
- const char *iface = "org.freedesktop.DBus.Properties";
- const char *chassis_iface = "org.openbmc.control.Chassis";
- sd_bus_message *reply = NULL;
+ const char* objname = "/org/openbmc/control/chassis0";
+ const char* iface = "org.freedesktop.DBus.Properties";
+ const char* chassis_iface = "org.openbmc.control.Chassis";
+ sd_bus_message* reply = NULL;
sd_bus_error error = SD_BUS_ERROR_NULL;
int r = 0;
- char *uuid = NULL;
- char *busname = NULL;
+ char* uuid = NULL;
+ char* busname = NULL;
// UUID is in RFC4122 format. Ex: 61a39523-78f2-11e5-9862-e6402cfc3223
// Per IPMI Spec 2.0 need to convert to 16 hex bytes and reverse the byte
// order
// Ex: 0x2332fc2c40e66298e511f2782395a361
- const int resp_size = 16; // Response is 16 hex bytes per IPMI Spec
+ const int resp_size = 16; // Response is 16 hex bytes per IPMI Spec
uint8_t resp_uuid[resp_size]; // Array to hold the formatted response
// Point resp end of array to save in reverse order
- int resp_loc = resp_size-1;
+ int resp_loc = resp_size - 1;
int i = 0;
- char *tokptr = NULL;
- char *id_octet = NULL;
+ char* tokptr = NULL;
+ char* id_octet = NULL;
// Status code.
ipmi_ret_t rc = IPMI_CC_OK;
@@ -410,19 +421,17 @@ ipmi_ret_t ipmi_app_get_device_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// Call Get properties method with the interface and property name
r = mapper_get_service(bus, objname, &busname);
- if (r < 0) {
- log<level::ERR>("Failed to get bus name",
- entry("BUS=%s", objname),
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to get bus name", entry("BUS=%s", objname),
entry("ERRNO=0x%X", -r));
goto finish;
}
- r = sd_bus_call_method(bus,busname,objname,iface,
- "Get",&error, &reply, "ss",
- chassis_iface, "uuid");
+ r = sd_bus_call_method(bus, busname, objname, iface, "Get", &error, &reply,
+ "ss", chassis_iface, "uuid");
if (r < 0)
{
- log<level::ERR>("Failed to call Get Method",
- entry("ERRNO=0x%X", -r));
+ log<level::ERR>("Failed to call Get Method", entry("ERRNO=0x%X", -r));
rc = IPMI_CC_UNSPECIFIED_ERROR;
goto finish;
}
@@ -430,8 +439,7 @@ ipmi_ret_t ipmi_app_get_device_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
r = sd_bus_message_read(reply, "v", "s", &uuid);
if (r < 0 || uuid == NULL)
{
- log<level::ERR>("Failed to get a response",
- entry("ERRNO=0x%X", -r));
+ log<level::ERR>("Failed to get a response", entry("ERRNO=0x%X", -r));
rc = IPMI_CC_RESPONSE_ERROR;
goto finish;
}
@@ -443,8 +451,7 @@ ipmi_ret_t ipmi_app_get_device_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
if (id_octet == NULL)
{
// Error
- log<level::ERR>("Unexpected UUID format",
- entry("UUID=%s", uuid));
+ log<level::ERR>("Unexpected UUID format", entry("UUID=%s", uuid));
rc = IPMI_CC_RESPONSE_ERROR;
goto finish;
}
@@ -453,9 +460,9 @@ ipmi_ret_t ipmi_app_get_device_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
// Calculate the octet string size since it varies
// Divide it by 2 for the array size since 1 byte is built from 2 chars
- int tmp_size = strlen(id_octet)/2;
+ int tmp_size = strlen(id_octet) / 2;
- for(i = 0; i < tmp_size; i++)
+ for (i = 0; i < tmp_size; i++)
{
// Holder of the 2 chars that will become a byte
char tmp_array[3] = {0};
@@ -465,9 +472,9 @@ ipmi_ret_t ipmi_app_get_device_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// Copy end to first
memcpy((void*)&resp_uuid[resp_loc], &resp_byte, 1);
resp_loc--;
- id_octet+=2; // Finished with the 2 chars, advance
+ id_octet += 2; // Finished with the 2 chars, advance
}
- id_octet=strtok_r(NULL, "-", &tokptr); // Get next octet
+ id_octet = strtok_r(NULL, "-", &tokptr); // Get next octet
}
// Data length
@@ -485,8 +492,10 @@ finish:
}
ipmi_ret_t ipmi_app_get_bt_capabilities(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
// Status code.
@@ -494,7 +503,8 @@ ipmi_ret_t ipmi_app_get_bt_capabilities(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// Per IPMI 2.0 spec, the input and output buffer size must be the max
// buffer size minus one byte to allocate space for the length byte.
- uint8_t str[] = {0x01, MAX_IPMI_BUFFER-1, MAX_IPMI_BUFFER-1, 0x0A, 0x01};
+ uint8_t str[] = {0x01, MAX_IPMI_BUFFER - 1, MAX_IPMI_BUFFER - 1, 0x0A,
+ 0x01};
// Data length
*data_len = sizeof(str);
@@ -506,8 +516,10 @@ ipmi_ret_t ipmi_app_get_bt_capabilities(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_app_wildcard_handler(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
// Status code.
ipmi_ret_t rc = IPMI_CC_INVALID;
@@ -521,8 +533,10 @@ ipmi_ret_t ipmi_app_wildcard_handler(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_app_get_sys_guid(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
@@ -536,23 +550,23 @@ ipmi_ret_t ipmi_app_get_sys_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// Read UUID property value from bmcObject
// UUID is in RFC4122 format Ex: 61a39523-78f2-11e5-9862-e6402cfc3223
- auto variant = ipmi::getDbusProperty(
- bus, bmcObject.second, bmcObject.first, bmc_guid_interface,
- bmc_guid_property);
+ auto variant =
+ ipmi::getDbusProperty(bus, bmcObject.second, bmcObject.first,
+ bmc_guid_interface, bmc_guid_property);
std::string guidProp = variant.get<std::string>();
// Erase "-" characters from the property value
guidProp.erase(std::remove(guidProp.begin(), guidProp.end(), '-'),
- guidProp.end());
+ guidProp.end());
auto guidPropLen = guidProp.length();
// Validate UUID data
// Divide by 2 as 1 byte is built from 2 chars
- if ( (guidPropLen <=0) || ((guidPropLen/2) != bmc_guid_len) )
+ if ((guidPropLen <= 0) || ((guidPropLen / 2) != bmc_guid_len))
{
log<level::ERR>("Invalid UUID property value",
- entry("UUID_LENGTH=%d", guidPropLen));
+ entry("UUID_LENGTH=%d", guidPropLen));
return IPMI_CC_RESPONSE_ERROR;
}
@@ -564,10 +578,10 @@ ipmi_ret_t ipmi_app_get_sys_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// Ticket raised: https://sourceforge.net/p/ipmitool/bugs/501/
uint8_t respGuid[bmc_guid_len];
for (size_t i = 0, respLoc = (bmc_guid_len - 1);
- i < guidPropLen && respLoc >= 0; i += 2, respLoc--)
+ i < guidPropLen && respLoc >= 0; i += 2, respLoc--)
{
auto value = static_cast<uint8_t>(
- std::stoi(guidProp.substr(i, 2).c_str(), NULL, 16));
+ std::stoi(guidProp.substr(i, 2).c_str(), NULL, 16));
respGuid[respLoc] = value;
}
@@ -588,95 +602,55 @@ ipmi_ret_t ipmi_app_get_sys_guid(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
void register_netfn_app_functions()
{
// <Get BT Interface Capabilities>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_CAP_BIT,
- NULL,
- ipmi_app_get_bt_capabilities,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_CAP_BIT, NULL,
+ ipmi_app_get_bt_capabilities, PRIVILEGE_USER);
// <Wildcard Command>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_WILDCARD,
- NULL,
- ipmi_app_wildcard_handler,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_WILDCARD, NULL,
+ ipmi_app_wildcard_handler, PRIVILEGE_USER);
// <Reset Watchdog Timer>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_RESET_WD,
- NULL,
- ipmi_app_watchdog_reset,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_RESET_WD, NULL,
+ ipmi_app_watchdog_reset, PRIVILEGE_OPERATOR);
// <Set Watchdog Timer>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_SET_WD,
- NULL,
- ipmi_app_watchdog_set,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_SET_WD, NULL,
+ ipmi_app_watchdog_set, PRIVILEGE_OPERATOR);
// <Get Watchdog Timer>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_WD,
- NULL,
- ipmi_app_watchdog_get,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_WD, NULL,
+ ipmi_app_watchdog_get, PRIVILEGE_OPERATOR);
// <Get Device ID>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_DEVICE_ID,
- NULL,
- ipmi_app_get_device_id,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_DEVICE_ID, NULL,
+ ipmi_app_get_device_id, PRIVILEGE_USER);
// <Get Self Test Results>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_SELF_TEST_RESULTS,
- NULL,
- ipmi_app_get_self_test_results,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_SELF_TEST_RESULTS, NULL,
+ ipmi_app_get_self_test_results, PRIVILEGE_USER);
// <Get Device GUID>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_DEVICE_GUID,
- NULL,
- ipmi_app_get_device_guid,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_DEVICE_GUID, NULL,
+ ipmi_app_get_device_guid, PRIVILEGE_USER);
// <Set ACPI Power State>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_SET_ACPI,
- NULL,
- ipmi_app_set_acpi_power_state,
- PRIVILEGE_ADMIN);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_SET_ACPI, NULL,
+ ipmi_app_set_acpi_power_state, PRIVILEGE_ADMIN);
// <Get Channel Access>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_CHANNEL_ACCESS,
- NULL,
- ipmi_get_channel_access,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_CHANNEL_ACCESS, NULL,
+ ipmi_get_channel_access, PRIVILEGE_USER);
// <Get Channel Info Command>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_CHAN_INFO,
- NULL,
- ipmi_app_channel_info,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_CHAN_INFO, NULL,
+ ipmi_app_channel_info, PRIVILEGE_USER);
// <Get System GUID Command>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_SYS_GUID,
- NULL,
- ipmi_app_get_sys_guid,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_SYS_GUID, NULL,
+ ipmi_app_get_sys_guid, PRIVILEGE_USER);
// <Get Channel Cipher Suites Command>
- ipmi_register_callback(NETFUN_APP,
- IPMI_CMD_GET_CHAN_CIPHER_SUITES,
- NULL,
- getChannelCipherSuites,
- PRIVILEGE_CALLBACK);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_CHAN_CIPHER_SUITES, NULL,
+ getChannelCipherSuites, PRIVILEGE_CALLBACK);
return;
}
-
diff --git a/apphandler.h b/apphandler.h
index 7ed7bcd..db2d07c 100644
--- a/apphandler.h
+++ b/apphandler.h
@@ -7,18 +7,18 @@
enum ipmi_netfn_app_cmds
{
// Get capability bits
- IPMI_CMD_GET_DEVICE_ID = 0x01,
- IPMI_CMD_GET_SELF_TEST_RESULTS = 0x04,
- IPMI_CMD_SET_ACPI = 0x06,
- IPMI_CMD_GET_DEVICE_GUID = 0x08,
- IPMI_CMD_RESET_WD = 0x22,
- IPMI_CMD_SET_WD = 0x24,
- IPMI_CMD_GET_WD = 0x25,
- IPMI_CMD_GET_CAP_BIT = 0x36,
- IPMI_CMD_GET_SYS_GUID = 0x37,
- IPMI_CMD_SET_CHAN_ACCESS = 0x40,
- IPMI_CMD_GET_CHANNEL_ACCESS = 0x41,
- IPMI_CMD_GET_CHAN_INFO = 0x42,
+ IPMI_CMD_GET_DEVICE_ID = 0x01,
+ IPMI_CMD_GET_SELF_TEST_RESULTS = 0x04,
+ IPMI_CMD_SET_ACPI = 0x06,
+ IPMI_CMD_GET_DEVICE_GUID = 0x08,
+ IPMI_CMD_RESET_WD = 0x22,
+ IPMI_CMD_SET_WD = 0x24,
+ IPMI_CMD_GET_WD = 0x25,
+ IPMI_CMD_GET_CAP_BIT = 0x36,
+ IPMI_CMD_GET_SYS_GUID = 0x37,
+ IPMI_CMD_SET_CHAN_ACCESS = 0x40,
+ IPMI_CMD_GET_CHANNEL_ACCESS = 0x41,
+ IPMI_CMD_GET_CHAN_INFO = 0x42,
IPMI_CMD_GET_CHAN_CIPHER_SUITES = 0x54,
};
diff --git a/chassishandler.cpp b/chassishandler.cpp
index 2ad9948..6002e7a 100644
--- a/chassishandler.cpp
+++ b/chassishandler.cpp
@@ -1,72 +1,78 @@
#include "chassishandler.h"
-#include "host-ipmid/ipmid-api.h"
-#include "types.hpp"
+
#include "ipmid.hpp"
#include "settings.hpp"
+#include "types.hpp"
#include "utils.hpp"
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdint.h>
-#include <mapper.h>
#include <arpa/inet.h>
-#include <netinet/in.h>
+#include <endian.h>
#include <limits.h>
+#include <mapper.h>
+#include <netinet/in.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
-#include <endian.h>
-#include <sstream>
+
#include <array>
+#include <chrono>
#include <fstream>
#include <future>
-#include <chrono>
+#include <sstream>
+
+#include "host-ipmid/ipmid-api.h"
#if __has_include(<filesystem>)
#include <filesystem>
#elif __has_include(<experimental/filesystem>)
#include <experimental/filesystem>
-namespace std {
- // splice experimental::filesystem into std
- namespace filesystem = std::experimental::filesystem;
-}
+namespace std
+{
+// splice experimental::filesystem into std
+namespace filesystem = std::experimental::filesystem;
+} // namespace std
#else
-# error filesystem not available
+#error filesystem not available
#endif
-#include <string>
-#include <map>
+#include "config.h"
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog-errors.hpp>
-#include <xyz/openbmc_project/State/Host/server.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
+#include "timer.hpp"
+#include <map>
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/server/object.hpp>
-#include <xyz/openbmc_project/Control/Boot/Source/server.hpp>
+#include <string>
+#include <xyz/openbmc_project/Common/error.hpp>
#include <xyz/openbmc_project/Control/Boot/Mode/server.hpp>
+#include <xyz/openbmc_project/Control/Boot/Source/server.hpp>
#include <xyz/openbmc_project/Control/Power/RestorePolicy/server.hpp>
+#include <xyz/openbmc_project/State/Host/server.hpp>
#include <xyz/openbmc_project/State/PowerOnHours/server.hpp>
-
-#include "config.h"
-#include "timer.hpp"
-//Defines
-#define SET_PARM_VERSION 0x01
-#define SET_PARM_BOOT_FLAGS_PERMANENT 0x40 //boot flags data1 7th bit on
-#define SET_PARM_BOOT_FLAGS_VALID_ONE_TIME 0x80 //boot flags data1 8th bit on
-#define SET_PARM_BOOT_FLAGS_VALID_PERMANENT 0xC0 //boot flags data1 7 & 8 bit on
+// Defines
+#define SET_PARM_VERSION 0x01
+#define SET_PARM_BOOT_FLAGS_PERMANENT 0x40 // boot flags data1 7th bit on
+#define SET_PARM_BOOT_FLAGS_VALID_ONE_TIME 0x80 // boot flags data1 8th bit on
+#define SET_PARM_BOOT_FLAGS_VALID_PERMANENT \
+ 0xC0 // boot flags data1 7 & 8 bit
+ // on
std::unique_ptr<phosphor::ipmi::Timer> identifyTimer = nullptr;
-constexpr size_t SIZE_MAC = 18;
-constexpr size_t SIZE_BOOT_OPTION = (uint8_t)BootOptionResponseSize::
- OPAL_NETWORK_SETTINGS;//Maximum size of the boot option parametrs
+constexpr size_t SIZE_MAC = 18;
+constexpr size_t SIZE_BOOT_OPTION = (uint8_t)
+ BootOptionResponseSize::OPAL_NETWORK_SETTINGS; // Maximum size of the boot
+ // option parametrs
constexpr size_t SIZE_PREFIX = 7;
constexpr size_t MAX_PREFIX_VALUE = 32;
constexpr size_t SIZE_COOKIE = 4;
constexpr size_t SIZE_VERSION = 2;
constexpr size_t DEFAULT_IDENTIFY_TIME_OUT = 15;
-//PetiBoot-Specific
+// PetiBoot-Specific
static constexpr uint8_t net_conf_initial_bytes[] = {0x80, 0x21, 0x70, 0x62,
- 0x21, 0x00, 0x01, 0x06};
+ 0x21, 0x00, 0x01, 0x06};
static constexpr size_t COOKIE_OFFSET = 1;
static constexpr size_t VERSION_OFFSET = 5;
@@ -84,10 +90,10 @@ void register_netfn_chassis_functions() __attribute__((constructor));
// Host settings in dbus
// Service name should be referenced by connection name got via object mapper
-const char *settings_object_name = "/org/openbmc/settings/host0";
-const char *settings_intf_name = "org.freedesktop.DBus.Properties";
-const char *host_intf_name = "org.openbmc.settings.Host";
-const char *identify_led_object_name =
+const char* settings_object_name = "/org/openbmc/settings/host0";
+const char* settings_intf_name = "org.freedesktop.DBus.Properties";
+const char* host_intf_name = "org.openbmc.settings.Host";
+const char* identify_led_object_name =
"/xyz/openbmc_project/led/groups/enclosure_identify";
constexpr auto SETTINGS_ROOT = "/";
@@ -98,7 +104,7 @@ constexpr auto MAC_INTERFACE = "xyz.openbmc_project.Network.MACAddress";
static constexpr auto chassisStateRoot = "/xyz/openbmc_project/state";
static constexpr auto chassisPOHStateIntf =
- "xyz.openbmc_project.State.PowerOnHours";
+ "xyz.openbmc_project.State.PowerOnHours";
static constexpr auto pOHCounterProperty = "POHCounter";
static constexpr auto match = "chassis0";
@@ -110,7 +116,7 @@ typedef struct
uint8_t sel_dev_addr;
uint8_t system_management_dev_addr;
uint8_t bridge_dev_addr;
-}__attribute__((packed)) ipmi_chassis_cap_t;
+} __attribute__((packed)) ipmi_chassis_cap_t;
typedef struct
{
@@ -118,16 +124,16 @@ typedef struct
uint8_t last_power_event;
uint8_t misc_power_state;
uint8_t front_panel_button_cap_status;
-}__attribute__((packed)) ipmi_get_chassis_status_t;
+} __attribute__((packed)) ipmi_get_chassis_status_t;
/**
* @struct Get POH counter command response data
*/
struct GetPOHCountResponse
{
- uint8_t minPerCount; ///< Minutes per count
+ uint8_t minPerCount; ///< Minutes per count
uint8_t counterReading[4]; ///< Counter reading
-}__attribute__((packed));
+} __attribute__((packed));
// Phosphor Host State manager
namespace State = sdbusplus::xyz::openbmc_project::State::server;
@@ -165,27 +171,28 @@ constexpr auto minutesPerCount = 60;
} // namespace poh
-//TODO : Can remove the below function as we have
+// TODO : Can remove the below function as we have
// new functions which uses sdbusplus.
//
// openbmc/openbmc#1489
-int dbus_get_property(const char *name, char **buf)
+int dbus_get_property(const char* name, char** buf)
{
sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *m = NULL;
- sd_bus *bus = NULL;
- char *temp_buf = NULL;
- char *connection = NULL;
+ sd_bus_message* m = NULL;
+ sd_bus* bus = NULL;
+ char* temp_buf = NULL;
+ char* connection = NULL;
int r;
// Get the system bus where most system services are provided.
bus = ipmid_get_sd_bus_connection();
r = mapper_get_service(bus, settings_object_name, &connection);
- if (r < 0) {
- log<level::ERR>("Failed to get connection",
- entry("OBJ_NAME=%s", settings_object_name),
- entry("ERRNO=0x%X", -r));
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to get connection",
+ entry("OBJ_NAME=%s", settings_object_name),
+ entry("ERRNO=0x%X", -r));
goto finish;
}
@@ -195,18 +202,18 @@ int dbus_get_property(const char *name, char **buf)
* Signatures and input arguments are provided by the arguments at the
* end.
*/
- r = sd_bus_call_method(bus,
- connection, /* service to contact */
- settings_object_name, /* object path */
- settings_intf_name, /* interface name */
- "Get", /* method name */
- &error, /* object to return error in */
- &m, /* return message on success */
- "ss", /* input signature */
- host_intf_name, /* first argument */
- name); /* second argument */
-
- if (r < 0) {
+ r = sd_bus_call_method(bus, connection, /* service to contact */
+ settings_object_name, /* object path */
+ settings_intf_name, /* interface name */
+ "Get", /* method name */
+ &error, /* object to return error in */
+ &m, /* return message on success */
+ "ss", /* input signature */
+ host_intf_name, /* first argument */
+ name); /* second argument */
+
+ if (r < 0)
+ {
log<level::ERR>("Failed to issue Get method call",
entry("ERRNO=0x%X", r));
goto finish;
@@ -217,7 +224,8 @@ int dbus_get_property(const char *name, char **buf)
* specified.
*/
r = sd_bus_message_read(m, "v", "s", &temp_buf);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to parse response message",
entry("ERRNO=0x%X", -r));
goto finish;
@@ -230,7 +238,6 @@ int dbus_get_property(const char *name, char **buf)
}
*/
-
finish:
sd_bus_error_free(&error);
sd_bus_message_unref(m);
@@ -239,24 +246,25 @@ finish:
return r;
}
-//TODO : Can remove the below function as we have
+// TODO : Can remove the below function as we have
// new functions which uses sdbusplus.
//
// openbmc/openbmc#1489
-int dbus_set_property(const char * name, const char *value)
+int dbus_set_property(const char* name, const char* value)
{
sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *m = NULL;
- sd_bus *bus = NULL;
- char *connection = NULL;
+ sd_bus_message* m = NULL;
+ sd_bus* bus = NULL;
+ char* connection = NULL;
int r;
// Get the system bus where most system services are provided.
bus = ipmid_get_sd_bus_connection();
r = mapper_get_service(bus, settings_object_name, &connection);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to get connection",
entry("OBJ_NAME=%s", settings_object_name),
entry("ERRNO=0x%X", -r));
@@ -269,26 +277,26 @@ int dbus_set_property(const char * name, const char *value)
* Signatures and input arguments are provided by the arguments at the
* end.
*/
- r = sd_bus_call_method(bus,
- connection, /* service to contact */
- settings_object_name, /* object path */
- settings_intf_name, /* interface name */
- "Set", /* method name */
- &error, /* object to return error in */
- &m, /* return message on success */
- "ssv", /* input signature */
- host_intf_name, /* first argument */
- name, /* second argument */
- "s", /* third argument */
- value); /* fourth argument */
-
- if (r < 0) {
+ r = sd_bus_call_method(bus, connection, /* service to contact */
+ settings_object_name, /* object path */
+ settings_intf_name, /* interface name */
+ "Set", /* method name */
+ &error, /* object to return error in */
+ &m, /* return message on success */
+ "ssv", /* input signature */
+ host_intf_name, /* first argument */
+ name, /* second argument */
+ "s", /* third argument */
+ value); /* fourth argument */
+
+ if (r < 0)
+ {
log<level::ERR>("Failed to issue Set method call",
entry("ERRNO=0x%X", r));
goto finish;
}
- finish:
+finish:
sd_bus_error_free(&error);
sd_bus_message_unref(m);
free(connection);
@@ -296,23 +304,25 @@ int dbus_set_property(const char * name, const char *value)
return r;
}
-struct get_sys_boot_options_t {
+struct get_sys_boot_options_t
+{
uint8_t parameter;
uint8_t set;
uint8_t block;
-} __attribute__ ((packed));
+} __attribute__((packed));
-struct get_sys_boot_options_response_t {
+struct get_sys_boot_options_response_t
+{
uint8_t version;
uint8_t parm;
uint8_t data[SIZE_BOOT_OPTION];
-} __attribute__ ((packed));
+} __attribute__((packed));
-struct set_sys_boot_options_t {
+struct set_sys_boot_options_t
+{
uint8_t parameter;
uint8_t data[SIZE_BOOT_OPTION];
-} __attribute__ ((packed));
-
+} __attribute__((packed));
int getHostNetworkData(get_sys_boot_options_response_t* respptr)
{
@@ -322,7 +332,7 @@ int getHostNetworkData(get_sys_boot_options_response_t* respptr)
try
{
- //TODO There may be cases where an interface is implemented by multiple
+ // TODO There may be cases where an interface is implemented by multiple
// objects,to handle such cases we are interested on that object
// which are on interested busname.
// Currenlty mapper doesn't give the readable busname(gives busid)
@@ -338,22 +348,23 @@ int getHostNetworkData(get_sys_boot_options_response_t* respptr)
auto macObjectInfo = ipmi::getDbusObject(bus, MAC_INTERFACE,
SETTINGS_ROOT, SETTINGS_MATCH);
- properties = ipmi::getAllDbusProperties(bus, ipObjectInfo.second,
- ipObjectInfo.first, IP_INTERFACE);
- auto variant =
- ipmi::getDbusProperty(bus, macObjectInfo.second,
- macObjectInfo.first,
- MAC_INTERFACE, "MACAddress");
+ properties = ipmi::getAllDbusProperties(
+ bus, ipObjectInfo.second, ipObjectInfo.first, IP_INTERFACE);
+ auto variant = ipmi::getDbusProperty(bus, macObjectInfo.second,
+ macObjectInfo.first, MAC_INTERFACE,
+ "MACAddress");
- auto ipAddress = properties["Address"].get<std::string>();
+ auto ipAddress = properties["Address"].get<std::string>();
auto gateway = properties["Gateway"].get<std::string>();
auto prefix = properties["PrefixLength"].get<uint8_t>();
- uint8_t isStatic = (properties["Origin"].get<std::string>() ==
- "xyz.openbmc_project.Network.IP.AddressOrigin.Static")
- ? 1 : 0;
+ uint8_t isStatic =
+ (properties["Origin"].get<std::string>() ==
+ "xyz.openbmc_project.Network.IP.AddressOrigin.Static")
+ ? 1
+ : 0;
auto MACAddress = variant.get<std::string>();
@@ -373,9 +384,8 @@ int getHostNetworkData(get_sys_boot_options_response_t* respptr)
// should not be default one,don't send blank override.
if (isStatic)
{
- if((ipAddress == ipmi::network::DEFAULT_ADDRESS) ||
- (gateway == ipmi::network::DEFAULT_ADDRESS) ||
- (!prefix))
+ if ((ipAddress == ipmi::network::DEFAULT_ADDRESS) ||
+ (gateway == ipmi::network::DEFAULT_ADDRESS) || (!prefix))
{
memset(respptr->data, 0, SIZE_BOOT_OPTION);
rc = -1;
@@ -383,30 +393,28 @@ int getHostNetworkData(get_sys_boot_options_response_t* respptr)
}
}
- sscanf(MACAddress.c_str(), ipmi::network::MAC_ADDRESS_FORMAT,
- (respptr->data + MAC_OFFSET),
- (respptr->data + MAC_OFFSET + 1),
- (respptr->data + MAC_OFFSET + 2),
- (respptr->data + MAC_OFFSET + 3),
- (respptr->data + MAC_OFFSET + 4),
- (respptr->data + MAC_OFFSET + 5));
+ sscanf(
+ MACAddress.c_str(), ipmi::network::MAC_ADDRESS_FORMAT,
+ (respptr->data + MAC_OFFSET), (respptr->data + MAC_OFFSET + 1),
+ (respptr->data + MAC_OFFSET + 2), (respptr->data + MAC_OFFSET + 3),
+ (respptr->data + MAC_OFFSET + 4), (respptr->data + MAC_OFFSET + 5));
respptr->data[MAC_OFFSET + 6] = 0x00;
- memcpy(respptr->data + ADDRTYPE_OFFSET, &isStatic,
- sizeof(isStatic));
+ memcpy(respptr->data + ADDRTYPE_OFFSET, &isStatic, sizeof(isStatic));
uint8_t addressFamily = (properties["Type"].get<std::string>() ==
- "xyz.openbmc_project.Network.IP.Protocol.IPv4") ?
- AF_INET : AF_INET6;
+ "xyz.openbmc_project.Network.IP.Protocol.IPv4")
+ ? AF_INET
+ : AF_INET6;
- addrSize = (addressFamily == AF_INET) ?
- ipmi::network::IPV4_ADDRESS_SIZE_BYTE :
- ipmi::network::IPV6_ADDRESS_SIZE_BYTE;
+ addrSize = (addressFamily == AF_INET)
+ ? ipmi::network::IPV4_ADDRESS_SIZE_BYTE
+ : ipmi::network::IPV6_ADDRESS_SIZE_BYTE;
// ipaddress and gateway would be in IPv4 format
inet_pton(addressFamily, ipAddress.c_str(),
- (respptr->data + IPADDR_OFFSET));
+ (respptr->data + IPADDR_OFFSET));
uint8_t prefixOffset = IPADDR_OFFSET + addrSize;
@@ -415,8 +423,7 @@ int getHostNetworkData(get_sys_boot_options_response_t* respptr)
uint8_t gatewayOffset = prefixOffset + sizeof(decltype(prefix));
inet_pton(addressFamily, gateway.c_str(),
- (respptr->data + gatewayOffset));
-
+ (respptr->data + gatewayOffset));
}
catch (InternalFailure& e)
{
@@ -426,8 +433,8 @@ int getHostNetworkData(get_sys_boot_options_response_t* respptr)
return rc;
}
- //PetiBoot-Specific
- //If success then copy the first 9 bytes to the data
+ // PetiBoot-Specific
+ // If success then copy the first 9 bytes to the data
memcpy(respptr->data, net_conf_initial_bytes,
sizeof(net_conf_initial_bytes));
@@ -453,30 +460,32 @@ int getHostNetworkData(get_sys_boot_options_response_t* respptr)
* @returns address in text form.
*/
-std::string getAddrStr(uint8_t family, uint8_t* data,
- uint8_t offset, uint8_t addrSize)
+std::string getAddrStr(uint8_t family, uint8_t* data, uint8_t offset,
+ uint8_t addrSize)
{
char ipAddr[INET6_ADDRSTRLEN] = {};
- switch(family)
+ switch (family)
{
case AF_INET:
{
- struct sockaddr_in addr4 {};
+ struct sockaddr_in addr4
+ {
+ };
memcpy(&addr4.sin_addr.s_addr, &data[offset], addrSize);
- inet_ntop(AF_INET, &addr4.sin_addr,
- ipAddr, INET_ADDRSTRLEN);
+ inet_ntop(AF_INET, &addr4.sin_addr, ipAddr, INET_ADDRSTRLEN);
break;
}
case AF_INET6:
{
- struct sockaddr_in6 addr6 {};
+ struct sockaddr_in6 addr6
+ {
+ };
memcpy(&addr6.sin6_addr.s6_addr, &data[offset], addrSize);
- inet_ntop(AF_INET6, &addr6.sin6_addr,
- ipAddr, INET6_ADDRSTRLEN);
+ inet_ntop(AF_INET6, &addr6.sin6_addr, ipAddr, INET6_ADDRSTRLEN);
break;
}
@@ -493,19 +502,18 @@ int setHostNetworkData(set_sys_boot_options_t* reqptr)
{
using namespace std::string_literals;
std::string host_network_config;
- char mac[] {"00:00:00:00:00:00"};
+ char mac[]{"00:00:00:00:00:00"};
std::string ipAddress, gateway;
- char addrOrigin {0};
- uint8_t addrSize {0};
+ char addrOrigin{0};
+ uint8_t addrSize{0};
std::string addressOrigin =
"xyz.openbmc_project.Network.IP.AddressOrigin.DHCP";
- std::string addressType =
- "xyz.openbmc_project.Network.IP.Protocol.IPv4";
- uint8_t prefix {0};
+ std::string addressType = "xyz.openbmc_project.Network.IP.Protocol.IPv4";
+ uint8_t prefix{0};
uint32_t zeroCookie = 0;
uint8_t family = AF_INET;
- //cookie starts from second byte
+ // cookie starts from second byte
// version starts from sixth byte
try
@@ -514,13 +522,12 @@ int setHostNetworkData(set_sys_boot_options_t* reqptr)
{
// cookie == 0x21 0x70 0x62 0x21
if (memcmp(&(reqptr->data[COOKIE_OFFSET]),
- (net_conf_initial_bytes + COOKIE_OFFSET),
- SIZE_COOKIE) != 0)
+ (net_conf_initial_bytes + COOKIE_OFFSET),
+ SIZE_COOKIE) != 0)
{
- //cookie == 0
- if (memcmp(&(reqptr->data[COOKIE_OFFSET]),
- &zeroCookie,
- SIZE_COOKIE) == 0)
+ // cookie == 0
+ if (memcmp(&(reqptr->data[COOKIE_OFFSET]), &zeroCookie,
+ SIZE_COOKIE) == 0)
{
// need to zero out the network settings.
break;
@@ -532,8 +539,8 @@ int setHostNetworkData(set_sys_boot_options_t* reqptr)
// vesion == 0x00 0x01
if (memcmp(&(reqptr->data[VERSION_OFFSET]),
- (net_conf_initial_bytes + VERSION_OFFSET),
- SIZE_VERSION) != 0)
+ (net_conf_initial_bytes + VERSION_OFFSET),
+ SIZE_VERSION) != 0)
{
log<level::ERR>("Invalid Version");
@@ -541,10 +548,8 @@ int setHostNetworkData(set_sys_boot_options_t* reqptr)
}
snprintf(mac, SIZE_MAC, ipmi::network::MAC_ADDRESS_FORMAT,
- reqptr->data[MAC_OFFSET],
- reqptr->data[MAC_OFFSET + 1],
- reqptr->data[MAC_OFFSET + 2],
- reqptr->data[MAC_OFFSET + 3],
+ reqptr->data[MAC_OFFSET], reqptr->data[MAC_OFFSET + 1],
+ reqptr->data[MAC_OFFSET + 2], reqptr->data[MAC_OFFSET + 3],
reqptr->data[MAC_OFFSET + 4],
reqptr->data[MAC_OFFSET + 5]);
@@ -558,7 +563,8 @@ int setHostNetworkData(set_sys_boot_options_t* reqptr)
}
// Get the address size
- memcpy(&addrSize ,&reqptr->data[ADDR_SIZE_OFFSET], sizeof(addrSize));
+ memcpy(&addrSize, &reqptr->data[ADDR_SIZE_OFFSET],
+ sizeof(addrSize));
uint8_t prefixOffset = IPADDR_OFFSET + addrSize;
@@ -573,17 +579,18 @@ int setHostNetworkData(set_sys_boot_options_t* reqptr)
family = AF_INET6;
}
- ipAddress = getAddrStr(family, reqptr->data, IPADDR_OFFSET, addrSize);
+ ipAddress =
+ getAddrStr(family, reqptr->data, IPADDR_OFFSET, addrSize);
gateway = getAddrStr(family, reqptr->data, gatewayOffset, addrSize);
- } while(0);
-
- //Cookie == 0 or it is a valid cookie
- host_network_config += "ipaddress="s + ipAddress +
- ",prefix="s + std::to_string(prefix) + ",gateway="s + gateway +
- ",mac="s + mac + ",addressOrigin="s + addressOrigin;
+ } while (0);
+ // Cookie == 0 or it is a valid cookie
+ host_network_config += "ipaddress="s + ipAddress + ",prefix="s +
+ std::to_string(prefix) + ",gateway="s + gateway +
+ ",mac="s + mac + ",addressOrigin="s +
+ addressOrigin;
sdbusplus::bus::bus bus(ipmid_get_sd_bus_connection());
@@ -593,22 +600,22 @@ int setHostNetworkData(set_sys_boot_options_t* reqptr)
SETTINGS_ROOT, SETTINGS_MATCH);
// set the dbus property
ipmi::setDbusProperty(bus, ipObjectInfo.second, ipObjectInfo.first,
- IP_INTERFACE, "Address", std::string(ipAddress));
- ipmi::setDbusProperty(bus, ipObjectInfo.second, ipObjectInfo.first,
- IP_INTERFACE, "PrefixLength", prefix);
+ IP_INTERFACE, "Address", std::string(ipAddress));
ipmi::setDbusProperty(bus, ipObjectInfo.second, ipObjectInfo.first,
- IP_INTERFACE, "Origin", addressOrigin);
+ IP_INTERFACE, "PrefixLength", prefix);
ipmi::setDbusProperty(bus, ipObjectInfo.second, ipObjectInfo.first,
- IP_INTERFACE, "Gateway", std::string(gateway));
+ IP_INTERFACE, "Origin", addressOrigin);
ipmi::setDbusProperty(bus, ipObjectInfo.second, ipObjectInfo.first,
- IP_INTERFACE, "Type",
- std::string("xyz.openbmc_project.Network.IP.Protocol.IPv4"));
+ IP_INTERFACE, "Gateway", std::string(gateway));
+ ipmi::setDbusProperty(
+ bus, ipObjectInfo.second, ipObjectInfo.first, IP_INTERFACE, "Type",
+ std::string("xyz.openbmc_project.Network.IP.Protocol.IPv4"));
ipmi::setDbusProperty(bus, macObjectInfo.second, macObjectInfo.first,
- MAC_INTERFACE,"MACAddress", std::string(mac));
-
- log<level::DEBUG>("Network configuration changed",
- entry("NETWORKCONFIG=%s", host_network_config.c_str()));
+ MAC_INTERFACE, "MACAddress", std::string(mac));
+ log<level::DEBUG>(
+ "Network configuration changed",
+ entry("NETWORKCONFIG=%s", host_network_config.c_str()));
}
catch (InternalFailure& e)
{
@@ -623,15 +630,15 @@ uint32_t getPOHCounter()
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- auto chassisStateObj = ipmi::getDbusObject(bus, chassisPOHStateIntf,
- chassisStateRoot, match);
+ auto chassisStateObj =
+ ipmi::getDbusObject(bus, chassisPOHStateIntf, chassisStateRoot, match);
- auto service = ipmi::getService(bus, chassisPOHStateIntf,
- chassisStateObj.first);
+ auto service =
+ ipmi::getService(bus, chassisPOHStateIntf, chassisStateObj.first);
- auto propValue = ipmi::getDbusProperty(bus, service, chassisStateObj.first,
- chassisPOHStateIntf,
- pOHCounterProperty);
+ auto propValue =
+ ipmi::getDbusProperty(bus, service, chassisStateObj.first,
+ chassisPOHStateIntf, pOHCounterProperty);
return propValue.get<uint32_t>();
}
@@ -649,8 +656,10 @@ ipmi_ret_t ipmi_chassis_wildcard(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_get_chassis_cap(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
// sd_bus error
ipmi_ret_t rc = IPMI_CC_OK;
@@ -665,9 +674,11 @@ ipmi_ret_t ipmi_get_chassis_cap(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// [7..4] - reserved
// [3] – 1b = provides power interlock (IPM 1.5)
// [2] – 1b = provides Diagnostic Interrupt (FP NMI)
- // [1] – 1b = provides “Front Panel Lockout” (indicates that the chassis has capabilities
- // to lock out external power control and reset button or front panel interfaces
- // and/or detect tampering with those interfaces).
+ // [1] – 1b = provides “Front Panel Lockout” (indicates that the chassis has
+ // capabilities
+ // to lock out external power control and reset button or front
+ // panel interfaces and/or detect tampering with those
+ // interfaces).
// [0] -1b = Chassis provides intrusion (physical security) sensor.
// set to default value 0x0.
chassis_cap.cap_flags = 0x0;
@@ -700,26 +711,26 @@ ipmi_ret_t ipmi_get_chassis_cap(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
int initiate_state_transition(State::Host::Transition transition)
{
// OpenBMC Host State Manager dbus framework
- constexpr auto HOST_STATE_MANAGER_ROOT = "/xyz/openbmc_project/state/host0";
+ constexpr auto HOST_STATE_MANAGER_ROOT = "/xyz/openbmc_project/state/host0";
constexpr auto HOST_STATE_MANAGER_IFACE = "xyz.openbmc_project.State.Host";
- constexpr auto DBUS_PROPERTY_IFACE = "org.freedesktop.DBus.Properties";
- constexpr auto PROPERTY = "RequestedHostTransition";
+ constexpr auto DBUS_PROPERTY_IFACE = "org.freedesktop.DBus.Properties";
+ constexpr auto PROPERTY = "RequestedHostTransition";
// sd_bus error
int rc = 0;
- char *busname = NULL;
+ char* busname = NULL;
// SD Bus error report mechanism.
sd_bus_error bus_error = SD_BUS_ERROR_NULL;
// Gets a hook onto either a SYSTEM or SESSION bus
- sd_bus *bus_type = ipmid_get_sd_bus_connection();
+ sd_bus* bus_type = ipmid_get_sd_bus_connection();
rc = mapper_get_service(bus_type, HOST_STATE_MANAGER_ROOT, &busname);
if (rc < 0)
{
- log<level::ERR>("Failed to get bus name",
- entry("ERRNO=0x%X, OBJPATH=%s",
- -rc, HOST_STATE_MANAGER_ROOT));
+ log<level::ERR>(
+ "Failed to get bus name",
+ entry("ERRNO=0x%X, OBJPATH=%s", -rc, HOST_STATE_MANAGER_ROOT));
return rc;
}
@@ -734,10 +745,9 @@ int initiate_state_transition(State::Host::Transition transition)
&bus_error, // object to return error
nullptr, // Response buffer if any
"ssv", // Takes 3 arguments
- HOST_STATE_MANAGER_IFACE,
- PROPERTY,
- "s", request.c_str());
- if(rc < 0)
+ HOST_STATE_MANAGER_IFACE, PROPERTY, "s",
+ request.c_str());
+ if (rc < 0)
{
log<level::ERR>("Failed to initiate transition",
entry("ERRNO=0x%X, REQUEST=%s", -rc, request.c_str()));
@@ -760,12 +770,10 @@ using namespace sdbusplus::xyz::openbmc_project::Control::Power::server;
using IpmiValue = uint8_t;
using DbusValue = RestorePolicy::Policy;
-std::map<DbusValue, IpmiValue> dbusToIpmi =
-{
+std::map<DbusValue, IpmiValue> dbusToIpmi = {
{RestorePolicy::Policy::AlwaysOff, 0x00},
{RestorePolicy::Policy::Restore, 0x01},
- {RestorePolicy::Policy::AlwaysOn, 0x02}
-};
+ {RestorePolicy::Policy::AlwaysOn, 0x02}};
} // namespace power_policy
@@ -778,14 +786,14 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_data_len_t data_len,
ipmi_context_t context)
{
- const char *objname = "/org/openbmc/control/power0";
- const char *intf = "org.openbmc.control.Power";
+ const char* objname = "/org/openbmc/control/power0";
+ const char* intf = "org.openbmc.control.Power";
- sd_bus *bus = NULL;
- sd_bus_message *reply = NULL;
+ sd_bus* bus = NULL;
+ sd_bus_message* reply = NULL;
int r = 0;
int pgood = 0;
- char *busname = NULL;
+ char* busname = NULL;
ipmi_ret_t rc = IPMI_CC_OK;
ipmi_get_chassis_status_t chassis_status{};
@@ -796,12 +804,9 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
using namespace power_policy;
const auto& powerRestoreSetting = objects.map.at(powerRestoreIntf).front();
- auto method =
- dbus.new_method_call(
- objects.service(powerRestoreSetting, powerRestoreIntf).c_str(),
- powerRestoreSetting.c_str(),
- ipmi::PROP_INTF,
- "Get");
+ auto method = dbus.new_method_call(
+ objects.service(powerRestoreSetting, powerRestoreIntf).c_str(),
+ powerRestoreSetting.c_str(), ipmi::PROP_INTF, "Get");
method.append(powerRestoreIntf, "PowerRestorePolicy");
auto resp = dbus.call(method);
if (resp.is_method_error())
@@ -821,29 +826,29 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
bus = ipmid_get_sd_bus_connection();
r = mapper_get_service(bus, objname, &busname);
- if (r < 0) {
- log<level::ERR>("Failed to get bus name",
- entry("ERRNO=0x%X", -r));
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to get bus name", entry("ERRNO=0x%X", -r));
rc = IPMI_CC_UNSPECIFIED_ERROR;
goto finish;
}
- r = sd_bus_get_property(bus, busname, objname, intf, "pgood", NULL, &reply, "i");
- if (r < 0) {
+ r = sd_bus_get_property(bus, busname, objname, intf, "pgood", NULL, &reply,
+ "i");
+ if (r < 0)
+ {
log<level::ERR>("Failed to call sd_bus_get_property",
- entry("PROPERTY=%s","pgood"),
- entry("ERRNO=0x%X", -r),
- entry("BUS=%s", busname),
- entry("PATH=%s", objname),
+ entry("PROPERTY=%s", "pgood"), entry("ERRNO=0x%X", -r),
+ entry("BUS=%s", busname), entry("PATH=%s", objname),
entry("INTERFACE=%s", intf));
rc = IPMI_CC_UNSPECIFIED_ERROR;
goto finish;
}
r = sd_bus_message_read(reply, "i", &pgood);
- if (r < 0) {
- log<level::ERR>("Failed to read sensor:",
- entry("ERRNO=0x%X", -r));
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to read sensor:", entry("ERRNO=0x%X", -r));
rc = IPMI_CC_UNSPECIFIED_ERROR;
goto finish;
}
@@ -859,7 +864,8 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// 10b = chassis always powers up after AC/mains returns
// 11b = unknow
// Set to 00b, by observing the hardware behavior.
- // Do we need to define a dbus property to identify the restore policy?
+ // Do we need to define a dbus property to identify the restore
+ // policy?
// [4] power control fault
// 1b = controller attempted to turn system power on or off, but
@@ -882,7 +888,7 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// 1b = system power is on
// 0b = system power is off(soft-off S4/S5, or mechanical off)
- chassis_status.cur_power_state = ((s & 0x3)<<5) | (pgood & 0x1);
+ chassis_status.cur_power_state = ((s & 0x3) << 5) | (pgood & 0x1);
// Last Power Event
// [7..5] – reserved
@@ -901,7 +907,8 @@ ipmi_ret_t ipmi_get_chassis_status(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// 0b = Chassis Identify command support unspecified via this command.
// (The Get Command Support command , if implemented, would still
// indicate support for the Chassis Identify command)
- // [5..4] – Chassis Identify State. Mandatory when bit[6] =1b, reserved (return
+ // [5..4] – Chassis Identify State. Mandatory when bit[6] =1b, reserved
+ // (return
// as 00b) otherwise. Returns the present chassis identify state.
// Refer to the Chassis Identify command for more info.
// 00b = chassis identify state = Off
@@ -935,13 +942,13 @@ finish:
//-------------------------------------------------------------
int stop_soft_off_timer()
{
- constexpr auto iface = "org.freedesktop.DBus.Properties";
- constexpr auto soft_off_iface = "xyz.openbmc_project.Ipmi.Internal."
- "SoftPowerOff";
+ constexpr auto iface = "org.freedesktop.DBus.Properties";
+ constexpr auto soft_off_iface = "xyz.openbmc_project.Ipmi.Internal."
+ "SoftPowerOff";
- constexpr auto property = "ResponseReceived";
- constexpr auto value = "xyz.openbmc_project.Ipmi.Internal."
- "SoftPowerOff.HostResponse.HostShutdown";
+ constexpr auto property = "ResponseReceived";
+ constexpr auto value = "xyz.openbmc_project.Ipmi.Internal."
+ "SoftPowerOff.HostResponse.HostShutdown";
// Get the system bus where most system services are provided.
auto bus = ipmid_get_sd_bus_connection();
@@ -953,9 +960,9 @@ int stop_soft_off_timer()
// for now the code will directly call the soft off interface due to a
// race condition with mapper usage
//
- //char *busname = nullptr;
- //auto r = mapper_get_service(bus, SOFTOFF_OBJPATH, &busname);
- //if (r < 0)
+ // char *busname = nullptr;
+ // auto r = mapper_get_service(bus, SOFTOFF_OBJPATH, &busname);
+ // if (r < 0)
//{
// fprintf(stderr, "Failed to get %s bus name: %s\n",
// SOFTOFF_OBJPATH, -r);
@@ -964,16 +971,16 @@ int stop_soft_off_timer()
// No error object or reply expected.
int rc = sd_bus_call_method(bus, SOFTOFF_BUSNAME, SOFTOFF_OBJPATH, iface,
- "Set", nullptr, nullptr, "ssv",
- soft_off_iface, property, "s", value);
+ "Set", nullptr, nullptr, "ssv", soft_off_iface,
+ property, "s", value);
if (rc < 0)
{
log<level::ERR>("Failed to set property in SoftPowerOff object",
entry("ERRNO=0x%X", -rc));
}
- //TODO openbmc/openbmc#1661 - Mapper refactor
- //free(busname);
+ // TODO openbmc/openbmc#1661 - Mapper refactor
+ // free(busname);
return rc;
}
@@ -990,10 +997,10 @@ void indicate_no_softoff_needed()
// Add the host instance (default 0 for now) to the file name
std::string file{HOST_INBAND_REQUEST_FILE};
- auto size = std::snprintf(nullptr,0,file.c_str(),0);
+ auto size = std::snprintf(nullptr, 0, file.c_str(), 0);
size++; // null
std::unique_ptr<char[]> buf(new char[size]);
- std::snprintf(buf.get(),size,file.c_str(),0);
+ std::snprintf(buf.get(), size, file.c_str(), 0);
// Append file name to directory and create it
path /= buf.get();
@@ -1016,9 +1023,9 @@ ipmi_ret_t ipmi_chassis_control(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
*data_len = 0;
// Catch the actual operaton by peeking into request buffer
- uint8_t chassis_ctrl_cmd = *(uint8_t *)request;
+ uint8_t chassis_ctrl_cmd = *(uint8_t*)request;
- switch(chassis_ctrl_cmd)
+ switch (chassis_ctrl_cmd)
{
case CMD_POWER_ON:
rc = initiate_state_transition(State::Host::Transition::On);
@@ -1086,7 +1093,7 @@ ipmi_ret_t ipmi_chassis_control(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
}
- return ( (rc < 0) ? IPMI_CC_INVALID : IPMI_CC_OK);
+ return ((rc < 0) ? IPMI_CC_INVALID : IPMI_CC_OK);
}
/** @brief Return D-Bus connection string to enclosure identify LED object
@@ -1098,16 +1105,12 @@ std::string getEnclosureIdentifyConnection()
{
// lookup enclosure_identify group owner(s) in mapper
auto mapperCall = chassis::internal::dbus.new_method_call(
- ipmi::MAPPER_BUS_NAME,
- ipmi::MAPPER_OBJ,
- ipmi::MAPPER_INTF,
- "GetObject");
+ ipmi::MAPPER_BUS_NAME, ipmi::MAPPER_OBJ, ipmi::MAPPER_INTF,
+ "GetObject");
mapperCall.append(identify_led_object_name);
- static const std::vector<std::string> interfaces =
- {
- "xyz.openbmc_project.Led.Group"
- };
+ static const std::vector<std::string> interfaces = {
+ "xyz.openbmc_project.Led.Group"};
mapperCall.append(interfaces);
auto mapperReply = chassis::internal::dbus.call(mapperCall);
if (mapperReply.is_method_error())
@@ -1120,8 +1123,9 @@ std::string getEnclosureIdentifyConnection()
if (mapperResp.size() != encIdentifyObjectsSize)
{
- log<level::ERR>("Invalid number of enclosure identify objects.",
- entry("ENC_IDENTITY_OBJECTS_SIZE=%d", mapperResp.size()));
+ log<level::ERR>(
+ "Invalid number of enclosure identify objects.",
+ entry("ENC_IDENTITY_OBJECTS_SIZE=%d", mapperResp.size()));
elog<InternalFailure>();
}
auto pair = mapperResp[encIdentifyObjectsSize - 1];
@@ -1137,15 +1141,16 @@ void enclosureIdentifyLed(bool flag)
{
using namespace chassis::internal;
std::string connection = std::move(getEnclosureIdentifyConnection());
- auto led = dbus.new_method_call(connection.c_str(),
- identify_led_object_name, "org.freedesktop.DBus.Properties", "Set");
+ auto led =
+ dbus.new_method_call(connection.c_str(), identify_led_object_name,
+ "org.freedesktop.DBus.Properties", "Set");
led.append("xyz.openbmc_project.Led.Group", "Asserted",
- sdbusplus::message::variant<bool>(flag));
+ sdbusplus::message::variant<bool>(flag));
auto ledReply = dbus.call(led);
if (ledReply.is_method_error())
{
log<level::ERR>("Chassis Identify: Error Setting State On/Off\n",
- entry("LED_STATE=%d", flag));
+ entry("LED_STATE=%d", flag));
elog<InternalFailure>();
}
}
@@ -1185,11 +1190,14 @@ ipmi_ret_t ipmi_chassis_identify(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
return IPMI_CC_REQ_DATA_LEN_INVALID;
}
- uint8_t identifyInterval = *data_len > identifyIntervalPos ?
- (static_cast<uint8_t*>(request))[identifyIntervalPos] :
- DEFAULT_IDENTIFY_TIME_OUT;
- bool forceIdentify = (*data_len == chassisIdentifyReqLength) ?
- (static_cast<uint8_t*>(request))[forceIdentifyPos] & 0x01 : false;
+ uint8_t identifyInterval =
+ *data_len > identifyIntervalPos
+ ? (static_cast<uint8_t*>(request))[identifyIntervalPos]
+ : DEFAULT_IDENTIFY_TIME_OUT;
+ bool forceIdentify =
+ (*data_len == chassisIdentifyReqLength)
+ ? (static_cast<uint8_t*>(request))[forceIdentifyPos] & 0x01
+ : false;
if (identifyInterval || forceIdentify)
{
@@ -1212,7 +1220,7 @@ ipmi_ret_t ipmi_chassis_identify(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
// start the timer
auto time = std::chrono::duration_cast<std::chrono::microseconds>(
- std::chrono::seconds(identifyInterval));
+ std::chrono::seconds(identifyInterval));
identifyTimer->startTimer(time);
}
else if (!identifyInterval)
@@ -1230,39 +1238,30 @@ using namespace sdbusplus::xyz::openbmc_project::Control::Boot::server;
using IpmiValue = uint8_t;
constexpr auto ipmiDefault = 0;
-std::map<IpmiValue, Source::Sources> sourceIpmiToDbus =
-{
+std::map<IpmiValue, Source::Sources> sourceIpmiToDbus = {
{0x01, Source::Sources::Network},
{0x02, Source::Sources::Disk},
{0x05, Source::Sources::ExternalMedia},
- {ipmiDefault, Source::Sources::Default}
-};
+ {ipmiDefault, Source::Sources::Default}};
-std::map<IpmiValue, Mode::Modes> modeIpmiToDbus =
-{
+std::map<IpmiValue, Mode::Modes> modeIpmiToDbus = {
{0x03, Mode::Modes::Safe},
{0x06, Mode::Modes::Setup},
- {ipmiDefault, Mode::Modes::Regular}
-};
+ {ipmiDefault, Mode::Modes::Regular}};
-std::map<Source::Sources, IpmiValue> sourceDbusToIpmi =
-{
+std::map<Source::Sources, IpmiValue> sourceDbusToIpmi = {
{Source::Sources::Network, 0x01},
{Source::Sources::Disk, 0x02},
{Source::Sources::ExternalMedia, 0x05},
- {Source::Sources::Default, ipmiDefault}
-};
+ {Source::Sources::Default, ipmiDefault}};
-std::map<Mode::Modes, IpmiValue> modeDbusToIpmi =
-{
+std::map<Mode::Modes, IpmiValue> modeDbusToIpmi = {
{Mode::Modes::Safe, 0x03},
{Mode::Modes::Setup, 0x06},
- {Mode::Modes::Regular, ipmiDefault}
-};
+ {Mode::Modes::Regular, ipmiDefault}};
} // namespace boot_options
-
/** @brief Set the property value for boot source
* @param[in] source - boot source value
* @return On failure return IPMI error.
@@ -1275,10 +1274,9 @@ static ipmi_ret_t setBootSource(const Source::Sources& source)
convertForMessage(source);
auto bootSetting = settings::boot::setting(objects, bootSourceIntf);
const auto& bootSourceSetting = std::get<settings::Path>(bootSetting);
- auto method =
- dbus.new_method_call(
- objects.service(bootSourceSetting, bootSourceIntf).c_str(),
- bootSourceSetting.c_str(), ipmi::PROP_INTF, "Set");
+ auto method = dbus.new_method_call(
+ objects.service(bootSourceSetting, bootSourceIntf).c_str(),
+ bootSourceSetting.c_str(), ipmi::PROP_INTF, "Set");
method.append(bootSourceIntf, "BootSource", property);
auto reply = dbus.call(method);
if (reply.is_method_error())
@@ -1290,7 +1288,7 @@ static ipmi_ret_t setBootSource(const Source::Sources& source)
return IPMI_CC_OK;
}
- /** @brief Set the property value for boot mode
+/** @brief Set the property value for boot mode
* @param[in] mode - boot mode value
* @return On failure return IPMI error.
*/
@@ -1298,14 +1296,12 @@ static ipmi_ret_t setBootMode(const Mode::Modes& mode)
{
using namespace chassis::internal;
using namespace chassis::internal::cache;
- sdbusplus::message::variant<std::string> property =
- convertForMessage(mode);
+ sdbusplus::message::variant<std::string> property = convertForMessage(mode);
auto bootSetting = settings::boot::setting(objects, bootModeIntf);
const auto& bootModeSetting = std::get<settings::Path>(bootSetting);
- auto method =
- dbus.new_method_call(
- objects.service(bootModeSetting, bootModeIntf).c_str(),
- bootModeSetting.c_str(), ipmi::PROP_INTF, "Set");
+ auto method = dbus.new_method_call(
+ objects.service(bootModeSetting, bootModeIntf).c_str(),
+ bootModeSetting.c_str(), ipmi::PROP_INTF, "Set");
method.append(bootModeIntf, "BootMode", property);
auto reply = dbus.call(method);
if (reply.is_method_error())
@@ -1325,23 +1321,24 @@ ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
using namespace boot_options;
ipmi_ret_t rc = IPMI_CC_PARM_NOT_SUPPORTED;
- char *p = NULL;
- get_sys_boot_options_response_t *resp = (get_sys_boot_options_response_t *) response;
- get_sys_boot_options_t *reqptr = (get_sys_boot_options_t*) request;
+ char* p = NULL;
+ get_sys_boot_options_response_t* resp =
+ (get_sys_boot_options_response_t*)response;
+ get_sys_boot_options_t* reqptr = (get_sys_boot_options_t*)request;
IpmiValue bootOption = ipmiDefault;
- memset(resp,0,sizeof(*resp));
- resp->version = SET_PARM_VERSION;
- resp->parm = 5;
- resp->data[0] = SET_PARM_BOOT_FLAGS_VALID_ONE_TIME;
-
+ memset(resp, 0, sizeof(*resp));
+ resp->version = SET_PARM_VERSION;
+ resp->parm = 5;
+ resp->data[0] = SET_PARM_BOOT_FLAGS_VALID_ONE_TIME;
/*
* Parameter #5 means boot flags. Please refer to 28.13 of ipmi doc.
* This is the only parameter used by petitboot.
*/
- if ( reqptr->parameter == static_cast<uint8_t>
- ( BootOptionParameter::BOOT_FLAGS )) {
+ if (reqptr->parameter ==
+ static_cast<uint8_t>(BootOptionParameter::BOOT_FLAGS))
+ {
*data_len = static_cast<uint8_t>(BootOptionResponseSize::BOOT_FLAGS);
using namespace chassis::internal;
@@ -1354,12 +1351,9 @@ ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
std::get<settings::Path>(bootSetting);
auto oneTimeEnabled =
std::get<settings::boot::OneTimeEnabled>(bootSetting);
- auto method =
- dbus.new_method_call(
- objects.service(bootSourceSetting, bootSourceIntf).c_str(),
- bootSourceSetting.c_str(),
- ipmi::PROP_INTF,
- "Get");
+ auto method = dbus.new_method_call(
+ objects.service(bootSourceSetting, bootSourceIntf).c_str(),
+ bootSourceSetting.c_str(), ipmi::PROP_INTF, "Get");
method.append(bootSourceIntf, "BootSource");
auto reply = dbus.call(method);
if (reply.is_method_error())
@@ -1377,11 +1371,8 @@ ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
bootSetting = settings::boot::setting(objects, bootModeIntf);
const auto& bootModeSetting = std::get<settings::Path>(bootSetting);
method = dbus.new_method_call(
- objects.service(bootModeSetting, bootModeIntf).
- c_str(),
- bootModeSetting.c_str(),
- ipmi::PROP_INTF,
- "Get");
+ objects.service(bootModeSetting, bootModeIntf).c_str(),
+ bootModeSetting.c_str(), ipmi::PROP_INTF, "Get");
method.append(bootModeIntf, "BootMode");
reply = dbus.call(method);
if (reply.is_method_error())
@@ -1407,9 +1398,9 @@ ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
resp->data[1] = (bootOption << 2);
- resp->data[0] = oneTimeEnabled ?
- SET_PARM_BOOT_FLAGS_VALID_ONE_TIME:
- SET_PARM_BOOT_FLAGS_VALID_PERMANENT;
+ resp->data[0] = oneTimeEnabled
+ ? SET_PARM_BOOT_FLAGS_VALID_ONE_TIME
+ : SET_PARM_BOOT_FLAGS_VALID_PERMANENT;
rc = IPMI_CC_OK;
}
@@ -1419,28 +1410,34 @@ ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
*data_len = 0;
return IPMI_CC_UNSPECIFIED_ERROR;
}
- } else if ( reqptr->parameter == static_cast<uint8_t>
- ( BootOptionParameter::OPAL_NETWORK_SETTINGS )) {
+ }
+ else if (reqptr->parameter ==
+ static_cast<uint8_t>(BootOptionParameter::OPAL_NETWORK_SETTINGS))
+ {
- *data_len = static_cast<uint8_t>(BootOptionResponseSize::OPAL_NETWORK_SETTINGS);
+ *data_len =
+ static_cast<uint8_t>(BootOptionResponseSize::OPAL_NETWORK_SETTINGS);
- resp->parm = static_cast<uint8_t>(BootOptionParameter::OPAL_NETWORK_SETTINGS);
+ resp->parm =
+ static_cast<uint8_t>(BootOptionParameter::OPAL_NETWORK_SETTINGS);
int ret = getHostNetworkData(resp);
- if (ret < 0) {
+ if (ret < 0)
+ {
log<level::ERR>(
- "getHostNetworkData failed for get_sys_boot_options.");
+ "getHostNetworkData failed for get_sys_boot_options.");
rc = IPMI_CC_UNSPECIFIED_ERROR;
-
- }else
+ }
+ else
rc = IPMI_CC_OK;
}
- else {
- log<level::ERR>("Unsupported parameter", entry(
- "PARAM=0x%x", reqptr->parameter));
+ else
+ {
+ log<level::ERR>("Unsupported parameter",
+ entry("PARAM=0x%x", reqptr->parameter));
}
if (p)
@@ -1454,8 +1451,6 @@ ipmi_ret_t ipmi_chassis_get_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return rc;
}
-
-
ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_request_t request,
ipmi_response_t response,
@@ -1464,9 +1459,10 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
using namespace boot_options;
ipmi_ret_t rc = IPMI_CC_OK;
- set_sys_boot_options_t *reqptr = (set_sys_boot_options_t *) request;
+ set_sys_boot_options_t* reqptr = (set_sys_boot_options_t*)request;
- printf("IPMI SET_SYS_BOOT_OPTIONS reqptr->parameter =[%d]\n",reqptr->parameter);
+ printf("IPMI SET_SYS_BOOT_OPTIONS reqptr->parameter =[%d]\n",
+ reqptr->parameter);
// This IPMI command does not have any resposne data
*data_len = 0;
@@ -1484,7 +1480,7 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
auto oneTimeEnabled = false;
constexpr auto enabledIntf = "xyz.openbmc_project.Object.Enable";
constexpr auto oneTimePath =
- "/xyz/openbmc_project/control/host0/boot/one_time";
+ "/xyz/openbmc_project/control/host0/boot/one_time";
try
{
@@ -1492,8 +1488,7 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
(reqptr->data[0] & SET_PARM_BOOT_FLAGS_PERMANENT) ==
SET_PARM_BOOT_FLAGS_PERMANENT;
- auto bootSetting =
- settings::boot::setting(objects, bootSourceIntf);
+ auto bootSetting = settings::boot::setting(objects, bootSourceIntf);
oneTimeEnabled =
std::get<settings::boot::OneTimeEnabled>(bootSetting);
@@ -1512,12 +1507,8 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
auto service = ipmi::getService(dbus, enabledIntf, oneTimePath);
- ipmi::setDbusProperty(dbus,
- service,
- oneTimePath,
- enabledIntf,
- "Enabled",
- !permanent);
+ ipmi::setDbusProperty(dbus, service, oneTimePath, enabledIntf,
+ "Enabled", !permanent);
}
auto modeItr = modeIpmiToDbus.find(bootOption);
@@ -1534,7 +1525,7 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// the boot mode D-Bus property to default.
// This way the ipmid code can determine which property is not
// at the default value
- if(sourceItr->second != Source::Sources::Default)
+ if (sourceItr->second != Source::Sources::Default)
{
setBootMode(Mode::Modes::Regular);
}
@@ -1551,7 +1542,7 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// the boot source D-Bus property to default.
// This way the ipmid code can determine which property is not
// at the default value
- if(modeItr->second != Mode::Modes::Regular)
+ if (modeItr->second != Mode::Modes::Regular)
{
setBootSource(Source::Sources::Default);
}
@@ -1563,26 +1554,33 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
*data_len = 0;
return IPMI_CC_UNSPECIFIED_ERROR;
}
- } else if (reqptr->parameter ==
- (uint8_t)BootOptionParameter::OPAL_NETWORK_SETTINGS) {
+ }
+ else if (reqptr->parameter ==
+ (uint8_t)BootOptionParameter::OPAL_NETWORK_SETTINGS)
+ {
int ret = setHostNetworkData(reqptr);
- if (ret < 0) {
+ if (ret < 0)
+ {
log<level::ERR>(
- "setHostNetworkData failed for set_sys_boot_options");
+ "setHostNetworkData failed for set_sys_boot_options");
rc = IPMI_CC_UNSPECIFIED_ERROR;
}
- } else if (reqptr->parameter ==
- static_cast<uint8_t>(BootOptionParameter::BOOT_INFO)) {
+ }
+ else if (reqptr->parameter ==
+ static_cast<uint8_t>(BootOptionParameter::BOOT_INFO))
+ {
// Handle parameter #4 and return command completed normally
// (IPMI_CC_OK). There is no implementation in OpenBMC for this
// parameter. This is added to support the ipmitool command `chassis
// bootdev` which sends set on parameter #4, before setting the boot
// flags.
rc = IPMI_CC_OK;
- } else {
- log<level::ERR>("Unsupported parameter", entry(
- "PARAM=0x%x", reqptr->parameter));
+ }
+ else
+ {
+ log<level::ERR>("Unsupported parameter",
+ entry("PARAM=0x%x", reqptr->parameter));
rc = IPMI_CC_PARM_NOT_SUPPORTED;
}
@@ -1623,24 +1621,25 @@ void register_netfn_chassis_functions()
createIdentifyTimer();
// <Wildcard Command>
- ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_WILDCARD, NULL, ipmi_chassis_wildcard,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_WILDCARD, NULL,
+ ipmi_chassis_wildcard, PRIVILEGE_USER);
// Get Chassis Capabilities
- ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_GET_CHASSIS_CAP, NULL, ipmi_get_chassis_cap,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_GET_CHASSIS_CAP, NULL,
+ ipmi_get_chassis_cap, PRIVILEGE_USER);
// <Get System Boot Options>
ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_GET_SYS_BOOT_OPTIONS, NULL,
- ipmi_chassis_get_sys_boot_options, PRIVILEGE_OPERATOR);
+ ipmi_chassis_get_sys_boot_options,
+ PRIVILEGE_OPERATOR);
// <Get Chassis Status>
- ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_CHASSIS_STATUS, NULL, ipmi_get_chassis_status,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_CHASSIS_STATUS, NULL,
+ ipmi_get_chassis_status, PRIVILEGE_USER);
// <Chassis Control>
- ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_CHASSIS_CONTROL, NULL, ipmi_chassis_control,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_CHASSIS_CONTROL, NULL,
+ ipmi_chassis_control, PRIVILEGE_OPERATOR);
// <Chassis Identify>
ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_CHASSIS_IDENTIFY, NULL,
@@ -1648,7 +1647,8 @@ void register_netfn_chassis_functions()
// <Set System Boot Options>
ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_SET_SYS_BOOT_OPTIONS, NULL,
- ipmi_chassis_set_sys_boot_options, PRIVILEGE_OPERATOR);
+ ipmi_chassis_set_sys_boot_options,
+ PRIVILEGE_OPERATOR);
// <Get POH Counter>
ipmi_register_callback(NETFUN_CHASSIS, IPMI_CMD_GET_POH_COUNTER, NULL,
ipmiGetPOHCounter, PRIVILEGE_USER);
diff --git a/chassishandler.h b/chassishandler.h
index fa7ad5d..edbac89 100644
--- a/chassishandler.h
+++ b/chassishandler.h
@@ -2,21 +2,22 @@
#define __HOST_IPMI_CHASSIS_HANDLER_H__
#include <stdint.h>
+
#include <cstddef>
// IPMI commands for Chassis net functions.
enum ipmi_netfn_chassis_cmds
{
- IPMI_CMD_GET_CHASSIS_CAP = 0x00,
+ IPMI_CMD_GET_CHASSIS_CAP = 0x00,
// Chassis Status
- IPMI_CMD_CHASSIS_STATUS = 0x01,
+ IPMI_CMD_CHASSIS_STATUS = 0x01,
// Chassis Control
- IPMI_CMD_CHASSIS_CONTROL = 0x02,
- IPMI_CMD_CHASSIS_IDENTIFY = 0x04,
+ IPMI_CMD_CHASSIS_CONTROL = 0x02,
+ IPMI_CMD_CHASSIS_IDENTIFY = 0x04,
// Get capability bits
IPMI_CMD_SET_SYS_BOOT_OPTIONS = 0x08,
IPMI_CMD_GET_SYS_BOOT_OPTIONS = 0x09,
- IPMI_CMD_GET_POH_COUNTER = 0x0F,
+ IPMI_CMD_GET_POH_COUNTER = 0x0F,
};
// Command specific completion codes
@@ -36,24 +37,24 @@ enum ipmi_generic_return_codes
// Various Chassis operations under a single command.
enum ipmi_chassis_control_cmds : uint8_t
{
- CMD_POWER_OFF = 0x00,
- CMD_POWER_ON = 0x01,
- CMD_POWER_CYCLE = 0x02,
- CMD_HARD_RESET = 0x03,
- CMD_PULSE_DIAGNOSTIC_INTR = 0x04,
- CMD_SOFT_OFF_VIA_OVER_TEMP = 0x05,
+ CMD_POWER_OFF = 0x00,
+ CMD_POWER_ON = 0x01,
+ CMD_POWER_CYCLE = 0x02,
+ CMD_HARD_RESET = 0x03,
+ CMD_PULSE_DIAGNOSTIC_INTR = 0x04,
+ CMD_SOFT_OFF_VIA_OVER_TEMP = 0x05,
};
enum class BootOptionParameter : size_t
{
- BOOT_INFO = 0x4,
- BOOT_FLAGS = 0x5,
- OPAL_NETWORK_SETTINGS = 0x61
+ BOOT_INFO = 0x4,
+ BOOT_FLAGS = 0x5,
+ OPAL_NETWORK_SETTINGS = 0x61
};
enum class BootOptionResponseSize : size_t
{
- BOOT_FLAGS = 5,
- OPAL_NETWORK_SETTINGS = 50
+ BOOT_FLAGS = 5,
+ OPAL_NETWORK_SETTINGS = 50
};
#endif
diff --git a/dcmihandler.cpp b/dcmihandler.cpp
index d4f0ff5..951b6ba 100644
--- a/dcmihandler.cpp
+++ b/dcmihandler.cpp
@@ -1,27 +1,32 @@
+#include "config.h"
+
#include "dcmihandler.hpp"
-#include "host-ipmid/ipmid-api.h"
-#include <phosphor-logging/elog-errors.hpp>
-#include <phosphor-logging/log.hpp>
-#include <sdbusplus/bus.hpp>
-#include <nlohmann/json.hpp>
+
+#include "net.hpp"
#include "utils.hpp"
+
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
-#include <stdint.h>
-#include <fstream>
+
#include <bitset>
#include <cmath>
-#include "xyz/openbmc_project/Common/error.hpp"
-#include "config.h"
-#include "net.hpp"
+#include <fstream>
+#include <nlohmann/json.hpp>
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
+#include <sdbusplus/bus.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
+#include "host-ipmid/ipmid-api.h"
using namespace phosphor::logging;
using InternalFailure =
- sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+ sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
void register_netfn_dcmi_functions() __attribute__((constructor));
-constexpr auto PCAP_PATH = "/xyz/openbmc_project/control/host0/power_cap";
+constexpr auto PCAP_PATH = "/xyz/openbmc_project/control/host0/power_cap";
constexpr auto PCAP_INTERFACE = "xyz.openbmc_project.Control.Power.Cap";
constexpr auto POWER_CAP_PROP = "PowerCap";
@@ -38,10 +43,10 @@ constexpr auto DCMI_ACTIVATE_DHCP_MASK = 0x01;
constexpr auto DCMI_ACTIVATE_DHCP_REPLY = 0x00;
constexpr auto DCMI_SET_CONF_PARAM_REQ_PACKET_MAX_SIZE = 0x05;
constexpr auto DCMI_SET_CONF_PARAM_REQ_PACKET_MIN_SIZE = 0x04;
-constexpr auto DHCP_TIMING1 = 0x04; // 4 sec
-constexpr auto DHCP_TIMING2_UPPER = 0x00; //2 min
+constexpr auto DHCP_TIMING1 = 0x04; // 4 sec
+constexpr auto DHCP_TIMING2_UPPER = 0x00; // 2 min
constexpr auto DHCP_TIMING2_LOWER = 0x78;
-constexpr auto DHCP_TIMING3_UPPER = 0x00; //64 sec
+constexpr auto DHCP_TIMING3_UPPER = 0x00; // 64 sec
constexpr auto DHCP_TIMING3_LOWER = 0x40;
// When DHCP Option 12 is enabled the string "SendHostName=true" will be
// added into n/w configuration file and the parameter
@@ -60,26 +65,16 @@ namespace dcmi
{
// Refer Table 6-14, DCMI Entity ID Extension, DCMI v1.5 spec
-static const std::map<uint8_t, std::string> entityIdToName
-{
- {0x40, "inlet"},
- {0x37, "inlet"},
- {0x41, "cpu"},
- {0x03, "cpu"},
- {0x42, "baseboard"},
- {0x07, "baseboard"}
-};
-
+static const std::map<uint8_t, std::string> entityIdToName{
+ {0x40, "inlet"}, {0x37, "inlet"}, {0x41, "cpu"},
+ {0x03, "cpu"}, {0x42, "baseboard"}, {0x07, "baseboard"}};
uint32_t getPcap(sdbusplus::bus::bus& bus)
{
- auto settingService = ipmi::getService(bus,
- PCAP_INTERFACE,PCAP_PATH);
+ auto settingService = ipmi::getService(bus, PCAP_INTERFACE, PCAP_PATH);
- auto method = bus.new_method_call(settingService.c_str(),
- PCAP_PATH,
- "org.freedesktop.DBus.Properties",
- "Get");
+ auto method = bus.new_method_call(settingService.c_str(), PCAP_PATH,
+ "org.freedesktop.DBus.Properties", "Get");
method.append(PCAP_INTERFACE, POWER_CAP_PROP);
auto reply = bus.call(method);
@@ -97,13 +92,10 @@ uint32_t getPcap(sdbusplus::bus::bus& bus)
bool getPcapEnabled(sdbusplus::bus::bus& bus)
{
- auto settingService = ipmi::getService(bus,
- PCAP_INTERFACE,PCAP_PATH);
+ auto settingService = ipmi::getService(bus, PCAP_INTERFACE, PCAP_PATH);
- auto method = bus.new_method_call(settingService.c_str(),
- PCAP_PATH,
- "org.freedesktop.DBus.Properties",
- "Get");
+ auto method = bus.new_method_call(settingService.c_str(), PCAP_PATH,
+ "org.freedesktop.DBus.Properties", "Get");
method.append(PCAP_INTERFACE, POWER_CAP_ENABLE_PROP);
auto reply = bus.call(method);
@@ -123,10 +115,8 @@ void setPcap(sdbusplus::bus::bus& bus, const uint32_t powerCap)
{
auto service = ipmi::getService(bus, PCAP_INTERFACE, PCAP_PATH);
- auto method = bus.new_method_call(service.c_str(),
- PCAP_PATH,
- "org.freedesktop.DBus.Properties",
- "Set");
+ auto method = bus.new_method_call(service.c_str(), PCAP_PATH,
+ "org.freedesktop.DBus.Properties", "Set");
method.append(PCAP_INTERFACE, POWER_CAP_PROP);
method.append(sdbusplus::message::variant<uint32_t>(powerCap));
@@ -144,10 +134,8 @@ void setPcapEnable(sdbusplus::bus::bus& bus, bool enabled)
{
auto service = ipmi::getService(bus, PCAP_INTERFACE, PCAP_PATH);
- auto method = bus.new_method_call(service.c_str(),
- PCAP_PATH,
- "org.freedesktop.DBus.Properties",
- "Set");
+ auto method = bus.new_method_call(service.c_str(), PCAP_PATH,
+ "org.freedesktop.DBus.Properties", "Set");
method.append(PCAP_INTERFACE, POWER_CAP_ENABLE_PROP);
method.append(sdbusplus::message::variant<bool>(enabled));
@@ -171,10 +159,8 @@ void readAssetTagObjectTree(dcmi::assettag::ObjectTree& objectTree)
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
auto depth = 0;
- auto mapperCall = bus.new_method_call(mapperBusName,
- mapperObjPath,
- mapperIface,
- "GetSubTree");
+ auto mapperCall = bus.new_method_call(mapperBusName, mapperObjPath,
+ mapperIface, "GetSubTree");
mapperCall.append(inventoryRoot);
mapperCall.append(depth);
@@ -206,10 +192,8 @@ std::string readAssetTag()
readAssetTagObjectTree(objectTree);
auto method = bus.new_method_call(
- (objectTree.begin()->second.begin()->first).c_str(),
- (objectTree.begin()->first).c_str(),
- dcmi::propIntf,
- "Get");
+ (objectTree.begin()->second.begin()->first).c_str(),
+ (objectTree.begin()->first).c_str(), dcmi::propIntf, "Get");
method.append(dcmi::assetTagIntf);
method.append(dcmi::assetTagProp);
@@ -236,10 +220,8 @@ void writeAssetTag(const std::string& assetTag)
readAssetTagObjectTree(objectTree);
auto method = bus.new_method_call(
- (objectTree.begin()->second.begin()->first).c_str(),
- (objectTree.begin()->first).c_str(),
- dcmi::propIntf,
- "Set");
+ (objectTree.begin()->second.begin()->first).c_str(),
+ (objectTree.begin()->first).c_str(), dcmi::propIntf, "Set");
method.append(dcmi::assetTagIntf);
method.append(dcmi::assetTagProp);
method.append(sdbusplus::message::variant<std::string>(assetTag));
@@ -254,11 +236,11 @@ void writeAssetTag(const std::string& assetTag)
std::string getHostName(void)
{
- sdbusplus::bus::bus bus{ ipmid_get_sd_bus_connection() };
+ sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
auto service = ipmi::getService(bus, networkConfigIntf, networkConfigObj);
- auto value = ipmi::getDbusProperty(bus, service,
- networkConfigObj, networkConfigIntf, hostNameProp);
+ auto value = ipmi::getDbusProperty(bus, service, networkConfigObj,
+ networkConfigIntf, hostNameProp);
return value.get<std::string>();
}
@@ -267,13 +249,13 @@ bool getDHCPEnabled()
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- auto ethdevice = ipmi::network::ChanneltoEthernet(
- ethernetDefaultChannelNum);
- auto ethernetObj = ipmi::getDbusObject(bus, ethernetIntf, networkRoot,
- ethdevice);
+ auto ethdevice =
+ ipmi::network::ChanneltoEthernet(ethernetDefaultChannelNum);
+ auto ethernetObj =
+ ipmi::getDbusObject(bus, ethernetIntf, networkRoot, ethdevice);
auto service = ipmi::getService(bus, ethernetIntf, ethernetObj.first);
- auto value = ipmi::getDbusProperty(bus, service,
- ethernetObj.first, ethernetIntf, "DHCPEnabled");
+ auto value = ipmi::getDbusProperty(bus, service, ethernetObj.first,
+ ethernetIntf, "DHCPEnabled");
return value.get<bool>();
}
@@ -288,7 +270,6 @@ bool getDHCPOption(std::string prop)
return value.get<bool>();
}
-
void setDHCPOption(std::string prop, bool value)
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
@@ -322,11 +303,11 @@ ipmi_ret_t getPowerLimit(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)
{
- auto requestData = reinterpret_cast<const dcmi::GetPowerLimitRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const dcmi::GetPowerLimitRequest*>(request);
std::vector<uint8_t> outPayload(sizeof(dcmi::GetPowerLimitResponse));
- auto responseData = reinterpret_cast<dcmi::GetPowerLimitResponse*>
- (outPayload.data());
+ auto responseData =
+ reinterpret_cast<dcmi::GetPowerLimitResponse*>(outPayload.data());
if (requestData->groupID != dcmi::groupExtId)
{
@@ -334,7 +315,7 @@ ipmi_ret_t getPowerLimit(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_INVALID_FIELD_REQUEST;
}
- sdbusplus::bus::bus sdbus {ipmid_get_sd_bus_connection()};
+ sdbusplus::bus::bus sdbus{ipmid_get_sd_bus_connection()};
uint32_t pcapValue = 0;
bool pcapEnable = false;
@@ -383,11 +364,11 @@ ipmi_ret_t setPowerLimit(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)
{
- auto requestData = reinterpret_cast<const dcmi::SetPowerLimitRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const dcmi::SetPowerLimitRequest*>(request);
std::vector<uint8_t> outPayload(sizeof(dcmi::SetPowerLimitResponse));
- auto responseData = reinterpret_cast<dcmi::SetPowerLimitResponse*>
- (outPayload.data());
+ auto responseData =
+ reinterpret_cast<dcmi::SetPowerLimitResponse*>(outPayload.data());
if (requestData->groupID != dcmi::groupExtId)
{
@@ -395,7 +376,7 @@ ipmi_ret_t setPowerLimit(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_INVALID_FIELD_REQUEST;
}
- sdbusplus::bus::bus sdbus {ipmid_get_sd_bus_connection()};
+ sdbusplus::bus::bus sdbus{ipmid_get_sd_bus_connection()};
// Only process the power limit requested in watts.
try
@@ -422,11 +403,11 @@ ipmi_ret_t applyPowerLimit(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)
{
- auto requestData = reinterpret_cast<const dcmi::ApplyPowerLimitRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const dcmi::ApplyPowerLimitRequest*>(request);
std::vector<uint8_t> outPayload(sizeof(dcmi::ApplyPowerLimitResponse));
- auto responseData = reinterpret_cast<dcmi::ApplyPowerLimitResponse*>
- (outPayload.data());
+ auto responseData =
+ reinterpret_cast<dcmi::ApplyPowerLimitResponse*>(outPayload.data());
if (requestData->groupID != dcmi::groupExtId)
{
@@ -434,7 +415,7 @@ ipmi_ret_t applyPowerLimit(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_INVALID_FIELD_REQUEST;
}
- sdbusplus::bus::bus sdbus {ipmid_get_sd_bus_connection()};
+ sdbusplus::bus::bus sdbus{ipmid_get_sd_bus_connection()};
try
{
@@ -461,11 +442,11 @@ ipmi_ret_t getAssetTag(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)
{
- auto requestData = reinterpret_cast<const dcmi::GetAssetTagRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const dcmi::GetAssetTagRequest*>(request);
std::vector<uint8_t> outPayload(sizeof(dcmi::GetAssetTagResponse));
- auto responseData = reinterpret_cast<dcmi::GetAssetTagResponse*>
- (outPayload.data());
+ auto responseData =
+ reinterpret_cast<dcmi::GetAssetTagResponse*>(outPayload.data());
if (requestData->groupID != dcmi::groupExtId)
{
@@ -536,11 +517,11 @@ ipmi_ret_t setAssetTag(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)
{
- auto requestData = reinterpret_cast<const dcmi::SetAssetTagRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const dcmi::SetAssetTagRequest*>(request);
std::vector<uint8_t> outPayload(sizeof(dcmi::SetAssetTagResponse));
- auto responseData = reinterpret_cast<dcmi::SetAssetTagResponse*>
- (outPayload.data());
+ auto responseData =
+ reinterpret_cast<dcmi::SetAssetTagResponse*>(outPayload.data());
if (requestData->groupID != dcmi::groupExtId)
{
@@ -573,7 +554,7 @@ ipmi_ret_t setAssetTag(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
assetTag.replace(requestData->offset,
assetTag.size() - requestData->offset,
static_cast<const char*>(request) +
- sizeof(dcmi::SetAssetTagRequest),
+ sizeof(dcmi::SetAssetTagRequest),
requestData->bytes);
dcmi::writeAssetTag(assetTag);
@@ -593,13 +574,13 @@ ipmi_ret_t setAssetTag(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t getMgmntCtrlIdStr(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_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len, ipmi_context_t context)
{
- auto requestData = reinterpret_cast<const dcmi::GetMgmntCtrlIdStrRequest *>
- (request);
- auto responseData = reinterpret_cast<dcmi::GetMgmntCtrlIdStrResponse *>
- (response);
+ auto requestData =
+ reinterpret_cast<const dcmi::GetMgmntCtrlIdStrRequest*>(request);
+ auto responseData =
+ reinterpret_cast<dcmi::GetMgmntCtrlIdStrResponse*>(response);
std::string hostName;
*data_len = 0;
@@ -626,7 +607,7 @@ ipmi_ret_t getMgmntCtrlIdStr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
auto responseStr = hostName.substr(requestData->offset, requestData->bytes);
auto responseStrLen = std::min(static_cast<std::size_t>(requestData->bytes),
- responseStr.length() + 1);
+ responseStr.length() + 1);
responseData->groupID = dcmi::groupExtId;
responseData->strLen = hostName.length();
std::copy(begin(responseStr), end(responseStr), responseData->data);
@@ -636,23 +617,24 @@ ipmi_ret_t getMgmntCtrlIdStr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t setMgmntCtrlIdStr(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_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len, ipmi_context_t context)
{
static std::array<char, dcmi::maxCtrlIdStrLen + 1> newCtrlIdStr;
- auto requestData = reinterpret_cast<const dcmi::SetMgmntCtrlIdStrRequest *>
- (request);
- auto responseData = reinterpret_cast<dcmi::SetMgmntCtrlIdStrResponse *>
- (response);
+ auto requestData =
+ reinterpret_cast<const dcmi::SetMgmntCtrlIdStrRequest*>(request);
+ auto responseData =
+ reinterpret_cast<dcmi::SetMgmntCtrlIdStrResponse*>(response);
*data_len = 0;
if (requestData->groupID != dcmi::groupExtId ||
requestData->bytes > dcmi::maxBytes ||
requestData->offset + requestData->bytes > dcmi::maxCtrlIdStrLen + 1 ||
- (requestData->offset + requestData->bytes == dcmi::maxCtrlIdStrLen + 1 &&
- requestData->data[requestData->bytes - 1] != '\0'))
+ (requestData->offset + requestData->bytes ==
+ dcmi::maxCtrlIdStrLen + 1 &&
+ requestData->data[requestData->bytes - 1] != '\0'))
{
return IPMI_CC_INVALID_FIELD_REQUEST;
}
@@ -670,8 +652,9 @@ ipmi_ret_t setMgmntCtrlIdStr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
/* replace part of string and mark byte after the last as \0 */
- auto restStrIter = std::copy_n(requestData->data,
- requestData->bytes, begin(newCtrlIdStr) + requestData->offset);
+ auto restStrIter =
+ std::copy_n(requestData->data, requestData->bytes,
+ begin(newCtrlIdStr) + requestData->offset);
/* if the last written byte is not 64th - add '\0' */
if (requestData->offset + requestData->bytes <= dcmi::maxCtrlIdStrLen)
{
@@ -680,13 +663,14 @@ ipmi_ret_t setMgmntCtrlIdStr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
/* if input data contains '\0' whole string is sent - update hostname */
auto it = std::find(requestData->data,
- requestData->data + requestData->bytes, '\0');
+ requestData->data + requestData->bytes, '\0');
if (it != requestData->data + requestData->bytes)
{
- sdbusplus::bus::bus bus{ ipmid_get_sd_bus_connection() };
+ sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
ipmi::setDbusProperty(bus, dcmi::networkServiceName,
- dcmi::networkConfigObj, dcmi::networkConfigIntf,
- dcmi::hostNameProp, std::string(newCtrlIdStr.data()));
+ dcmi::networkConfigObj,
+ dcmi::networkConfigIntf, dcmi::hostNameProp,
+ std::string(newCtrlIdStr.data()));
}
}
catch (InternalFailure& e)
@@ -701,53 +685,35 @@ ipmi_ret_t setMgmntCtrlIdStr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_OK;
}
-//List of the capabilities under each parameter
-dcmi::DCMICaps dcmiCaps =
-{
-//Supported DCMI Capabilities
- {
- dcmi::DCMICapParameters::SUPPORTED_DCMI_CAPS,
- {
- 3, {{"PowerManagement", 2, 0, 1},
- {"OOBSecondaryLan", 3, 2, 1},
- {"SerialTMODE", 3, 1, 1},
- {"InBandSystemInterfaceChannel", 3, 0, 1}
- }
- }
- },
-//Mandatory Platform Attributes
- {
- dcmi::DCMICapParameters::MANDATORY_PLAT_ATTRIBUTES,
- {
- 5, {{"SELAutoRollOver", 1, 15, 1},
- {"FlushEntireSELUponRollOver", 1, 14, 1},
- {"RecordLevelSELFlushUponRollOver", 1, 13, 1},
- {"NumberOfSELEntries", 1, 0, 12},
- {"TempMonitoringSamplingFreq", 5, 0, 8}
- }
- }
- },
-//Optional Platform Attributes
- {
- dcmi::DCMICapParameters::OPTIONAL_PLAT_ATTRIBUTES,
- {
- 2, {{"PowerMgmtDeviceSlaveAddress", 1, 1, 7},
- {"BMCChannelNumber", 2, 4, 4},
- {"DeviceRivision", 2, 0, 4}
- }
- }
- },
-//Manageability Access Attributes
- {
- dcmi::DCMICapParameters::MANAGEABILITY_ACCESS_ATTRIBUTES,
- {
- 3, {{"MandatoryPrimaryLanOOBSupport", 1, 0, 8},
- {"OptionalSecondaryLanOOBSupport", 2, 0, 8},
- {"OptionalSerialOOBMTMODECapability", 3, 0, 8}
- }
- }
- }
-};
+// List of the capabilities under each parameter
+dcmi::DCMICaps dcmiCaps = {
+ // Supported DCMI Capabilities
+ {dcmi::DCMICapParameters::SUPPORTED_DCMI_CAPS,
+ {3,
+ {{"PowerManagement", 2, 0, 1},
+ {"OOBSecondaryLan", 3, 2, 1},
+ {"SerialTMODE", 3, 1, 1},
+ {"InBandSystemInterfaceChannel", 3, 0, 1}}}},
+ // Mandatory Platform Attributes
+ {dcmi::DCMICapParameters::MANDATORY_PLAT_ATTRIBUTES,
+ {5,
+ {{"SELAutoRollOver", 1, 15, 1},
+ {"FlushEntireSELUponRollOver", 1, 14, 1},
+ {"RecordLevelSELFlushUponRollOver", 1, 13, 1},
+ {"NumberOfSELEntries", 1, 0, 12},
+ {"TempMonitoringSamplingFreq", 5, 0, 8}}}},
+ // Optional Platform Attributes
+ {dcmi::DCMICapParameters::OPTIONAL_PLAT_ATTRIBUTES,
+ {2,
+ {{"PowerMgmtDeviceSlaveAddress", 1, 1, 7},
+ {"BMCChannelNumber", 2, 4, 4},
+ {"DeviceRivision", 2, 0, 4}}}},
+ // Manageability Access Attributes
+ {dcmi::DCMICapParameters::MANAGEABILITY_ACCESS_ATTRIBUTES,
+ {3,
+ {{"MandatoryPrimaryLanOOBSupport", 1, 0, 8},
+ {"OptionalSecondaryLanOOBSupport", 2, 0, 8},
+ {"OptionalSerialOOBMTMODECapability", 3, 0, 8}}}}};
ipmi_ret_t getDCMICapabilities(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_request_t request, ipmi_response_t response,
@@ -768,10 +734,10 @@ ipmi_ret_t getDCMICapabilities(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_UNSPECIFIED_ERROR;
}
- auto requestData = reinterpret_cast<const dcmi::GetDCMICapRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const dcmi::GetDCMICapRequest*>(request);
- //get list of capabilities in a parameter
+ // get list of capabilities in a parameter
auto caps =
dcmiCaps.find(static_cast<dcmi::DCMICapParameters>(requestData->param));
if (caps == dcmiCaps.end())
@@ -786,24 +752,25 @@ ipmi_ret_t getDCMICapabilities(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_INVALID_FIELD_REQUEST;
}
- auto responseData = reinterpret_cast<dcmi::GetDCMICapResponse*>
- (response);
+ auto responseData = reinterpret_cast<dcmi::GetDCMICapResponse*>(response);
- //For each capabilities in a parameter fill the data from
- //the json file based on the capability name.
+ // For each capabilities in a parameter fill the data from
+ // the json file based on the capability name.
for (auto cap : caps->second.capList)
{
- //If the data is beyond first byte boundary, insert in a
- //16bit pattern for example number of SEL entries are represented
- //in 12bits.
+ // If the data is beyond first byte boundary, insert in a
+ // 16bit pattern for example number of SEL entries are represented
+ // in 12bits.
if ((cap.length + cap.position) > 8)
{
- //Read the value corresponding to capability name and assign to
- //16bit bitset.
+ // Read the value corresponding to capability name and assign to
+ // 16bit bitset.
std::bitset<16> val(data.value(cap.name.c_str(), 0));
val <<= cap.position;
- reinterpret_cast<uint16_t*>(responseData->data)[
- (cap.bytePosition - 1) / sizeof(uint16_t)] |= val.to_ulong();
+ reinterpret_cast<uint16_t*>(
+ responseData
+ ->data)[(cap.bytePosition - 1) / sizeof(uint16_t)] |=
+ val.to_ulong();
}
else
{
@@ -836,8 +803,8 @@ Temperature readTemp(const std::string& dbusService,
// with a separate single bit for the sign.
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- auto result = ipmi::getAllDbusProperties(bus, dbusService, dbusPath,
- "xyz.openbmc_project.Sensor.Value");
+ auto result = ipmi::getAllDbusProperties(
+ bus, dbusService, dbusPath, "xyz.openbmc_project.Sensor.Value");
auto temperature = result.at("Value").get<int64_t>();
uint64_t absTemp = std::abs(temperature);
@@ -845,8 +812,7 @@ Temperature readTemp(const std::string& dbusService,
uint64_t scale = std::pow(10, factor); // pow() returns float/double
unsigned long long tempDegrees = 0;
// Overflow safe multiplication when the scale is > 0
- if (scale && __builtin_umulll_overflow(
- absTemp, scale, &tempDegrees))
+ if (scale && __builtin_umulll_overflow(absTemp, scale, &tempDegrees))
{
log<level::ERR>("Multiplication overflow detected",
entry("TEMP_VALUE=%llu", absTemp),
@@ -898,9 +864,7 @@ std::tuple<Response, NumInstances> read(const std::string& type,
try
{
service =
- ipmi::getService(bus,
- "xyz.openbmc_project.Sensor.Value",
- path);
+ ipmi::getService(bus, "xyz.openbmc_project.Sensor.Value", path);
}
catch (std::exception& e)
{
@@ -956,9 +920,7 @@ std::tuple<ResponseList, NumInstances> readAll(const std::string& type,
std::string path = j.value("dbus", "");
auto service =
- ipmi::getService(bus,
- "xyz.openbmc_project.Sensor.Value",
- path);
+ ipmi::getService(bus, "xyz.openbmc_project.Sensor.Value", path);
Response r{};
r.instance = instanceNum;
@@ -983,12 +945,12 @@ std::tuple<ResponseList, NumInstances> readAll(const std::string& type,
return std::make_tuple(response, numInstances);
}
-} // namsespace temp_readings
-} // namsepace dcmi
+} // namespace temp_readings
+} // namespace dcmi
ipmi_ret_t getTempReadings(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_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len, ipmi_context_t context)
{
auto requestData =
reinterpret_cast<const dcmi::GetTempReadingsRequest*>(request);
@@ -1051,13 +1013,11 @@ ipmi_ret_t getTempReadings(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
responseData->groupID = dcmi::groupExtId;
- size_t payloadSize =
- temps.size() * sizeof(dcmi::temp_readings::Response);
+ size_t payloadSize = temps.size() * sizeof(dcmi::temp_readings::Response);
if (!temps.empty())
{
memcpy(responseData + 1, // copy payload right after the response header
- temps.data(),
- payloadSize);
+ temps.data(), payloadSize);
}
*data_len = sizeof(dcmi::GetTempReadingsResponseHdr) + payloadSize;
@@ -1071,7 +1031,7 @@ int64_t getPowerReading(sdbusplus::bus::bus& bus)
if (!sensorFile.is_open())
{
log<level::ERR>("Power reading configuration file not found",
- entry("POWER_SENSOR_FILE=%s", POWER_READING_SENSOR));
+ entry("POWER_SENSOR_FILE=%s", POWER_READING_SENSOR));
elog<InternalFailure>();
}
@@ -1079,7 +1039,7 @@ int64_t getPowerReading(sdbusplus::bus::bus& bus)
if (data.is_discarded())
{
log<level::ERR>("Error in parsing configuration file",
- entry("POWER_SENSOR_FILE=%s", POWER_READING_SENSOR));
+ entry("POWER_SENSOR_FILE=%s", POWER_READING_SENSOR));
elog<InternalFailure>();
}
@@ -1097,9 +1057,9 @@ int64_t getPowerReading(sdbusplus::bus::bus& bus)
{
auto service = ipmi::getService(bus, SENSOR_VALUE_INTF, objectPath);
- //Read the sensor value and scale properties
- auto properties = ipmi::getAllDbusProperties(
- bus, service, objectPath, SENSOR_VALUE_INTF);
+ // Read the sensor value and scale properties
+ auto properties = ipmi::getAllDbusProperties(bus, service, objectPath,
+ SENSOR_VALUE_INTF);
auto value = properties[SENSOR_VALUE_PROP].get<int64_t>();
auto scale = properties[SENSOR_SCALE_PROP].get<int64_t>();
@@ -1110,8 +1070,8 @@ int64_t getPowerReading(sdbusplus::bus::bus& bus)
catch (std::exception& e)
{
log<level::INFO>("Failure to read power value from D-Bus object",
- entry("OBJECT_PATH=%s", objectPath.c_str()),
- entry("INTERFACE=%s", SENSOR_VALUE_INTF));
+ entry("OBJECT_PATH=%s", objectPath.c_str()),
+ entry("INTERFACE=%s", SENSOR_VALUE_INTF));
}
return power;
}
@@ -1120,15 +1080,14 @@ ipmi_ret_t setDCMIConfParams(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)
{
- auto requestData = reinterpret_cast<const dcmi::SetConfParamsRequest*>
- (request);
- auto responseData = reinterpret_cast<dcmi::SetConfParamsResponse*>
- (response);
-
+ auto requestData =
+ reinterpret_cast<const dcmi::SetConfParamsRequest*>(request);
+ auto responseData =
+ reinterpret_cast<dcmi::SetConfParamsResponse*>(response);
- if (requestData->groupID != dcmi::groupExtId || *data_len <
- DCMI_SET_CONF_PARAM_REQ_PACKET_MIN_SIZE || *data_len >
- DCMI_SET_CONF_PARAM_REQ_PACKET_MAX_SIZE)
+ if (requestData->groupID != dcmi::groupExtId ||
+ *data_len < DCMI_SET_CONF_PARAM_REQ_PACKET_MIN_SIZE ||
+ *data_len > DCMI_SET_CONF_PARAM_REQ_PACKET_MAX_SIZE)
{
log<level::ERR>("Invalid Group ID or Invalid Requested Packet size",
entry("GROUP_ID=%d", requestData->groupID),
@@ -1141,19 +1100,19 @@ ipmi_ret_t setDCMIConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
try
{
// Take action based on the Parameter Selector
- switch (static_cast<dcmi::DCMIConfigParameters>(
- requestData->paramSelect))
+ switch (
+ static_cast<dcmi::DCMIConfigParameters>(requestData->paramSelect))
{
case dcmi::DCMIConfigParameters::ActivateDHCP:
if ((requestData->data[0] & DCMI_ACTIVATE_DHCP_MASK) &&
- dcmi::getDHCPEnabled())
+ dcmi::getDHCPEnabled())
{
- // When these conditions are met we have to trigger DHCP
- // protocol restart using the latest parameter settings, but
- // as per n/w manager design, each time when we update n/w
- // parameters, n/w service is restarted. So we no need to take
- // any action in this case.
+ // When these conditions are met we have to trigger DHCP
+ // protocol restart using the latest parameter settings, but
+ // as per n/w manager design, each time when we update n/w
+ // parameters, n/w service is restarted. So we no need to
+ // take any action in this case.
}
break;
@@ -1198,15 +1157,15 @@ ipmi_ret_t getDCMIConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_data_len_t data_len, ipmi_context_t context)
{
- auto requestData = reinterpret_cast<const dcmi::GetConfParamsRequest*>
- (request);
- auto responseData = reinterpret_cast<dcmi::GetConfParamsResponse*>
- (response);
+ auto requestData =
+ reinterpret_cast<const dcmi::GetConfParamsRequest*>(request);
+ auto responseData =
+ reinterpret_cast<dcmi::GetConfParamsResponse*>(response);
responseData->data[0] = 0x00;
- if (requestData->groupID != dcmi::groupExtId || *data_len != sizeof(
- dcmi::GetConfParamsRequest))
+ if (requestData->groupID != dcmi::groupExtId ||
+ *data_len != sizeof(dcmi::GetConfParamsRequest))
{
log<level::ERR>("Invalid Group ID or Invalid Requested Packet size",
entry("GROUP_ID=%d", requestData->groupID),
@@ -1219,8 +1178,8 @@ ipmi_ret_t getDCMIConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
try
{
// Take action based on the Parameter Selector
- switch (static_cast<dcmi::DCMIConfigParameters>(
- requestData->paramSelect))
+ switch (
+ static_cast<dcmi::DCMIConfigParameters>(requestData->paramSelect))
{
case dcmi::DCMIConfigParameters::ActivateDHCP:
responseData->data[0] = DCMI_ACTIVATE_DHCP_REPLY;
@@ -1267,16 +1226,15 @@ ipmi_ret_t getDCMIConfParams(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_OK;
}
-
ipmi_ret_t getPowerReading(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_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len, ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
- auto requestData = reinterpret_cast<const dcmi::GetPowerReadingRequest*>
- (request);
- auto responseData = reinterpret_cast<dcmi::GetPowerReadingResponse*>
- (response);
+ auto requestData =
+ reinterpret_cast<const dcmi::GetPowerReadingRequest*>(request);
+ auto responseData =
+ reinterpret_cast<dcmi::GetPowerReadingResponse*>(response);
if (requestData->groupID != dcmi::groupExtId)
{
@@ -1328,8 +1286,7 @@ Response createFromJson(const Json& config)
}
std::tuple<Response, NumInstances> read(const std::string& type,
- uint8_t instance,
- const Json& config)
+ uint8_t instance, const Json& config)
{
Response response{};
@@ -1366,9 +1323,8 @@ std::tuple<Response, NumInstances> read(const std::string& type,
return std::make_tuple(response, numInstances);
}
-std::tuple<ResponseList, NumInstances> readAll(const std::string& type,
- uint8_t instanceStart,
- const Json& config)
+std::tuple<ResponseList, NumInstances>
+ readAll(const std::string& type, uint8_t instanceStart, const Json& config)
{
ResponseList responses{};
@@ -1471,16 +1427,14 @@ ipmi_ret_t getSensorInfo(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// Read all instances
std::tie(sensors, responseData->numInstances) =
dcmi::sensor_info::readAll(it->second,
- requestData->instanceStart,
- config);
+ requestData->instanceStart, config);
}
else
{
// Read one instance
sensors.resize(1);
std::tie(sensors[0], responseData->numInstances) =
- dcmi::sensor_info::read(it->second,
- requestData->entityInstance,
+ dcmi::sensor_info::read(it->second, requestData->entityInstance,
config);
}
responseData->numRecords = sensors.size();
@@ -1495,8 +1449,7 @@ ipmi_ret_t getSensorInfo(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
if (!sensors.empty())
{
memcpy(responseData + 1, // copy payload right after the response header
- sensors.data(),
- payloadSize);
+ sensors.data(), payloadSize);
}
*data_len = sizeof(dcmi::GetSensorInfoResponseHdr) + payloadSize;
@@ -1507,13 +1460,13 @@ void register_netfn_dcmi_functions()
{
// <Get Power Limit>
- ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_POWER_LIMIT,
- NULL, getPowerLimit, PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_POWER_LIMIT, NULL,
+ getPowerLimit, PRIVILEGE_USER);
// <Set Power Limit>
- ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_POWER_LIMIT,
- NULL, setPowerLimit, PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_POWER_LIMIT, NULL,
+ setPowerLimit, PRIVILEGE_OPERATOR);
// <Activate/Deactivate Power Limit>
@@ -1522,26 +1475,26 @@ void register_netfn_dcmi_functions()
// <Get Asset Tag>
- ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_ASSET_TAG,
- NULL, getAssetTag, PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_ASSET_TAG, NULL,
+ getAssetTag, PRIVILEGE_USER);
// <Set Asset Tag>
- ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_ASSET_TAG,
- NULL, setAssetTag, PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_ASSET_TAG, NULL,
+ setAssetTag, PRIVILEGE_OPERATOR);
// <Get Management Controller Identifier String>
ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_MGMNT_CTRL_ID_STR,
- NULL, getMgmntCtrlIdStr, PRIVILEGE_USER);
+ NULL, getMgmntCtrlIdStr, PRIVILEGE_USER);
// <Set Management Controller Identifier String>
ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_MGMNT_CTRL_ID_STR,
- NULL, setMgmntCtrlIdStr, PRIVILEGE_ADMIN);
+ NULL, setMgmntCtrlIdStr, PRIVILEGE_ADMIN);
// <Get DCMI capabilities>
ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_CAPABILITIES,
- NULL, getDCMICapabilities, PRIVILEGE_USER);
+ NULL, getDCMICapabilities, PRIVILEGE_USER);
// <Get Temperature Readings>
ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_TEMP_READINGS,
@@ -1552,16 +1505,16 @@ void register_netfn_dcmi_functions()
NULL, getPowerReading, PRIVILEGE_USER);
// <Get Sensor Info>
- ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_SENSOR_INFO,
- NULL, getSensorInfo, PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_SENSOR_INFO, NULL,
+ getSensorInfo, PRIVILEGE_USER);
// <Get DCMI Configuration Parameters>
- ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_CONF_PARAMS,
- NULL, getDCMIConfParams, PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::GET_CONF_PARAMS, NULL,
+ getDCMIConfParams, PRIVILEGE_USER);
// <Set DCMI Configuration Parameters>
- ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_CONF_PARAMS,
- NULL, setDCMIConfParams, PRIVILEGE_ADMIN);
+ ipmi_register_callback(NETFUN_GRPEXT, dcmi::Commands::SET_CONF_PARAMS, NULL,
+ setDCMIConfParams, PRIVILEGE_ADMIN);
return;
}
diff --git a/dcmihandler.hpp b/dcmihandler.hpp
index 5388344..6e64faf 100644
--- a/dcmihandler.hpp
+++ b/dcmihandler.hpp
@@ -1,11 +1,12 @@
#ifndef __HOST_IPMI_DCMI_HANDLER_H__
#define __HOST_IPMI_DCMI_HANDLER_H__
+#include "nlohmann/json.hpp"
+
#include <map>
+#include <sdbusplus/bus.hpp>
#include <string>
#include <vector>
-#include <sdbusplus/bus.hpp>
-#include "nlohmann/json.hpp"
namespace dcmi
{
@@ -33,25 +34,24 @@ enum Commands
static constexpr auto propIntf = "org.freedesktop.DBus.Properties";
static constexpr auto assetTagIntf =
- "xyz.openbmc_project.Inventory.Decorator.AssetTag";
+ "xyz.openbmc_project.Inventory.Decorator.AssetTag";
static constexpr auto assetTagProp = "AssetTag";
static constexpr auto networkServiceName = "xyz.openbmc_project.Network";
-static constexpr auto networkConfigObj =
- "/xyz/openbmc_project/network/config";
+static constexpr auto networkConfigObj = "/xyz/openbmc_project/network/config";
static constexpr auto networkConfigIntf =
- "xyz.openbmc_project.Network.SystemConfiguration";
+ "xyz.openbmc_project.Network.SystemConfiguration";
static constexpr auto hostNameProp = "HostName";
static constexpr auto temperatureSensorType = 0x01;
static constexpr auto maxInstances = 255;
static constexpr auto configFile =
"/usr/share/ipmi-providers/dcmi_sensors.json";
static constexpr auto ethernetIntf =
- "xyz.openbmc_project.Network.EthernetInterface";
+ "xyz.openbmc_project.Network.EthernetInterface";
static constexpr auto ethernetDefaultChannelNum = 0x1;
static constexpr auto networkRoot = "/xyz/openbmc_project/network";
static constexpr auto dhcpObj = "/xyz/openbmc_project/network/config/dhcp";
static constexpr auto dhcpIntf =
- "xyz.openbmc_project.Network.DHCPConfiguration";
+ "xyz.openbmc_project.Network.DHCPConfiguration";
static constexpr auto systemBusName = "org.freedesktop.systemd1";
static constexpr auto systemPath = "/org/freedesktop/systemd1";
static constexpr auto systemIntf = "org.freedesktop.systemd1.Manager";
@@ -59,56 +59,56 @@ static constexpr auto systemIntf = "org.freedesktop.systemd1.Manager";
namespace assettag
{
- using ObjectPath = std::string;
- using Service = std::string;
- using Interfaces = std::vector<std::string>;
- using ObjectTree = std::map<ObjectPath, std::map<Service, Interfaces>>;
+using ObjectPath = std::string;
+using Service = std::string;
+using Interfaces = std::vector<std::string>;
+using ObjectTree = std::map<ObjectPath, std::map<Service, Interfaces>>;
-} //namespace assettag
+} // namespace assettag
namespace temp_readings
{
- static constexpr auto maxDataSets = 8;
- static constexpr auto maxTemp = 127; // degrees C
+static constexpr auto maxDataSets = 8;
+static constexpr auto maxTemp = 127; // degrees C
- /** @struct Response
- *
- * DCMI payload for Get Temperature Readings response
- */
- struct Response
- {
+/** @struct Response
+ *
+ * DCMI payload for Get Temperature Readings response
+ */
+struct Response
+{
#if BYTE_ORDER == LITTLE_ENDIAN
- uint8_t temperature: 7; //!< Temperature reading in Celsius
- uint8_t sign: 1; //!< Sign bit
+ uint8_t temperature : 7; //!< Temperature reading in Celsius
+ uint8_t sign : 1; //!< Sign bit
#endif
#if BYTE_ORDER == BIG_ENDIAN
- uint8_t sign: 1; //!< Sign bit
- uint8_t temperature: 7; //!< Temperature reading in Celsius
+ uint8_t sign : 1; //!< Sign bit
+ uint8_t temperature : 7; //!< Temperature reading in Celsius
#endif
- uint8_t instance; //!< Entity instance number
- } __attribute__((packed));
+ uint8_t instance; //!< Entity instance number
+} __attribute__((packed));
- using ResponseList = std::vector<Response>;
- using Value = uint8_t;
- using Sign = bool;
- using Temperature = std::tuple<Value, Sign>;
-}
+using ResponseList = std::vector<Response>;
+using Value = uint8_t;
+using Sign = bool;
+using Temperature = std::tuple<Value, Sign>;
+} // namespace temp_readings
namespace sensor_info
{
- static constexpr auto maxRecords = 8;
+static constexpr auto maxRecords = 8;
- /** @struct Response
- *
- * DCMI payload for Get Sensor Info response
- */
- struct Response
- {
- uint8_t recordIdLsb; //!< SDR record id LS byte
- uint8_t recordIdMsb; //!< SDR record id MS byte
- } __attribute__((packed));
+/** @struct Response
+ *
+ * DCMI payload for Get Sensor Info response
+ */
+struct Response
+{
+ uint8_t recordIdLsb; //!< SDR record id LS byte
+ uint8_t recordIdMsb; //!< SDR record id MS byte
+} __attribute__((packed));
- using ResponseList = std::vector<Response>;
+using ResponseList = std::vector<Response>;
} // namespace sensor_info
static constexpr auto groupExtId = 0xDC;
@@ -124,9 +124,9 @@ static constexpr size_t maxCtrlIdStrLen = 63;
*/
struct GetAssetTagRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t offset; //!< Offset to read.
- uint8_t bytes; //!< Number of bytes to read.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t offset; //!< Offset to read.
+ uint8_t bytes; //!< Number of bytes to read.
} __attribute__((packed));
/** @struct GetAssetTagResponse
@@ -135,8 +135,8 @@ struct GetAssetTagRequest
*/
struct GetAssetTagResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t tagLength; //!< Total asset tag length.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t tagLength; //!< Total asset tag length.
} __attribute__((packed));
/** @struct SetAssetTagRequest
@@ -145,9 +145,9 @@ struct GetAssetTagResponse
*/
struct SetAssetTagRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t offset; //!< Offset to write.
- uint8_t bytes; //!< Number of bytes to write.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t offset; //!< Offset to write.
+ uint8_t bytes; //!< Number of bytes to write.
} __attribute__((packed));
/** @struct SetAssetTagResponse
@@ -156,8 +156,8 @@ struct SetAssetTagRequest
*/
struct SetAssetTagResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t tagLength; //!< Total asset tag length.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t tagLength; //!< Total asset tag length.
} __attribute__((packed));
/** @brief Read the object tree to fetch the object path that implemented the
@@ -205,8 +205,8 @@ bool getPcapEnabled(sdbusplus::bus::bus& bus);
*/
struct GetPowerLimitRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint16_t reserved; //!< Reserved
+ uint8_t groupID; //!< Group extension identification.
+ uint16_t reserved; //!< Reserved
} __attribute__((packed));
/** @struct GetPowerLimitResponse
@@ -215,13 +215,13 @@ struct GetPowerLimitRequest
*/
struct GetPowerLimitResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint16_t reserved; //!< Reserved.
- uint8_t exceptionAction; //!< Exception action.
- uint16_t powerLimit; //!< Power limit requested in watts.
- uint32_t correctionTime; //!< Correction time limit in milliseconds.
- uint16_t reserved1; //!< Reserved.
- uint16_t samplingPeriod; //!< Statistics sampling period in seconds.
+ uint8_t groupID; //!< Group extension identification.
+ uint16_t reserved; //!< Reserved.
+ uint8_t exceptionAction; //!< Exception action.
+ uint16_t powerLimit; //!< Power limit requested in watts.
+ uint32_t correctionTime; //!< Correction time limit in milliseconds.
+ uint16_t reserved1; //!< Reserved.
+ uint16_t samplingPeriod; //!< Statistics sampling period in seconds.
} __attribute__((packed));
/** @brief Set the power cap value
@@ -237,14 +237,14 @@ void setPcap(sdbusplus::bus::bus& bus, const uint32_t powerCap);
*/
struct SetPowerLimitRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint16_t reserved; //!< Reserved
- uint8_t reserved1; //!< Reserved
- uint8_t exceptionAction; //!< Exception action.
- uint16_t powerLimit; //!< Power limit requested in watts.
- uint32_t correctionTime; //!< Correction time limit in milliseconds.
- uint16_t reserved2; //!< Reserved.
- uint16_t samplingPeriod; //!< Statistics sampling period in seconds.
+ uint8_t groupID; //!< Group extension identification.
+ uint16_t reserved; //!< Reserved
+ uint8_t reserved1; //!< Reserved
+ uint8_t exceptionAction; //!< Exception action.
+ uint16_t powerLimit; //!< Power limit requested in watts.
+ uint32_t correctionTime; //!< Correction time limit in milliseconds.
+ uint16_t reserved2; //!< Reserved.
+ uint16_t samplingPeriod; //!< Statistics sampling period in seconds.
} __attribute__((packed));
/** @struct SetPowerLimitResponse
@@ -253,7 +253,7 @@ struct SetPowerLimitRequest
*/
struct SetPowerLimitResponse
{
- uint8_t groupID; //!< Group extension identification.
+ uint8_t groupID; //!< Group extension identification.
} __attribute__((packed));
/** @brief Enable or disable the power capping
@@ -269,9 +269,9 @@ void setPcapEnable(sdbusplus::bus::bus& bus, bool enabled);
*/
struct ApplyPowerLimitRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t powerLimitAction; //!< Power limit activation
- uint16_t reserved; //!< Reserved
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t powerLimitAction; //!< Power limit activation
+ uint16_t reserved; //!< Reserved
} __attribute__((packed));
/** @struct ApplyPowerLimitResponse
@@ -280,7 +280,7 @@ struct ApplyPowerLimitRequest
*/
struct ApplyPowerLimitResponse
{
- uint8_t groupID; //!< Group extension identification.
+ uint8_t groupID; //!< Group extension identification.
} __attribute__((packed));
/** @struct GetMgmntCtrlIdStrRequest
@@ -289,9 +289,9 @@ struct ApplyPowerLimitResponse
*/
struct GetMgmntCtrlIdStrRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t offset; //!< Offset to read.
- uint8_t bytes; //!< Number of bytes to read.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t offset; //!< Offset to read.
+ uint8_t bytes; //!< Number of bytes to read.
} __attribute__((packed));
/** @struct GetMgmntCtrlIdStrResponse
@@ -300,9 +300,9 @@ struct GetMgmntCtrlIdStrRequest
*/
struct GetMgmntCtrlIdStrResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t strLen; //!< ID string length.
- char data[]; //!< ID string
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t strLen; //!< ID string length.
+ char data[]; //!< ID string
} __attribute__((packed));
/** @struct SetMgmntCtrlIdStrRequest
@@ -311,10 +311,10 @@ struct GetMgmntCtrlIdStrResponse
*/
struct SetMgmntCtrlIdStrRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t offset; //!< Offset to write.
- uint8_t bytes; //!< Number of bytes to read.
- char data[]; //!< ID string
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t offset; //!< Offset to write.
+ uint8_t bytes; //!< Number of bytes to read.
+ char data[]; //!< ID string
} __attribute__((packed));
/** @struct GetMgmntCtrlIdStrResponse
@@ -323,8 +323,8 @@ struct SetMgmntCtrlIdStrRequest
*/
struct SetMgmntCtrlIdStrResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t offset; //!< Last Offset Written.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t offset; //!< Last Offset Written.
} __attribute__((packed));
/** @enum DCMICapParameters
@@ -345,8 +345,8 @@ enum class DCMICapParameters
*/
struct GetDCMICapRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t param; //!< Capability parameter selector.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t param; //!< Capability parameter selector.
} __attribute__((packed));
/** @struct GetDCMICapRequest
@@ -355,11 +355,11 @@ struct GetDCMICapRequest
*/
struct GetDCMICapResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t major; //!< DCMI Specification Conformance - major ver
- uint8_t minor; //!< DCMI Specification Conformance - minor ver
- uint8_t paramRevision; //!< Parameter Revision = 02h
- uint8_t data[]; //!< Capability array
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t major; //!< DCMI Specification Conformance - major ver
+ uint8_t minor; //!< DCMI Specification Conformance - minor ver
+ uint8_t paramRevision; //!< Parameter Revision = 02h
+ uint8_t data[]; //!< Capability array
} __attribute__((packed));
/** @struct DCMICap
@@ -368,10 +368,10 @@ struct GetDCMICapResponse
*/
struct DCMICap
{
- std::string name; //!< Name of DCMI capability.
- uint8_t bytePosition; //!< Starting byte number from DCMI spec.
- uint8_t position; //!< bit position from the DCMI spec.
- uint8_t length; //!< Length of the value from DCMI spec.
+ std::string name; //!< Name of DCMI capability.
+ uint8_t bytePosition; //!< Starting byte number from DCMI spec.
+ uint8_t position; //!< bit position from the DCMI spec.
+ uint8_t length; //!< Length of the value from DCMI spec.
};
using DCMICapList = std::vector<DCMICap>;
@@ -382,8 +382,8 @@ using DCMICapList = std::vector<DCMICap>;
*/
struct DCMICapEntry
{
- uint8_t size; //!< Size of capability array in bytes.
- DCMICapList capList; //!< List of capabilities for a parameter.
+ uint8_t size; //!< Size of capability array in bytes.
+ DCMICapList capList; //!< List of capabilities for a parameter.
};
using DCMICaps = std::map<DCMICapParameters, DCMICapEntry>;
@@ -394,11 +394,11 @@ using DCMICaps = std::map<DCMICapParameters, DCMICapEntry>;
*/
struct GetTempReadingsRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t sensorType; //!< Type of the sensor
- uint8_t entityId; //!< Entity ID
- uint8_t entityInstance; //!< Entity Instance (0 means all instances)
- uint8_t instanceStart; //!< Instance start (used if instance is 0)
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t sensorType; //!< Type of the sensor
+ uint8_t entityId; //!< Entity ID
+ uint8_t entityInstance; //!< Entity Instance (0 means all instances)
+ uint8_t instanceStart; //!< Instance start (used if instance is 0)
} __attribute__((packed));
/** @struct GetTempReadingsResponse
@@ -407,9 +407,9 @@ struct GetTempReadingsRequest
*/
struct GetTempReadingsResponseHdr
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t numInstances; //!< No. of instances for requested id
- uint8_t numDataSets; //!< No. of sets of temperature data
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t numInstances; //!< No. of instances for requested id
+ uint8_t numDataSets; //!< No. of sets of temperature data
} __attribute__((packed));
/** @brief Parse out JSON config file containing information
@@ -421,83 +421,81 @@ Json parseSensorConfig();
namespace temp_readings
{
- /** @brief Read temperature from a d-bus object, scale it as per dcmi
- * get temperature reading requirements.
- *
- * @param[in] dbusService - the D-Bus service
- * @param[in] dbusPath - the D-Bus path
- *
- * @return A temperature reading
- */
- Temperature readTemp(const std::string& dbusService,
- const std::string& dbusPath);
-
- /** @brief Read temperatures and fill up DCMI response for the Get
- * Temperature Readings command. This looks at a specific
- * instance.
- *
- * @param[in] type - one of "inlet", "cpu", "baseboard"
- * @param[in] instance - A non-zero Entity instance number
- *
- * @return A tuple, containing a temperature reading and the
- * number of instances.
- */
- std::tuple<Response, NumInstances> read (const std::string& type,
- uint8_t instance);
-
- /** @brief Read temperatures and fill up DCMI response for the Get
- * Temperature Readings command. This looks at a range of
- * instances.
- *
- * @param[in] type - one of "inlet", "cpu", "baseboard"
- * @param[in] instanceStart - Entity instance start index
- *
- * @return A tuple, containing a list of temperature readings and the
- * number of instances.
- */
- std::tuple<ResponseList, NumInstances> readAll(const std::string& type,
- uint8_t instanceStart);
-}
+/** @brief Read temperature from a d-bus object, scale it as per dcmi
+ * get temperature reading requirements.
+ *
+ * @param[in] dbusService - the D-Bus service
+ * @param[in] dbusPath - the D-Bus path
+ *
+ * @return A temperature reading
+ */
+Temperature readTemp(const std::string& dbusService,
+ const std::string& dbusPath);
+
+/** @brief Read temperatures and fill up DCMI response for the Get
+ * Temperature Readings command. This looks at a specific
+ * instance.
+ *
+ * @param[in] type - one of "inlet", "cpu", "baseboard"
+ * @param[in] instance - A non-zero Entity instance number
+ *
+ * @return A tuple, containing a temperature reading and the
+ * number of instances.
+ */
+std::tuple<Response, NumInstances> read(const std::string& type,
+ uint8_t instance);
+
+/** @brief Read temperatures and fill up DCMI response for the Get
+ * Temperature Readings command. This looks at a range of
+ * instances.
+ *
+ * @param[in] type - one of "inlet", "cpu", "baseboard"
+ * @param[in] instanceStart - Entity instance start index
+ *
+ * @return A tuple, containing a list of temperature readings and the
+ * number of instances.
+ */
+std::tuple<ResponseList, NumInstances> readAll(const std::string& type,
+ uint8_t instanceStart);
+} // namespace temp_readings
namespace sensor_info
{
- /** @brief Create response from JSON config.
- *
- * @param[in] config - JSON config info about DCMI sensors
- *
- * @return Sensor info response
- */
- Response createFromJson(const Json& config);
-
- /** @brief Read sensor info and fill up DCMI response for the Get
- * Sensor Info command. This looks at a specific
- * instance.
- *
- * @param[in] type - one of "inlet", "cpu", "baseboard"
- * @param[in] instance - A non-zero Entity instance number
- * @param[in] config - JSON config info about DCMI sensors
- *
- * @return A tuple, containing a sensor info response and
- * number of instances.
- */
- std::tuple<Response, NumInstances> read(const std::string& type,
- uint8_t instance,
- const Json& config);
-
- /** @brief Read sensor info and fill up DCMI response for the Get
- * Sensor Info command. This looks at a range of
- * instances.
- *
- * @param[in] type - one of "inlet", "cpu", "baseboard"
- * @param[in] instanceStart - Entity instance start index
- * @param[in] config - JSON config info about DCMI sensors
- *
- * @return A tuple, containing a list of sensor info responses and the
- * number of instances.
- */
- std::tuple<ResponseList, NumInstances> readAll(const std::string& type,
- uint8_t instanceStart,
- const Json& config);
+/** @brief Create response from JSON config.
+ *
+ * @param[in] config - JSON config info about DCMI sensors
+ *
+ * @return Sensor info response
+ */
+Response createFromJson(const Json& config);
+
+/** @brief Read sensor info and fill up DCMI response for the Get
+ * Sensor Info command. This looks at a specific
+ * instance.
+ *
+ * @param[in] type - one of "inlet", "cpu", "baseboard"
+ * @param[in] instance - A non-zero Entity instance number
+ * @param[in] config - JSON config info about DCMI sensors
+ *
+ * @return A tuple, containing a sensor info response and
+ * number of instances.
+ */
+std::tuple<Response, NumInstances> read(const std::string& type,
+ uint8_t instance, const Json& config);
+
+/** @brief Read sensor info and fill up DCMI response for the Get
+ * Sensor Info command. This looks at a range of
+ * instances.
+ *
+ * @param[in] type - one of "inlet", "cpu", "baseboard"
+ * @param[in] instanceStart - Entity instance start index
+ * @param[in] config - JSON config info about DCMI sensors
+ *
+ * @return A tuple, containing a list of sensor info responses and the
+ * number of instances.
+ */
+std::tuple<ResponseList, NumInstances>
+ readAll(const std::string& type, uint8_t instanceStart, const Json& config);
} // namespace sensor_info
/** @brief Read power reading from power reading sensor object
@@ -515,9 +513,9 @@ int64_t getPowerReading(sdbusplus::bus::bus& bus);
*/
struct GetPowerReadingRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t mode; //!< Mode
- uint8_t modeAttribute; //!< Mode Attributes
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t mode; //!< Mode
+ uint8_t modeAttribute; //!< Mode Attributes
} __attribute__((packed));
/** @struct GetPowerReadingResponse
@@ -527,18 +525,18 @@ struct GetPowerReadingRequest
*/
struct GetPowerReadingResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint16_t currentPower; //!< Current power in watts
- uint16_t minimumPower; //!< Minimum power over sampling duration
- //!< in watts
- uint16_t maximumPower; //!< Maximum power over sampling duration
- //!< in watts
- uint16_t averagePower; //!< Average power over sampling duration
- //!< in watts
- uint32_t timeStamp; //!< IPMI specification based time stamp
- uint32_t timeFrame; //!< Statistics reporting time period in milli
- //!< seconds.
- uint8_t powerReadingState; //!< Power Reading State
+ uint8_t groupID; //!< Group extension identification.
+ uint16_t currentPower; //!< Current power in watts
+ uint16_t minimumPower; //!< Minimum power over sampling duration
+ //!< in watts
+ uint16_t maximumPower; //!< Maximum power over sampling duration
+ //!< in watts
+ uint16_t averagePower; //!< Average power over sampling duration
+ //!< in watts
+ uint32_t timeStamp; //!< IPMI specification based time stamp
+ uint32_t timeFrame; //!< Statistics reporting time period in milli
+ //!< seconds.
+ uint8_t powerReadingState; //!< Power Reading State
} __attribute__((packed));
/** @struct GetSensorInfoRequest
@@ -547,11 +545,11 @@ struct GetPowerReadingResponse
*/
struct GetSensorInfoRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t sensorType; //!< Type of the sensor
- uint8_t entityId; //!< Entity ID
- uint8_t entityInstance; //!< Entity Instance (0 means all instances)
- uint8_t instanceStart; //!< Instance start (used if instance is 0)
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t sensorType; //!< Type of the sensor
+ uint8_t entityId; //!< Entity ID
+ uint8_t entityInstance; //!< Entity Instance (0 means all instances)
+ uint8_t instanceStart; //!< Instance start (used if instance is 0)
} __attribute__((packed));
/** @struct GetSensorInfoResponseHdr
@@ -560,14 +558,14 @@ struct GetSensorInfoRequest
*/
struct GetSensorInfoResponseHdr
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t numInstances; //!< No. of instances for requested id
- uint8_t numRecords; //!< No. of record ids in the response
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t numInstances; //!< No. of instances for requested id
+ uint8_t numRecords; //!< No. of record ids in the response
} __attribute__((packed));
/**
* @brief Parameters for DCMI Configuration Parameters
*/
-enum class DCMIConfigParameters: uint8_t
+enum class DCMIConfigParameters : uint8_t
{
ActivateDHCP = 1,
DiscoveryConfig,
@@ -583,11 +581,11 @@ enum class DCMIConfigParameters: uint8_t
*/
struct SetConfParamsRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t paramSelect; //!< Parameter selector.
- uint8_t setSelect; //!< Set Selector (use 00h for parameters that only
- //!< have one set).
- uint8_t data[]; //!< Configuration parameter data.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t paramSelect; //!< Parameter selector.
+ uint8_t setSelect; //!< Set Selector (use 00h for parameters that only
+ //!< have one set).
+ uint8_t data[]; //!< Configuration parameter data.
} __attribute__((packed));
/** @struct SetConfParamsResponse
@@ -597,7 +595,7 @@ struct SetConfParamsRequest
*/
struct SetConfParamsResponse
{
- uint8_t groupID; //!< Group extension identification.
+ uint8_t groupID; //!< Group extension identification.
} __attribute__((packed));
/** @struct GetConfParamsRequest
@@ -607,11 +605,11 @@ struct SetConfParamsResponse
*/
struct GetConfParamsRequest
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t paramSelect; //!< Parameter selector.
- uint8_t setSelect; //!< Set Selector. Selects a given set of parameters
- //!< under a given Parameter selector value. 00h if
- //!< parameter doesn't use a Set Selector.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t paramSelect; //!< Parameter selector.
+ uint8_t setSelect; //!< Set Selector. Selects a given set of parameters
+ //!< under a given Parameter selector value. 00h if
+ //!< parameter doesn't use a Set Selector.
} __attribute__((packed));
/** @struct GetConfParamsResponse
@@ -621,11 +619,11 @@ struct GetConfParamsRequest
*/
struct GetConfParamsResponse
{
- uint8_t groupID; //!< Group extension identification.
- uint8_t major; //!< DCMI Spec Conformance - major ver = 01h.
- uint8_t minor; //!< DCMI Spec Conformance - minor ver = 05h.
- uint8_t paramRevision; //!< Parameter Revision = 01h.
- uint8_t data[]; //!< Parameter data.
+ uint8_t groupID; //!< Group extension identification.
+ uint8_t major; //!< DCMI Spec Conformance - major ver = 01h.
+ uint8_t minor; //!< DCMI Spec Conformance - minor ver = 05h.
+ uint8_t paramRevision; //!< Parameter Revision = 01h.
+ uint8_t data[]; //!< Parameter data.
} __attribute__((packed));
diff --git a/elog-errors.hpp b/elog-errors.hpp
index a8d7a1c..f11a203 100644
--- a/elog-errors.hpp
+++ b/elog-errors.hpp
@@ -2,12 +2,12 @@
// See elog-gen.py for more details
#pragma once
+#include <phosphor-logging/elog.hpp>
+#include <phosphor-logging/log.hpp>
+#include <sdbusplus/exception.hpp>
#include <string>
#include <tuple>
#include <type_traits>
-#include <sdbusplus/exception.hpp>
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog.hpp>
namespace sdbusplus
{
@@ -21,7 +21,7 @@ namespace Create
{
namespace Error
{
- struct QuotaExceeded;
+struct QuotaExceeded;
} // namespace Error
} // namespace Create
} // namespace Dump
@@ -39,7 +39,7 @@ namespace Host
{
namespace Error
{
- struct Event;
+struct Event;
} // namespace Error
} // namespace Host
} // namespace open_power
@@ -58,7 +58,7 @@ namespace Host
{
namespace Error
{
- struct SoftOffTimeout;
+struct SoftOffTimeout;
} // namespace Error
} // namespace Host
} // namespace State
@@ -78,7 +78,7 @@ namespace Device
{
namespace Error
{
- struct ReadFailure;
+struct ReadFailure;
} // namespace Error
} // namespace Device
} // namespace Sensor
@@ -98,7 +98,7 @@ namespace Device
{
namespace Error
{
- struct WriteFailure;
+struct WriteFailure;
} // namespace Error
} // namespace Device
} // namespace Control
@@ -118,7 +118,7 @@ namespace File
{
namespace Error
{
- struct Seek;
+struct Seek;
} // namespace Error
} // namespace File
} // namespace Common
@@ -138,7 +138,7 @@ namespace Callout
{
namespace Error
{
- struct Procedure;
+struct Procedure;
} // namespace Error
} // namespace Callout
} // namespace Common
@@ -158,7 +158,7 @@ namespace Host
{
namespace Error
{
- struct CommandNotSupported;
+struct CommandNotSupported;
} // namespace Error
} // namespace Host
} // namespace Control
@@ -176,7 +176,7 @@ namespace Common
{
namespace Error
{
- struct InternalFailure;
+struct InternalFailure;
} // namespace Error
} // namespace Common
} // namespace openbmc_project
@@ -195,7 +195,7 @@ namespace Callout
{
namespace Error
{
- struct Device;
+struct Device;
} // namespace Error
} // namespace Callout
} // namespace Common
@@ -215,7 +215,7 @@ namespace Access
{
namespace Error
{
- struct WriteCFAM;
+struct WriteCFAM;
} // namespace Error
} // namespace Access
} // namespace Host
@@ -235,7 +235,7 @@ namespace File
{
namespace Error
{
- struct Open;
+struct Open;
} // namespace Error
} // namespace File
} // namespace Common
@@ -253,7 +253,7 @@ namespace Host
{
namespace Error
{
- struct Checkstop;
+struct Checkstop;
} // namespace Error
} // namespace Host
} // namespace open_power
@@ -272,7 +272,7 @@ namespace File
{
namespace Error
{
- struct Write;
+struct Write;
} // namespace Error
} // namespace File
} // namespace Common
@@ -292,7 +292,7 @@ namespace Callout
{
namespace Error
{
- struct GPIO;
+struct GPIO;
} // namespace Error
} // namespace Callout
} // namespace Common
@@ -310,7 +310,7 @@ namespace Common
{
namespace Error
{
- struct InvalidArgument;
+struct InvalidArgument;
} // namespace Error
} // namespace Common
} // namespace openbmc_project
@@ -329,7 +329,7 @@ namespace Create
{
namespace Error
{
- struct Disabled;
+struct Disabled;
} // namespace Error
} // namespace Create
} // namespace Dump
@@ -349,7 +349,7 @@ namespace Callout
{
namespace Error
{
- struct IPMISensor;
+struct IPMISensor;
} // namespace Error
} // namespace Callout
} // namespace Common
@@ -367,7 +367,7 @@ namespace Common
{
namespace Error
{
- struct Timeout;
+struct Timeout;
} // namespace Error
} // namespace Common
} // namespace openbmc_project
@@ -386,7 +386,7 @@ namespace Callout
{
namespace Error
{
- struct Inventory;
+struct Inventory;
} // namespace Error
} // namespace Callout
} // namespace Common
@@ -406,7 +406,7 @@ namespace Callout
{
namespace Error
{
- struct IIC;
+struct IIC;
} // namespace Error
} // namespace Callout
} // namespace Common
@@ -424,7 +424,7 @@ namespace Host
{
namespace Error
{
- struct WatchdogTimedOut;
+struct WatchdogTimedOut;
} // namespace Error
} // namespace Host
} // namespace open_power
@@ -443,7 +443,7 @@ namespace Access
{
namespace Error
{
- struct ReadCFAM;
+struct ReadCFAM;
} // namespace Error
} // namespace Access
} // namespace Host
@@ -461,7 +461,7 @@ namespace Host
{
namespace Error
{
- struct MaintenanceProcedure;
+struct MaintenanceProcedure;
} // namespace Error
} // namespace Host
} // namespace open_power
@@ -489,20 +489,21 @@ struct CALLOUT_ERRNO
{
static constexpr auto str = "CALLOUT_ERRNO=%d";
static constexpr auto str_short = "CALLOUT_ERRNO";
- using type = std::tuple<std::decay_t<decltype(str)>,int32_t>;
- explicit constexpr CALLOUT_ERRNO(int32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, int32_t>;
+ explicit constexpr CALLOUT_ERRNO(int32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct CALLOUT_DEVICE_PATH
{
static constexpr auto str = "CALLOUT_DEVICE_PATH=%s";
static constexpr auto str_short = "CALLOUT_DEVICE_PATH";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr CALLOUT_DEVICE_PATH(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr CALLOUT_DEVICE_PATH(const char* a) :
+ _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Device
+} // namespace _Device
struct Device
{
@@ -510,7 +511,6 @@ struct Device
using CALLOUT_ERRNO = _Device::CALLOUT_ERRNO;
using CALLOUT_DEVICE_PATH = _Device::CALLOUT_DEVICE_PATH;
using metadata_types = std::tuple<CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
-
};
} // namespace Callout
@@ -518,17 +518,17 @@ struct Device
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Callout::Error::Device>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Callout::Error::Device>
{
using type = xyz::openbmc_project::Common::Callout::Device;
};
-}
+} // namespace details
namespace xyz
{
@@ -545,21 +545,23 @@ struct CALLOUT_GPIO_NUM
{
static constexpr auto str = "CALLOUT_GPIO_NUM=%u";
static constexpr auto str_short = "CALLOUT_GPIO_NUM";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr CALLOUT_GPIO_NUM(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr CALLOUT_GPIO_NUM(uint32_t a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _GPIO
+} // namespace _GPIO
struct GPIO
{
static constexpr auto L = level::ERR;
using CALLOUT_GPIO_NUM = _GPIO::CALLOUT_GPIO_NUM;
- using CALLOUT_ERRNO = xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
- using CALLOUT_DEVICE_PATH = xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
- using metadata_types = std::tuple<CALLOUT_GPIO_NUM, CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
-
+ using CALLOUT_ERRNO =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
+ using CALLOUT_DEVICE_PATH =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
+ using metadata_types =
+ std::tuple<CALLOUT_GPIO_NUM, CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
};
} // namespace Callout
@@ -567,17 +569,17 @@ struct GPIO
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Callout::Error::GPIO>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Callout::Error::GPIO>
{
using type = xyz::openbmc_project::Common::Callout::GPIO;
};
-}
+} // namespace details
namespace xyz
{
@@ -594,30 +596,32 @@ struct CALLOUT_IIC_BUS
{
static constexpr auto str = "CALLOUT_IIC_BUS=%s";
static constexpr auto str_short = "CALLOUT_IIC_BUS";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr CALLOUT_IIC_BUS(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr CALLOUT_IIC_BUS(const char* a) : _entry(entry(str, a)){};
type _entry;
};
struct CALLOUT_IIC_ADDR
{
static constexpr auto str = "CALLOUT_IIC_ADDR=0x%hx";
static constexpr auto str_short = "CALLOUT_IIC_ADDR";
- using type = std::tuple<std::decay_t<decltype(str)>,uint16_t>;
- explicit constexpr CALLOUT_IIC_ADDR(uint16_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint16_t>;
+ explicit constexpr CALLOUT_IIC_ADDR(uint16_t a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _IIC
+} // namespace _IIC
struct IIC
{
static constexpr auto L = level::ERR;
using CALLOUT_IIC_BUS = _IIC::CALLOUT_IIC_BUS;
using CALLOUT_IIC_ADDR = _IIC::CALLOUT_IIC_ADDR;
- using CALLOUT_ERRNO = xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
- using CALLOUT_DEVICE_PATH = xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
- using metadata_types = std::tuple<CALLOUT_IIC_BUS, CALLOUT_IIC_ADDR, CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
-
+ using CALLOUT_ERRNO =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
+ using CALLOUT_DEVICE_PATH =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
+ using metadata_types = std::tuple<CALLOUT_IIC_BUS, CALLOUT_IIC_ADDR,
+ CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
};
} // namespace Callout
@@ -625,17 +629,17 @@ struct IIC
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Callout::Error::IIC>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Callout::Error::IIC>
{
using type = xyz::openbmc_project::Common::Callout::IIC;
};
-}
+} // namespace details
namespace xyz
{
@@ -652,19 +656,19 @@ struct CALLOUT_INVENTORY_PATH
{
static constexpr auto str = "CALLOUT_INVENTORY_PATH=%s";
static constexpr auto str_short = "CALLOUT_INVENTORY_PATH";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr CALLOUT_INVENTORY_PATH(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr CALLOUT_INVENTORY_PATH(const char* a) :
+ _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Inventory
+} // namespace _Inventory
struct Inventory
{
static constexpr auto L = level::ERR;
using CALLOUT_INVENTORY_PATH = _Inventory::CALLOUT_INVENTORY_PATH;
using metadata_types = std::tuple<CALLOUT_INVENTORY_PATH>;
-
};
} // namespace Callout
@@ -672,17 +676,17 @@ struct Inventory
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Callout::Error::Inventory>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Callout::Error::Inventory>
{
using type = xyz::openbmc_project::Common::Callout::Inventory;
};
-}
+} // namespace details
namespace xyz
{
@@ -699,19 +703,19 @@ struct CALLOUT_IPMI_SENSOR_NUM
{
static constexpr auto str = "CALLOUT_IPMI_SENSOR_NUM=%u";
static constexpr auto str_short = "CALLOUT_IPMI_SENSOR_NUM";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr CALLOUT_IPMI_SENSOR_NUM(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr CALLOUT_IPMI_SENSOR_NUM(uint32_t a) :
+ _entry(entry(str, a)){};
type _entry;
};
-} // namespace _IPMISensor
+} // namespace _IPMISensor
struct IPMISensor
{
static constexpr auto L = level::ERR;
using CALLOUT_IPMI_SENSOR_NUM = _IPMISensor::CALLOUT_IPMI_SENSOR_NUM;
using metadata_types = std::tuple<CALLOUT_IPMI_SENSOR_NUM>;
-
};
} // namespace Callout
@@ -719,17 +723,17 @@ struct IPMISensor
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Callout::Error::IPMISensor>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Callout::Error::IPMISensor>
{
using type = xyz::openbmc_project::Common::Callout::IPMISensor;
};
-}
+} // namespace details
namespace org
{
@@ -746,19 +750,18 @@ struct PROCEDURE
{
static constexpr auto str = "PROCEDURE=%u";
static constexpr auto str_short = "PROCEDURE";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr PROCEDURE(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr PROCEDURE(uint32_t a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Procedure
+} // namespace _Procedure
struct Procedure
{
static constexpr auto L = level::ERR;
using PROCEDURE = _Procedure::PROCEDURE;
using metadata_types = std::tuple<PROCEDURE>;
-
};
} // namespace Callout
@@ -766,17 +769,17 @@ struct Procedure
} // namespace open_power
} // namespace org
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::org::open_power::Common::Callout::Error::Procedure>
+struct map_exception_type<
+ sdbusplus::org::open_power::Common::Callout::Error::Procedure>
{
using type = org::open_power::Common::Callout::Procedure;
};
-}
+} // namespace details
namespace xyz
{
@@ -791,36 +794,35 @@ struct TIMEOUT_IN_MSEC
{
static constexpr auto str = "TIMEOUT_IN_MSEC=%llu";
static constexpr auto str_short = "TIMEOUT_IN_MSEC";
- using type = std::tuple<std::decay_t<decltype(str)>,uint64_t>;
- explicit constexpr TIMEOUT_IN_MSEC(uint64_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint64_t>;
+ explicit constexpr TIMEOUT_IN_MSEC(uint64_t a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Timeout
+} // namespace _Timeout
struct Timeout
{
static constexpr auto L = level::ERR;
using TIMEOUT_IN_MSEC = _Timeout::TIMEOUT_IN_MSEC;
using metadata_types = std::tuple<TIMEOUT_IN_MSEC>;
-
};
} // namespace Common
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Error::Timeout>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Error::Timeout>
{
using type = xyz::openbmc_project::Common::Timeout;
};
-}
+} // namespace details
namespace xyz
{
@@ -831,31 +833,29 @@ namespace Common
namespace _InternalFailure
{
-
-} // namespace _InternalFailure
+} // namespace _InternalFailure
struct InternalFailure
{
static constexpr auto L = level::ERR;
using metadata_types = std::tuple<>;
-
};
} // namespace Common
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure>
{
using type = xyz::openbmc_project::Common::InternalFailure;
};
-}
+} // namespace details
namespace xyz
{
@@ -870,20 +870,20 @@ struct ARGUMENT_NAME
{
static constexpr auto str = "ARGUMENT_NAME=%s";
static constexpr auto str_short = "ARGUMENT_NAME";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr ARGUMENT_NAME(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr ARGUMENT_NAME(const char* a) : _entry(entry(str, a)){};
type _entry;
};
struct ARGUMENT_VALUE
{
static constexpr auto str = "ARGUMENT_VALUE=%s";
static constexpr auto str_short = "ARGUMENT_VALUE";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr ARGUMENT_VALUE(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr ARGUMENT_VALUE(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _InvalidArgument
+} // namespace _InvalidArgument
struct InvalidArgument
{
@@ -891,24 +891,23 @@ struct InvalidArgument
using ARGUMENT_NAME = _InvalidArgument::ARGUMENT_NAME;
using ARGUMENT_VALUE = _InvalidArgument::ARGUMENT_VALUE;
using metadata_types = std::tuple<ARGUMENT_NAME, ARGUMENT_VALUE>;
-
};
} // namespace Common
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument>
{
using type = xyz::openbmc_project::Common::InvalidArgument;
};
-}
+} // namespace details
namespace example
{
@@ -927,29 +926,32 @@ struct CALLOUT_ERRNO_TEST
{
static constexpr auto str = "CALLOUT_ERRNO_TEST=%d";
static constexpr auto str_short = "CALLOUT_ERRNO_TEST";
- using type = std::tuple<std::decay_t<decltype(str)>,int32_t>;
- explicit constexpr CALLOUT_ERRNO_TEST(int32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, int32_t>;
+ explicit constexpr CALLOUT_ERRNO_TEST(int32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct CALLOUT_DEVICE_PATH_TEST
{
static constexpr auto str = "CALLOUT_DEVICE_PATH_TEST=%s";
static constexpr auto str_short = "CALLOUT_DEVICE_PATH_TEST";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr CALLOUT_DEVICE_PATH_TEST(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr CALLOUT_DEVICE_PATH_TEST(const char* a) :
+ _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Callout
+} // namespace _Callout
struct Callout : public sdbusplus::exception_t
{
- static constexpr auto errName = "example.xyz.openbmc_project.Example.Device.Callout";
+ static constexpr auto errName =
+ "example.xyz.openbmc_project.Example.Device.Callout";
static constexpr auto errDesc = "Generic device callout";
static constexpr auto L = level::ERR;
using CALLOUT_ERRNO_TEST = _Callout::CALLOUT_ERRNO_TEST;
using CALLOUT_DEVICE_PATH_TEST = _Callout::CALLOUT_DEVICE_PATH_TEST;
- using metadata_types = std::tuple<CALLOUT_ERRNO_TEST, CALLOUT_DEVICE_PATH_TEST>;
+ using metadata_types =
+ std::tuple<CALLOUT_ERRNO_TEST, CALLOUT_DEVICE_PATH_TEST>;
const char* name() const noexcept
{
@@ -973,8 +975,6 @@ struct Callout : public sdbusplus::exception_t
} // namespace xyz
} // namespace example
-
-
namespace xyz
{
namespace openbmc_project
@@ -986,16 +986,16 @@ namespace Device
namespace _ReadFailure
{
-
-} // namespace _ReadFailure
+} // namespace _ReadFailure
struct ReadFailure
{
static constexpr auto L = level::ERR;
- using CALLOUT_ERRNO = xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
- using CALLOUT_DEVICE_PATH = xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
+ using CALLOUT_ERRNO =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
+ using CALLOUT_DEVICE_PATH =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
using metadata_types = std::tuple<CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
-
};
} // namespace Device
@@ -1003,17 +1003,17 @@ struct ReadFailure
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Sensor::Device::Error::ReadFailure>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Sensor::Device::Error::ReadFailure>
{
using type = xyz::openbmc_project::Sensor::Device::ReadFailure;
};
-}
+} // namespace details
namespace org
{
@@ -1024,21 +1024,18 @@ namespace Host
namespace _Checkstop
{
-
-} // namespace _Checkstop
+} // namespace _Checkstop
struct Checkstop
{
static constexpr auto L = level::ERR;
using metadata_types = std::tuple<>;
-
};
} // namespace Host
} // namespace open_power
} // namespace org
-
namespace details
{
@@ -1048,7 +1045,7 @@ struct map_exception_type<sdbusplus::org::open_power::Host::Error::Checkstop>
using type = org::open_power::Host::Checkstop;
};
-}
+} // namespace details
namespace org
{
@@ -1059,31 +1056,29 @@ namespace Host
namespace _WatchdogTimedOut
{
-
-} // namespace _WatchdogTimedOut
+} // namespace _WatchdogTimedOut
struct WatchdogTimedOut
{
static constexpr auto L = level::ERR;
using metadata_types = std::tuple<>;
-
};
} // namespace Host
} // namespace open_power
} // namespace org
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::org::open_power::Host::Error::WatchdogTimedOut>
+struct map_exception_type<
+ sdbusplus::org::open_power::Host::Error::WatchdogTimedOut>
{
using type = org::open_power::Host::WatchdogTimedOut;
};
-}
+} // namespace details
namespace example
{
@@ -1102,32 +1097,33 @@ struct DEV_ADDR
{
static constexpr auto str = "DEV_ADDR=0x%.8X";
static constexpr auto str_short = "DEV_ADDR";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr DEV_ADDR(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr DEV_ADDR(uint32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct DEV_ID
{
static constexpr auto str = "DEV_ID=%u";
static constexpr auto str_short = "DEV_ID";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr DEV_ID(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr DEV_ID(uint32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct DEV_NAME
{
static constexpr auto str = "DEV_NAME=%s";
static constexpr auto str_short = "DEV_NAME";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr DEV_NAME(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr DEV_NAME(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _TestErrorTwo
+} // namespace _TestErrorTwo
struct TestErrorTwo : public sdbusplus::exception_t
{
- static constexpr auto errName = "example.xyz.openbmc_project.Example.Elog.TestErrorTwo";
+ static constexpr auto errName =
+ "example.xyz.openbmc_project.Example.Elog.TestErrorTwo";
static constexpr auto errDesc = "This is test error two";
static constexpr auto L = level::ERR;
using DEV_ADDR = _TestErrorTwo::DEV_ADDR;
@@ -1157,8 +1153,6 @@ struct TestErrorTwo : public sdbusplus::exception_t
} // namespace xyz
} // namespace example
-
-
namespace example
{
namespace xyz
@@ -1176,16 +1170,17 @@ struct STRING
{
static constexpr auto str = "STRING=%s";
static constexpr auto str_short = "STRING";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr STRING(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr STRING(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _AutoTestSimple
+} // namespace _AutoTestSimple
struct AutoTestSimple : public sdbusplus::exception_t
{
- static constexpr auto errName = "example.xyz.openbmc_project.Example.Elog.AutoTestSimple";
+ static constexpr auto errName =
+ "example.xyz.openbmc_project.Example.Elog.AutoTestSimple";
static constexpr auto errDesc = "This is a simple test error.";
static constexpr auto L = level::ERR;
using STRING = _AutoTestSimple::STRING;
@@ -1213,8 +1208,6 @@ struct AutoTestSimple : public sdbusplus::exception_t
} // namespace xyz
} // namespace example
-
-
namespace example
{
namespace xyz
@@ -1232,22 +1225,26 @@ struct DEV_ADDR
{
static constexpr auto str = "DEV_ADDR=0x%.8X";
static constexpr auto str_short = "DEV_ADDR";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr DEV_ADDR(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr DEV_ADDR(uint32_t a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _TestCallout
+} // namespace _TestCallout
struct TestCallout : public sdbusplus::exception_t
{
- static constexpr auto errName = "example.xyz.openbmc_project.Example.Elog.TestCallout";
+ static constexpr auto errName =
+ "example.xyz.openbmc_project.Example.Elog.TestCallout";
static constexpr auto errDesc = "This is test error TestCallout";
static constexpr auto L = level::ERR;
using DEV_ADDR = _TestCallout::DEV_ADDR;
- using CALLOUT_ERRNO_TEST = example::xyz::openbmc_project::Example::Device::Callout::CALLOUT_ERRNO_TEST;
- using CALLOUT_DEVICE_PATH_TEST = example::xyz::openbmc_project::Example::Device::Callout::CALLOUT_DEVICE_PATH_TEST;
- using metadata_types = std::tuple<DEV_ADDR, CALLOUT_ERRNO_TEST, CALLOUT_DEVICE_PATH_TEST>;
+ using CALLOUT_ERRNO_TEST = example::xyz::openbmc_project::Example::Device::
+ Callout::CALLOUT_ERRNO_TEST;
+ using CALLOUT_DEVICE_PATH_TEST = example::xyz::openbmc_project::Example::
+ Device::Callout::CALLOUT_DEVICE_PATH_TEST;
+ using metadata_types =
+ std::tuple<DEV_ADDR, CALLOUT_ERRNO_TEST, CALLOUT_DEVICE_PATH_TEST>;
const char* name() const noexcept
{
@@ -1271,8 +1268,6 @@ struct TestCallout : public sdbusplus::exception_t
} // namespace xyz
} // namespace example
-
-
namespace org
{
namespace open_power
@@ -1286,27 +1281,26 @@ struct ESEL
{
static constexpr auto str = "ESEL=%s";
static constexpr auto str_short = "ESEL";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr ESEL(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr ESEL(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Event
+} // namespace _Event
struct Event
{
static constexpr auto L = level::ERR;
using ESEL = _Event::ESEL;
- using CALLOUT_INVENTORY_PATH = xyz::openbmc_project::Common::Callout::Inventory::CALLOUT_INVENTORY_PATH;
+ using CALLOUT_INVENTORY_PATH = xyz::openbmc_project::Common::Callout::
+ Inventory::CALLOUT_INVENTORY_PATH;
using metadata_types = std::tuple<ESEL, CALLOUT_INVENTORY_PATH>;
-
};
} // namespace Host
} // namespace open_power
} // namespace org
-
namespace details
{
@@ -1316,7 +1310,7 @@ struct map_exception_type<sdbusplus::org::open_power::Host::Error::Event>
using type = org::open_power::Host::Event;
};
-}
+} // namespace details
namespace org
{
@@ -1331,12 +1325,12 @@ struct ESEL
{
static constexpr auto str = "ESEL=%s";
static constexpr auto str_short = "ESEL";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr ESEL(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr ESEL(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _MaintenanceProcedure
+} // namespace _MaintenanceProcedure
struct MaintenanceProcedure
{
@@ -1344,24 +1338,23 @@ struct MaintenanceProcedure
using ESEL = _MaintenanceProcedure::ESEL;
using PROCEDURE = org::open_power::Common::Callout::Procedure::PROCEDURE;
using metadata_types = std::tuple<ESEL, PROCEDURE>;
-
};
} // namespace Host
} // namespace open_power
} // namespace org
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::org::open_power::Host::Error::MaintenanceProcedure>
+struct map_exception_type<
+ sdbusplus::org::open_power::Host::Error::MaintenanceProcedure>
{
using type = org::open_power::Host::MaintenanceProcedure;
};
-}
+} // namespace details
namespace xyz
{
@@ -1374,16 +1367,16 @@ namespace Device
namespace _WriteFailure
{
-
-} // namespace _WriteFailure
+} // namespace _WriteFailure
struct WriteFailure
{
static constexpr auto L = level::ERR;
- using CALLOUT_ERRNO = xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
- using CALLOUT_DEVICE_PATH = xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
+ using CALLOUT_ERRNO =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
+ using CALLOUT_DEVICE_PATH =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
using metadata_types = std::tuple<CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
-
};
} // namespace Device
@@ -1391,17 +1384,17 @@ struct WriteFailure
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Control::Device::Error::WriteFailure>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Control::Device::Error::WriteFailure>
{
using type = xyz::openbmc_project::Control::Device::WriteFailure;
};
-}
+} // namespace details
namespace xyz
{
@@ -1418,20 +1411,20 @@ struct ERRNO
{
static constexpr auto str = "ERRNO=%d";
static constexpr auto str_short = "ERRNO";
- using type = std::tuple<std::decay_t<decltype(str)>,int32_t>;
- explicit constexpr ERRNO(int32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, int32_t>;
+ explicit constexpr ERRNO(int32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct PATH
{
static constexpr auto str = "PATH=%s";
static constexpr auto str_short = "PATH";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr PATH(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Open
+} // namespace _Open
struct Open
{
@@ -1439,7 +1432,6 @@ struct Open
using ERRNO = _Open::ERRNO;
using PATH = _Open::PATH;
using metadata_types = std::tuple<ERRNO, PATH>;
-
};
} // namespace File
@@ -1447,17 +1439,17 @@ struct Open
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::File::Error::Open>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::File::Error::Open>
{
using type = xyz::openbmc_project::Common::File::Open;
};
-}
+} // namespace details
namespace xyz
{
@@ -1474,36 +1466,36 @@ struct OFFSET
{
static constexpr auto str = "OFFSET=%ll";
static constexpr auto str_short = "OFFSET";
- using type = std::tuple<std::decay_t<decltype(str)>,int64_t>;
- explicit constexpr OFFSET(int64_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, int64_t>;
+ explicit constexpr OFFSET(int64_t a) : _entry(entry(str, a)){};
type _entry;
};
struct WHENCE
{
static constexpr auto str = "WHENCE=%d";
static constexpr auto str_short = "WHENCE";
- using type = std::tuple<std::decay_t<decltype(str)>,int32_t>;
- explicit constexpr WHENCE(int32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, int32_t>;
+ explicit constexpr WHENCE(int32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct ERRNO
{
static constexpr auto str = "ERRNO=%d";
static constexpr auto str_short = "ERRNO";
- using type = std::tuple<std::decay_t<decltype(str)>,int32_t>;
- explicit constexpr ERRNO(int32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, int32_t>;
+ explicit constexpr ERRNO(int32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct PATH
{
static constexpr auto str = "PATH=%s";
static constexpr auto str_short = "PATH";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr PATH(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Seek
+} // namespace _Seek
struct Seek
{
@@ -1513,7 +1505,6 @@ struct Seek
using ERRNO = _Seek::ERRNO;
using PATH = _Seek::PATH;
using metadata_types = std::tuple<OFFSET, WHENCE, ERRNO, PATH>;
-
};
} // namespace File
@@ -1521,17 +1512,17 @@ struct Seek
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::File::Error::Seek>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::File::Error::Seek>
{
using type = xyz::openbmc_project::Common::File::Seek;
};
-}
+} // namespace details
namespace xyz
{
@@ -1548,20 +1539,20 @@ struct ERRNO
{
static constexpr auto str = "ERRNO=%d";
static constexpr auto str_short = "ERRNO";
- using type = std::tuple<std::decay_t<decltype(str)>,int32_t>;
- explicit constexpr ERRNO(int32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, int32_t>;
+ explicit constexpr ERRNO(int32_t a) : _entry(entry(str, a)){};
type _entry;
};
struct PATH
{
static constexpr auto str = "PATH=%s";
static constexpr auto str_short = "PATH";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr PATH(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Write
+} // namespace _Write
struct Write
{
@@ -1569,7 +1560,6 @@ struct Write
using ERRNO = _Write::ERRNO;
using PATH = _Write::PATH;
using metadata_types = std::tuple<ERRNO, PATH>;
-
};
} // namespace File
@@ -1577,17 +1567,17 @@ struct Write
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Common::File::Error::Write>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Common::File::Error::Write>
{
using type = xyz::openbmc_project::Common::File::Write;
};
-}
+} // namespace details
namespace org
{
@@ -1604,21 +1594,23 @@ struct ADDRESS
{
static constexpr auto str = "ADDRESS=0x%X";
static constexpr auto str_short = "ADDRESS";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr ADDRESS(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr ADDRESS(uint32_t a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _WriteCFAM
+} // namespace _WriteCFAM
struct WriteCFAM
{
static constexpr auto L = level::ERR;
using ADDRESS = _WriteCFAM::ADDRESS;
- using CALLOUT_ERRNO = xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
- using CALLOUT_DEVICE_PATH = xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
- using metadata_types = std::tuple<ADDRESS, CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
-
+ using CALLOUT_ERRNO =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
+ using CALLOUT_DEVICE_PATH =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
+ using metadata_types =
+ std::tuple<ADDRESS, CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
};
} // namespace Access
@@ -1626,17 +1618,17 @@ struct WriteCFAM
} // namespace open_power
} // namespace org
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::org::open_power::Host::Access::Error::WriteCFAM>
+struct map_exception_type<
+ sdbusplus::org::open_power::Host::Access::Error::WriteCFAM>
{
using type = org::open_power::Host::Access::WriteCFAM;
};
-}
+} // namespace details
namespace org
{
@@ -1653,21 +1645,23 @@ struct ADDRESS
{
static constexpr auto str = "ADDRESS=0x%X";
static constexpr auto str_short = "ADDRESS";
- using type = std::tuple<std::decay_t<decltype(str)>,uint32_t>;
- explicit constexpr ADDRESS(uint32_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint32_t>;
+ explicit constexpr ADDRESS(uint32_t a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _ReadCFAM
+} // namespace _ReadCFAM
struct ReadCFAM
{
static constexpr auto L = level::ERR;
using ADDRESS = _ReadCFAM::ADDRESS;
- using CALLOUT_ERRNO = xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
- using CALLOUT_DEVICE_PATH = xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
- using metadata_types = std::tuple<ADDRESS, CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
-
+ using CALLOUT_ERRNO =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_ERRNO;
+ using CALLOUT_DEVICE_PATH =
+ xyz::openbmc_project::Common::Callout::Device::CALLOUT_DEVICE_PATH;
+ using metadata_types =
+ std::tuple<ADDRESS, CALLOUT_ERRNO, CALLOUT_DEVICE_PATH>;
};
} // namespace Access
@@ -1675,17 +1669,17 @@ struct ReadCFAM
} // namespace open_power
} // namespace org
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::org::open_power::Host::Access::Error::ReadCFAM>
+struct map_exception_type<
+ sdbusplus::org::open_power::Host::Access::Error::ReadCFAM>
{
using type = org::open_power::Host::Access::ReadCFAM;
};
-}
+} // namespace details
namespace xyz
{
@@ -1698,15 +1692,14 @@ namespace Host
namespace _SoftOffTimeout
{
-
-} // namespace _SoftOffTimeout
+} // namespace _SoftOffTimeout
struct SoftOffTimeout
{
static constexpr auto L = level::ERR;
- using TIMEOUT_IN_MSEC = xyz::openbmc_project::Common::Timeout::TIMEOUT_IN_MSEC;
+ using TIMEOUT_IN_MSEC =
+ xyz::openbmc_project::Common::Timeout::TIMEOUT_IN_MSEC;
using metadata_types = std::tuple<TIMEOUT_IN_MSEC>;
-
};
} // namespace Host
@@ -1714,17 +1707,17 @@ struct SoftOffTimeout
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::State::Host::Error::SoftOffTimeout>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::State::Host::Error::SoftOffTimeout>
{
using type = xyz::openbmc_project::State::Host::SoftOffTimeout;
};
-}
+} // namespace details
namespace xyz
{
@@ -1737,14 +1730,12 @@ namespace Create
namespace _Disabled
{
-
-} // namespace _Disabled
+} // namespace _Disabled
struct Disabled
{
static constexpr auto L = level::ERR;
using metadata_types = std::tuple<>;
-
};
} // namespace Create
@@ -1752,17 +1743,17 @@ struct Disabled
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Dump::Create::Error::Disabled>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Dump::Create::Error::Disabled>
{
using type = xyz::openbmc_project::Dump::Create::Disabled;
};
-}
+} // namespace details
namespace xyz
{
@@ -1779,19 +1770,18 @@ struct REASON
{
static constexpr auto str = "REASON = %s";
static constexpr auto str_short = "REASON ";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr REASON (const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr REASON(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _QuotaExceeded
+} // namespace _QuotaExceeded
struct QuotaExceeded
{
static constexpr auto L = level::ERR;
- using REASON = _QuotaExceeded::REASON ;
- using metadata_types = std::tuple<REASON >;
-
+ using REASON = _QuotaExceeded::REASON;
+ using metadata_types = std::tuple<REASON>;
};
} // namespace Create
@@ -1799,17 +1789,17 @@ struct QuotaExceeded
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Dump::Create::Error::QuotaExceeded>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Dump::Create::Error::QuotaExceeded>
{
using type = xyz::openbmc_project::Dump::Create::QuotaExceeded;
};
-}
+} // namespace details
namespace xyz
{
@@ -1822,14 +1812,12 @@ namespace Host
namespace _CommandNotSupported
{
-
-} // namespace _CommandNotSupported
+} // namespace _CommandNotSupported
struct CommandNotSupported
{
static constexpr auto L = level::ERR;
using metadata_types = std::tuple<>;
-
};
} // namespace Host
@@ -1837,17 +1825,17 @@ struct CommandNotSupported
} // namespace openbmc_project
} // namespace xyz
-
namespace details
{
template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Control::Host::Error::CommandNotSupported>
+struct map_exception_type<
+ sdbusplus::xyz::openbmc_project::Control::Host::Error::CommandNotSupported>
{
using type = xyz::openbmc_project::Control::Host::CommandNotSupported;
};
-}
+} // namespace details
namespace example
{
@@ -1866,41 +1854,46 @@ struct ERRNUM
{
static constexpr auto str = "ERRNUM=0x%.4X";
static constexpr auto str_short = "ERRNUM";
- using type = std::tuple<std::decay_t<decltype(str)>,uint16_t>;
- explicit constexpr ERRNUM(uint16_t a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, uint16_t>;
+ explicit constexpr ERRNUM(uint16_t a) : _entry(entry(str, a)){};
type _entry;
};
struct FILE_PATH
{
static constexpr auto str = "FILE_PATH=%s";
static constexpr auto str_short = "FILE_PATH";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr FILE_PATH(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr FILE_PATH(const char* a) : _entry(entry(str, a)){};
type _entry;
};
struct FILE_NAME
{
static constexpr auto str = "FILE_NAME=%s";
static constexpr auto str_short = "FILE_NAME";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr FILE_NAME(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr FILE_NAME(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _TestErrorOne
+} // namespace _TestErrorOne
struct TestErrorOne : public sdbusplus::exception_t
{
- static constexpr auto errName = "example.xyz.openbmc_project.Example.Elog.TestErrorOne";
+ static constexpr auto errName =
+ "example.xyz.openbmc_project.Example.Elog.TestErrorOne";
static constexpr auto errDesc = "this is test error one";
static constexpr auto L = level::INFO;
using ERRNUM = _TestErrorOne::ERRNUM;
using FILE_PATH = _TestErrorOne::FILE_PATH;
using FILE_NAME = _TestErrorOne::FILE_NAME;
- using DEV_ADDR = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ADDR;
- using DEV_ID = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ID;
- using DEV_NAME = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_NAME;
- using metadata_types = std::tuple<ERRNUM, FILE_PATH, FILE_NAME, DEV_ADDR, DEV_ID, DEV_NAME>;
+ using DEV_ADDR =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ADDR;
+ using DEV_ID =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ID;
+ using DEV_NAME =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_NAME;
+ using metadata_types =
+ std::tuple<ERRNUM, FILE_PATH, FILE_NAME, DEV_ADDR, DEV_ID, DEV_NAME>;
const char* name() const noexcept
{
@@ -1924,8 +1917,6 @@ struct TestErrorOne : public sdbusplus::exception_t
} // namespace xyz
} // namespace example
-
-
namespace example
{
namespace xyz
@@ -1943,26 +1934,34 @@ struct FOO_DATA
{
static constexpr auto str = "FOO_DATA=%s";
static constexpr auto str_short = "FOO_DATA";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr FOO_DATA(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr FOO_DATA(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Foo
+} // namespace _Foo
struct Foo : public sdbusplus::exception_t
{
- static constexpr auto errName = "example.xyz.openbmc_project.Example.Foo.Foo";
+ static constexpr auto errName =
+ "example.xyz.openbmc_project.Example.Foo.Foo";
static constexpr auto errDesc = "this is test error Foo";
static constexpr auto L = level::INFO;
using FOO_DATA = _Foo::FOO_DATA;
- using ERRNUM = example::xyz::openbmc_project::Example::Elog::TestErrorOne::ERRNUM;
- using FILE_PATH = example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_PATH;
- using FILE_NAME = example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_NAME;
- using DEV_ADDR = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ADDR;
- using DEV_ID = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ID;
- using DEV_NAME = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_NAME;
- using metadata_types = std::tuple<FOO_DATA, ERRNUM, FILE_PATH, FILE_NAME, DEV_ADDR, DEV_ID, DEV_NAME>;
+ using ERRNUM =
+ example::xyz::openbmc_project::Example::Elog::TestErrorOne::ERRNUM;
+ using FILE_PATH =
+ example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_PATH;
+ using FILE_NAME =
+ example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_NAME;
+ using DEV_ADDR =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ADDR;
+ using DEV_ID =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ID;
+ using DEV_NAME =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_NAME;
+ using metadata_types = std::tuple<FOO_DATA, ERRNUM, FILE_PATH, FILE_NAME,
+ DEV_ADDR, DEV_ID, DEV_NAME>;
const char* name() const noexcept
{
@@ -1986,8 +1985,6 @@ struct Foo : public sdbusplus::exception_t
} // namespace xyz
} // namespace example
-
-
namespace example
{
namespace xyz
@@ -2005,27 +2002,35 @@ struct BAR_DATA
{
static constexpr auto str = "BAR_DATA=%s";
static constexpr auto str_short = "BAR_DATA";
- using type = std::tuple<std::decay_t<decltype(str)>,const char*>;
- explicit constexpr BAR_DATA(const char* a) : _entry(entry(str, a)) {};
+ using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
+ explicit constexpr BAR_DATA(const char* a) : _entry(entry(str, a)){};
type _entry;
};
-} // namespace _Bar
+} // namespace _Bar
struct Bar : public sdbusplus::exception_t
{
- static constexpr auto errName = "example.xyz.openbmc_project.Example.Bar.Bar";
+ static constexpr auto errName =
+ "example.xyz.openbmc_project.Example.Bar.Bar";
static constexpr auto errDesc = "this is test error Bar";
static constexpr auto L = level::INFO;
using BAR_DATA = _Bar::BAR_DATA;
using FOO_DATA = example::xyz::openbmc_project::Example::Foo::Foo::FOO_DATA;
- using ERRNUM = example::xyz::openbmc_project::Example::Elog::TestErrorOne::ERRNUM;
- using FILE_PATH = example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_PATH;
- using FILE_NAME = example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_NAME;
- using DEV_ADDR = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ADDR;
- using DEV_ID = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ID;
- using DEV_NAME = example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_NAME;
- using metadata_types = std::tuple<BAR_DATA, FOO_DATA, ERRNUM, FILE_PATH, FILE_NAME, DEV_ADDR, DEV_ID, DEV_NAME>;
+ using ERRNUM =
+ example::xyz::openbmc_project::Example::Elog::TestErrorOne::ERRNUM;
+ using FILE_PATH =
+ example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_PATH;
+ using FILE_NAME =
+ example::xyz::openbmc_project::Example::Elog::TestErrorOne::FILE_NAME;
+ using DEV_ADDR =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ADDR;
+ using DEV_ID =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_ID;
+ using DEV_NAME =
+ example::xyz::openbmc_project::Example::Elog::TestErrorTwo::DEV_NAME;
+ using metadata_types = std::tuple<BAR_DATA, FOO_DATA, ERRNUM, FILE_PATH,
+ FILE_NAME, DEV_ADDR, DEV_ID, DEV_NAME>;
const char* name() const noexcept
{
@@ -2049,9 +2054,6 @@ struct Bar : public sdbusplus::exception_t
} // namespace xyz
} // namespace example
-
-
-
} // namespace logging
} // namespace phosphor
diff --git a/error-HostEvent.hpp b/error-HostEvent.hpp
index 40872a1..72dc6e9 100644
--- a/error-HostEvent.hpp
+++ b/error-HostEvent.hpp
@@ -16,10 +16,9 @@ namespace Error
struct Event final : public sdbusplus::exception_t
{
static constexpr auto errName = "org.open_power.Host.Error.Event";
- static constexpr auto errDesc =
- "A host system event was received";
+ static constexpr auto errDesc = "A host system event was received";
static constexpr auto errWhat =
- "org.open_power.Host.Error.Event: A host system event was received";
+ "org.open_power.Host.Error.Event: A host system event was received";
const char* name() const noexcept override;
const char* description() const noexcept override;
@@ -28,11 +27,13 @@ struct Event final : public sdbusplus::exception_t
struct MaintenanceProcedure final : public sdbusplus::exception_t
{
- static constexpr auto errName = "org.open_power.Host.Error.MaintenanceProcedure";
+ static constexpr auto errName =
+ "org.open_power.Host.Error.MaintenanceProcedure";
static constexpr auto errDesc =
- "A host system event with a procedure callout";
+ "A host system event with a procedure callout";
static constexpr auto errWhat =
- "org.open_power.Host.Error.MaintenanceProcedure: A host system event with a procedure callout";
+ "org.open_power.Host.Error.MaintenanceProcedure: A host system event "
+ "with a procedure callout";
const char* name() const noexcept override;
const char* description() const noexcept override;
@@ -44,4 +45,3 @@ struct MaintenanceProcedure final : public sdbusplus::exception_t
} // namespace open_power
} // namespace org
} // namespace sdbusplus
-
diff --git a/fruread.hpp b/fruread.hpp
index e035a74..20f260c 100644
--- a/fruread.hpp
+++ b/fruread.hpp
@@ -2,9 +2,10 @@
#define OPENBMC_IPMI_FRU_READ_H
#include <systemd/sd-bus.h>
+
#include <array>
-#include <string>
#include <map>
+#include <string>
#include <vector>
struct IPMIFruData
diff --git a/globalhandler.cpp b/globalhandler.cpp
index 32f2bc6..55761b4 100644
--- a/globalhandler.cpp
+++ b/globalhandler.cpp
@@ -1,12 +1,15 @@
#include "globalhandler.h"
-#include "host-ipmid/ipmid-api.h"
+
#include <stdio.h>
+
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
#include <string>
#include <utils.hpp>
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog-errors.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
-#include "xyz/openbmc_project/State/BMC/server.hpp"
+#include <xyz/openbmc_project/Common/error.hpp>
+#include <xyz/openbmc_project/State/BMC/server.hpp>
+
+#include "host-ipmid/ipmid-api.h"
static constexpr auto bmcStateRoot = "/xyz/openbmc_project/state";
static constexpr auto bmcStateIntf = "xyz.openbmc_project.State.BMC";
@@ -22,16 +25,16 @@ void resetBMC()
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- auto bmcStateObj = ipmi::getDbusObject(bus, bmcStateIntf, bmcStateRoot,
- match);
+ auto bmcStateObj =
+ ipmi::getDbusObject(bus, bmcStateIntf, bmcStateRoot, match);
auto service = ipmi::getService(bus, bmcStateIntf, bmcStateObj.first);
ipmi::setDbusProperty(bus, service, bmcStateObj.first, bmcStateIntf,
- reqTransition, convertForMessage(BMC::Transition::Reboot));
+ reqTransition,
+ convertForMessage(BMC::Transition::Reboot));
}
-
ipmi_ret_t ipmi_global_reset(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)
diff --git a/groupext.cpp b/groupext.cpp
index 1166a3e..0d8bfe0 100644
--- a/groupext.cpp
+++ b/groupext.cpp
@@ -1,18 +1,20 @@
-#include "host-ipmid/ipmid-api.h"
#include "ipmid.hpp"
-#include <stdio.h>
+
#include <stdint.h>
+#include <stdio.h>
+
+#include "host-ipmid/ipmid-api.h"
#define GRPEXT_GET_GROUP_CMD 0
void register_netfn_groupext_functions() __attribute__((constructor));
ipmi_ret_t ipmi_groupext(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_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len, ipmi_context_t context)
{
- // Generic return from IPMI commands.
+ // Generic return from IPMI commands.
ipmi_ret_t rc = IPMI_CC_OK;
- uint8_t *p = (uint8_t*) response;
+ uint8_t* p = (uint8_t*)response;
printf("IPMI GROUP EXTENSIONS\n");
@@ -25,8 +27,8 @@ ipmi_ret_t ipmi_groupext(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
void register_netfn_groupext_functions()
{
// <Group Extension Command>
- ipmi_register_callback(NETFUN_GRPEXT, GRPEXT_GET_GROUP_CMD, NULL, ipmi_groupext,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_GRPEXT, GRPEXT_GET_GROUP_CMD, NULL,
+ ipmi_groupext, PRIVILEGE_USER);
return;
}
diff --git a/host-cmd-manager.cpp b/host-cmd-manager.cpp
index 4316451..90e932b 100644
--- a/host-cmd-manager.cpp
+++ b/host-cmd-manager.cpp
@@ -1,13 +1,14 @@
+#include <config.h>
+#include <systemintfcmds.h>
+
#include <chrono>
-#include <phosphor-logging/log.hpp>
+#include <host-cmd-manager.hpp>
#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
+#include <timer.hpp>
+#include <utils.hpp>
#include <xyz/openbmc_project/Common/error.hpp>
#include <xyz/openbmc_project/State/Host/server.hpp>
-#include <systemintfcmds.h>
-#include <utils.hpp>
-#include <config.h>
-#include <host-cmd-manager.hpp>
-#include <timer.hpp>
namespace phosphor
{
@@ -25,20 +26,17 @@ constexpr auto HOST_TRANS_PROP = "RequestedHostTransition";
// For throwing exceptions
using namespace phosphor::logging;
-using InternalFailure = sdbusplus::xyz::openbmc_project::Common::
- Error::InternalFailure;
+using InternalFailure =
+ sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
namespace sdbusRule = sdbusplus::bus::match::rules;
Manager::Manager(sdbusplus::bus::bus& bus, sd_event* event) :
- bus(bus),
- timer(event, std::bind(&Manager::hostTimeout, this)),
- hostTransitionMatch(bus,
- sdbusRule::propertiesChanged(
- HOST_STATE_PATH,
- HOST_STATE_INTERFACE),
- std::bind(&Manager::clearQueueOnPowerOn, this,
- std::placeholders::_1))
+ bus(bus), timer(event, std::bind(&Manager::hostTimeout, this)),
+ hostTransitionMatch(
+ bus,
+ sdbusRule::propertiesChanged(HOST_STATE_PATH, HOST_STATE_INTERFACE),
+ std::bind(&Manager::clearQueueOnPowerOn, this, std::placeholders::_1))
{
// Nothing to do here.
}
@@ -51,10 +49,10 @@ IpmiCmdData Manager::getNextCommand()
if (r < 0)
{
log<level::ERR>("Failure to STOP the timer",
- entry("ERROR=%s", strerror(-r)));
+ entry("ERROR=%s", strerror(-r)));
}
- if(this->workQueue.empty())
+ if (this->workQueue.empty())
{
// Just return a heartbeat in this case. A spurious SMS_ATN was
// asserted for the host (probably from a previous boot).
@@ -93,7 +91,7 @@ void Manager::hostTimeout()
void Manager::clearQueue()
{
// Dequeue all entries and send fail signal
- while(!this->workQueue.empty())
+ while (!this->workQueue.empty())
{
auto command = this->workQueue.front();
this->workQueue.pop();
@@ -117,11 +115,11 @@ void Manager::checkQueueAndAlertHost()
std::string IPMI_PATH("/org/openbmc/HostIpmi/1");
std::string IPMI_INTERFACE("org.openbmc.HostIpmi");
- auto host = ::ipmi::getService(this->bus,IPMI_INTERFACE,IPMI_PATH);
+ auto host = ::ipmi::getService(this->bus, IPMI_INTERFACE, IPMI_PATH);
// Start the timer for this transaction
auto time = std::chrono::duration_cast<std::chrono::microseconds>(
- std::chrono::seconds(IPMI_SMS_ATN_ACK_TIMEOUT_SECS));
+ std::chrono::seconds(IPMI_SMS_ATN_ACK_TIMEOUT_SECS));
auto r = timer.startTimer(time);
if (r < 0)
@@ -130,10 +128,9 @@ void Manager::checkQueueAndAlertHost()
return;
}
- auto method = this->bus.new_method_call(host.c_str(),
- IPMI_PATH.c_str(),
- IPMI_INTERFACE.c_str(),
- "setAttention");
+ auto method =
+ this->bus.new_method_call(host.c_str(), IPMI_PATH.c_str(),
+ IPMI_INTERFACE.c_str(), "setAttention");
auto reply = this->bus.call(method);
if (reply.is_method_error())
@@ -149,7 +146,7 @@ void Manager::checkQueueAndAlertHost()
void Manager::execute(CommandHandler command)
{
log<level::DEBUG>("Pushing cmd on to queue",
- entry("COMMAND=%d", std::get<0>(command).first));
+ entry("COMMAND=%d", std::get<0>(command).first));
this->workQueue.emplace(command);
@@ -184,7 +181,7 @@ void Manager::clearQueueOnPowerOn(sdbusplus::message::message& msg)
auto& requestedState = properties.at(HOST_TRANS_PROP).get<std::string>();
if (server::Host::convertTransitionFromString(requestedState) ==
- server::Host::Transition::On)
+ server::Host::Transition::On)
{
clearQueue();
}
@@ -192,4 +189,4 @@ void Manager::clearQueueOnPowerOn(sdbusplus::message::message& msg)
} // namespace command
} // namespace host
-} // namepsace phosphor
+} // namespace phosphor
diff --git a/host-cmd-manager.hpp b/host-cmd-manager.hpp
index c25706c..949e798 100644
--- a/host-cmd-manager.hpp
+++ b/host-cmd-manager.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include <tuple>
+#include <host-ipmid/ipmid-host-cmd-utils.hpp>
#include <queue>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/bus/match.hpp>
#include <timer.hpp>
-#include <host-ipmid/ipmid-host-cmd-utils.hpp>
+#include <tuple>
namespace phosphor
{
@@ -19,92 +19,92 @@ namespace command
*/
class Manager
{
- public:
- Manager() = delete;
- ~Manager() = default;
- Manager(const Manager&) = delete;
- Manager& operator=(const Manager&) = delete;
- Manager(Manager&&) = delete;
- Manager& operator=(Manager&&) = delete;
+ public:
+ Manager() = delete;
+ ~Manager() = default;
+ Manager(const Manager&) = delete;
+ Manager& operator=(const Manager&) = delete;
+ Manager(Manager&&) = delete;
+ Manager& operator=(Manager&&) = delete;
- /** @brief Constructs Manager object
- *
- * @param[in] bus - dbus handler
- * @param[in] event - pointer to sd_event
- */
- Manager(sdbusplus::bus::bus& bus, sd_event* event);
+ /** @brief Constructs Manager object
+ *
+ * @param[in] bus - dbus handler
+ * @param[in] event - pointer to sd_event
+ */
+ Manager(sdbusplus::bus::bus& bus, sd_event* event);
- /** @brief Extracts the next entry in the queue and returns
- * Command and data part of it.
- *
- * @detail Also calls into the registered handlers so that they can now
- * send the CommandComplete signal since the interface contract
- * is that we emit this signal once the message has been
- * passed to the host (which is required when calling this)
- *
- * Also, if the queue has more commands, then it will alert the
- * host
- */
- IpmiCmdData getNextCommand();
+ /** @brief Extracts the next entry in the queue and returns
+ * Command and data part of it.
+ *
+ * @detail Also calls into the registered handlers so that they can now
+ * send the CommandComplete signal since the interface contract
+ * is that we emit this signal once the message has been
+ * passed to the host (which is required when calling this)
+ *
+ * Also, if the queue has more commands, then it will alert the
+ * host
+ */
+ IpmiCmdData getNextCommand();
- /** @brief Pushes the command onto the queue.
- *
- * @detail If the queue is empty, then it alerts the Host. If not,
- * then it returns and the API documented above will handle
- * the commands in Queue.
- *
- * @param[in] command - tuple of <IPMI command, data, callback>
- */
- void execute(CommandHandler command);
+ /** @brief Pushes the command onto the queue.
+ *
+ * @detail If the queue is empty, then it alerts the Host. If not,
+ * then it returns and the API documented above will handle
+ * the commands in Queue.
+ *
+ * @param[in] command - tuple of <IPMI command, data, callback>
+ */
+ void execute(CommandHandler command);
- private:
- /** @brief Check if anything in queue and alert host if so */
- void checkQueueAndAlertHost();
+ private:
+ /** @brief Check if anything in queue and alert host if so */
+ void checkQueueAndAlertHost();
- /** @brief Call back interface on message timeouts to host.
- *
- * @detail When this happens, a failure message would be sent
- * to all the commands that are in the Queue and queue
- * will be purged
- */
- void hostTimeout();
+ /** @brief Call back interface on message timeouts to host.
+ *
+ * @detail When this happens, a failure message would be sent
+ * to all the commands that are in the Queue and queue
+ * will be purged
+ */
+ void hostTimeout();
- /** @brief Clears the command queue
- *
- * @detail Clears the command queue and calls all callbacks
- * specifying the command wasn't successful.
- */
- void clearQueue();
+ /** @brief Clears the command queue
+ *
+ * @detail Clears the command queue and calls all callbacks
+ * specifying the command wasn't successful.
+ */
+ void clearQueue();
- /** @brief Clears the command queue on a power on
- *
- * @detail The properties changed handler for the
- * RequestedHostTransition property. When this property
- * changes to 'On', this function will purge the command
- * queue.
- *
- * This is done to avoid having commands that were issued
- * before the host powers on from getting sent to the host,
- * either due to race conditions around state transitions
- * or from a user doing something like requesting an already
- * powered off system to power off again and then immediately
- * requesting a power on.
- *
- * @param[in] msg - the sdbusplus message containing the property
- */
- void clearQueueOnPowerOn(sdbusplus::message::message& msg);
+ /** @brief Clears the command queue on a power on
+ *
+ * @detail The properties changed handler for the
+ * RequestedHostTransition property. When this property
+ * changes to 'On', this function will purge the command
+ * queue.
+ *
+ * This is done to avoid having commands that were issued
+ * before the host powers on from getting sent to the host,
+ * either due to race conditions around state transitions
+ * or from a user doing something like requesting an already
+ * powered off system to power off again and then immediately
+ * requesting a power on.
+ *
+ * @param[in] msg - the sdbusplus message containing the property
+ */
+ void clearQueueOnPowerOn(sdbusplus::message::message& msg);
- /** @brief Reference to the dbus handler */
- sdbusplus::bus::bus& bus;
+ /** @brief Reference to the dbus handler */
+ sdbusplus::bus::bus& bus;
- /** @brief Queue to store the requested commands */
- std::queue<CommandHandler> workQueue{};
+ /** @brief Queue to store the requested commands */
+ std::queue<CommandHandler> workQueue{};
- /** @brief Timer for commands to host */
- phosphor::ipmi::Timer timer;
+ /** @brief Timer for commands to host */
+ phosphor::ipmi::Timer timer;
- /** @brief Match handler for the requested host state */
- sdbusplus::bus::match_t hostTransitionMatch;
+ /** @brief Match handler for the requested host state */
+ sdbusplus::bus::match_t hostTransitionMatch;
};
} // namespace command
diff --git a/host-interface.cpp b/host-interface.cpp
index 8663929..1f27163 100644
--- a/host-interface.cpp
+++ b/host-interface.cpp
@@ -1,11 +1,12 @@
-#include <functional>
+#include <config.h>
#include <systemintfcmds.h>
-#include <host-ipmid/ipmid-host-cmd.hpp>
+
+#include <functional>
+#include <host-interface.hpp>
#include <host-ipmid/ipmid-host-cmd-utils.hpp>
-#include <utils.hpp>
+#include <host-ipmid/ipmid-host-cmd.hpp>
#include <phosphor-logging/log.hpp>
-#include <config.h>
-#include <host-interface.hpp>
+#include <utils.hpp>
namespace phosphor
{
namespace host
@@ -25,44 +26,30 @@ using OEMCmd = uint8_t;
// This is needed when invoking the callback handler to indicate
// the status of the executed command.
static const std::map<OEMCmd, Host::Command> intfCommand = {
- {
- CMD_HEARTBEAT,
- Base::Host::Command::Heartbeat
- },
- {
- CMD_POWER,
- Base::Host::Command::SoftOff
- }
-};
+ {CMD_HEARTBEAT, Base::Host::Command::Heartbeat},
+ {CMD_POWER, Base::Host::Command::SoftOff}};
// Map of Interface command to its corresponding IPMI OEM command.
// This is needed when pushing IPMI commands to command manager's
// queue. The same pair will be returned when IPMI asks us
// why a SMS_ATN was sent
static const std::map<Host::Command, IpmiCmdData> ipmiCommand = {
- {
- Base::Host::Command::Heartbeat,
- std::make_pair(CMD_HEARTBEAT, 0x00)
- },
- {
- Base::Host::Command::SoftOff,
- std::make_pair(CMD_POWER, SOFT_OFF)
- }
-};
+ {Base::Host::Command::Heartbeat, std::make_pair(CMD_HEARTBEAT, 0x00)},
+ {Base::Host::Command::SoftOff, std::make_pair(CMD_POWER, SOFT_OFF)}};
// Called at user request
void Host::execute(Base::Host::Command command)
{
using namespace phosphor::logging;
- log<level::DEBUG>("Pushing cmd on to queue",
- entry("CONTROL_HOST_CMD=%s",
- convertForMessage(command).c_str()));
+ log<level::DEBUG>(
+ "Pushing cmd on to queue",
+ entry("CONTROL_HOST_CMD=%s", convertForMessage(command).c_str()));
auto cmd = std::make_tuple(ipmiCommand.at(command),
- std::bind(&Host::commandStatusHandler,
- this, std::placeholders::_1,
- std::placeholders::_2));
+ std::bind(&Host::commandStatusHandler, this,
+ std::placeholders::_1,
+ std::placeholders::_2));
return ipmid_send_cmd_to_host(std::move(cmd));
}
@@ -79,4 +66,4 @@ void Host::commandStatusHandler(IpmiCmdData cmd, bool status)
} // namespace command
} // namespace host
-} // namepsace phosphor
+} // namespace phosphor
diff --git a/host-interface.hpp b/host-interface.hpp
index 5b2ac68..5c95a66 100644
--- a/host-interface.hpp
+++ b/host-interface.hpp
@@ -1,8 +1,8 @@
#pragma once
+#include <host-cmd-manager.hpp>
#include <sdbusplus/bus.hpp>
#include <xyz/openbmc_project/Control/Host/server.hpp>
-#include <host-cmd-manager.hpp>
namespace phosphor
{
namespace host
@@ -16,46 +16,45 @@ namespace command
* DBus API.
*/
class Host : public sdbusplus::server::object::object<
- sdbusplus::xyz::openbmc_project::Control::server::Host>
+ sdbusplus::xyz::openbmc_project::Control::server::Host>
{
- public:
- /** @brief Constructs Host Control Interface
- *
- * @param[in] bus - The Dbus bus object
- * @param[in] objPath - The Dbus object path
- */
- Host(sdbusplus::bus::bus& bus,
- const char* objPath) :
- sdbusplus::server::object::object<
- sdbusplus::xyz::openbmc_project::Control::server::Host>(
- bus, objPath),
- bus(bus)
- {
- // Nothing to do
- }
+ public:
+ /** @brief Constructs Host Control Interface
+ *
+ * @param[in] bus - The Dbus bus object
+ * @param[in] objPath - The Dbus object path
+ */
+ Host(sdbusplus::bus::bus& bus, const char* objPath) :
+ sdbusplus::server::object::object<
+ sdbusplus::xyz::openbmc_project::Control::server::Host>(bus,
+ objPath),
+ bus(bus)
+ {
+ // Nothing to do
+ }
- /** @brief Send input command to host
- * Note that the command will be queued in a FIFO if
- * other commands to the host have yet to be run
- *
- * @param[in] command - Input command to execute
- */
- void execute(Command command) override;
+ /** @brief Send input command to host
+ * Note that the command will be queued in a FIFO if
+ * other commands to the host have yet to be run
+ *
+ * @param[in] command - Input command to execute
+ */
+ void execute(Command command) override;
- private:
- /** @brief sdbusplus DBus bus connection. */
- sdbusplus::bus::bus& bus;
+ private:
+ /** @brief sdbusplus DBus bus connection. */
+ sdbusplus::bus::bus& bus;
- /** @brief Callback function to be invoked by command manager
- *
- * @detail Conveys the status of the last Host bound command.
- * Depending on the status, a CommandComplete or
- * CommandFailure signal would be sent
- *
- * @param[in] cmd - IPMI command and data sent to Host
- * @param[in] status - Success or Failure
- */
- void commandStatusHandler(IpmiCmdData cmd, bool status);
+ /** @brief Callback function to be invoked by command manager
+ *
+ * @detail Conveys the status of the last Host bound command.
+ * Depending on the status, a CommandComplete or
+ * CommandFailure signal would be sent
+ *
+ * @param[in] cmd - IPMI command and data sent to Host
+ * @param[in] status - Success or Failure
+ */
+ void commandStatusHandler(IpmiCmdData cmd, bool status);
};
} // namespace command
diff --git a/host-ipmid/ipmid-api.h b/host-ipmid/ipmid-api.h
index 1bec851..a085270 100644
--- a/host-ipmid/ipmid-api.h
+++ b/host-ipmid/ipmid-api.h
@@ -13,13 +13,14 @@ extern "C" {
* privilege level. Those commands which can be executed via system interface
* only should use SYSTEM_INTERFACE
*/
-enum CommandPrivilege {
- PRIVILEGE_CALLBACK = 0x01,
- PRIVILEGE_USER,
- PRIVILEGE_OPERATOR,
- PRIVILEGE_ADMIN,
- PRIVILEGE_OEM,
- SYSTEM_INTERFACE = 0xFF,
+enum CommandPrivilege
+{
+ PRIVILEGE_CALLBACK = 0x01,
+ PRIVILEGE_USER,
+ PRIVILEGE_OPERATOR,
+ PRIVILEGE_ADMIN,
+ PRIVILEGE_OEM,
+ SYSTEM_INTERFACE = 0xFF,
};
// length of Completion Code and its ALWAYS _1_
@@ -28,13 +29,13 @@ enum CommandPrivilege {
// IPMI Net Function number as specified by IPMI V2.0 spec.
// Example :
// NETFUN_APP = (0x06 << 2),
-typedef unsigned char ipmi_netfn_t;
+typedef unsigned char ipmi_netfn_t;
// IPMI Command for a Net Function number as specified by IPMI V2.0 spec.
-typedef unsigned char ipmi_cmd_t;
+typedef unsigned char ipmi_cmd_t;
// Buffer containing data from sender of netfn and command as part of request
-typedef void* ipmi_request_t;
+typedef void* ipmi_request_t;
// This is the response buffer that the provider of [netfn,cmd] will send back
// to the caller. Provider will allocate the memory inside the handler and then
@@ -44,7 +45,7 @@ typedef void* ipmi_request_t;
// unsigned char str[] = {0x00, 0x01, 0xFE, 0xFF, 0x0A, 0x01};
// *data_len = 6;
// memcpy(response, &str, *data_len);
-typedef void* ipmi_response_t;
+typedef void* ipmi_response_t;
// This buffer contains any *user specific* data that is of interest only to the
// plugin. For a ipmi function router, this data is opaque. At the time of
@@ -52,11 +53,11 @@ typedef void* ipmi_response_t;
// fill in whatever needed that will be of help during the actual handling of
// command. IPMID will just pass the netfn, cmd and also this data to plugins
// during the command handler invocation.
-typedef void* ipmi_context_t;
+typedef void* ipmi_context_t;
// Length of request / response buffer depending on whether the data is a
// request or a response from a plugin handler.
-typedef size_t* ipmi_data_len_t;
+typedef size_t* ipmi_data_len_t;
// Plugin function return the status code
typedef unsigned char ipmi_ret_t;
@@ -67,14 +68,14 @@ typedef enum CommandPrivilege ipmi_cmd_privilege_t;
// function router will then make a call to this callback handler with the
// necessary arguments of netfn, cmd, request, response, size and context.
typedef ipmi_ret_t (*ipmid_callback_t)(ipmi_netfn_t, ipmi_cmd_t, ipmi_request_t,
- ipmi_response_t, ipmi_data_len_t, ipmi_context_t);
+ ipmi_response_t, ipmi_data_len_t,
+ ipmi_context_t);
// This is the constructor function that is called into by each plugin handlers.
// When ipmi sets up the callback handlers, a call is made to this with
// information of netfn, cmd, callback handler pointer and context data.
-void ipmi_register_callback(ipmi_netfn_t, ipmi_cmd_t, ipmi_context_t, ipmid_callback_t,
- ipmi_cmd_privilege_t);
-
+void ipmi_register_callback(ipmi_netfn_t, ipmi_cmd_t, ipmi_context_t,
+ ipmid_callback_t, ipmi_cmd_privilege_t);
unsigned short get_sel_reserve_id(void);
@@ -85,18 +86,18 @@ unsigned short get_sel_reserve_id(void);
// Note: these are also shifted left to make room for the LUN.
enum ipmi_net_fns
{
- NETFUN_CHASSIS = 0x00,
- NETFUN_BRIDGE = 0x02,
- NETFUN_SENSOR = 0x04,
- NETFUN_APP = 0x06,
- NETFUN_FIRMWARE = 0x08,
- NETFUN_STORAGE = 0x0a,
- NETFUN_TRANSPORT = 0x0c,
- NETFUN_GRPEXT = 0x2c,
- NETFUN_OEM_GROUP = 0x2e,
- NETFUN_NONE = 0x30,
- NETFUN_OEM = 0x32,
- NETFUN_IBM_OEM = 0x3A
+ NETFUN_CHASSIS = 0x00,
+ NETFUN_BRIDGE = 0x02,
+ NETFUN_SENSOR = 0x04,
+ NETFUN_APP = 0x06,
+ NETFUN_FIRMWARE = 0x08,
+ NETFUN_STORAGE = 0x0a,
+ NETFUN_TRANSPORT = 0x0c,
+ NETFUN_GRPEXT = 0x2c,
+ NETFUN_OEM_GROUP = 0x2e,
+ NETFUN_NONE = 0x30,
+ NETFUN_OEM = 0x32,
+ NETFUN_IBM_OEM = 0x3A
};
// IPMI commands for net functions. Since this is to be used both by the ipmi
@@ -104,7 +105,7 @@ enum ipmi_net_fns
// in this .H file.
enum ipmi_netfn_wild_card_cmd
{
- IPMI_CMD_WILDCARD = 0xFF,
+ IPMI_CMD_WILDCARD = 0xFF,
};
// Return (completion) codes from a IPMI operation as needed by IPMI V2.0 spec.
@@ -126,9 +127,9 @@ enum ipmi_return_codes
IPMI_CC_UNSPECIFIED_ERROR = 0xFF,
};
-sd_bus *ipmid_get_sd_bus_connection(void);
-sd_event *ipmid_get_sd_event_connection(void);
-sd_bus_slot *ipmid_get_sd_bus_slot(void);
+sd_bus* ipmid_get_sd_bus_connection(void);
+sd_event* ipmid_get_sd_event_connection(void);
+sd_bus_slot* ipmid_get_sd_bus_slot(void);
#ifdef __cplusplus
}
diff --git a/host-ipmid/ipmid-host-cmd-utils.hpp b/host-ipmid/ipmid-host-cmd-utils.hpp
index 293cc0c..e7c6dc2 100644
--- a/host-ipmid/ipmid-host-cmd-utils.hpp
+++ b/host-ipmid/ipmid-host-cmd-utils.hpp
@@ -1,7 +1,8 @@
#pragma once
-#include <functional>
#include <unistd.h>
+
+#include <functional>
#include <tuple>
namespace phosphor
@@ -10,40 +11,40 @@ namespace host
{
namespace command
{
- /** @detail After sending SMS_ATN to the Host, Host comes down and
- * asks why an 'SMS_ATN` was sent.
- * BMC then sends 'There is a Message to be Read` as response.
- * Host then comes down asks for Message and the specified
- * commands and data would go as data conforming to IPMI spec.
- *
- * Refer: 6.13.2 Send Message Command From System Interface
- * in IPMI V2.0 spec.
- */
-
- /** @brief IPMI command */
- using IPMIcmd = uint8_t;
-
- /** @brief Data associated with command */
- using Data = uint8_t;
-
- /** @brief <IPMI command, Data> to be sent as payload when Host asks for
- * the message that can be associated with the previous SMS_ATN
- */
- using IpmiCmdData = std::pair<IPMIcmd, Data>;
-
- /** @detail Implementation specific callback function to be invoked
- * conveying the status of the executed command. Specific
- * implementations may then broadcast an agreed signal
- */
- using CallBack = std::function<void(IpmiCmdData, bool)>;
-
- /** @detail Tuple encapsulating above 2 to enable using Manager by
- * different implementations. Users of Manager will supply
- * <Ipmi command, Data> along with the callback handler.
- * Manager will invoke the handler onveying the status of
- * the command.
- */
- using CommandHandler = std::tuple<IpmiCmdData, CallBack>;
+/** @detail After sending SMS_ATN to the Host, Host comes down and
+ * asks why an 'SMS_ATN` was sent.
+ * BMC then sends 'There is a Message to be Read` as response.
+ * Host then comes down asks for Message and the specified
+ * commands and data would go as data conforming to IPMI spec.
+ *
+ * Refer: 6.13.2 Send Message Command From System Interface
+ * in IPMI V2.0 spec.
+ */
+
+/** @brief IPMI command */
+using IPMIcmd = uint8_t;
+
+/** @brief Data associated with command */
+using Data = uint8_t;
+
+/** @brief <IPMI command, Data> to be sent as payload when Host asks for
+ * the message that can be associated with the previous SMS_ATN
+ */
+using IpmiCmdData = std::pair<IPMIcmd, Data>;
+
+/** @detail Implementation specific callback function to be invoked
+ * conveying the status of the executed command. Specific
+ * implementations may then broadcast an agreed signal
+ */
+using CallBack = std::function<void(IpmiCmdData, bool)>;
+
+/** @detail Tuple encapsulating above 2 to enable using Manager by
+ * different implementations. Users of Manager will supply
+ * <Ipmi command, Data> along with the callback handler.
+ * Manager will invoke the handler onveying the status of
+ * the command.
+ */
+using CommandHandler = std::tuple<IpmiCmdData, CallBack>;
} // namespace command
} // namespace host
diff --git a/host-ipmid/ipmid-host-cmd.hpp b/host-ipmid/ipmid-host-cmd.hpp
index 6541bae..4fd95a9 100644
--- a/host-ipmid/ipmid-host-cmd.hpp
+++ b/host-ipmid/ipmid-host-cmd.hpp
@@ -1,9 +1,10 @@
+#include "ipmid-host-cmd-utils.hpp"
+
#include <memory>
#include <sdbusplus/bus.hpp>
-#include "ipmid-host-cmd-utils.hpp"
// Need this to use new sdbusplus compatible interfaces
-using sdbusPtr = std::unique_ptr<sdbusplus::bus::bus>;
+using sdbusPtr = std::unique_ptr<sdbusplus::bus::bus>;
extern sdbusPtr& ipmid_get_sdbus_plus_handler();
// Global Host Bound Command manager
diff --git a/host-ipmid/oemopenbmc.hpp b/host-ipmid/oemopenbmc.hpp
index c3bfaa4..8b5dc0c 100644
--- a/host-ipmid/oemopenbmc.hpp
+++ b/host-ipmid/oemopenbmc.hpp
@@ -1,8 +1,9 @@
#pragma once
-#include "host-ipmid/ipmid-api.h"
#include "host-ipmid/oemrouter.hpp"
+#include "host-ipmid/ipmid-api.h"
+
namespace oem
{
@@ -22,4 +23,4 @@ enum Cmd
fanManualCmd = 4,
};
-} // namespace oem
+} // namespace oem
diff --git a/host-ipmid/oemrouter.hpp b/host-ipmid/oemrouter.hpp
index bc2b88c..d6f0735 100644
--- a/host-ipmid/oemrouter.hpp
+++ b/host-ipmid/oemrouter.hpp
@@ -12,38 +12,39 @@ namespace oem
constexpr size_t groupMagicSize = 3;
using Group = std::array<uint8_t, groupMagicSize>;
-using Number = uint32_t; // smallest standard size >= 24.
+using Number = uint32_t; // smallest standard size >= 24.
// Handler signature includes ipmi cmd to support wildcard cmd match.
// Buffers and lengths exclude the OemGroup bytes in the IPMI message.
// dataLen supplies length of reqBuf upon call, and should be set to the
// length of replyBuf upon return - conventional in this code base.
-using Handler = std::function<ipmi_ret_t(
- ipmi_cmd_t, // cmd byte
- const uint8_t*, // reqBuf
- uint8_t*, // replyBuf
- size_t*)>; // dataLen
+using Handler = std::function<ipmi_ret_t(ipmi_cmd_t, // cmd byte
+ const uint8_t*, // reqBuf
+ uint8_t*, // replyBuf
+ size_t*)>; // dataLen
/// Router Interface class.
/// @brief Abstract Router Interface
class Router
{
- public:
- virtual ~Router() {}
+ public:
+ virtual ~Router()
+ {
+ }
- /// Enable message routing to begin.
- virtual void activate() = 0;
+ /// Enable message routing to begin.
+ virtual void activate() = 0;
- /// Register a handler for given OEMNumber & cmd.
- /// Use IPMI_CMD_WILDCARD to catch any unregistered cmd
- /// for the given OEMNumber.
- ///
- /// @param[in] oen - the OEM Number.
- /// @param[in] cmd - the Command.
- /// @param[in] handler - the handler to call given that OEN and
- /// command.
- virtual void registerHandler(Number oen, ipmi_cmd_t cmd,
- Handler handler) = 0;
+ /// Register a handler for given OEMNumber & cmd.
+ /// Use IPMI_CMD_WILDCARD to catch any unregistered cmd
+ /// for the given OEMNumber.
+ ///
+ /// @param[in] oen - the OEM Number.
+ /// @param[in] cmd - the Command.
+ /// @param[in] handler - the handler to call given that OEN and
+ /// command.
+ virtual void registerHandler(Number oen, ipmi_cmd_t cmd,
+ Handler handler) = 0;
};
/// Expose mutable Router for configuration & activation.
@@ -75,9 +76,8 @@ constexpr Number toOemNumber(const Group& oeg)
/// @return the OEM Group.
constexpr Group toOemGroup(Number oen)
{
- return Group { static_cast<uint8_t>(oen),
- static_cast<uint8_t>(oen >> 8),
- static_cast<uint8_t>(oen >> 16) };
+ return Group{static_cast<uint8_t>(oen), static_cast<uint8_t>(oen >> 8),
+ static_cast<uint8_t>(oen >> 16)};
}
-} // namespace oem
+} // namespace oem
diff --git a/ipmi_fru_info_area.cpp b/ipmi_fru_info_area.cpp
index ca3fa64..47979e9 100644
--- a/ipmi_fru_info_area.cpp
+++ b/ipmi_fru_info_area.cpp
@@ -1,10 +1,9 @@
+#include "ipmi_fru_info_area.hpp"
+
#include <algorithm>
+#include <ctime>
#include <map>
#include <numeric>
-
-#include <ctime>
-
-#include "ipmi_fru_info_area.hpp"
#include <phosphor-logging/elog.hpp>
namespace ipmi
{
@@ -12,38 +11,38 @@ namespace fru
{
using namespace phosphor::logging;
-//Property variables
-static constexpr auto partNumber = "PartNumber";
-static constexpr auto serialNumber = "SerialNumber";
-static constexpr auto manufacturer = "Manufacturer";
-static constexpr auto buildDate = "BuildDate";
-static constexpr auto model = "Model";
-static constexpr auto prettyName = "PrettyName";
-static constexpr auto version = "Version";
-
-//Board info areas
-static constexpr auto board = "Board";
-static constexpr auto chassis = "Chassis";
-static constexpr auto product = "Product";
-
-static constexpr auto specVersion = 0x1;
-static constexpr auto recordUnitOfMeasurement = 0x8; //size in bytes
-static constexpr auto checksumSize = 0x1; //size in bytes
-static constexpr auto recordNotPresent = 0x0;
-static constexpr auto englishLanguageCode = 0x0;
-static constexpr auto typeLengthByteNull = 0x0;
-static constexpr auto endOfCustomFields = 0xC1;
-static constexpr auto commonHeaderFormatSize = 0x8; //size in bytes
-static constexpr auto manufacturingDateSize = 0x3;
-static constexpr auto areaSizeOffset = 0x1;
-static constexpr uint8_t typeASCII = 0xC0;
-static constexpr auto maxRecordAttributeValue = 0x1F;
+// Property variables
+static constexpr auto partNumber = "PartNumber";
+static constexpr auto serialNumber = "SerialNumber";
+static constexpr auto manufacturer = "Manufacturer";
+static constexpr auto buildDate = "BuildDate";
+static constexpr auto model = "Model";
+static constexpr auto prettyName = "PrettyName";
+static constexpr auto version = "Version";
+
+// Board info areas
+static constexpr auto board = "Board";
+static constexpr auto chassis = "Chassis";
+static constexpr auto product = "Product";
+
+static constexpr auto specVersion = 0x1;
+static constexpr auto recordUnitOfMeasurement = 0x8; // size in bytes
+static constexpr auto checksumSize = 0x1; // size in bytes
+static constexpr auto recordNotPresent = 0x0;
+static constexpr auto englishLanguageCode = 0x0;
+static constexpr auto typeLengthByteNull = 0x0;
+static constexpr auto endOfCustomFields = 0xC1;
+static constexpr auto commonHeaderFormatSize = 0x8; // size in bytes
+static constexpr auto manufacturingDateSize = 0x3;
+static constexpr auto areaSizeOffset = 0x1;
+static constexpr uint8_t typeASCII = 0xC0;
+static constexpr auto maxRecordAttributeValue = 0x1F;
static constexpr auto secs_from_1970_1996 = 820454400;
-static constexpr auto maxMfgDateValue = 0xFFFFFF; //3 Byte length
+static constexpr auto maxMfgDateValue = 0xFFFFFF; // 3 Byte length
static constexpr auto secs_per_min = 60;
-static constexpr auto
- secsToMaxMfgdate = secs_from_1970_1996 + secs_per_min * maxMfgDateValue;
+static constexpr auto secsToMaxMfgdate =
+ secs_from_1970_1996 + secs_per_min * maxMfgDateValue;
/**
* @brief Format Beginning of Individual IPMI FRU Data Section
@@ -53,10 +52,10 @@ static constexpr auto
*/
void preFormatProcessing(bool langCode, FruAreaData& data)
{
- //Add id for version of FRU Info Storage Spec used
+ // Add id for version of FRU Info Storage Spec used
data.emplace_back(specVersion);
- //Add Data Size - 0 as a placeholder, can edit after the data is finalized
+ // Add Data Size - 0 as a placeholder, can edit after the data is finalized
data.emplace_back(typeLengthByteNull);
if (langCode)
@@ -99,14 +98,14 @@ void padData(FruAreaData& data)
*/
void postFormatProcessing(FruAreaData& data)
{
- //This area needs to be padded to a multiple of 8 bytes (after checksum)
+ // This area needs to be padded to a multiple of 8 bytes (after checksum)
padData(data);
- //Set size of data info area
- data.at(areaSizeOffset) = (data.size() + checksumSize) /
- (recordUnitOfMeasurement);
+ // Set size of data info area
+ data.at(areaSizeOffset) =
+ (data.size() + checksumSize) / (recordUnitOfMeasurement);
- //Finally add area checksum
+ // Finally add area checksum
appendDataChecksum(data);
}
@@ -124,35 +123,35 @@ void appendData(const Property& key, const PropertyMap& propMap,
if (iter != propMap.end())
{
auto value = iter->second;
- //If starts with 0x or 0X remove them
- //ex: 0x123a just take 123a
+ // If starts with 0x or 0X remove them
+ // ex: 0x123a just take 123a
if ((value.compare(0, 2, "0x")) == 0 ||
- (value.compare(0, 2, "0X") == 0))
+ (value.compare(0, 2, "0X") == 0))
{
value.erase(0, 2);
}
// 5 bits for length
- // if length is greater then 31(2^5) bytes then trim the data to 31 bytess.
- auto valueLength = (value.length() > maxRecordAttributeValue) ?
- maxRecordAttributeValue : value.length();
+ // if length is greater then 31(2^5) bytes then trim the data to 31
+ // bytess.
+ auto valueLength = (value.length() > maxRecordAttributeValue)
+ ? maxRecordAttributeValue
+ : value.length();
// 2 bits for type
// Set the type to ascii
uint8_t typeLength = valueLength | ipmi::fru::typeASCII;
data.emplace_back(typeLength);
- std::copy(value.begin(),
- value.begin() + valueLength,
+ std::copy(value.begin(), value.begin() + valueLength,
std::back_inserter(data));
}
else
{
- //set 0 size
+ // set 0 size
data.emplace_back(typeLengthByteNull);
}
}
-
/**
* @brief Appends Build Date
*
@@ -161,7 +160,7 @@ void appendData(const Property& key, const PropertyMap& propMap,
*/
void appendMfgDate(const PropertyMap& propMap, FruAreaData& data)
{
- //MFG Date/Time
+ // MFG Date/Time
auto iter = propMap.find(buildDate);
if ((iter != propMap.end()) && (iter->second.size() > 0))
{
@@ -188,7 +187,7 @@ void appendMfgDate(const PropertyMap& propMap, FruAreaData& data)
fprintf(stderr, "MgfDate invalid date: %u secs since UNIX epoch\n",
static_cast<unsigned int>(raw));
}
- //Blank date
+ // Blank date
data.emplace_back(0);
data.emplace_back(0);
data.emplace_back(0);
@@ -201,13 +200,13 @@ void appendMfgDate(const PropertyMap& propMap, FruAreaData& data)
* @param[in] offset Current offset for data in overall record
* @param[in/out] data Common Header section data container
*/
-void buildCommonHeaderSection(
- const uint32_t& infoAreaSize, uint16_t& offset, FruAreaData& data)
+void buildCommonHeaderSection(const uint32_t& infoAreaSize, uint16_t& offset,
+ FruAreaData& data)
{
- //Check if data for internal use section populated
+ // Check if data for internal use section populated
if (infoAreaSize == 0)
{
- //Indicate record not present
+ // Indicate record not present
data.emplace_back(recordNotPresent);
}
else
@@ -217,7 +216,7 @@ void buildCommonHeaderSection(
// add the padding bytes in the offset so that offset
// will be multiple of 8 byte.
offset += (remainder > 0) ? recordUnitOfMeasurement - remainder : 0;
- //Place data to define offset to area data section
+ // Place data to define offset to area data section
data.emplace_back(offset / recordUnitOfMeasurement);
offset += infoAreaSize;
@@ -235,22 +234,22 @@ FruAreaData buildChassisInfoArea(const PropertyMap& propMap)
FruAreaData fruAreaData;
if (!propMap.empty())
{
- //Set formatting data that goes at the beginning of the record
+ // Set formatting data that goes at the beginning of the record
preFormatProcessing(false, fruAreaData);
- //chassis type
+ // chassis type
fruAreaData.emplace_back(0);
- //Chasiss part number, in config.yaml it is configured as model
+ // Chasiss part number, in config.yaml it is configured as model
appendData(model, propMap, fruAreaData);
- //Board serial number
+ // Board serial number
appendData(serialNumber, propMap, fruAreaData);
- //Indicate End of Custom Fields
+ // Indicate End of Custom Fields
fruAreaData.emplace_back(endOfCustomFields);
- //Complete record data formatting
+ // Complete record data formatting
postFormatProcessing(fruAreaData);
}
return fruAreaData;
@@ -269,28 +268,28 @@ FruAreaData buildBoardInfoArea(const PropertyMap& propMap)
{
preFormatProcessing(true, fruAreaData);
- //Manufacturing date
+ // Manufacturing date
appendMfgDate(propMap, fruAreaData);
- //manufacturer
+ // manufacturer
appendData(manufacturer, propMap, fruAreaData);
- //Product name/Pretty name
+ // Product name/Pretty name
appendData(prettyName, propMap, fruAreaData);
- //Board serial number
+ // Board serial number
appendData(serialNumber, propMap, fruAreaData);
- //Board part number
+ // Board part number
appendData(partNumber, propMap, fruAreaData);
- //FRU File ID - Empty
+ // FRU File ID - Empty
fruAreaData.emplace_back(typeLengthByteNull);
// Empty FRU File ID bytes
fruAreaData.emplace_back(recordNotPresent);
- //End of custom fields
+ // End of custom fields
fruAreaData.emplace_back(endOfCustomFields);
postFormatProcessing(fruAreaData);
@@ -309,34 +308,34 @@ FruAreaData buildProductInfoArea(const PropertyMap& propMap)
FruAreaData fruAreaData;
if (!propMap.empty())
{
- //Set formatting data that goes at the beginning of the record
+ // Set formatting data that goes at the beginning of the record
preFormatProcessing(true, fruAreaData);
- //manufacturer
+ // manufacturer
appendData(manufacturer, propMap, fruAreaData);
- //Product name/Pretty name
+ // Product name/Pretty name
appendData(prettyName, propMap, fruAreaData);
- //Product part/model number
+ // Product part/model number
appendData(model, propMap, fruAreaData);
- //Product version
+ // Product version
appendData(version, propMap, fruAreaData);
- //Serial Number
+ // Serial Number
appendData(serialNumber, propMap, fruAreaData);
- //Add Asset Tag
+ // Add Asset Tag
fruAreaData.emplace_back(recordNotPresent);
- //FRU File ID - Empty
+ // FRU File ID - Empty
fruAreaData.emplace_back(typeLengthByteNull);
// Empty FRU File ID bytes
fruAreaData.emplace_back(recordNotPresent);
- //End of custom fields
+ // End of custom fields
fruAreaData.emplace_back(endOfCustomFields);
postFormatProcessing(fruAreaData);
@@ -347,17 +346,17 @@ FruAreaData buildProductInfoArea(const PropertyMap& propMap)
FruAreaData buildFruAreaData(const FruInventoryData& inventory)
{
FruAreaData combFruArea{};
- //Now build common header with data for this FRU Inv Record
- //Use this variable to increment size of header as we go along to determine
- //offset for the subsequent area offsets
+ // Now build common header with data for this FRU Inv Record
+ // Use this variable to increment size of header as we go along to determine
+ // offset for the subsequent area offsets
uint16_t curDataOffset = commonHeaderFormatSize;
- //First byte is id for version of FRU Info Storage Spec used
+ // First byte is id for version of FRU Info Storage Spec used
combFruArea.emplace_back(specVersion);
- //2nd byte is offset to internal use data
+ // 2nd byte is offset to internal use data
combFruArea.emplace_back(recordNotPresent);
- //3rd byte is offset to chassis data
+ // 3rd byte is offset to chassis data
FruAreaData chassisArea;
auto chassisIt = inventory.find(chassis);
if (chassisIt != inventory.end())
@@ -367,7 +366,7 @@ FruAreaData buildFruAreaData(const FruInventoryData& inventory)
// update the offset to chassis data.
buildCommonHeaderSection(chassisArea.size(), curDataOffset, combFruArea);
- //4th byte is offset to board data
+ // 4th byte is offset to board data
FruAreaData boardArea;
auto boardIt = inventory.find(board);
if (boardIt != inventory.end())
@@ -377,7 +376,7 @@ FruAreaData buildFruAreaData(const FruInventoryData& inventory)
// update the offset to the board data.
buildCommonHeaderSection(boardArea.size(), curDataOffset, combFruArea);
- //5th byte is offset to product data
+ // 5th byte is offset to product data
FruAreaData prodArea;
auto prodIt = inventory.find(product);
if (prodIt != inventory.end())
@@ -387,28 +386,28 @@ FruAreaData buildFruAreaData(const FruInventoryData& inventory)
// update the offset to the product data.
buildCommonHeaderSection(prodArea.size(), curDataOffset, combFruArea);
- //6th byte is offset to multirecord data
+ // 6th byte is offset to multirecord data
combFruArea.emplace_back(recordNotPresent);
- //7th byte is PAD
+ // 7th byte is PAD
combFruArea.emplace_back(recordNotPresent);
- //8th (Final byte of Header Format) is the checksum
+ // 8th (Final byte of Header Format) is the checksum
appendDataChecksum(combFruArea);
- //Combine everything into one full IPMI FRU specification Record
- //add chassis use area data
- combFruArea.insert(
- combFruArea.end(), chassisArea.begin(), chassisArea.end());
+ // Combine everything into one full IPMI FRU specification Record
+ // add chassis use area data
+ combFruArea.insert(combFruArea.end(), chassisArea.begin(),
+ chassisArea.end());
- //add board area data
+ // add board area data
combFruArea.insert(combFruArea.end(), boardArea.begin(), boardArea.end());
- //add product use area data
+ // add product use area data
combFruArea.insert(combFruArea.end(), prodArea.begin(), prodArea.end());
return combFruArea;
}
-} //fru
-} //ipmi
+} // namespace fru
+} // namespace ipmi
diff --git a/ipmi_fru_info_area.hpp b/ipmi_fru_info_area.hpp
index 9fe0107..462a4ac 100644
--- a/ipmi_fru_info_area.hpp
+++ b/ipmi_fru_info_area.hpp
@@ -24,6 +24,5 @@ using FruInventoryData = std::map<Section, PropertyMap>;
*/
FruAreaData buildFruAreaData(const FruInventoryData& inventory);
-} //fru
-} //ipmi
-
+} // namespace fru
+} // namespace ipmi
diff --git a/ipmid.cpp b/ipmid.cpp
index f664488..6da7ff2 100644
--- a/ipmid.cpp
+++ b/ipmid.cpp
@@ -1,40 +1,43 @@
-#include <stdio.h>
-#include <dlfcn.h>
-#include <iostream>
-#include <unistd.h>
+#include "ipmid.hpp"
+
+#include "host-ipmid/oemrouter.hpp"
+#include "settings.hpp"
+
#include <assert.h>
#include <dirent.h>
-#include <systemd/sd-bus.h>
-#include <string.h>
-#include <stdlib.h>
-#include <map>
-#include <memory>
-#include <phosphor-logging/log.hpp>
-#include <sys/time.h>
+#include <dlfcn.h>
#include <errno.h>
#include <mapper.h>
-#include "sensorhandler.h"
-#include <vector>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/time.h>
+#include <systemd/sd-bus.h>
+#include <unistd.h>
+
#include <algorithm>
-#include <iterator>
+#include <host-cmd-manager.hpp>
+#include <host-ipmid/ipmid-host-cmd.hpp>
+#include <iostream>
#include <ipmiwhitelist.hpp>
+#include <iterator>
+#include <map>
+#include <memory>
+#include <phosphor-logging/log.hpp>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/bus/match.hpp>
+#include <timer.hpp>
+#include <vector>
#include <xyz/openbmc_project/Control/Security/RestrictionMode/server.hpp>
+
#include "sensorhandler.h"
-#include "ipmid.hpp"
-#include "settings.hpp"
-#include <host-cmd-manager.hpp>
-#include <host-ipmid/ipmid-host-cmd.hpp>
-#include <timer.hpp>
-#include "host-ipmid/oemrouter.hpp"
using namespace phosphor::logging;
namespace sdbusRule = sdbusplus::bus::match::rules;
-sd_bus *bus = NULL;
-sd_bus_slot *ipmid_slot = NULL;
-sd_event *events = nullptr;
+sd_bus* bus = NULL;
+sd_bus_slot* ipmid_slot = NULL;
+sd_event* events = nullptr;
// Need this to use new sdbusplus compatible interfaces
sdbusPtr sdbusp;
@@ -55,17 +58,19 @@ bool restricted_mode = true;
FILE *ipmiio, *ipmidbus, *ipmicmddetails;
-void print_usage(void) {
- fprintf(stderr, "Options: [-d mask]\n");
- fprintf(stderr, " mask : 0x01 - Print ipmi packets\n");
- fprintf(stderr, " mask : 0x02 - Print DBUS operations\n");
- fprintf(stderr, " mask : 0x04 - Print ipmi command details\n");
- fprintf(stderr, " mask : 0xFF - Print all trace\n");
+void print_usage(void)
+{
+ fprintf(stderr, "Options: [-d mask]\n");
+ fprintf(stderr, " mask : 0x01 - Print ipmi packets\n");
+ fprintf(stderr, " mask : 0x02 - Print DBUS operations\n");
+ fprintf(stderr, " mask : 0x04 - Print ipmi command details\n");
+ fprintf(stderr, " mask : 0xFF - Print all trace\n");
}
-const char * DBUS_INTF = "org.openbmc.HostIpmi";
+const char* DBUS_INTF = "org.openbmc.HostIpmi";
-const char * FILTER = "type='signal',interface='org.openbmc.HostIpmi',member='ReceivedMessage'";
+const char* FILTER =
+ "type='signal',interface='org.openbmc.HostIpmi',member='ReceivedMessage'";
typedef std::pair<ipmi_netfn_t, ipmi_cmd_t> ipmi_fn_cmd_t;
typedef std::pair<ipmid_callback_t, ipmi_context_t> ipmi_fn_context_t;
@@ -99,55 +104,59 @@ std::unique_ptr<settings::Objects> objects = nullptr;
#define HEXDUMP_COLS 16
#endif
-void hexdump(FILE *s, void *mem, size_t len)
+void hexdump(FILE* s, void* mem, size_t len)
{
- unsigned int i, j;
+ unsigned int i, j;
- for(i = 0; i < len + ((len % HEXDUMP_COLS) ? (HEXDUMP_COLS - len % HEXDUMP_COLS) : 0); i++)
+ for (i = 0;
+ i <
+ len + ((len % HEXDUMP_COLS) ? (HEXDUMP_COLS - len % HEXDUMP_COLS) : 0);
+ i++)
+ {
+ /* print offset */
+ if (i % HEXDUMP_COLS == 0)
{
- /* print offset */
- if(i % HEXDUMP_COLS == 0)
- {
- fprintf(s,"0x%06x: ", i);
- }
+ fprintf(s, "0x%06x: ", i);
+ }
- /* print hex data */
- if(i < len)
+ /* print hex data */
+ if (i < len)
+ {
+ fprintf(s, "%02x ", 0xFF & ((char*)mem)[i]);
+ }
+ else /* end of block, just aligning for ASCII dump */
+ {
+ fprintf(s, " ");
+ }
+
+ /* print ASCII dump */
+ if (i % HEXDUMP_COLS == (HEXDUMP_COLS - 1))
+ {
+ for (j = i - (HEXDUMP_COLS - 1); j <= i; j++)
+ {
+ if (j >= len) /* end of block, not really printing */
{
- fprintf(s,"%02x ", 0xFF & ((char*)mem)[i]);
+ fputc(' ', s);
}
- else /* end of block, just aligning for ASCII dump */
+ else if (isprint(((char*)mem)[j])) /* printable char */
{
- fprintf(s," ");
+ fputc(0xFF & ((char*)mem)[j], s);
}
-
- /* print ASCII dump */
- if(i % HEXDUMP_COLS == (HEXDUMP_COLS - 1))
+ else /* other char */
{
- for(j = i - (HEXDUMP_COLS - 1); j <= i; j++)
- {
- if(j >= len) /* end of block, not really printing */
- {
- fputc(' ', s);
- }
- else if(isprint(((char*)mem)[j])) /* printable char */
- {
- fputc(0xFF & ((char*)mem)[j], s);
- }
- else /* other char */
- {
- fputc('.',s);
- }
- }
- fputc('\n',s);
+ fputc('.', s);
}
+ }
+ fputc('\n', s);
}
+ }
}
-
-// Method that gets called by shared libraries to get their command handlers registered
-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)
+// Method that gets called by shared libraries to get their command handlers
+// registered
+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)
{
// Pack NetFn and Command in one.
auto netfn_and_cmd = std::make_pair(netfn, cmd);
@@ -157,10 +166,9 @@ void ipmi_register_callback(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_context_t c
// Check if the registration has already been made..
auto iter = g_ipmid_router_map.find(netfn_and_cmd);
- if(iter != g_ipmid_router_map.end())
+ if (iter != g_ipmid_router_map.end())
{
- log<level::ERR>("Duplicate registration",
- entry("NETFN=0x%X", netfn),
+ log<level::ERR>("Duplicate registration", entry("NETFN=0x%X", netfn),
entry("CMD=0x%X", cmd));
}
else
@@ -173,22 +181,22 @@ void ipmi_register_callback(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_context_t c
}
// Looks at the map and calls corresponding handler functions.
-ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
- ipmi_response_t response, ipmi_data_len_t data_len)
+ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
+ ipmi_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len)
{
// return from the Command handlers.
ipmi_ret_t rc = IPMI_CC_INVALID;
// If restricted mode is true and command is not whitelisted, don't
// execute the command
- if(restricted_mode)
+ if (restricted_mode)
{
if (!std::binary_search(whitelist.cbegin(), whitelist.cend(),
- std::make_pair(netfn, cmd)))
+ std::make_pair(netfn, cmd)))
{
log<level::ERR>("Net function not whitelisted",
- entry("NETFN=0x%X", netfn),
- entry("CMD=0x%X", cmd));
+ entry("NETFN=0x%X", netfn), entry("CMD=0x%X", cmd));
rc = IPMI_CC_INSUFFICIENT_PRIVILEGE;
memcpy(response, &rc, IPMI_CC_LEN);
*data_len = IPMI_CC_LEN;
@@ -199,20 +207,20 @@ ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t
// Walk the map that has the registered handlers and invoke the approprite
// handlers for matching commands.
auto iter = g_ipmid_router_map.find(std::make_pair(netfn, cmd));
- if(iter == g_ipmid_router_map.end())
+ if (iter == g_ipmid_router_map.end())
{
/* By default should only print on failure to find wildcard command. */
#ifdef __IPMI_DEBUG__
log<level::ERR>(
- "No registered handlers for NetFn, trying Wilcard implementation",
- entry("NET_FUN=0x%X", netfn)
- entry("CMD=0x%X", IPMI_CMD_WILDCARD));
+ "No registered handlers for NetFn, trying Wilcard implementation",
+ entry("NET_FUN=0x%X", netfn) entry("CMD=0x%X", IPMI_CMD_WILDCARD));
#endif
// Now that we did not find any specific [NetFn,Cmd], tuple, check for
// NetFn, WildCard command present.
- iter = g_ipmid_router_map.find(std::make_pair(netfn, IPMI_CMD_WILDCARD));
- if(iter == g_ipmid_router_map.end())
+ iter =
+ g_ipmid_router_map.find(std::make_pair(netfn, IPMI_CMD_WILDCARD));
+ if (iter == g_ipmid_router_map.end())
{
log<level::ERR>("No Registered handlers for NetFn",
entry("NET_FUN=0x%X", netfn),
@@ -228,8 +236,7 @@ ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t
#ifdef __IPMI_DEBUG__
// We have either a perfect match -OR- a wild card atleast,
log<level::ERR>("Calling Net function",
- entry("NET_FUN=0x%X", netfn)
- entry("CMD=0x%X", cmd));
+ entry("NET_FUN=0x%X", netfn) entry("CMD=0x%X", cmd));
#endif
// Extract the map data onto appropriate containers
@@ -238,18 +245,18 @@ ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t
// Creating a pointer type casted to char* to make sure we advance 1 byte
// when we advance pointer to next's address. advancing void * would not
// make sense.
- char *respo = &((char *)response)[IPMI_CC_LEN];
+ char* respo = &((char*)response)[IPMI_CC_LEN];
try
{
// Response message from the plugin goes into a byte post the base
// response
- rc = (handler_and_context.first) (netfn, cmd, request, respo,
- data_len, handler_and_context.second);
+ rc = (handler_and_context.first)(netfn, cmd, request, respo, data_len,
+ handler_and_context.second);
}
// IPMI command handlers can throw unhandled exceptions, catch those
// and return sane error code.
- catch (const std::exception &e)
+ catch (const std::exception& e)
{
log<level::ERR>(e.what(), entry("NET_FUN=0x%X", netfn),
entry("CMD=0x%X", cmd));
@@ -267,63 +274,62 @@ ipmi_ret_t ipmi_netfn_router(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t
return rc;
}
-
-
-
-static int send_ipmi_message(sd_bus_message *req, unsigned char seq, unsigned char netfn, unsigned char lun, unsigned char cmd, unsigned char cc, unsigned char *buf, unsigned char len) {
+static int send_ipmi_message(sd_bus_message* req, unsigned char seq,
+ unsigned char netfn, unsigned char lun,
+ unsigned char cmd, unsigned char cc,
+ unsigned char* buf, unsigned char len)
+{
sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *reply = NULL, *m=NULL;
+ sd_bus_message *reply = NULL, *m = NULL;
const char *dest, *path;
int r, pty;
dest = sd_bus_message_get_sender(req);
path = sd_bus_message_get_path(req);
- r = sd_bus_message_new_method_call(bus,&m,dest,path,
- DBUS_INTF,
+ r = sd_bus_message_new_method_call(bus, &m, dest, path, DBUS_INTF,
"sendMessage");
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to add the method object",
entry("ERRNO=0x%X", -r));
return -1;
}
-
// Responses in IPMI require a bit set. So there ya go...
netfn |= 0x01;
-
// Add the bytes needed for the methods to be called
r = sd_bus_message_append(m, "yyyyy", seq, netfn, lun, cmd, cc);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed add the netfn and others",
entry("ERRNO=0x%X", -r));
goto final;
}
r = sd_bus_message_append_array(m, 'y', buf, len);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to add the string of response bytes",
entry("ERRNO=0x%X", -r));
goto final;
}
-
-
// Call the IPMI responder on the bus so the message can be sent to the CEC
r = sd_bus_call(bus, m, 0, &error, &reply);
- if (r < 0) {
- log<level::ERR>("Failed to call the method",
- entry("DEST=%s", dest),
- entry("PATH=%s", path),
- entry("ERRNO=0x%X", -r));
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to call the method", entry("DEST=%s", dest),
+ entry("PATH=%s", path), entry("ERRNO=0x%X", -r));
goto final;
}
r = sd_bus_message_read(reply, "x", &pty);
- if (r < 0) {
- log<level::ERR>("Failed to get a reply from the method",
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to get a reply from the method",
entry("ERRNO=0x%X", -r));
}
@@ -345,11 +351,9 @@ void cache_restricted_mode()
const auto& restrictionModeSetting =
objects->map.at(restrictionModeIntf).front();
auto method = dbus.new_method_call(
- objects->service(restrictionModeSetting,
- restrictionModeIntf).c_str(),
- restrictionModeSetting.c_str(),
- "org.freedesktop.DBus.Properties",
- "Get");
+ objects->service(restrictionModeSetting, restrictionModeIntf).c_str(),
+ restrictionModeSetting.c_str(), "org.freedesktop.DBus.Properties",
+ "Get");
method.append(restrictionModeIntf, "RestrictionMode");
auto resp = dbus.call(method);
if (resp.is_method_error())
@@ -363,45 +367,49 @@ void cache_restricted_mode()
resp.read(result);
auto restrictionMode =
RestrictionMode::convertModesFromString(result.get<std::string>());
- if(RestrictionMode::Modes::Whitelist == restrictionMode)
+ if (RestrictionMode::Modes::Whitelist == restrictionMode)
{
restricted_mode = true;
}
}
-static int handle_restricted_mode_change(sd_bus_message *m, void *user_data,
- sd_bus_error *ret_error)
+static int handle_restricted_mode_change(sd_bus_message* m, void* user_data,
+ sd_bus_error* ret_error)
{
cache_restricted_mode();
return 0;
}
-static int handle_ipmi_command(sd_bus_message *m, void *user_data, sd_bus_error
- *ret_error) {
+static int handle_ipmi_command(sd_bus_message* m, void* user_data,
+ sd_bus_error* ret_error)
+{
int r = 0;
unsigned char sequence, netfn, lun, cmd;
- const void *request;
+ const void* request;
size_t sz;
- size_t resplen =MAX_IPMI_BUFFER;
+ size_t resplen = MAX_IPMI_BUFFER;
unsigned char response[MAX_IPMI_BUFFER];
memset(response, 0, MAX_IPMI_BUFFER);
- r = sd_bus_message_read(m, "yyyy", &sequence, &netfn, &lun, &cmd);
- if (r < 0) {
+ r = sd_bus_message_read(m, "yyyy", &sequence, &netfn, &lun, &cmd);
+ if (r < 0)
+ {
log<level::ERR>("Failed to parse signal message",
entry("ERRNO=0x%X", -r));
return -1;
}
- r = sd_bus_message_read_array(m, 'y', &request, &sz );
- if (r < 0) {
+ r = sd_bus_message_read_array(m, 'y', &request, &sz);
+ if (r < 0)
+ {
log<level::ERR>("Failed to parse signal message",
entry("ERRNO=0x%X", -r));
return -1;
}
- fprintf(ipmiio, "IPMI Incoming: Seq 0x%02x, NetFn 0x%02x, CMD: 0x%02x \n", sequence, netfn, cmd);
+ fprintf(ipmiio, "IPMI Incoming: Seq 0x%02x, NetFn 0x%02x, CMD: 0x%02x \n",
+ sequence, netfn, cmd);
hexdump(ipmiio, (void*)request, sz);
// Allow the length field to be used for both input and output of the
@@ -410,14 +418,13 @@ static int handle_ipmi_command(sd_bus_message *m, void *user_data, sd_bus_error
// Now that we have parsed the entire byte array from the caller
// we can call the ipmi router to do the work...
- r = ipmi_netfn_router(netfn, cmd, (void *)request, (void *)response, &resplen);
- if(r != 0)
+ r = ipmi_netfn_router(netfn, cmd, (void*)request, (void*)response,
+ &resplen);
+ if (r != 0)
{
#ifdef __IPMI_DEBUG__
- log<level::ERR>("ERROR in handling NetFn",
- entry("ERRNO=0x%X", -r),
- entry("NET_FUN=0x%X", netfn),
- entry("CMD=0x%X", cmd));
+ log<level::ERR>("ERROR in handling NetFn", entry("ERRNO=0x%X", -r),
+ entry("NET_FUN=0x%X", netfn), entry("CMD=0x%X", cmd));
#endif
resplen = 0;
}
@@ -427,27 +434,26 @@ static int handle_ipmi_command(sd_bus_message *m, void *user_data, sd_bus_error
}
fprintf(ipmiio, "IPMI Response:\n");
- hexdump(ipmiio, (void*)response, resplen);
+ hexdump(ipmiio, (void*)response, resplen);
// Send the response buffer from the ipmi command
r = send_ipmi_message(m, sequence, netfn, lun, cmd, response[0],
- ((unsigned char *)response) + 1, resplen);
- if (r < 0) {
+ ((unsigned char*)response) + 1, resplen);
+ if (r < 0)
+ {
log<level::ERR>("Failed to send the response message");
return -1;
}
-
return 0;
}
-
//----------------------------------------------------------------------
// handler_select
// Select all the files ending with with .so. in the given diretcory
// @d: dirent structure containing the file name
//----------------------------------------------------------------------
-int handler_select(const struct dirent *entry)
+int handler_select(const struct dirent* entry)
{
// To hold ".so" from entry->d_name;
char dname_copy[4] = {0};
@@ -455,18 +461,19 @@ int handler_select(const struct dirent *entry)
// We want to avoid checking for everything and isolate to the ones having
// .so.* or .so in them.
// Check for versioned libraries .so.*
- if(strstr(entry->d_name, IPMI_PLUGIN_SONAME_EXTN))
+ if (strstr(entry->d_name, IPMI_PLUGIN_SONAME_EXTN))
{
return 1;
}
// Check for non versioned libraries .so
- else if(strstr(entry->d_name, IPMI_PLUGIN_EXTN))
+ else if (strstr(entry->d_name, IPMI_PLUGIN_EXTN))
{
// It is possible that .so could be anywhere in the string but unlikely
// But being careful here. Get the base address of the string, move
// until end and come back 3 steps and that gets what we need.
- strcpy(dname_copy, (entry->d_name + strlen(entry->d_name)-strlen(IPMI_PLUGIN_EXTN)));
- if(strcmp(dname_copy, IPMI_PLUGIN_EXTN) == 0)
+ strcpy(dname_copy, (entry->d_name + strlen(entry->d_name) -
+ strlen(IPMI_PLUGIN_EXTN)));
+ if (strcmp(dname_copy, IPMI_PLUGIN_EXTN) == 0)
{
return 1;
}
@@ -474,18 +481,18 @@ int handler_select(const struct dirent *entry)
return 0;
}
-// This will do a dlopen of every .so in ipmi_lib_path and will dlopen everything so that they will
-// register a callback handler
+// This will do a dlopen of every .so in ipmi_lib_path and will dlopen
+// everything so that they will register a callback handler
void ipmi_register_callback_handlers(const char* ipmi_lib_path)
{
// For walking the ipmi_lib_path
- struct dirent **handler_list;
+ struct dirent** handler_list;
int num_handlers = 0;
// This is used to check and abort if someone tries to register a bad one.
- void *lib_handler = NULL;
+ void* lib_handler = NULL;
- if(ipmi_lib_path == NULL)
+ if (ipmi_lib_path == NULL)
{
log<level::ERR>("No handlers to be registered for ipmi.. Aborting");
assert(0);
@@ -503,11 +510,12 @@ void ipmi_register_callback_handlers(const char* ipmi_lib_path)
// already a .so, adding one more is not any harm.
handler_fqdn += "/";
- num_handlers = scandir(ipmi_lib_path, &handler_list, handler_select, alphasort);
+ num_handlers =
+ scandir(ipmi_lib_path, &handler_list, handler_select, alphasort);
if (num_handlers < 0)
return;
- while(num_handlers--)
+ while (num_handlers--)
{
handler_fqdn = ipmi_lib_path;
handler_fqdn += handler_list[num_handlers]->d_name;
@@ -518,7 +526,7 @@ void ipmi_register_callback_handlers(const char* ipmi_lib_path)
lib_handler = dlopen(handler_fqdn.c_str(), RTLD_NOW);
- if(lib_handler == NULL)
+ if (lib_handler == NULL)
{
log<level::ERR>("ERROR opening",
entry("HANDLER=%s", handler_fqdn.c_str()),
@@ -536,67 +544,75 @@ void ipmi_register_callback_handlers(const char* ipmi_lib_path)
return;
}
-sd_bus *ipmid_get_sd_bus_connection(void) {
+sd_bus* ipmid_get_sd_bus_connection(void)
+{
return bus;
}
-sd_event *ipmid_get_sd_event_connection(void) {
+sd_event* ipmid_get_sd_event_connection(void)
+{
return events;
}
-sd_bus_slot *ipmid_get_sd_bus_slot(void) {
+sd_bus_slot* ipmid_get_sd_bus_slot(void)
+{
return ipmid_slot;
}
// Calls host command manager to do the right thing for the command
-void ipmid_send_cmd_to_host(CommandHandler&& cmd) {
- return cmdManager->execute(std::move(cmd));
+void ipmid_send_cmd_to_host(CommandHandler&& cmd)
+{
+ return cmdManager->execute(std::move(cmd));
}
-cmdManagerPtr& ipmid_get_host_cmd_manager() {
- return cmdManager;
+cmdManagerPtr& ipmid_get_host_cmd_manager()
+{
+ return cmdManager;
}
-sdbusPtr& ipmid_get_sdbus_plus_handler() {
- return sdbusp;
+sdbusPtr& ipmid_get_sdbus_plus_handler()
+{
+ return sdbusp;
}
-int main(int argc, char *argv[])
+int main(int argc, char* argv[])
{
int r;
unsigned long tvalue;
int c;
-
-
// This file and subsequient switch is for turning on levels
// of trace
- ipmicmddetails = ipmiio = ipmidbus = fopen("/dev/null", "w");
+ ipmicmddetails = ipmiio = ipmidbus = fopen("/dev/null", "w");
- while ((c = getopt (argc, argv, "h:d:")) != -1)
- switch (c) {
+ while ((c = getopt(argc, argv, "h:d:")) != -1)
+ switch (c)
+ {
case 'd':
- tvalue = strtoul(optarg, NULL, 16);
- if (1&tvalue) {
+ tvalue = strtoul(optarg, NULL, 16);
+ if (1 & tvalue)
+ {
ipmiio = stdout;
}
- if (2&tvalue) {
+ if (2 & tvalue)
+ {
ipmidbus = stdout;
}
- if (4&tvalue) {
+ if (4 & tvalue)
+ {
ipmicmddetails = stdout;
}
break;
- case 'h':
- case '?':
+ case 'h':
+ case '?':
print_usage();
return 1;
}
-
/* Connect to system bus */
r = sd_bus_open_system(&bus);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to connect to system bus",
entry("ERRNO=0x%X", -r));
goto finish;
@@ -614,8 +630,8 @@ int main(int argc, char *argv[])
// Now create the Host Bound Command manager. Need sdbusplus
// to use the generated bindings
sdbusp = std::make_unique<sdbusplus::bus::bus>(bus);
- cmdManager = std::make_unique<phosphor::host::command::Manager>(
- *sdbusp, events);
+ cmdManager =
+ std::make_unique<phosphor::host::command::Manager>(*sdbusp, events);
// Activate OemRouter.
oem::mutableRouter()->activate();
@@ -623,11 +639,11 @@ int main(int argc, char *argv[])
// Register all the handlers that provider implementation to IPMI commands.
ipmi_register_callback_handlers(HOST_IPMI_LIB_PATH);
- // Watch for BT messages
+ // Watch for BT messages
r = sd_bus_add_match(bus, &ipmid_slot, FILTER, handle_ipmi_command, NULL);
- if (r < 0) {
- log<level::ERR>("Failed: sd_bus_add_match",
- entry("FILTER=%s", FILTER),
+ if (r < 0)
+ {
+ log<level::ERR>("Failed: sd_bus_add_match", entry("FILTER=%s", FILTER),
entry("ERRNO=0x%X", -r));
goto finish;
}
@@ -640,8 +656,7 @@ int main(int argc, char *argv[])
using namespace internal::cache;
sdbusplus::bus::bus dbus{bus};
objects = std::make_unique<settings::Objects>(
- dbus,
- std::vector<settings::Interface>({restrictionModeIntf}));
+ dbus, std::vector<settings::Interface>({restrictionModeIntf}));
// Initialize restricted mode
cache_restricted_mode();
// Wait for changes on Restricted mode
@@ -652,7 +667,8 @@ int main(int argc, char *argv[])
restrictionModeIntf),
handle_restricted_mode_change);
- for (;;) {
+ for (;;)
+ {
/* Process requests */
r = sd_event_run(events, (uint64_t)-1);
if (r < 0)
@@ -670,5 +686,4 @@ finish:
sd_bus_slot_unref(ipmid_slot);
sd_bus_unref(bus);
return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
-
}
diff --git a/ipmid.hpp b/ipmid.hpp
index e0873aa..9d62611 100644
--- a/ipmid.hpp
+++ b/ipmid.hpp
@@ -1,13 +1,16 @@
#ifndef __HOST_IPMID_IPMI_H__
#define __HOST_IPMID_IPMI_H__
-#include "host-ipmid/ipmid-api.h"
#include <stdio.h>
+#include "host-ipmid/ipmid-api.h"
+
// When the requester sends in a netfn and a command along with data, this
// function will look for registered handlers that will handle that [netfn,cmd]
-// and will make a call to that plugin implementation and send back the response.
-ipmi_ret_t ipmi_netfn_router(const ipmi_netfn_t, const ipmi_cmd_t, ipmi_request_t,
- ipmi_response_t, unsigned int *data_len);
+// and will make a call to that plugin implementation and send back the
+// response.
+ipmi_ret_t ipmi_netfn_router(const ipmi_netfn_t, const ipmi_cmd_t,
+ ipmi_request_t, ipmi_response_t,
+ unsigned int* data_len);
// Plugin libraries need to _end_ with .so
#define IPMI_PLUGIN_EXTN ".so"
diff --git a/ipmisensor.cpp b/ipmisensor.cpp
index bb5dd96..b3fac2c 100644
--- a/ipmisensor.cpp
+++ b/ipmisensor.cpp
@@ -1,305 +1,351 @@
+#include <malloc.h>
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
-#include <stdint.h>
-#include <malloc.h>
+
#include "sensorhandler.h"
extern uint8_t find_type_for_sensor_number(uint8_t);
-
-struct sensorRES_t {
- uint8_t sensor_number;
- uint8_t operation;
- uint8_t sensor_reading;
- uint8_t assert_state7_0;
- uint8_t assert_state14_8;
- uint8_t deassert_state7_0;
- uint8_t deassert_state14_8;
- uint8_t event_data1;
- uint8_t event_data2;
- uint8_t event_data3;
-} __attribute__ ((packed));
-
-#define ISBITSET(x,y) (((x)>>(y))&0x01)
+struct sensorRES_t
+{
+ uint8_t sensor_number;
+ uint8_t operation;
+ uint8_t sensor_reading;
+ uint8_t assert_state7_0;
+ uint8_t assert_state14_8;
+ uint8_t deassert_state7_0;
+ uint8_t deassert_state14_8;
+ uint8_t event_data1;
+ uint8_t event_data2;
+ uint8_t event_data3;
+} __attribute__((packed));
+
+#define ISBITSET(x, y) (((x) >> (y)) & 0x01)
#define ASSERTINDEX 0
#define DEASSERTINDEX 1
-// Sensor Type, Offset, function handler, Dbus Method, Assert value, Deassert value
-struct lookup_t {
- uint8_t sensor_type;
- uint8_t offset;
- int (*func)(const sensorRES_t *, const lookup_t *, const char *);
- char member[16];
- char assertion[64];
- char deassertion[64];
+// Sensor Type, Offset, function handler, Dbus Method, Assert value, Deassert
+// value
+struct lookup_t
+{
+ uint8_t sensor_type;
+ uint8_t offset;
+ int (*func)(const sensorRES_t*, const lookup_t*, const char*);
+ char member[16];
+ char assertion[64];
+ char deassertion[64];
};
-extern int updateDbusInterface(uint8_t , const char *, const char *);
+extern int updateDbusInterface(uint8_t, const char*, const char*);
-int set_sensor_dbus_state_simple(const sensorRES_t *pRec, const lookup_t *pTable, const char *value) {
+int set_sensor_dbus_state_simple(const sensorRES_t* pRec,
+ const lookup_t* pTable, const char* value)
+{
- return set_sensor_dbus_state_s(pRec->sensor_number,
- pTable->member,
- value);
+ return set_sensor_dbus_state_s(pRec->sensor_number, pTable->member, value);
}
-struct event_data_t {
- uint8_t data;
- char text[64];
+struct event_data_t
+{
+ uint8_t data;
+ char text[64];
};
-event_data_t g_fwprogress02h[] = {
- {0x00, "Unspecified"},
- {0x01, "Memory Init"},
- {0x02, "HD Init"},
- {0x03, "Secondary Proc Init"},
- {0x04, "User Authentication"},
- {0x05, "User init system setup"},
- {0x06, "USB configuration"},
- {0x07, "PCI configuration"},
- {0x08, "Option ROM Init"},
- {0x09, "Video Init"},
- {0x0A, "Cache Init"},
- {0x0B, "SM Bus init"},
- {0x0C, "Keyboard Init"},
- {0x0D, "Embedded ctrl init"},
- {0x0E, "Docking station attachment"},
- {0x0F, "Enable docking station"},
- {0x10, "Docking station ejection"},
- {0x11, "Disabling docking station"},
- {0x12, "Calling OS Wakeup"},
- {0x13, "Starting OS"},
- {0x14, "Baseboard Init"},
- {0x15, ""},
- {0x16, "Floppy Init"},
- {0x17, "Keyboard Test"},
- {0x18, "Pointing Device Test"},
- {0x19, "Primary Proc Init"},
- {0xFF, "Unknown"}
-};
+event_data_t g_fwprogress02h[] = {{0x00, "Unspecified"},
+ {0x01, "Memory Init"},
+ {0x02, "HD Init"},
+ {0x03, "Secondary Proc Init"},
+ {0x04, "User Authentication"},
+ {0x05, "User init system setup"},
+ {0x06, "USB configuration"},
+ {0x07, "PCI configuration"},
+ {0x08, "Option ROM Init"},
+ {0x09, "Video Init"},
+ {0x0A, "Cache Init"},
+ {0x0B, "SM Bus init"},
+ {0x0C, "Keyboard Init"},
+ {0x0D, "Embedded ctrl init"},
+ {0x0E, "Docking station attachment"},
+ {0x0F, "Enable docking station"},
+ {0x10, "Docking station ejection"},
+ {0x11, "Disabling docking station"},
+ {0x12, "Calling OS Wakeup"},
+ {0x13, "Starting OS"},
+ {0x14, "Baseboard Init"},
+ {0x15, ""},
+ {0x16, "Floppy Init"},
+ {0x17, "Keyboard Test"},
+ {0x18, "Pointing Device Test"},
+ {0x19, "Primary Proc Init"},
+ {0xFF, "Unknown"}};
event_data_t g_fwprogress00h[] = {
- {0x00, "Unspecified."},
- {0x01, "No system memory detected"},
- {0x02, "No usable system memory"},
- {0x03, "Unrecoverable hard-disk/ATAPI/IDE"},
- {0x04, "Unrecoverable system-board"},
- {0x05, "Unrecoverable diskette"},
- {0x06, "Unrecoverable hard-disk controller"},
- {0x07, "Unrecoverable PS/2 or USB keyboard"},
- {0x08, "Removable boot media not found"},
- {0x09, "Unrecoverable video controller"},
- {0x0A, "No video device detected"},
- {0x0B, "Firmware ROM corruption detected"},
- {0x0C, "CPU voltage mismatch"},
- {0x0D, "CPU speed matching"},
- {0xFF, "unknown"},
+ {0x00, "Unspecified."},
+ {0x01, "No system memory detected"},
+ {0x02, "No usable system memory"},
+ {0x03, "Unrecoverable hard-disk/ATAPI/IDE"},
+ {0x04, "Unrecoverable system-board"},
+ {0x05, "Unrecoverable diskette"},
+ {0x06, "Unrecoverable hard-disk controller"},
+ {0x07, "Unrecoverable PS/2 or USB keyboard"},
+ {0x08, "Removable boot media not found"},
+ {0x09, "Unrecoverable video controller"},
+ {0x0A, "No video device detected"},
+ {0x0B, "Firmware ROM corruption detected"},
+ {0x0C, "CPU voltage mismatch"},
+ {0x0D, "CPU speed matching"},
+ {0xFF, "unknown"},
};
+char* event_data_lookup(event_data_t* p, uint8_t b)
+{
-char *event_data_lookup(event_data_t *p, uint8_t b) {
-
- while(p->data != 0xFF) {
- if (p->data == b) {
- break;
- }
- p++;
- }
+ while (p->data != 0xFF)
+ {
+ if (p->data == b)
+ {
+ break;
+ }
+ p++;
+ }
- return p->text;
+ return p->text;
}
-
-
-// The fw progress sensor contains some additional information that needs to be processed
-// prior to calling the dbus code.
-int set_sensor_dbus_state_fwprogress(const sensorRES_t *pRec, const lookup_t *pTable, const char *value) {
-
- char valuestring[128];
- char* p = valuestring;
-
- switch (pTable->offset) {
-
- case 0x00 : snprintf(p, sizeof(valuestring), "POST Error, %s", event_data_lookup(g_fwprogress00h, pRec->event_data2));
- break;
- case 0x01 : /* Using g_fwprogress02h for 0x01 because that's what the ipmi spec says to do */
- snprintf(p, sizeof(valuestring), "FW Hang, %s", event_data_lookup(g_fwprogress02h, pRec->event_data2));
- break;
- case 0x02 : snprintf(p, sizeof(valuestring), "FW Progress, %s", event_data_lookup(g_fwprogress02h, pRec->event_data2));
- break;
- default : snprintf(p, sizeof(valuestring), "Internal warning, fw_progres offset unknown (0x%02x)", pTable->offset);
- break;
- }
-
- return set_sensor_dbus_state_s(pRec->sensor_number,
- pTable->member,
- p);
+// The fw progress sensor contains some additional information that needs to be
+// processed prior to calling the dbus code.
+int set_sensor_dbus_state_fwprogress(const sensorRES_t* pRec,
+ const lookup_t* pTable, const char* value)
+{
+
+ char valuestring[128];
+ char* p = valuestring;
+
+ switch (pTable->offset)
+ {
+
+ case 0x00:
+ snprintf(p, sizeof(valuestring), "POST Error, %s",
+ event_data_lookup(g_fwprogress00h, pRec->event_data2));
+ break;
+ case 0x01: /* Using g_fwprogress02h for 0x01 because that's what the
+ ipmi spec says to do */
+ snprintf(p, sizeof(valuestring), "FW Hang, %s",
+ event_data_lookup(g_fwprogress02h, pRec->event_data2));
+ break;
+ case 0x02:
+ snprintf(p, sizeof(valuestring), "FW Progress, %s",
+ event_data_lookup(g_fwprogress02h, pRec->event_data2));
+ break;
+ default:
+ snprintf(p, sizeof(valuestring),
+ "Internal warning, fw_progres offset unknown (0x%02x)",
+ pTable->offset);
+ break;
+ }
+
+ return set_sensor_dbus_state_s(pRec->sensor_number, pTable->member, p);
}
-// Handling this special OEM sensor by coping what is in byte 4. I also think that is odd
-// considering byte 3 is for sensor reading. This seems like a misuse of the IPMI spec
-int set_sensor_dbus_state_osbootcount(const sensorRES_t *pRec, const lookup_t *pTable, const char *value) {
- return set_sensor_dbus_state_y(pRec->sensor_number,
- "setValue",
+// Handling this special OEM sensor by coping what is in byte 4. I also think
+// that is odd considering byte 3 is for sensor reading. This seems like a
+// misuse of the IPMI spec
+int set_sensor_dbus_state_osbootcount(const sensorRES_t* pRec,
+ const lookup_t* pTable, const char* value)
+{
+ return set_sensor_dbus_state_y(pRec->sensor_number, "setValue",
pRec->assert_state7_0);
}
-int set_sensor_dbus_state_system_event(const sensorRES_t *pRec, const lookup_t *pTable, const char *value) {
- char valuestring[128];
- char* p = valuestring;
-
- switch (pTable->offset) {
-
- case 0x00 : snprintf(p, sizeof(valuestring), "System Reconfigured");
- break;
- case 0x01 : snprintf(p, sizeof(valuestring), "OEM Boot Event");
- break;
- case 0x02 : snprintf(p, sizeof(valuestring), "Undetermined System Hardware Failure");
- break;
- case 0x03 : snprintf(p, sizeof(valuestring), "System Failure see error log for more details (0x%02x)", pRec->event_data2);
- break;
- case 0x04 : snprintf(p, sizeof(valuestring), "System Failure see PEF error log for more details (0x%02x)", pRec->event_data2);
- break;
- default : snprintf(p, sizeof(valuestring), "Internal warning, system_event offset unknown (0x%02x)", pTable->offset);
- break;
- }
-
- return set_sensor_dbus_state_s(pRec->sensor_number,
- pTable->member,
- p);
+int set_sensor_dbus_state_system_event(const sensorRES_t* pRec,
+ const lookup_t* pTable,
+ const char* value)
+{
+ char valuestring[128];
+ char* p = valuestring;
+
+ switch (pTable->offset)
+ {
+
+ case 0x00:
+ snprintf(p, sizeof(valuestring), "System Reconfigured");
+ break;
+ case 0x01:
+ snprintf(p, sizeof(valuestring), "OEM Boot Event");
+ break;
+ case 0x02:
+ snprintf(p, sizeof(valuestring),
+ "Undetermined System Hardware Failure");
+ break;
+ case 0x03:
+ snprintf(p, sizeof(valuestring),
+ "System Failure see error log for more details (0x%02x)",
+ pRec->event_data2);
+ break;
+ case 0x04:
+ snprintf(
+ p, sizeof(valuestring),
+ "System Failure see PEF error log for more details (0x%02x)",
+ pRec->event_data2);
+ break;
+ default:
+ snprintf(p, sizeof(valuestring),
+ "Internal warning, system_event offset unknown (0x%02x)",
+ pTable->offset);
+ break;
+ }
+
+ return set_sensor_dbus_state_s(pRec->sensor_number, pTable->member, p);
}
-
// This table lists only senors we care about telling dbus about.
// Offset definition cab be found in section 42.2 of the IPMI 2.0
// spec. Add more if/when there are more items of interest.
lookup_t g_ipmidbuslookup[] = {
- {0xe9, 0x00, set_sensor_dbus_state_simple, "setValue", "Disabled", ""}, // OCC Inactive 0
- {0xe9, 0x01, set_sensor_dbus_state_simple, "setValue", "Enabled", ""}, // OCC Active 1
- // Turbo Allowed
- {0xda, 0x00, set_sensor_dbus_state_simple, "setValue", "True", "False"},
- // Power Supply Derating
- {0xb4, 0x00, set_sensor_dbus_state_simple, "setValue", "", ""},
- // Power Cap
- {0xC2, 0x00, set_sensor_dbus_state_simple, "setValue", "", ""},
- {0x07, 0x07, set_sensor_dbus_state_simple, "setPresent", "True", "False"},
- {0x07, 0x08, set_sensor_dbus_state_simple, "setFault", "True", "False"},
- {0x0C, 0x06, set_sensor_dbus_state_simple, "setPresent", "True", "False"},
- {0x0C, 0x04, set_sensor_dbus_state_simple, "setFault", "True", "False"},
- {0x0F, 0x02, set_sensor_dbus_state_fwprogress, "setValue", "True", "False"},
- {0x0F, 0x01, set_sensor_dbus_state_fwprogress, "setValue", "True", "False"},
- {0x0F, 0x00, set_sensor_dbus_state_fwprogress, "setValue", "True", "False"},
- {0xC7, 0x01, set_sensor_dbus_state_simple, "setFault", "True", "False"},
- {0xc3, 0x00, set_sensor_dbus_state_osbootcount, "setValue", "" ,""},
- {0x1F, 0x00, set_sensor_dbus_state_simple, "setValue", "Boot completed (00)", ""},
- {0x1F, 0x01, set_sensor_dbus_state_simple, "setValue", "Boot completed (01)", ""},
- {0x1F, 0x02, set_sensor_dbus_state_simple, "setValue", "PXE boot completed", ""},
- {0x1F, 0x03, set_sensor_dbus_state_simple, "setValue", "Diagnostic boot completed", ""},
- {0x1F, 0x04, set_sensor_dbus_state_simple, "setValue", "CD-ROM boot completed", ""},
- {0x1F, 0x05, set_sensor_dbus_state_simple, "setValue", "ROM boot completed", ""},
- {0x1F, 0x06, set_sensor_dbus_state_simple, "setValue", "Boot completed (06)", ""},
- {0x12, 0x00, set_sensor_dbus_state_system_event, "setValue", "", ""},
- {0x12, 0x01, set_sensor_dbus_state_system_event, "setValue", "", ""},
- {0x12, 0x02, set_sensor_dbus_state_system_event, "setValue", "", ""},
- {0x12, 0x03, set_sensor_dbus_state_system_event, "setValue", "", ""},
- {0x12, 0x04, set_sensor_dbus_state_system_event, "setValue", "", ""},
- {0xCA, 0x00, set_sensor_dbus_state_simple, "setValue", "Disabled", ""},
- {0xCA, 0x01, set_sensor_dbus_state_simple, "setValue", "Enabled", ""},
- {0xFF, 0xFF, NULL, "", "", ""}
-};
-
-
-void reportSensorEventAssert(sensorRES_t *pRec, int index) {
- lookup_t *pTable = &g_ipmidbuslookup[index];
- (*pTable->func)(pRec, pTable, pTable->assertion);
+ {0xe9, 0x00, set_sensor_dbus_state_simple, "setValue", "Disabled",
+ ""}, // OCC Inactive 0
+ {0xe9, 0x01, set_sensor_dbus_state_simple, "setValue", "Enabled",
+ ""}, // OCC Active 1
+ // Turbo Allowed
+ {0xda, 0x00, set_sensor_dbus_state_simple, "setValue", "True", "False"},
+ // Power Supply Derating
+ {0xb4, 0x00, set_sensor_dbus_state_simple, "setValue", "", ""},
+ // Power Cap
+ {0xC2, 0x00, set_sensor_dbus_state_simple, "setValue", "", ""},
+ {0x07, 0x07, set_sensor_dbus_state_simple, "setPresent", "True", "False"},
+ {0x07, 0x08, set_sensor_dbus_state_simple, "setFault", "True", "False"},
+ {0x0C, 0x06, set_sensor_dbus_state_simple, "setPresent", "True", "False"},
+ {0x0C, 0x04, set_sensor_dbus_state_simple, "setFault", "True", "False"},
+ {0x0F, 0x02, set_sensor_dbus_state_fwprogress, "setValue", "True", "False"},
+ {0x0F, 0x01, set_sensor_dbus_state_fwprogress, "setValue", "True", "False"},
+ {0x0F, 0x00, set_sensor_dbus_state_fwprogress, "setValue", "True", "False"},
+ {0xC7, 0x01, set_sensor_dbus_state_simple, "setFault", "True", "False"},
+ {0xc3, 0x00, set_sensor_dbus_state_osbootcount, "setValue", "", ""},
+ {0x1F, 0x00, set_sensor_dbus_state_simple, "setValue",
+ "Boot completed (00)", ""},
+ {0x1F, 0x01, set_sensor_dbus_state_simple, "setValue",
+ "Boot completed (01)", ""},
+ {0x1F, 0x02, set_sensor_dbus_state_simple, "setValue", "PXE boot completed",
+ ""},
+ {0x1F, 0x03, set_sensor_dbus_state_simple, "setValue",
+ "Diagnostic boot completed", ""},
+ {0x1F, 0x04, set_sensor_dbus_state_simple, "setValue",
+ "CD-ROM boot completed", ""},
+ {0x1F, 0x05, set_sensor_dbus_state_simple, "setValue", "ROM boot completed",
+ ""},
+ {0x1F, 0x06, set_sensor_dbus_state_simple, "setValue",
+ "Boot completed (06)", ""},
+ {0x12, 0x00, set_sensor_dbus_state_system_event, "setValue", "", ""},
+ {0x12, 0x01, set_sensor_dbus_state_system_event, "setValue", "", ""},
+ {0x12, 0x02, set_sensor_dbus_state_system_event, "setValue", "", ""},
+ {0x12, 0x03, set_sensor_dbus_state_system_event, "setValue", "", ""},
+ {0x12, 0x04, set_sensor_dbus_state_system_event, "setValue", "", ""},
+ {0xCA, 0x00, set_sensor_dbus_state_simple, "setValue", "Disabled", ""},
+ {0xCA, 0x01, set_sensor_dbus_state_simple, "setValue", "Enabled", ""},
+ {0xFF, 0xFF, NULL, "", "", ""}};
+
+void reportSensorEventAssert(sensorRES_t* pRec, int index)
+{
+ lookup_t* pTable = &g_ipmidbuslookup[index];
+ (*pTable->func)(pRec, pTable, pTable->assertion);
}
-void reportSensorEventDeassert(sensorRES_t *pRec, int index) {
- lookup_t *pTable = &g_ipmidbuslookup[index];
- (*pTable->func)(pRec, pTable, pTable->deassertion);
+void reportSensorEventDeassert(sensorRES_t* pRec, int index)
+{
+ lookup_t* pTable = &g_ipmidbuslookup[index];
+ (*pTable->func)(pRec, pTable, pTable->deassertion);
}
+int findindex(const uint8_t sensor_type, int offset, int* index)
+{
-int findindex(const uint8_t sensor_type, int offset, int *index) {
-
- int i=0, rc=0;
- lookup_t *pTable = g_ipmidbuslookup;
+ int i = 0, rc = 0;
+ lookup_t* pTable = g_ipmidbuslookup;
- do {
- if ( ((pTable+i)->sensor_type == sensor_type) &&
- ((pTable+i)->offset == offset) ) {
- rc = 1;
- *index = i;
- break;
- }
- i++;
- } while ((pTable+i)->sensor_type != 0xFF);
+ do
+ {
+ if (((pTable + i)->sensor_type == sensor_type) &&
+ ((pTable + i)->offset == offset))
+ {
+ rc = 1;
+ *index = i;
+ break;
+ }
+ i++;
+ } while ((pTable + i)->sensor_type != 0xFF);
- return rc;
+ return rc;
}
-bool shouldReport(uint8_t sensorType, int offset, int *index) {
+bool shouldReport(uint8_t sensorType, int offset, int* index)
+{
- bool rc = false;
+ bool rc = false;
- if (findindex(sensorType, offset, index)) { rc = true; }
- if (rc == false) {
+ if (findindex(sensorType, offset, index))
+ {
+ rc = true;
+ }
+ if (rc == false)
+ {
#ifdef __IPMI_DEBUG__
log<level::DEBUG>("LOOKATME: Sensor should not be reported",
- entry("SENSORTYPE=0x%02x", sensorType),
- entry("OFFSET=0x%02x", offset));
+ entry("SENSORTYPE=0x%02x", sensorType),
+ entry("OFFSET=0x%02x", offset));
#endif
- }
+ }
- return rc;
+ return rc;
}
+int updateSensorRecordFromSSRAESC(const void* record)
+{
+
+ sensorRES_t* pRec = (sensorRES_t*)record;
+ uint8_t stype;
+ int index, i = 0;
+
+ stype = find_type_for_sensor_number(pRec->sensor_number);
+
+ // 0xC3 types use the assertion7_0 for the value to be set
+ // so skip the reseach and call the correct event reporting
+ // function
+ if (stype == 0xC3)
+ {
+
+ shouldReport(stype, 0x00, &index);
+ reportSensorEventAssert(pRec, index);
+ }
+ else
+ {
+ // Scroll through each bit position . Determine
+ // if any bit is either asserted or Deasserted.
+ for (i = 0; i < 8; i++)
+ {
+
+ if ((ISBITSET(pRec->assert_state7_0, i)) &&
+ (shouldReport(stype, i, &index)))
+ {
+ reportSensorEventAssert(pRec, index);
+ }
+ if ((ISBITSET(pRec->assert_state14_8, i)) &&
+ (shouldReport(stype, i + 8, &index)))
+ {
+ reportSensorEventAssert(pRec, index);
+ }
+ if ((ISBITSET(pRec->deassert_state7_0, i)) &&
+ (shouldReport(stype, i, &index)))
+ {
+ reportSensorEventDeassert(pRec, index);
+ }
+ if ((ISBITSET(pRec->deassert_state14_8, i)) &&
+ (shouldReport(stype, i + 8, &index)))
+ {
+ reportSensorEventDeassert(pRec, index);
+ }
+ }
+ }
-int updateSensorRecordFromSSRAESC(const void *record) {
-
- sensorRES_t *pRec = (sensorRES_t *) record;
- uint8_t stype;
- int index, i=0;
-
- stype = find_type_for_sensor_number(pRec->sensor_number);
-
- // 0xC3 types use the assertion7_0 for the value to be set
- // so skip the reseach and call the correct event reporting
- // function
- if (stype == 0xC3) {
-
- shouldReport(stype, 0x00, &index);
- reportSensorEventAssert(pRec, index);
-
- } else {
- // Scroll through each bit position . Determine
- // if any bit is either asserted or Deasserted.
- for(i=0;i<8;i++) {
-
- if ((ISBITSET(pRec->assert_state7_0,i)) &&
- (shouldReport(stype, i, &index)))
- {
- reportSensorEventAssert(pRec, index);
- }
- if ((ISBITSET(pRec->assert_state14_8,i)) &&
- (shouldReport(stype, i+8, &index)))
- {
- reportSensorEventAssert(pRec, index);
- }
- if ((ISBITSET(pRec->deassert_state7_0,i)) &&
- (shouldReport(stype, i, &index)))
- {
- reportSensorEventDeassert(pRec, index);
- }
- if ((ISBITSET(pRec->deassert_state14_8,i)) &&
- (shouldReport(stype, i+8, &index)))
- {
- reportSensorEventDeassert(pRec, index);
- }
- }
-
- }
-
-
- return 0;
+ return 0;
}
diff --git a/ipmiwhitelist.hpp b/ipmiwhitelist.hpp
index b07451a..7d096c2 100644
--- a/ipmiwhitelist.hpp
+++ b/ipmiwhitelist.hpp
@@ -1,8 +1,8 @@
#ifndef __HOST_IPMID_IPMI_WHITELIST_H__
#define __HOST_IPMID_IPMI_WHITELIST_H_
-#include <vector>
#include <utility>
+#include <vector>
using netfncmd_pair = std::pair<unsigned char, unsigned char>;
diff --git a/net.cpp b/net.cpp
index 17be41e..9de190f 100644
--- a/net.cpp
+++ b/net.cpp
@@ -1,8 +1,8 @@
+#include "utils.hpp"
+
#include <map>
#include <string>
-#include "utils.hpp"
-
// Not sure if this should live in utils. Because it's really a per-system
// configuration, instead of just hard-coding channel 1 to be eth0, one could
// conceivably configure it however they pleased.
@@ -31,4 +31,3 @@ std::string ChanneltoEthernet(int channel)
} // namespace network
} // namespace ipmi
-
diff --git a/oemrouter.cpp b/oemrouter.cpp
index 273a679..64944db 100644
--- a/oemrouter.cpp
+++ b/oemrouter.cpp
@@ -1,10 +1,10 @@
+#include "host-ipmid/oemrouter.hpp"
+
#include <cstdio>
#include <cstring>
#include <map>
#include <utility>
-#include "host-ipmid/oemrouter.hpp"
-
namespace oem
{
@@ -13,20 +13,21 @@ using Key = std::pair<Number, ipmi_cmd_t>;
// Private implementation of OemRouter Interface.
class RouterImpl : public Router
{
- public:
- RouterImpl() {}
+ public:
+ RouterImpl()
+ {
+ }
- // Implement OemRouter Interface.
- void activate() override;
- void registerHandler(Number oen, ipmi_cmd_t cmd,
- Handler handler) override;
+ // Implement OemRouter Interface.
+ void activate() override;
+ void registerHandler(Number oen, ipmi_cmd_t cmd, Handler handler) override;
- // Actual message routing function.
- ipmi_ret_t routeMsg(ipmi_cmd_t cmd, const uint8_t* reqBuf,
- uint8_t* replyBuf, size_t* dataLen);
+ // Actual message routing function.
+ ipmi_ret_t routeMsg(ipmi_cmd_t cmd, const uint8_t* reqBuf,
+ uint8_t* replyBuf, size_t* dataLen);
- private:
- std::map<Key, Handler> handlers;
+ private:
+ std::map<Key, Handler> handlers;
};
// Static global instance for simplicity.
@@ -66,8 +67,10 @@ ipmi_ret_t RouterImpl::routeMsg(ipmi_cmd_t cmd, const uint8_t* reqBuf,
iter = handlers.find(wildKey);
if (iter == handlers.end())
{
- fprintf(stderr, "No Registered handler for NetFn:[0x2E], "
- "OEM:[%#08X], Cmd:[%#04X]\n", number, cmd);
+ fprintf(stderr,
+ "No Registered handler for NetFn:[0x2E], "
+ "OEM:[%#08X], Cmd:[%#04X]\n",
+ number, cmd);
*dataLen = groupMagicSize;
return IPMI_CC_INVALID;
}
@@ -91,8 +94,8 @@ ipmi_ret_t RouterImpl::routeMsg(ipmi_cmd_t cmd, const uint8_t* reqBuf,
size_t oemDataLen = *dataLen - groupMagicSize;
Handler& handler = iter->second;
- auto rc = handler(cmd, reqBuf + groupMagicSize,
- replyBuf + groupMagicSize, &oemDataLen);
+ auto rc = handler(cmd, reqBuf + groupMagicSize, replyBuf + groupMagicSize,
+ &oemDataLen);
// Add OEMGroup bytes to nominal reply.
*dataLen = oemDataLen + groupMagicSize;
@@ -101,8 +104,8 @@ ipmi_ret_t RouterImpl::routeMsg(ipmi_cmd_t cmd, const uint8_t* reqBuf,
// Function suitable for use as ipmi_netfn_router() call-back.
// Translates call-back pointer args to more specific types.
-ipmi_ret_t ipmi_oem_wildcard_handler(ipmi_netfn_t /* netfn */,
- ipmi_cmd_t cmd, ipmi_request_t request,
+ipmi_ret_t ipmi_oem_wildcard_handler(ipmi_netfn_t /* netfn */, ipmi_cmd_t cmd,
+ ipmi_request_t request,
ipmi_response_t response,
ipmi_data_len_t dataLen,
ipmi_context_t context)
@@ -112,8 +115,7 @@ ipmi_ret_t ipmi_oem_wildcard_handler(ipmi_netfn_t /* netfn */,
uint8_t* replyBuf = static_cast<uint8_t*>(response);
// View context as router object, defaulting nullptr to global object.
- auto router = static_cast<RouterImpl*>(
- context ? context : mutableRouter());
+ auto router = static_cast<RouterImpl*>(context ? context : mutableRouter());
// Send message parameters to dispatcher.
return router->routeMsg(cmd, reqBuf, replyBuf, dataLen);
@@ -123,14 +125,13 @@ ipmi_ret_t ipmi_oem_wildcard_handler(ipmi_netfn_t /* netfn */,
void RouterImpl::activate()
{
// Register netfn 0x2e OEM Group, any (wildcard) command.
- printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n",
- NETFUN_OEM_GROUP, IPMI_CMD_WILDCARD);
+ printf("Registering NetFn:[0x%X], Cmd:[0x%X]\n", NETFUN_OEM_GROUP,
+ IPMI_CMD_WILDCARD);
ipmi_register_callback(NETFUN_OEM_GROUP, IPMI_CMD_WILDCARD, this,
ipmi_oem_wildcard_handler, PRIVILEGE_OEM);
}
-void RouterImpl::registerHandler(Number oen, ipmi_cmd_t cmd,
- Handler handler)
+void RouterImpl::registerHandler(Number oen, ipmi_cmd_t cmd, Handler handler)
{
auto cmdKey = std::make_pair(oen, cmd);
auto iter = handlers.find(cmdKey);
@@ -141,9 +142,11 @@ void RouterImpl::registerHandler(Number oen, ipmi_cmd_t cmd,
}
else
{
- fprintf(stderr, "ERROR : Duplicate registration for NetFn:[0x2E], "
- "OEM:[%#08X], Cmd:[%#04X]\n", oen, cmd);
+ fprintf(stderr,
+ "ERROR : Duplicate registration for NetFn:[0x2E], "
+ "OEM:[%#08X], Cmd:[%#04X]\n",
+ oen, cmd);
}
}
-} // namespace oem
+} // namespace oem
diff --git a/read_fru_data.cpp b/read_fru_data.cpp
index 5133612..4581a8c 100644
--- a/read_fru_data.cpp
+++ b/read_fru_data.cpp
@@ -1,11 +1,14 @@
-#include <map>
-#include <phosphor-logging/elog-errors.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
#include "read_fru_data.hpp"
+
#include "fruread.hpp"
-#include "host-ipmid/ipmid-api.h"
-#include "utils.hpp"
#include "types.hpp"
+#include "utils.hpp"
+
+#include <map>
+#include <phosphor-logging/elog-errors.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
+#include "host-ipmid/ipmid-api.h"
extern const FruMap frus;
namespace ipmi
@@ -14,22 +17,22 @@ namespace fru
{
using namespace phosphor::logging;
using InternalFailure =
- sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+ sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
std::unique_ptr<sdbusplus::bus::match_t> matchPtr(nullptr);
-static constexpr auto INV_INTF = "xyz.openbmc_project.Inventory.Manager";
-static constexpr auto OBJ_PATH = "/xyz/openbmc_project/inventory";
+static constexpr auto INV_INTF = "xyz.openbmc_project.Inventory.Manager";
+static constexpr auto OBJ_PATH = "/xyz/openbmc_project/inventory";
static constexpr auto PROP_INTF = "org.freedesktop.DBus.Properties";
namespace cache
{
- //User initiate read FRU info area command followed by
- //FRU read command. Also data is read in small chunks of
- //the specified offset and count.
- //Caching the data which will be invalidated when ever there
- //is a change in FRU properties.
- FRUAreaMap fruMap;
-}
+// User initiate read FRU info area command followed by
+// FRU read command. Also data is read in small chunks of
+// the specified offset and count.
+// Caching the data which will be invalidated when ever there
+// is a change in FRU properties.
+FRUAreaMap fruMap;
+} // namespace cache
/**
* @brief Read all the property value's for the specified interface
* from Inventory.
@@ -39,21 +42,19 @@ namespace cache
* @return map of properties
*/
ipmi::PropertyMap readAllProperties(const std::string& intf,
- const std::string& path)
+ const std::string& path)
{
ipmi::PropertyMap properties;
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
auto service = ipmi::getService(bus, INV_INTF, OBJ_PATH);
std::string objPath = OBJ_PATH + path;
- auto method = bus.new_method_call(service.c_str(),
- objPath.c_str(),
- PROP_INTF,
- "GetAll");
+ auto method = bus.new_method_call(service.c_str(), objPath.c_str(),
+ PROP_INTF, "GetAll");
method.append(intf);
auto reply = bus.call(method);
if (reply.is_method_error())
{
- //If property is not found simply return empty value
+ // If property is not found simply return empty value
log<level::ERR>("Error in reading property values from inventory",
entry("INTERFACE=%s", intf.c_str()),
entry("PATH=%s", objPath.c_str()));
@@ -65,12 +66,12 @@ ipmi::PropertyMap readAllProperties(const std::string& intf,
void processFruPropChange(sdbusplus::message::message& msg)
{
- if(cache::fruMap.empty())
+ if (cache::fruMap.empty())
{
return;
}
std::string path = msg.get_path();
- //trim the object base path, if found at the beginning
+ // trim the object base path, if found at the beginning
if (path.compare(0, strlen(OBJ_PATH), OBJ_PATH) == 0)
{
path.erase(0, strlen(OBJ_PATH));
@@ -82,7 +83,7 @@ void processFruPropChange(sdbusplus::message::message& msg)
auto& instanceList = fru.second;
for (auto& instance : instanceList)
{
- if(instance.path == path)
+ if (instance.path == path)
{
found = true;
break;
@@ -96,19 +97,17 @@ void processFruPropChange(sdbusplus::message::message& msg)
}
}
-//register for fru property change
+// register for fru property change
int registerCallbackHandler()
{
- if(matchPtr == nullptr)
+ if (matchPtr == nullptr)
{
using namespace sdbusplus::bus::match::rules;
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
matchPtr = std::make_unique<sdbusplus::bus::match_t>(
bus,
- path_namespace(OBJ_PATH) +
- type::signal() +
- member("PropertiesChanged") +
- interface(PROP_INTF),
+ path_namespace(OBJ_PATH) + type::signal() +
+ member("PropertiesChanged") + interface(PROP_INTF),
std::bind(processFruPropChange, std::placeholders::_1));
}
return 0;
@@ -125,7 +124,7 @@ FruInventoryData readDataFromInventory(const FRUId& fruNum)
auto iter = frus.find(fruNum);
if (iter == frus.end())
{
- log<level::ERR>("Unsupported FRU ID ",entry("FRUID=%d", fruNum));
+ log<level::ERR>("Unsupported FRU ID ", entry("FRUID=%d", fruNum));
elog<InternalFailure>();
}
@@ -135,15 +134,17 @@ FruInventoryData readDataFromInventory(const FRUId& fruNum)
{
for (auto& intf : instance.interfaces)
{
- ipmi::PropertyMap allProp = readAllProperties(
- intf.first, instance.path);
+ ipmi::PropertyMap allProp =
+ readAllProperties(intf.first, instance.path);
for (auto& properties : intf.second)
{
auto iter = allProp.find(properties.first);
if (iter != allProp.end())
{
- data[properties.second.section].emplace(properties.first,
- std::move(allProp[properties.first].get<std::string>()));
+ data[properties.second.section].emplace(
+ properties.first,
+ std::move(
+ allProp[properties.first].get<std::string>()));
}
}
}
@@ -160,10 +161,10 @@ const FruAreaData& getFruAreaData(const FRUId& fruNum)
}
auto invData = readDataFromInventory(fruNum);
- //Build area info based on inventory data
+ // Build area info based on inventory data
FruAreaData newdata = buildFruAreaData(std::move(invData));
cache::fruMap.emplace(fruNum, std::move(newdata));
return cache::fruMap.at(fruNum);
}
-} //fru
-} //ipmi
+} // namespace fru
+} // namespace ipmi
diff --git a/read_fru_data.hpp b/read_fru_data.hpp
index d715858..d3268b8 100644
--- a/read_fru_data.hpp
+++ b/read_fru_data.hpp
@@ -1,8 +1,9 @@
#pragma once
-#include <string>
-#include <sdbusplus/bus.hpp>
#include "ipmi_fru_info_area.hpp"
+#include <sdbusplus/bus.hpp>
+#include <string>
+
namespace ipmi
{
namespace fru
@@ -24,5 +25,5 @@ const FruAreaData& getFruAreaData(const FRUId& fruNum);
* @return negative value on failure
*/
int registerCallbackHandler();
-} //fru
-} //ipmi
+} // namespace fru
+} // namespace ipmi
diff --git a/sample.cpp b/sample.cpp
index 451c6c4..72a120a 100644
--- a/sample.cpp
+++ b/sample.cpp
@@ -3,7 +3,7 @@
int Factorial(int n)
{
int result = 1;
- for (int i=1; i<=n; i++)
+ for (int i = 1; i <= n; i++)
{
result *= i;
}
diff --git a/selutility.cpp b/selutility.cpp
index 5935de2..8e04ad4 100644
--- a/selutility.cpp
+++ b/selutility.cpp
@@ -4,25 +4,29 @@
#include <filesystem>
#elif __has_include(<experimental/filesystem>)
#include <experimental/filesystem>
-namespace std {
- // splice experimental::filesystem into std
- namespace filesystem = std::experimental::filesystem;
-}
+namespace std
+{
+// splice experimental::filesystem into std
+namespace filesystem = std::experimental::filesystem;
+} // namespace std
#else
-# error filesystem not available
+#error filesystem not available
#endif
-#include <phosphor-logging/elog-errors.hpp>
-#include "host-ipmid/ipmid-api.h"
-#include "xyz/openbmc_project/Common/error.hpp"
#include "config.h"
+
#include "selutility.hpp"
#include "types.hpp"
#include "utils.hpp"
+#include <phosphor-logging/elog-errors.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
+#include "host-ipmid/ipmid-api.h"
+
extern const ipmi::sensor::InvObjectIDMap invSensors;
using namespace phosphor::logging;
using InternalFailure =
- sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+ sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
namespace ipmi
{
@@ -33,20 +37,18 @@ namespace sel
namespace internal
{
-GetSELEntryResponse prepareSELEntry(
- const std::string& objPath,
- ipmi::sensor::InvObjectIDMap::const_iterator iter)
+GetSELEntryResponse
+ prepareSELEntry(const std::string& objPath,
+ ipmi::sensor::InvObjectIDMap::const_iterator iter)
{
- GetSELEntryResponse record {};
+ GetSELEntryResponse record{};
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
auto service = ipmi::getService(bus, logEntryIntf, objPath);
// Read all the log entry properties.
- auto methodCall = bus.new_method_call(service.c_str(),
- objPath.c_str(),
- propIntf,
- "GetAll");
+ auto methodCall = bus.new_method_call(service.c_str(), objPath.c_str(),
+ propIntf, "GetAll");
methodCall.append(logEntryIntf);
auto reply = bus.call(methodCall);
@@ -69,7 +71,7 @@ GetSELEntryResponse prepareSELEntry(
}
record.recordID = static_cast<uint16_t>(
- sdbusplus::message::variant_ns::get<uint32_t>(iterId->second));
+ sdbusplus::message::variant_ns::get<uint32_t>(iterId->second));
// Read Timestamp from the log entry.
static constexpr auto propTimeStamp = "Timestamp";
@@ -81,10 +83,10 @@ GetSELEntryResponse prepareSELEntry(
}
std::chrono::milliseconds chronoTimeStamp(
- sdbusplus::message::variant_ns::get<uint64_t>
- (iterTimeStamp->second));
- record.timeStamp = static_cast<uint32_t>(std::chrono::duration_cast<
- std::chrono::seconds>(chronoTimeStamp).count());
+ sdbusplus::message::variant_ns::get<uint64_t>(iterTimeStamp->second));
+ record.timeStamp = static_cast<uint32_t>(
+ std::chrono::duration_cast<std::chrono::seconds>(chronoTimeStamp)
+ .count());
static constexpr auto systemEventRecord = 0x02;
static constexpr auto generatorID = 0x2000;
@@ -134,10 +136,8 @@ GetSELEntryResponse convertLogEntrytoSEL(const std::string& objPath)
auto service = ipmi::getService(bus, assocIntf, objPath);
// Read the Associations interface.
- auto methodCall = bus.new_method_call(service.c_str(),
- objPath.c_str(),
- propIntf,
- "Get");
+ auto methodCall =
+ bus.new_method_call(service.c_str(), objPath.c_str(), propIntf, "Get");
methodCall.append(assocIntf);
methodCall.append(assocProp);
@@ -148,14 +148,13 @@ GetSELEntryResponse convertLogEntrytoSEL(const std::string& objPath)
elog<InternalFailure>();
}
- using AssociationList = std::vector<std::tuple<
- std::string, std::string, std::string>>;
+ using AssociationList =
+ std::vector<std::tuple<std::string, std::string, std::string>>;
sdbusplus::message::variant<AssociationList> list;
reply.read(list);
- auto& assocs = sdbusplus::message::variant_ns::get<AssociationList>
- (list);
+ auto& assocs = sdbusplus::message::variant_ns::get<AssociationList>(list);
/*
* Check if the log entry has any callout associations, if there is a
@@ -166,18 +165,18 @@ GetSELEntryResponse convertLogEntrytoSEL(const std::string& objPath)
{
if (std::get<0>(item).compare(CALLOUT_FWD_ASSOCIATION) == 0)
{
- auto iter = invSensors.find(std::get<2>(item));
- if (iter == invSensors.end())
- {
- iter = invSensors.find(BOARD_SENSOR);
- if (iter == invSensors.end())
- {
- log<level::ERR>("Motherboard sensor not found");
- elog<InternalFailure>();
- }
- }
-
- return internal::prepareSELEntry(objPath, iter);
+ auto iter = invSensors.find(std::get<2>(item));
+ if (iter == invSensors.end())
+ {
+ iter = invSensors.find(BOARD_SENSOR);
+ if (iter == invSensors.end())
+ {
+ log<level::ERR>("Motherboard sensor not found");
+ elog<InternalFailure>();
+ }
+ }
+
+ return internal::prepareSELEntry(objPath, iter);
}
}
@@ -202,10 +201,8 @@ std::chrono::seconds getEntryTimeStamp(const std::string& objPath)
using namespace std::string_literals;
static const auto propTimeStamp = "Timestamp"s;
- auto methodCall = bus.new_method_call(service.c_str(),
- objPath.c_str(),
- propIntf,
- "Get");
+ auto methodCall =
+ bus.new_method_call(service.c_str(), objPath.c_str(), propIntf, "Get");
methodCall.append(logEntryIntf);
methodCall.append(propTimeStamp);
@@ -220,7 +217,7 @@ std::chrono::seconds getEntryTimeStamp(const std::string& objPath)
reply.read(timeStamp);
std::chrono::milliseconds chronoTimeStamp(
- sdbusplus::message::variant_ns::get<uint64_t>(timeStamp));
+ sdbusplus::message::variant_ns::get<uint64_t>(timeStamp));
return std::chrono::duration_cast<std::chrono::seconds>(chronoTimeStamp);
}
@@ -231,10 +228,8 @@ void readLoggingObjectPaths(ObjectPaths& paths)
auto depth = 0;
paths.clear();
- auto mapperCall = bus.new_method_call(mapperBusName,
- mapperObjPath,
- mapperIntf,
- "GetSubTreePaths");
+ auto mapperCall = bus.new_method_call(mapperBusName, mapperObjPath,
+ mapperIntf, "GetSubTreePaths");
mapperCall.append(logBasePath);
mapperCall.append(depth);
mapperCall.append(ObjectPaths({logEntryIntf}));
@@ -248,17 +243,16 @@ void readLoggingObjectPaths(ObjectPaths& paths)
{
reply.read(paths);
- std::sort(paths.begin(), paths.end(), [](const std::string& a,
- const std::string& b)
- {
- namespace fs = std::filesystem;
- fs::path pathA(a);
- fs::path pathB(b);
- auto idA = std::stoul(pathA.filename().string());
- auto idB = std::stoul(pathB.filename().string());
-
- return idA < idB;
- });
+ std::sort(paths.begin(), paths.end(),
+ [](const std::string& a, const std::string& b) {
+ namespace fs = std::filesystem;
+ fs::path pathA(a);
+ fs::path pathB(b);
+ auto idA = std::stoul(pathA.filename().string());
+ auto idB = std::stoul(pathB.filename().string());
+
+ return idA < idB;
+ });
}
}
diff --git a/selutility.hpp b/selutility.hpp
index 57ed24f..5262d82 100644
--- a/selutility.hpp
+++ b/selutility.hpp
@@ -1,8 +1,9 @@
#pragma once
+#include "types.hpp"
+
#include <cstdint>
#include <sdbusplus/server.hpp>
-#include "types.hpp"
namespace ipmi
{
@@ -28,7 +29,7 @@ using Timestamp = uint64_t;
using Message = std::string;
using AdditionalData = std::vector<std::string>;
using PropertyType = sdbusplus::message::variant<Resolved, Id, Timestamp,
- Message, AdditionalData>;
+ Message, AdditionalData>;
static constexpr auto selVersion = 0x51;
static constexpr auto invalidTimeStamp = 0xFFFFFFFF;
@@ -40,12 +41,12 @@ static constexpr auto operationSupport = 0x0A;
*/
struct GetSELInfoResponse
{
- uint8_t selVersion; //!< SEL revision.
- uint16_t entries; //!< Number of log entries in SEL.
- uint16_t freeSpace; //!< Free Space in bytes.
- uint32_t addTimeStamp; //!< Most recent addition timestamp.
- uint32_t eraseTimeStamp; //!< Most recent erase timestamp.
- uint8_t operationSupport; //!< Operation support.
+ uint8_t selVersion; //!< SEL revision.
+ uint16_t entries; //!< Number of log entries in SEL.
+ uint16_t freeSpace; //!< Free Space in bytes.
+ uint32_t addTimeStamp; //!< Most recent addition timestamp.
+ uint32_t eraseTimeStamp; //!< Most recent erase timestamp.
+ uint8_t operationSupport; //!< Operation support.
} __attribute__((packed));
static constexpr auto firstEntry = 0x0000;
@@ -59,10 +60,10 @@ static constexpr auto selRecordSize = 16;
*/
struct GetSELEntryRequest
{
- uint16_t reservationID; //!< Reservation ID.
- uint16_t selRecordID; //!< SEL Record ID.
- uint8_t offset; //!< Offset into record.
- uint8_t readLength; //!< Bytes to read.
+ uint16_t reservationID; //!< Reservation ID.
+ uint16_t selRecordID; //!< SEL Record ID.
+ uint8_t offset; //!< Offset into record.
+ uint8_t readLength; //!< Bytes to read.
} __attribute__((packed));
/** @struct GetSELEntryResponse
@@ -71,18 +72,18 @@ struct GetSELEntryRequest
*/
struct GetSELEntryResponse
{
- uint16_t nextRecordID; //!< Next RecordID.
- uint16_t recordID; //!< Record ID.
- uint8_t recordType; //!< Record Type.
- uint32_t timeStamp; //!< Timestamp.
- uint16_t generatorID; //!< Generator ID.
- uint8_t eventMsgRevision; //!< Event Message Revision.
- uint8_t sensorType; //!< Sensor Type.
- uint8_t sensorNum; //!< Sensor Number.
- uint8_t eventType; //!< Event Dir | Event Type.
- uint8_t eventData1; //!< Event Data 1.
- uint8_t eventData2; //!< Event Data 2.
- uint8_t eventData3; //!< Event Data 3.
+ uint16_t nextRecordID; //!< Next RecordID.
+ uint16_t recordID; //!< Record ID.
+ uint8_t recordType; //!< Record Type.
+ uint32_t timeStamp; //!< Timestamp.
+ uint16_t generatorID; //!< Generator ID.
+ uint8_t eventMsgRevision; //!< Event Message Revision.
+ uint8_t sensorType; //!< Sensor Type.
+ uint8_t sensorNum; //!< Sensor Number.
+ uint8_t eventType; //!< Event Dir | Event Type.
+ uint8_t eventData1; //!< Event Data 1.
+ uint8_t eventData2; //!< Event Data 2.
+ uint8_t eventData3; //!< Event Data 3.
} __attribute__((packed));
/** @struct DeleteSELEntryRequest
@@ -91,8 +92,8 @@ struct GetSELEntryResponse
*/
struct DeleteSELEntryRequest
{
- uint16_t reservationID; //!< Reservation ID.
- uint16_t selRecordID; //!< SEL Record ID.
+ uint16_t reservationID; //!< Reservation ID.
+ uint16_t selRecordID; //!< SEL Record ID.
} __attribute__((packed));
static constexpr auto initiateErase = 0xAA;
@@ -105,11 +106,11 @@ static constexpr auto eraseComplete = 0x01;
*/
struct ClearSELRequest
{
- uint16_t reservationID; //!< Reservation ID.
- uint8_t charC; //!< Char 'C'(0x43h).
- uint8_t charL; //!< Char 'L'(0x4Ch).
- uint8_t charR; //!< Char 'R'(0x52h).
- uint8_t eraseOperation; //!< Erase operation.
+ uint16_t reservationID; //!< Reservation ID.
+ uint8_t charC; //!< Char 'C'(0x43h).
+ uint8_t charL; //!< Char 'L'(0x4Ch).
+ uint8_t charR; //!< Char 'R'(0x52h).
+ uint8_t eraseOperation; //!< Erase operation.
} __attribute__((packed));
/** @brief Convert logging entry to SEL
@@ -156,11 +157,11 @@ namespace internal
* @return On success return the SEL event record, throw an exception in case
* of failure.
*/
-GetSELEntryResponse prepareSELEntry(
- const std::string& objPath,
- ipmi::sensor::InvObjectIDMap::const_iterator iter);
+GetSELEntryResponse
+ prepareSELEntry(const std::string& objPath,
+ ipmi::sensor::InvObjectIDMap::const_iterator iter);
-}
+} // namespace internal
} // namespace sel
diff --git a/sensordatahandler.cpp b/sensordatahandler.cpp
index ef5089a..d4f1251 100644
--- a/sensordatahandler.cpp
+++ b/sensordatahandler.cpp
@@ -3,20 +3,23 @@
#include <filesystem>
#elif __has_include(<experimental/filesystem>)
#include <experimental/filesystem>
-namespace std {
- // splice experimental::filesystem into std
- namespace filesystem = std::experimental::filesystem;
-}
+namespace std
+{
+// splice experimental::filesystem into std
+namespace filesystem = std::experimental::filesystem;
+} // namespace std
#else
-# error filesystem not available
+#error filesystem not available
#endif
+#include "sensordatahandler.hpp"
+#include "types.hpp"
+#include "utils.hpp"
+
#include <phosphor-logging/elog-errors.hpp>
#include <phosphor-logging/log.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
-#include "types.hpp"
+#include <xyz/openbmc_project/Common/error.hpp>
+
#include "sensorhandler.h"
-#include "sensordatahandler.hpp"
-#include "utils.hpp"
namespace ipmi
{
@@ -42,10 +45,8 @@ ServicePath getServiceAndPath(sdbusplus::bus::bus& bus,
const std::string& path)
{
auto depth = 0;
- auto mapperCall = bus.new_method_call(MAPPER_BUSNAME,
- MAPPER_PATH,
- MAPPER_INTERFACE,
- "GetSubTree");
+ auto mapperCall = bus.new_method_call(MAPPER_BUSNAME, MAPPER_PATH,
+ MAPPER_INTERFACE, "GetSubTree");
mapperCall.append("/");
mapperCall.append(depth);
mapperCall.append(std::vector<Interface>({interface}));
@@ -71,7 +72,7 @@ ServicePath getServiceAndPath(sdbusplus::bus::bus& bus,
if (path.empty())
{
- //Get the first one if the path is not in list.
+ // Get the first one if the path is not in list.
return std::make_pair(mapperResponse.begin()->first,
mapperResponse.begin()->second.begin()->first);
}
@@ -139,7 +140,7 @@ GetSensorResponse mapDbusToAssertion(const Info& sensorInfo,
const DbusInterface& interface)
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- GetSensorResponse response {};
+ GetSensorResponse response{};
auto responseData = reinterpret_cast<GetReadingResponse*>(response.data());
auto service = ipmi::getService(bus, interface, path);
@@ -150,11 +151,8 @@ GetSensorResponse mapDbusToAssertion(const Info& sensorInfo,
{
for (const auto& property : interface.second)
{
- auto propValue = ipmi::getDbusProperty(bus,
- service,
- path,
- interface.first,
- property.first);
+ auto propValue = ipmi::getDbusProperty(
+ bus, service, path, interface.first, property.first);
for (const auto& value : std::get<OffsetValueMap>(property.second))
{
@@ -163,7 +161,6 @@ GetSensorResponse mapDbusToAssertion(const Info& sensorInfo,
setOffset(value.first, responseData);
break;
}
-
}
}
}
@@ -173,19 +170,17 @@ GetSensorResponse mapDbusToAssertion(const Info& sensorInfo,
GetSensorResponse assertion(const Info& sensorInfo)
{
- return mapDbusToAssertion(sensorInfo,
- sensorInfo.sensorPath,
+ return mapDbusToAssertion(sensorInfo, sensorInfo.sensorPath,
sensorInfo.sensorInterface);
}
GetSensorResponse eventdata2(const Info& sensorInfo)
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- GetSensorResponse response {};
+ GetSensorResponse response{};
auto responseData = reinterpret_cast<GetReadingResponse*>(response.data());
- auto service = ipmi::getService(bus,
- sensorInfo.sensorInterface,
+ auto service = ipmi::getService(bus, sensorInfo.sensorInterface,
sensorInfo.sensorPath);
const auto& interfaceList = sensorInfo.propertyInterfaces;
@@ -194,11 +189,9 @@ GetSensorResponse eventdata2(const Info& sensorInfo)
{
for (const auto& property : interface.second)
{
- auto propValue = ipmi::getDbusProperty(bus,
- service,
- sensorInfo.sensorPath,
- interface.first,
- property.first);
+ auto propValue =
+ ipmi::getDbusProperty(bus, service, sensorInfo.sensorPath,
+ interface.first, property.first);
for (const auto& value : std::get<OffsetValueMap>(property.second))
{
@@ -214,7 +207,7 @@ GetSensorResponse eventdata2(const Info& sensorInfo)
return response;
}
-} //namespace get
+} // namespace get
namespace set
{
@@ -227,25 +220,18 @@ IpmiUpdateData makeDbusMsg(const std::string& updateInterface,
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
using namespace std::string_literals;
- auto dbusService = getService(bus,
- sensorInterface,
- sensorPath);
+ auto dbusService = getService(bus, sensorInterface, sensorPath);
- return bus.new_method_call(dbusService.c_str(),
- sensorPath.c_str(),
- updateInterface.c_str(),
- command.c_str());
+ return bus.new_method_call(dbusService.c_str(), sensorPath.c_str(),
+ updateInterface.c_str(), command.c_str());
}
-ipmi_ret_t eventdata(const SetSensorReadingReq& cmdData,
- const Info& sensorInfo,
+ipmi_ret_t eventdata(const SetSensorReadingReq& cmdData, const Info& sensorInfo,
uint8_t data)
{
- auto msg = makeDbusMsg(
- "org.freedesktop.DBus.Properties",
- sensorInfo.sensorPath,
- "Set",
- sensorInfo.sensorInterface);
+ auto msg =
+ makeDbusMsg("org.freedesktop.DBus.Properties", sensorInfo.sensorPath,
+ "Set", sensorInfo.sensorInterface);
const auto& interface = sensorInfo.propertyInterfaces.begin();
msg.append(interface->first);
@@ -263,8 +249,7 @@ ipmi_ret_t eventdata(const SetSensorReadingReq& cmdData,
return updateToDbus(msg);
}
-ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
- const Info& sensorInfo)
+ipmi_ret_t assertion(const SetSensorReadingReq& cmdData, const Info& sensorInfo)
{
std::bitset<16> assertionSet(getAssertionSet(cmdData).first);
std::bitset<16> deassertionSet(getAssertionSet(cmdData).second);
@@ -297,11 +282,9 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
if (tmp.valid())
{
- auto msg = makeDbusMsg(
- "org.freedesktop.DBus.Properties",
- sensorInfo.sensorPath,
- "Set",
- sensorInfo.sensorInterface);
+ auto msg = makeDbusMsg("org.freedesktop.DBus.Properties",
+ sensorInfo.sensorPath, "Set",
+ sensorInfo.sensorInterface);
msg.append(interface->first);
msg.append(property.first);
msg.append(tmp);
@@ -317,7 +300,7 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
return IPMI_CC_OK;
}
-}//namespace set
+} // namespace set
namespace notify
{
@@ -333,20 +316,14 @@ IpmiUpdateData makeDbusMsg(const std::string& updateInterface,
static const auto dbusPath = "/xyz/openbmc_project/inventory"s;
std::string dbusService = ipmi::getService(bus, updateInterface, dbusPath);
- return bus.new_method_call(dbusService.c_str(),
- dbusPath.c_str(),
- updateInterface.c_str(),
- command.c_str());
+ return bus.new_method_call(dbusService.c_str(), dbusPath.c_str(),
+ updateInterface.c_str(), command.c_str());
}
-ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
- const Info& sensorInfo)
+ipmi_ret_t assertion(const SetSensorReadingReq& cmdData, const Info& sensorInfo)
{
- auto msg = makeDbusMsg(
- sensorInfo.sensorInterface,
- sensorInfo.sensorPath,
- "Notify",
- sensorInfo.sensorInterface);
+ auto msg = makeDbusMsg(sensorInfo.sensorInterface, sensorInfo.sensorPath,
+ "Notify", sensorInfo.sensorInterface);
std::bitset<16> assertionSet(getAssertionSet(cmdData).first);
std::bitset<16> deassertionSet(getAssertionSet(cmdData).second);
@@ -354,8 +331,8 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
ipmi::sensor::InterfaceMap interfaces;
for (const auto& interface : sensorInfo.propertyInterfaces)
{
- //For a property like functional state the result will be
- //calculated based on the true value of all conditions.
+ // For a property like functional state the result will be
+ // calculated based on the true value of all conditions.
for (const auto& property : interface.second)
{
ipmi::sensor::PropertyMap props;
@@ -365,7 +342,7 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
{
if (assertionSet.test(value.first))
{
- //Skip update if skipOn is ASSERT
+ // Skip update if skipOn is ASSERT
if (SkipAssertion::ASSERT == value.second.skip)
{
return IPMI_CC_OK;
@@ -375,7 +352,7 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
}
else if (deassertionSet.test(value.first))
{
- //Skip update if skipOn is DEASSERT
+ // Skip update if skipOn is DEASSERT
if (SkipAssertion::DEASSERT == value.second.skip)
{
return IPMI_CC_OK;
@@ -385,7 +362,7 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
}
}
for (const auto& value :
- std::get<PreReqOffsetValueMap>(property.second))
+ std::get<PreReqOffsetValueMap>(property.second))
{
if (assertionSet.test(value.first))
{
@@ -409,7 +386,7 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
return updateToDbus(msg);
}
-}//namespace notify
+} // namespace notify
namespace inventory
{
@@ -425,13 +402,12 @@ GetSensorResponse assertion(const Info& sensorInfo)
path += sensorInfo.sensorPath;
return ipmi::sensor::get::mapDbusToAssertion(
- sensorInfo,
- path.string(),
- sensorInfo.propertyInterfaces.begin()->first);
+ sensorInfo, path.string(),
+ sensorInfo.propertyInterfaces.begin()->first);
}
-} //namespace get
+} // namespace get
} // namespace inventory
-}//namespace sensor
-}//namespace ipmi
+} // namespace sensor
+} // namespace ipmi
diff --git a/sensordatahandler.hpp b/sensordatahandler.hpp
index e36b71a..7185116 100644
--- a/sensordatahandler.hpp
+++ b/sensordatahandler.hpp
@@ -1,10 +1,12 @@
#pragma once
-#include <math.h>
-#include "sensorhandler.h"
#include "types.hpp"
#include "utils.hpp"
+
+#include <math.h>
+
#include "host-ipmid/ipmid-api.h"
+#include "sensorhandler.h"
namespace ipmi
{
@@ -89,8 +91,8 @@ inline SensorName nameProperty(const Info& sensorInfo)
inline SensorName nameLeaf(const Info& sensorInfo)
{
return sensorInfo.sensorPath.substr(
- sensorInfo.sensorPath.find_last_of('/') + 1,
- sensorInfo.sensorPath.length());
+ sensorInfo.sensorPath.find_last_of('/') + 1,
+ sensorInfo.sensorPath.length());
}
/** @brief Populate sensor name from the D-Bus object associated with the
@@ -147,23 +149,20 @@ GetSensorResponse eventdata2(const Info& sensorInfo);
*
* @return Response for get sensor reading command.
*/
-template<typename T>
+template <typename T>
GetSensorResponse readingAssertion(const Info& sensorInfo)
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- GetSensorResponse response {};
+ GetSensorResponse response{};
auto responseData = reinterpret_cast<GetReadingResponse*>(response.data());
- auto service = ipmi::getService(bus,
- sensorInfo.sensorInterface,
+ auto service = ipmi::getService(bus, sensorInfo.sensorInterface,
sensorInfo.sensorPath);
auto propValue = ipmi::getDbusProperty(
- bus,
- service,
- sensorInfo.sensorPath,
- sensorInfo.propertyInterfaces.begin()->first,
- sensorInfo.propertyInterfaces.begin()->second.begin()->first);
+ bus, service, sensorInfo.sensorPath,
+ sensorInfo.propertyInterfaces.begin()->first,
+ sensorInfo.propertyInterfaces.begin()->second.begin()->first);
setAssertionBytes(static_cast<uint16_t>(propValue.get<T>()), responseData);
@@ -178,38 +177,35 @@ GetSensorResponse readingAssertion(const Info& sensorInfo)
*
* @return Response for get sensor reading command.
*/
-template<typename T>
+template <typename T>
GetSensorResponse readingData(const Info& sensorInfo)
{
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
- GetSensorResponse response {};
+ GetSensorResponse response{};
auto responseData = reinterpret_cast<GetReadingResponse*>(response.data());
enableScanning(responseData);
- auto service = ipmi::getService(bus,
- sensorInfo.sensorInterface,
+ auto service = ipmi::getService(bus, sensorInfo.sensorInterface,
sensorInfo.sensorPath);
auto propValue = ipmi::getDbusProperty(
- bus,
- service,
- sensorInfo.sensorPath,
- sensorInfo.propertyInterfaces.begin()->first,
- sensorInfo.propertyInterfaces.begin()->second.begin()->first);
+ bus, service, sensorInfo.sensorPath,
+ sensorInfo.propertyInterfaces.begin()->first,
+ sensorInfo.propertyInterfaces.begin()->second.begin()->first);
- double value = propValue.get<T>() * pow(10,
- sensorInfo.scale - sensorInfo.exponentR);
+ double value =
+ propValue.get<T>() * pow(10, sensorInfo.scale - sensorInfo.exponentR);
- auto rawData = static_cast<uint8_t>(
- (value - sensorInfo.scaledOffset) / sensorInfo.coefficientM);
+ auto rawData = static_cast<uint8_t>((value - sensorInfo.scaledOffset) /
+ sensorInfo.coefficientM);
setReading(rawData, responseData);
return response;
}
-} //namespace get
+} // namespace get
namespace set
{
@@ -240,15 +236,13 @@ ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
* @param[in] sensorInfo - sensor d-bus info
* @return a IPMI error code
*/
-template<typename T>
+template <typename T>
ipmi_ret_t readingAssertion(const SetSensorReadingReq& cmdData,
const Info& sensorInfo)
{
- auto msg = makeDbusMsg(
- "org.freedesktop.DBus.Properties",
- sensorInfo.sensorPath,
- "Set",
- sensorInfo.sensorInterface);
+ auto msg =
+ makeDbusMsg("org.freedesktop.DBus.Properties", sensorInfo.sensorPath,
+ "Set", sensorInfo.sensorInterface);
const auto& interface = sensorInfo.propertyInterfaces.begin();
msg.append(interface->first);
@@ -267,19 +261,18 @@ ipmi_ret_t readingAssertion(const SetSensorReadingReq& cmdData,
* @param[in] sensorInfo - sensor d-bus info
* @return an IPMI error code
*/
-template<typename T>
+template <typename T>
ipmi_ret_t readingData(const SetSensorReadingReq& cmdData,
const Info& sensorInfo)
{
- T raw_value = (sensorInfo.coefficientM * cmdData.reading) +
- sensorInfo.scaledOffset;
+ T raw_value =
+ (sensorInfo.coefficientM * cmdData.reading) + sensorInfo.scaledOffset;
raw_value *= pow(10, sensorInfo.exponentR - sensorInfo.scale);
- auto msg = makeDbusMsg("org.freedesktop.DBus.Properties",
- sensorInfo.sensorPath,
- "Set",
- sensorInfo.sensorInterface);
+ auto msg =
+ makeDbusMsg("org.freedesktop.DBus.Properties", sensorInfo.sensorPath,
+ "Set", sensorInfo.sensorInterface);
const auto& interface = sensorInfo.propertyInterfaces.begin();
msg.append(interface->first);
@@ -298,8 +291,7 @@ ipmi_ret_t readingData(const SetSensorReadingReq& cmdData,
* @param[in] sensorInfo - sensor d-bus info
* @return a IPMI error code
*/
-ipmi_ret_t eventdata(const SetSensorReadingReq& cmdData,
- const Info& sensorInfo,
+ipmi_ret_t eventdata(const SetSensorReadingReq& cmdData, const Info& sensorInfo,
uint8_t data);
/** @brief Update d-bus based on eventdata1 type sensor data
@@ -335,7 +327,7 @@ inline ipmi_ret_t eventdata3(const SetSensorReadingReq& cmdData,
return eventdata(cmdData, sensorInfo, cmdData.eventData3);
}
-}//namespace set
+} // namespace set
namespace notify
{
@@ -361,7 +353,7 @@ IpmiUpdateData makeDbusMsg(const std::string& updateInterface,
ipmi_ret_t assertion(const SetSensorReadingReq& cmdData,
const Info& sensorInfo);
-}//namespace notify
+} // namespace notify
namespace inventory
{
@@ -382,5 +374,5 @@ GetSensorResponse assertion(const Info& sensorInfo);
} // namespace get
} // namespace inventory
-}//namespace sensor
-}//namespace ipmi
+} // namespace sensor
+} // namespace ipmi
diff --git a/sensorhandler.cpp b/sensorhandler.cpp
index 609fdfd..41d393b 100644
--- a/sensorhandler.cpp
+++ b/sensorhandler.cpp
@@ -1,42 +1,46 @@
+#include "sensorhandler.h"
+
+#include "fruread.hpp"
+#include "ipmid.hpp"
+#include "types.hpp"
+#include "utils.hpp"
+
#include <mapper.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
-#include <set>
+#include <systemd/sd-bus.h>
+
#include <bitset>
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
+#include <set>
+#include <xyz/openbmc_project/Common/error.hpp>
#include <xyz/openbmc_project/Sensor/Value/server.hpp>
-#include <systemd/sd-bus.h>
+
#include "host-ipmid/ipmid-api.h"
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog-errors.hpp>
-#include "fruread.hpp"
-#include "ipmid.hpp"
-#include "sensorhandler.h"
-#include "types.hpp"
-#include "utils.hpp"
-#include "xyz/openbmc_project/Common/error.hpp"
static constexpr uint8_t fruInventoryDevice = 0x10;
static constexpr uint8_t IPMIFruInventory = 0x02;
static constexpr uint8_t BMCSlaveAddress = 0x20;
-extern int updateSensorRecordFromSSRAESC(const void *);
-extern sd_bus *bus;
+extern int updateSensorRecordFromSSRAESC(const void*);
+extern sd_bus* bus;
extern const ipmi::sensor::IdInfoMap sensors;
extern const FruMap frus;
-
using namespace phosphor::logging;
using InternalFailure =
sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
-void register_netfn_sen_functions() __attribute__((constructor));
+void register_netfn_sen_functions() __attribute__((constructor));
-struct sensorTypemap_t {
+struct sensorTypemap_t
+{
uint8_t number;
uint8_t typecode;
char dbusname[32];
-} ;
+};
sensorTypemap_t g_SensorTypeMap[] = {
@@ -47,7 +51,8 @@ sensorTypemap_t g_SensorTypeMap[] = {
{0x07, 0x6F, "CORE"},
{0x07, 0x6F, "CPU"},
{0x0F, 0x6F, "BootProgress"},
- {0xe9, 0x09, "OccStatus"}, // E9 is an internal mapping to handle sensor type code os 0x09
+ {0xe9, 0x09, "OccStatus"}, // E9 is an internal mapping to handle sensor
+ // type code os 0x09
{0xC3, 0x6F, "BootCount"},
{0x1F, 0x6F, "OperatingSystemStatus"},
{0x12, 0x6F, "SYSTEM_EVENT"},
@@ -60,47 +65,53 @@ sensorTypemap_t g_SensorTypeMap[] = {
{0xFF, 0x00, ""},
};
-
-struct sensor_data_t {
+struct sensor_data_t
+{
uint8_t sennum;
-} __attribute__ ((packed)) ;
+} __attribute__((packed));
-struct sensorreadingresp_t {
+struct sensorreadingresp_t
+{
uint8_t value;
uint8_t operation;
uint8_t indication[2];
-} __attribute__ ((packed)) ;
+} __attribute__((packed));
-int get_bus_for_path(const char *path, char **busname) {
+int get_bus_for_path(const char* path, char** busname)
+{
return mapper_get_service(bus, path, busname);
}
-int legacy_dbus_openbmc_path(const char *type, const uint8_t num, dbus_interface_t *interface) {
- char *busname = NULL;
- const char *iface = "org.openbmc.managers.System";
- const char *objname = "/org/openbmc/managers/System";
- char *str1 = NULL, *str2, *str3;
+int legacy_dbus_openbmc_path(const char* type, const uint8_t num,
+ dbus_interface_t* interface)
+{
+ char* busname = NULL;
+ const char* iface = "org.openbmc.managers.System";
+ const char* objname = "/org/openbmc/managers/System";
+ char *str1 = NULL, *str2, *str3;
sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *reply = NULL;
-
+ sd_bus_message* reply = NULL;
int r;
r = get_bus_for_path(objname, &busname);
- if (r < 0) {
- fprintf(stderr, "Failed to get %s busname: %s\n",
- objname, strerror(-r));
+ if (r < 0)
+ {
+ fprintf(stderr, "Failed to get %s busname: %s\n", objname,
+ strerror(-r));
goto final;
}
- r = sd_bus_call_method(bus,busname,objname,iface, "getObjectFromByteId",
+ r = sd_bus_call_method(bus, busname, objname, iface, "getObjectFromByteId",
&error, &reply, "sy", type, num);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Failed to create a method call: %s", strerror(-r));
goto final;
}
r = sd_bus_message_read(reply, "(ss)", &str2, &str3);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Failed to get a response: %s", strerror(-r));
goto final;
}
@@ -113,9 +124,9 @@ int legacy_dbus_openbmc_path(const char *type, const uint8_t num, dbus_interface
}
r = get_bus_for_path(str2, &str1);
- if (r < 0) {
- fprintf(stderr, "Failed to get %s busname: %s\n",
- str2, strerror(-r));
+ if (r < 0)
+ {
+ fprintf(stderr, "Failed to get %s busname: %s\n", str2, strerror(-r));
goto final;
}
@@ -141,7 +152,8 @@ final:
// Use a lookup table to find the interface name of a specific sensor
// This will be used until an alternative is found. this is the first
// step for mapping IPMI
-int find_openbmc_path(uint8_t num, dbus_interface_t *interface) {
+int find_openbmc_path(uint8_t num, dbus_interface_t* interface)
+{
int rc;
// When the sensor map does not contain the sensor requested,
@@ -156,10 +168,10 @@ int find_openbmc_path(uint8_t num, dbus_interface_t *interface) {
char* busname = nullptr;
rc = get_bus_for_path(info.sensorPath.c_str(), &busname);
- if (rc < 0) {
+ if (rc < 0)
+ {
fprintf(stderr, "Failed to get %s busname: %s\n",
- info.sensorPath.c_str(),
- busname);
+ info.sensorPath.c_str(), busname);
goto final;
}
@@ -170,7 +182,8 @@ int find_openbmc_path(uint8_t num, dbus_interface_t *interface) {
// works for the Value interface but may not suffice for more complex
// sensors.
// tracked https://github.com/openbmc/phosphor-host-ipmid/issues/103
- strcpy(interface->interface, info.propertyInterfaces.begin()->first.c_str());
+ strcpy(interface->interface,
+ info.propertyInterfaces.begin()->first.c_str());
interface->sensornumber = num;
final:
@@ -178,45 +191,51 @@ final:
return rc;
}
-
/////////////////////////////////////////////////////////////////////
//
// Routines used by ipmi commands wanting to interact on the dbus
//
/////////////////////////////////////////////////////////////////////
-int set_sensor_dbus_state_s(uint8_t number, const char *method, const char *value) {
-
+int set_sensor_dbus_state_s(uint8_t number, const char* method,
+ const char* value)
+{
dbus_interface_t a;
int r;
sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *m=NULL;
+ sd_bus_message* m = NULL;
- fprintf(ipmidbus, "Attempting to set a dbus Variant Sensor 0x%02x via %s with a value of %s\n",
- number, method, value);
+ fprintf(ipmidbus,
+ "Attempting to set a dbus Variant Sensor 0x%02x via %s with a "
+ "value of %s\n",
+ number, method, value);
r = find_openbmc_path(number, &a);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Failed to find Sensor 0x%02x\n", number);
return 0;
}
- r = sd_bus_message_new_method_call(bus,&m,a.bus,a.path,a.interface,method);
- if (r < 0) {
+ r = sd_bus_message_new_method_call(bus, &m, a.bus, a.path, a.interface,
+ method);
+ if (r < 0)
+ {
fprintf(stderr, "Failed to create a method call: %s", strerror(-r));
goto final;
}
r = sd_bus_message_append(m, "v", "s", value);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Failed to create a input parameter: %s", strerror(-r));
goto final;
}
-
r = sd_bus_call(bus, m, 0, &error, NULL);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Failed to call the method: %s", strerror(-r));
}
@@ -226,39 +245,46 @@ final:
return 0;
}
-int set_sensor_dbus_state_y(uint8_t number, const char *method, const uint8_t value) {
-
+int set_sensor_dbus_state_y(uint8_t number, const char* method,
+ const uint8_t value)
+{
dbus_interface_t a;
int r;
sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *m=NULL;
+ sd_bus_message* m = NULL;
- fprintf(ipmidbus, "Attempting to set a dbus Variant Sensor 0x%02x via %s with a value of 0x%02x\n",
- number, method, value);
+ fprintf(ipmidbus,
+ "Attempting to set a dbus Variant Sensor 0x%02x via %s with a "
+ "value of 0x%02x\n",
+ number, method, value);
r = find_openbmc_path(number, &a);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Failed to find Sensor 0x%02x\n", number);
return 0;
}
- r = sd_bus_message_new_method_call(bus,&m,a.bus,a.path,a.interface,method);
- if (r < 0) {
+ r = sd_bus_message_new_method_call(bus, &m, a.bus, a.path, a.interface,
+ method);
+ if (r < 0)
+ {
fprintf(stderr, "Failed to create a method call: %s", strerror(-r));
goto final;
}
r = sd_bus_message_append(m, "v", "i", value);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Failed to create a input parameter: %s", strerror(-r));
goto final;
}
-
r = sd_bus_call(bus, m, 0, &error, NULL);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "12 Failed to call the method: %s", strerror(-r));
}
@@ -269,14 +295,17 @@ final:
return 0;
}
-uint8_t dbus_to_sensor_type(char *p) {
+uint8_t dbus_to_sensor_type(char* p)
+{
- sensorTypemap_t *s = g_SensorTypeMap;
- char r=0;
- while (s->number != 0xFF) {
- if (!strcmp(s->dbusname,p)) {
+ sensorTypemap_t* s = g_SensorTypeMap;
+ char r = 0;
+ while (s->number != 0xFF)
+ {
+ if (!strcmp(s->dbusname, p))
+ {
r = s->typecode;
- break;
+ break;
}
s++;
}
@@ -287,75 +316,79 @@ uint8_t dbus_to_sensor_type(char *p) {
return r;
}
+uint8_t get_type_from_interface(dbus_interface_t dbus_if)
+{
-uint8_t get_type_from_interface(dbus_interface_t dbus_if) {
-
- char *p;
+ char* p;
uint8_t type;
// This is where sensors that do not exist in dbus but do
// exist in the host code stop. This should indicate it
// is not a supported sensor
- if (dbus_if.interface[0] == 0) { return 0;}
+ if (dbus_if.interface[0] == 0)
+ {
+ return 0;
+ }
// Fetch type from interface itself.
if (dbus_if.sensortype != 0)
{
type = dbus_if.sensortype;
- } else {
+ }
+ else
+ {
// Non InventoryItems
- p = strrchr (dbus_if.path, '/');
- type = dbus_to_sensor_type(p+1);
+ p = strrchr(dbus_if.path, '/');
+ type = dbus_to_sensor_type(p + 1);
}
return type;
- }
+}
// Replaces find_sensor
-uint8_t find_type_for_sensor_number(uint8_t num) {
+uint8_t find_type_for_sensor_number(uint8_t num)
+{
int r;
dbus_interface_t dbus_if;
r = find_openbmc_path(num, &dbus_if);
- if (r < 0) {
+ if (r < 0)
+ {
fprintf(stderr, "Could not find sensor %d\n", num);
return 0;
}
return get_type_from_interface(dbus_if);
}
-
-
-
-
ipmi_ret_t ipmi_sen_get_sensor_type(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
- sensor_data_t *reqptr = (sensor_data_t*)request;
+ sensor_data_t* reqptr = (sensor_data_t*)request;
ipmi_ret_t rc = IPMI_CC_OK;
- printf("IPMI GET_SENSOR_TYPE [0x%02X]\n",reqptr->sennum);
+ printf("IPMI GET_SENSOR_TYPE [0x%02X]\n", reqptr->sennum);
// TODO Not sure what the System-event-sensor is suppose to return
// need to ask Hostboot team
- unsigned char buf[] = {0x00,0x6F};
+ unsigned char buf[] = {0x00, 0x6F};
buf[0] = find_type_for_sensor_number(reqptr->sennum);
// HACK UNTIL Dbus gets updated or we find a better way
- if (buf[0] == 0) {
+ if (buf[0] == 0)
+ {
rc = IPMI_CC_SENSOR_INVALID;
}
-
*data_len = sizeof(buf);
memcpy(response, &buf, *data_len);
return rc;
}
-const std::set<std::string> analogSensorInterfaces =
-{
+const std::set<std::string> analogSensorInterfaces = {
"xyz.openbmc_project.Sensor.Value",
"xyz.openbmc_project.Control.FanPwm",
};
@@ -365,10 +398,10 @@ bool isAnalogSensor(const std::string& interface)
return (analogSensorInterfaces.count(interface));
}
-ipmi_ret_t setSensorReading(void *request)
+ipmi_ret_t setSensorReading(void* request)
{
ipmi::sensor::SetSensorReadingReq cmdData =
- *(static_cast<ipmi::sensor::SetSensorReadingReq *>(request));
+ *(static_cast<ipmi::sensor::SetSensorReadingReq*>(request));
// Check if the Sensor Number is present
const auto iter = sensors.find(cmdData.number);
@@ -380,7 +413,7 @@ ipmi_ret_t setSensorReading(void *request)
try
{
if (ipmi::sensor::Mutability::Write !=
- (iter->second.mutability & ipmi::sensor::Mutability::Write))
+ (iter->second.mutability & ipmi::sensor::Mutability::Write))
{
log<level::ERR>("Sensor Set operation is not allowed",
entry("SENSOR_NUM=%d", cmdData.number));
@@ -390,9 +423,9 @@ ipmi_ret_t setSensorReading(void *request)
}
catch (InternalFailure& e)
{
- log<level::ERR>("Set sensor failed",
- entry("SENSOR_NUM=%d", cmdData.number));
- commit<InternalFailure>();
+ log<level::ERR>("Set sensor failed",
+ entry("SENSOR_NUM=%d", cmdData.number));
+ commit<InternalFailure>();
}
catch (const std::runtime_error& e)
{
@@ -403,10 +436,10 @@ ipmi_ret_t setSensorReading(void *request)
}
ipmi_ret_t ipmi_sen_set_sensor(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_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len, ipmi_context_t context)
{
- sensor_data_t *reqptr = (sensor_data_t*)request;
+ sensor_data_t* reqptr = (sensor_data_t*)request;
log<level::DEBUG>("IPMI SET_SENSOR",
entry("SENSOR_NUM=0x%02x", reqptr->sennum));
@@ -418,30 +451,29 @@ ipmi_ret_t ipmi_sen_set_sensor(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
*/
auto ipmiRC = setSensorReading(request);
- if(ipmiRC == IPMI_CC_SENSOR_INVALID)
+ if (ipmiRC == IPMI_CC_SENSOR_INVALID)
{
updateSensorRecordFromSSRAESC(reqptr);
ipmiRC = IPMI_CC_OK;
}
- *data_len=0;
+ *data_len = 0;
return ipmiRC;
}
-ipmi_ret_t legacyGetSensorReading(uint8_t sensorNum,
- ipmi_response_t response,
+ipmi_ret_t legacyGetSensorReading(uint8_t sensorNum, ipmi_response_t response,
ipmi_data_len_t data_len)
{
int r;
dbus_interface_t a;
- sd_bus *bus = ipmid_get_sd_bus_connection();
+ sd_bus* bus = ipmid_get_sd_bus_connection();
ipmi_ret_t rc = IPMI_CC_SENSOR_INVALID;
uint8_t type = 0;
- sd_bus_message *reply = NULL;
+ sd_bus_message* reply = NULL;
int reading = 0;
char* assertion = NULL;
- sensorreadingresp_t *resp = (sensorreadingresp_t*) response;
- *data_len=0;
+ sensorreadingresp_t* resp = (sensorreadingresp_t*)response;
+ *data_len = 0;
r = find_openbmc_path(sensorNum, &a);
if (r < 0)
@@ -453,76 +485,84 @@ ipmi_ret_t legacyGetSensorReading(uint8_t sensorNum,
type = get_type_from_interface(a);
if (type == 0)
{
- sd_journal_print(LOG_ERR, "Failed to find Sensor 0x%02x\n",
- sensorNum);
+ sd_journal_print(LOG_ERR, "Failed to find Sensor 0x%02x\n", sensorNum);
return IPMI_CC_SENSOR_INVALID;
}
- switch(type) {
+ switch (type)
+ {
case 0xC2:
- r = sd_bus_get_property(bus,a.bus, a.path, a.interface,
- "value", NULL, &reply, "i");
+ r = sd_bus_get_property(bus, a.bus, a.path, a.interface, "value",
+ NULL, &reply, "i");
if (r < 0)
{
- sd_journal_print(LOG_ERR, "Failed to call sd_bus_get_property:"
- " %d, %s\n", r, strerror(-r));
+ sd_journal_print(LOG_ERR,
+ "Failed to call sd_bus_get_property:"
+ " %d, %s\n",
+ r, strerror(-r));
sd_journal_print(LOG_ERR, "Bus: %s, Path: %s, Interface: %s\n",
a.bus, a.path, a.interface);
break;
}
r = sd_bus_message_read(reply, "i", &reading);
- if (r < 0) {
+ if (r < 0)
+ {
sd_journal_print(LOG_ERR, "Failed to read sensor: %s\n",
strerror(-r));
break;
}
rc = IPMI_CC_OK;
- *data_len=sizeof(sensorreadingresp_t);
+ *data_len = sizeof(sensorreadingresp_t);
- resp->value = (uint8_t)reading;
- resp->operation = 0;
+ resp->value = (uint8_t)reading;
+ resp->operation = 0;
resp->indication[0] = 0;
resp->indication[1] = 0;
break;
case 0xC8:
- r = sd_bus_get_property(bus,a.bus, a.path, a.interface,
- "value", NULL, &reply, "i");
+ r = sd_bus_get_property(bus, a.bus, a.path, a.interface, "value",
+ NULL, &reply, "i");
if (r < 0)
{
- sd_journal_print(LOG_ERR, "Failed to call sd_bus_get_property:"
- " %d, %s\n", r, strerror(-r));
+ sd_journal_print(LOG_ERR,
+ "Failed to call sd_bus_get_property:"
+ " %d, %s\n",
+ r, strerror(-r));
sd_journal_print(LOG_ERR, "Bus: %s, Path: %s, Interface: %s\n",
a.bus, a.path, a.interface);
break;
}
r = sd_bus_message_read(reply, "i", &reading);
- if (r < 0) {
+ if (r < 0)
+ {
sd_journal_print(LOG_ERR, "Failed to read sensor: %s\n",
strerror(-r));
break;
}
rc = IPMI_CC_OK;
- *data_len=sizeof(sensorreadingresp_t);
+ *data_len = sizeof(sensorreadingresp_t);
- resp->value = 0;
- resp->operation = 0;
+ resp->value = 0;
+ resp->operation = 0;
resp->indication[0] = (uint8_t)reading;
resp->indication[1] = 0;
break;
- //TODO openbmc/openbmc#2154 Move this sensor to right place.
+ // TODO openbmc/openbmc#2154 Move this sensor to right place.
case 0xCA:
- r = sd_bus_get_property(bus,a.bus, a.path, a.interface, "value",
+ r = sd_bus_get_property(bus, a.bus, a.path, a.interface, "value",
NULL, &reply, "s");
if (r < 0)
{
- sd_journal_print(LOG_ERR, "Failed to call sd_bus_get_property:"
- " %d, %s\n", r, strerror(-r));
+ sd_journal_print(LOG_ERR,
+ "Failed to call sd_bus_get_property:"
+ " %d, %s\n",
+ r, strerror(-r));
sd_journal_print(LOG_ERR, "Bus: %s, Path: %s, Interface: %s\n",
a.bus, a.path, a.interface);
break;
@@ -537,11 +577,11 @@ ipmi_ret_t legacyGetSensorReading(uint8_t sensorNum,
}
rc = IPMI_CC_OK;
- *data_len=sizeof(sensorreadingresp_t);
+ *data_len = sizeof(sensorreadingresp_t);
- resp->value = 0;
- resp->operation = 0;
- if (strcmp(assertion,"Enabled") == 0)
+ resp->value = 0;
+ resp->operation = 0;
+ if (strcmp(assertion, "Enabled") == 0)
{
resp->indication[0] = 0x02;
}
@@ -564,12 +604,14 @@ ipmi_ret_t legacyGetSensorReading(uint8_t sensorNum,
}
ipmi_ret_t ipmi_sen_get_sensor_reading(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
- sensor_data_t *reqptr = (sensor_data_t*)request;
- sensorreadingresp_t *resp = (sensorreadingresp_t*) response;
- ipmi::sensor::GetSensorResponse getResponse {};
+ sensor_data_t* reqptr = (sensor_data_t*)request;
+ sensorreadingresp_t* resp = (sensorreadingresp_t*)response;
+ ipmi::sensor::GetSensorResponse getResponse{};
static constexpr auto scanningEnabledBit = 6;
const auto iter = sensors.find(reqptr->sennum);
@@ -578,14 +620,14 @@ ipmi_ret_t ipmi_sen_get_sensor_reading(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return legacyGetSensorReading(reqptr->sennum, response, data_len);
}
if (ipmi::sensor::Mutability::Read !=
- (iter->second.mutability & ipmi::sensor::Mutability::Read))
+ (iter->second.mutability & ipmi::sensor::Mutability::Read))
{
return IPMI_CC_ILLEGAL_COMMAND;
}
try
{
- getResponse = iter->second.getFunc(iter->second);
+ getResponse = iter->second.getFunc(iter->second);
*data_len = getResponse.size();
memcpy(resp, getResponse.data(), *data_len);
resp->operation = 1 << scanningEnabledBit;
@@ -614,10 +656,8 @@ void getSensorThresholds(uint8_t sensorNum,
auto service = ipmi::getService(bus, info.sensorInterface, info.sensorPath);
- auto warnThresholds = ipmi::getAllDbusProperties(bus,
- service,
- info.sensorPath,
- warningThreshIntf);
+ auto warnThresholds = ipmi::getAllDbusProperties(
+ bus, service, info.sensorPath, warningThreshIntf);
double warnLow = mapbox::util::apply_visitor(ipmi::VariantToDoubleVisitor(),
warnThresholds["WarningLow"]);
@@ -627,25 +667,23 @@ void getSensorThresholds(uint8_t sensorNum,
if (warnLow != 0)
{
warnLow *= pow(10, info.scale - info.exponentR);
- response->lowerNonCritical = static_cast<uint8_t>((
- warnLow - info.scaledOffset) / info.coefficientM);
+ response->lowerNonCritical = static_cast<uint8_t>(
+ (warnLow - info.scaledOffset) / info.coefficientM);
response->validMask |= static_cast<uint8_t>(
- ipmi::sensor::ThresholdMask::NON_CRITICAL_LOW_MASK);
+ ipmi::sensor::ThresholdMask::NON_CRITICAL_LOW_MASK);
}
if (warnHigh != 0)
{
warnHigh *= pow(10, info.scale - info.exponentR);
- response->upperNonCritical = static_cast<uint8_t>((
- warnHigh - info.scaledOffset) / info.coefficientM);
+ response->upperNonCritical = static_cast<uint8_t>(
+ (warnHigh - info.scaledOffset) / info.coefficientM);
response->validMask |= static_cast<uint8_t>(
- ipmi::sensor::ThresholdMask::NON_CRITICAL_HIGH_MASK);
+ ipmi::sensor::ThresholdMask::NON_CRITICAL_HIGH_MASK);
}
- auto critThresholds = ipmi::getAllDbusProperties(bus,
- service,
- info.sensorPath,
- criticalThreshIntf);
+ auto critThresholds = ipmi::getAllDbusProperties(
+ bus, service, info.sensorPath, criticalThreshIntf);
double critLow = mapbox::util::apply_visitor(ipmi::VariantToDoubleVisitor(),
critThresholds["CriticalLow"]);
double critHigh = mapbox::util::apply_visitor(
@@ -654,25 +692,27 @@ void getSensorThresholds(uint8_t sensorNum,
if (critLow != 0)
{
critLow *= pow(10, info.scale - info.exponentR);
- response->lowerCritical = static_cast<uint8_t>((
- critLow - info.scaledOffset) / info.coefficientM);
+ response->lowerCritical = static_cast<uint8_t>(
+ (critLow - info.scaledOffset) / info.coefficientM);
response->validMask |= static_cast<uint8_t>(
- ipmi::sensor::ThresholdMask::CRITICAL_LOW_MASK);
+ ipmi::sensor::ThresholdMask::CRITICAL_LOW_MASK);
}
if (critHigh != 0)
{
critHigh *= pow(10, info.scale - info.exponentR);
- response->upperCritical = static_cast<uint8_t>((
- critHigh - info.scaledOffset)/ info.coefficientM);
+ response->upperCritical = static_cast<uint8_t>(
+ (critHigh - info.scaledOffset) / info.coefficientM);
response->validMask |= static_cast<uint8_t>(
- ipmi::sensor::ThresholdMask::CRITICAL_HIGH_MASK);
+ ipmi::sensor::ThresholdMask::CRITICAL_HIGH_MASK);
}
}
ipmi_ret_t ipmi_sen_get_sensor_thresholds(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
constexpr auto valueInterface = "xyz.openbmc_project.Sensor.Value";
@@ -682,7 +722,7 @@ ipmi_ret_t ipmi_sen_get_sensor_thresholds(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_REQ_DATA_LEN_INVALID;
}
- auto sensorNum = *(reinterpret_cast<const uint8_t *>(request));
+ auto sensorNum = *(reinterpret_cast<const uint8_t*>(request));
*data_len = 0;
const auto iter = sensors.find(sensorNum);
@@ -693,11 +733,11 @@ ipmi_ret_t ipmi_sen_get_sensor_thresholds(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
const auto info = iter->second;
- //Proceed only if the sensor value interface is implemented.
+ // Proceed only if the sensor value interface is implemented.
if (info.propertyInterfaces.find(valueInterface) ==
info.propertyInterfaces.end())
{
- //return with valid mask as 0
+ // return with valid mask as 0
return IPMI_CC_OK;
}
@@ -710,7 +750,7 @@ ipmi_ret_t ipmi_sen_get_sensor_thresholds(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
catch (std::exception& e)
{
- //Mask if the property is not present
+ // Mask if the property is not present
responseData->validMask = 0;
}
@@ -724,7 +764,7 @@ ipmi_ret_t ipmi_sen_wildcard(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
ipmi_ret_t rc = IPMI_CC_INVALID;
- printf("IPMI S/E Wildcard Netfn:[0x%X], Cmd:[0x%X]\n",netfn,cmd);
+ printf("IPMI S/E Wildcard Netfn:[0x%X], Cmd:[0x%X]\n", netfn, cmd);
*data_len = 0;
return rc;
@@ -776,8 +816,8 @@ ipmi_ret_t ipmi_sen_reserve_sdr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_OK;
}
-void setUnitFieldsForObject(const ipmi::sensor::Info *info,
- get_sdr::SensorDataFullRecordBody *body)
+void setUnitFieldsForObject(const ipmi::sensor::Info* info,
+ get_sdr::SensorDataFullRecordBody* body)
{
namespace server = sdbusplus::xyz::openbmc_project::Sensor::server;
try
@@ -791,7 +831,8 @@ void setUnitFieldsForObject(const ipmi::sensor::Info *info,
body->sensor_units_2_base = get_sdr::SENSOR_UNIT_DEGREES_C;
break;
case server::Value::Unit::RPMS:
- body->sensor_units_2_base = get_sdr::SENSOR_UNIT_REVOLUTIONS; // revolutions
+ body->sensor_units_2_base =
+ get_sdr::SENSOR_UNIT_REVOLUTIONS; // revolutions
get_sdr::body::set_rate_unit(0b100, body); // per minute
break;
case server::Value::Unit::Volts:
@@ -821,8 +862,8 @@ void setUnitFieldsForObject(const ipmi::sensor::Info *info,
}
}
-ipmi_ret_t populate_record_from_dbus(get_sdr::SensorDataFullRecordBody *body,
- const ipmi::sensor::Info *info,
+ipmi_ret_t populate_record_from_dbus(get_sdr::SensorDataFullRecordBody* body,
+ const ipmi::sensor::Info* info,
ipmi_data_len_t data_len)
{
/* Functional sensor case */
@@ -864,11 +905,11 @@ ipmi_ret_t ipmi_fru_get_sdr(ipmi_request_t request, ipmi_response_t response,
{
auto req = reinterpret_cast<get_sdr::GetSdrReq*>(request);
auto resp = reinterpret_cast<get_sdr::GetSdrResp*>(response);
- get_sdr::SensorDataFruRecord record {};
+ get_sdr::SensorDataFruRecord record{};
auto dataLength = 0;
auto fru = frus.begin();
- uint8_t fruID {};
+ uint8_t fruID{};
auto recordID = get_sdr::request::get_record_id(req);
fruID = recordID - FRU_RECORD_ID_START;
@@ -896,21 +937,18 @@ ipmi_ret_t ipmi_fru_get_sdr(ipmi_request_t request, ipmi_response_t response,
record.body.deviceTypeModifier = IPMIFruInventory;
/* Device ID string */
- auto deviceID = fru->second[0].path.substr(
- fru->second[0].path.find_last_of('/') + 1,
- fru->second[0].path.length());
-
+ auto deviceID =
+ fru->second[0].path.substr(fru->second[0].path.find_last_of('/') + 1,
+ fru->second[0].path.length());
if (deviceID.length() > get_sdr::FRU_RECORD_DEVICE_ID_MAX_LENGTH)
{
get_sdr::body::set_device_id_strlen(
- get_sdr::FRU_RECORD_DEVICE_ID_MAX_LENGTH,
- &(record.body));
+ get_sdr::FRU_RECORD_DEVICE_ID_MAX_LENGTH, &(record.body));
}
else
{
- get_sdr::body::set_device_id_strlen(deviceID.length(),
- &(record.body));
+ get_sdr::body::set_device_id_strlen(deviceID.length(), &(record.body));
}
strncpy(record.body.deviceID, deviceID.c_str(),
@@ -918,12 +956,13 @@ ipmi_ret_t ipmi_fru_get_sdr(ipmi_request_t request, ipmi_response_t response,
if (++fru == frus.end())
{
- get_sdr::response::set_next_record_id(END_OF_RECORD, resp); // last record
+ get_sdr::response::set_next_record_id(END_OF_RECORD,
+ resp); // last record
}
else
{
get_sdr::response::set_next_record_id(
- (FRU_RECORD_ID_START + fru->first), resp);
+ (FRU_RECORD_ID_START + fru->first), resp);
}
if (req->bytes_to_read > (sizeof(*resp) - req->offset))
@@ -932,7 +971,7 @@ ipmi_ret_t ipmi_fru_get_sdr(ipmi_request_t request, ipmi_response_t response,
}
else
{
- dataLength = req->bytes_to_read;
+ dataLength = req->bytes_to_read;
}
if (dataLength <= 0)
@@ -940,9 +979,8 @@ ipmi_ret_t ipmi_fru_get_sdr(ipmi_request_t request, ipmi_response_t response,
return IPMI_CC_REQ_DATA_LEN_INVALID;
}
- memcpy(resp->record_data,
- reinterpret_cast<uint8_t*>(&record) + req->offset,
- (dataLength));
+ memcpy(resp->record_data, reinterpret_cast<uint8_t*>(&record) + req->offset,
+ (dataLength));
*data_len = dataLength;
*data_len += 2; // additional 2 bytes for next record ID
@@ -955,8 +993,8 @@ ipmi_ret_t ipmi_sen_get_sdr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_data_len_t data_len, ipmi_context_t context)
{
ipmi_ret_t ret = IPMI_CC_OK;
- get_sdr::GetSdrReq *req = (get_sdr::GetSdrReq*)request;
- get_sdr::GetSdrResp *resp = (get_sdr::GetSdrResp*)response;
+ get_sdr::GetSdrReq* req = (get_sdr::GetSdrReq*)request;
+ get_sdr::GetSdrResp* resp = (get_sdr::GetSdrResp*)response;
get_sdr::SensorDataFullRecord record = {0};
if (req != NULL)
{
@@ -1011,9 +1049,9 @@ ipmi_ret_t ipmi_sen_get_sdr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
// we have reached till end of sensor, so assign the next record id
// to 256(Max Sensor ID = 255) + FRU ID(may start with 0).
- auto next_record_id = (frus.size()) ?
- frus.begin()->first + FRU_RECORD_ID_START :
- END_OF_RECORD;
+ auto next_record_id =
+ (frus.size()) ? frus.begin()->first + FRU_RECORD_ID_START
+ : END_OF_RECORD;
get_sdr::response::set_next_record_id(next_record_id, resp);
}
@@ -1030,43 +1068,35 @@ ipmi_ret_t ipmi_sen_get_sdr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return ret;
}
-
void register_netfn_sen_functions()
{
// <Wildcard Command>
- ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_WILDCARD,
- nullptr, ipmi_sen_wildcard,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_WILDCARD, nullptr,
+ ipmi_sen_wildcard, PRIVILEGE_USER);
// <Get Sensor Type>
- ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_SENSOR_TYPE,
- nullptr, ipmi_sen_get_sensor_type,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_SENSOR_TYPE, nullptr,
+ ipmi_sen_get_sensor_type, PRIVILEGE_USER);
// <Set Sensor Reading and Event Status>
- ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_SET_SENSOR,
- nullptr, ipmi_sen_set_sensor,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_SET_SENSOR, nullptr,
+ ipmi_sen_set_sensor, PRIVILEGE_OPERATOR);
// <Get Sensor Reading>
- ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_SENSOR_READING,
- nullptr, ipmi_sen_get_sensor_reading,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_SENSOR_READING, nullptr,
+ ipmi_sen_get_sensor_reading, PRIVILEGE_USER);
// <Reserve Device SDR Repository>
ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_RESERVE_DEVICE_SDR_REPO,
- nullptr, ipmi_sen_reserve_sdr,
- PRIVILEGE_USER);
+ nullptr, ipmi_sen_reserve_sdr, PRIVILEGE_USER);
// <Get Device SDR Info>
- ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_DEVICE_SDR_INFO,
- nullptr, ipmi_sen_get_sdr_info,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_DEVICE_SDR_INFO, nullptr,
+ ipmi_sen_get_sdr_info, PRIVILEGE_USER);
// <Get Device SDR>
- ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_DEVICE_SDR,
- nullptr, ipmi_sen_get_sdr,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_DEVICE_SDR, nullptr,
+ ipmi_sen_get_sdr, PRIVILEGE_USER);
// <Get Sensor Thresholds>
ipmi_register_callback(NETFUN_SENSOR, IPMI_CMD_GET_SENSOR_THRESHOLDS,
diff --git a/sensorhandler.h b/sensorhandler.h
index d6426f6..3f2fd99 100644
--- a/sensorhandler.h
+++ b/sensorhandler.h
@@ -1,19 +1,21 @@
#ifndef __HOST_IPMI_SEN_HANDLER_H__
#define __HOST_IPMI_SEN_HANDLER_H__
-#include <stdint.h>
#include "types.hpp"
+
+#include <stdint.h>
+
#include "host-ipmid/ipmid-api.h"
// IPMI commands for net functions.
enum ipmi_netfn_sen_cmds
{
IPMI_CMD_GET_DEVICE_SDR_INFO = 0x20,
- IPMI_CMD_GET_DEVICE_SDR = 0x21,
- IPMI_CMD_RESERVE_DEVICE_SDR_REPO = 0x22,
+ IPMI_CMD_GET_DEVICE_SDR = 0x21,
+ IPMI_CMD_RESERVE_DEVICE_SDR_REPO = 0x22,
IPMI_CMD_GET_SENSOR_READING = 0x2D,
- IPMI_CMD_GET_SENSOR_TYPE = 0x2F,
- IPMI_CMD_SET_SENSOR = 0x30,
+ IPMI_CMD_GET_SENSOR_TYPE = 0x2F,
+ IPMI_CMD_SET_SENSOR = 0x30,
IPMI_CMD_GET_SENSOR_THRESHOLDS = 0x27,
};
@@ -30,26 +32,27 @@ enum device_type
// Discrete sensor types.
enum ipmi_sensor_types
{
- IPMI_SENSOR_TEMP = 0x01,
+ IPMI_SENSOR_TEMP = 0x01,
IPMI_SENSOR_VOLTAGE = 0x02,
IPMI_SENSOR_CURRENT = 0x03,
- IPMI_SENSOR_FAN = 0x04,
- IPMI_SENSOR_TPM = 0xCC,
+ IPMI_SENSOR_FAN = 0x04,
+ IPMI_SENSOR_TPM = 0xCC,
};
#define MAX_DBUS_PATH 128
-struct dbus_interface_t {
- uint8_t sensornumber;
- uint8_t sensortype;
+struct dbus_interface_t
+{
+ uint8_t sensornumber;
+ uint8_t sensortype;
- char bus[MAX_DBUS_PATH];
- char path[MAX_DBUS_PATH];
- char interface[MAX_DBUS_PATH];
+ char bus[MAX_DBUS_PATH];
+ char path[MAX_DBUS_PATH];
+ char interface[MAX_DBUS_PATH];
};
-int set_sensor_dbus_state_s(uint8_t , const char *, const char *);
-int set_sensor_dbus_state_y(uint8_t , const char *, const uint8_t);
-int find_openbmc_path(uint8_t , dbus_interface_t *);
+int set_sensor_dbus_state_s(uint8_t, const char*, const char*);
+int set_sensor_dbus_state_y(uint8_t, const char*, const uint8_t);
+int find_openbmc_path(uint8_t, dbus_interface_t*);
ipmi_ret_t ipmi_sen_get_sdr(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_request_t request, ipmi_response_t response,
@@ -78,7 +81,7 @@ namespace request
// raw value for this call.
inline bool get_count(void* req)
{
- return (bool)((uint64_t)(req) & 1);
+ return (bool)((uint64_t)(req)&1);
}
} // namespace request
@@ -229,19 +232,19 @@ inline void set_owner_id_bmc(SensorDataRecordKey* key)
inline void set_owner_id_address(uint8_t addr, SensorDataRecordKey* key)
{
key->owner_id &= 0x01;
- key->owner_id |= addr<<1;
+ key->owner_id |= addr << 1;
};
inline void set_owner_lun(uint8_t lun, SensorDataRecordKey* key)
{
key->owner_lun &= ~0x03;
- key->owner_lun |= (lun&0x03);
+ key->owner_lun |= (lun & 0x03);
};
inline void set_owner_lun_channel(uint8_t channel, SensorDataRecordKey* key)
{
key->owner_lun &= 0x0f;
- key->owner_lun |= ((channel & 0xf)<<4);
+ key->owner_lun |= ((channel & 0xf) << 4);
};
} // namespace key
@@ -252,13 +255,13 @@ inline void set_owner_lun_channel(uint8_t channel, SensorDataRecordKey* key)
*/
struct GetSensorThresholdsResponse
{
- uint8_t validMask; //!< valid mask
- uint8_t lowerNonCritical; //!< lower non-critical threshold
- uint8_t lowerCritical; //!< lower critical threshold
- uint8_t lowerNonRecoverable;//!< lower non-recoverable threshold
- uint8_t upperNonCritical; //!< upper non-critical threshold
- uint8_t upperCritical; //!< upper critical threshold
- uint8_t upperNonRecoverable;//!< upper non-recoverable threshold
+ uint8_t validMask; //!< valid mask
+ uint8_t lowerNonCritical; //!< lower non-critical threshold
+ uint8_t lowerCritical; //!< lower critical threshold
+ uint8_t lowerNonRecoverable; //!< lower non-recoverable threshold
+ uint8_t upperNonCritical; //!< upper non-critical threshold
+ uint8_t upperCritical; //!< upper critical threshold
+ uint8_t upperNonRecoverable; //!< upper non-recoverable threshold
} __attribute__((packed));
// Body - full record
@@ -274,8 +277,8 @@ struct SensorDataFullRecordBody
uint8_t sensor_capabilities; // no macro support
uint8_t sensor_type;
uint8_t event_reading_type;
- uint8_t supported_assertions[2]; // no macro support
- uint8_t supported_deassertions[2]; // no macro support
+ uint8_t supported_assertions[2]; // no macro support
+ uint8_t supported_deassertions[2]; // no macro support
uint8_t discrete_reading_setting_mask[2]; // no macro support
uint8_t sensor_units_1;
uint8_t sensor_units_2_base;
@@ -287,7 +290,7 @@ struct SensorDataFullRecordBody
uint8_t b_msb_and_accuracy_lsb;
uint8_t accuracy_and_sensor_direction;
uint8_t r_b_exponents;
- uint8_t analog_characteristic_flags; //no macro support
+ uint8_t analog_characteristic_flags; // no macro support
uint8_t nominal_reading;
uint8_t normal_max;
uint8_t normal_min;
@@ -329,145 +332,137 @@ namespace body
inline void set_entity_instance_number(uint8_t n,
SensorDataFullRecordBody* body)
{
- body->entity_instance &= 1<<7;
- body->entity_instance |= (n & ~(1<<7));
+ body->entity_instance &= 1 << 7;
+ body->entity_instance |= (n & ~(1 << 7));
};
inline void set_entity_physical_entity(SensorDataFullRecordBody* body)
{
- body->entity_instance &= ~(1<<7);
+ body->entity_instance &= ~(1 << 7);
};
inline void set_entity_logical_container(SensorDataFullRecordBody* body)
{
- body->entity_instance |= 1<<7;
+ body->entity_instance |= 1 << 7;
};
-inline void sensor_scanning_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void sensor_scanning_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<0;
+ body->sensor_initialization |= 1 << 0;
}
else
{
- body->sensor_initialization &= ~(1<<0);
+ body->sensor_initialization &= ~(1 << 0);
};
};
-inline void event_generation_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void event_generation_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<1;
+ body->sensor_initialization |= 1 << 1;
}
else
{
- body->sensor_initialization &= ~(1<<1);
+ body->sensor_initialization &= ~(1 << 1);
}
};
-inline void init_types_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void init_types_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<2;
+ body->sensor_initialization |= 1 << 2;
}
else
{
- body->sensor_initialization &= ~(1<<2);
+ body->sensor_initialization &= ~(1 << 2);
}
};
-inline void init_hyst_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void init_hyst_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<3;
+ body->sensor_initialization |= 1 << 3;
}
else
{
- body->sensor_initialization &= ~(1<<3);
+ body->sensor_initialization &= ~(1 << 3);
}
};
-inline void init_thresh_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void init_thresh_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<4;
+ body->sensor_initialization |= 1 << 4;
}
else
{
- body->sensor_initialization &= ~(1<<4);
+ body->sensor_initialization &= ~(1 << 4);
}
};
-inline void init_events_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void init_events_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<5;
+ body->sensor_initialization |= 1 << 5;
}
else
{
- body->sensor_initialization &= ~(1<<5);
+ body->sensor_initialization &= ~(1 << 5);
}
};
-inline void init_scanning_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void init_scanning_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<6;
+ body->sensor_initialization |= 1 << 6;
}
else
{
- body->sensor_initialization &= ~(1<<6);
+ body->sensor_initialization &= ~(1 << 6);
}
};
-inline void init_settable_state(bool enabled,
- SensorDataFullRecordBody* body)
+inline void init_settable_state(bool enabled, SensorDataFullRecordBody* body)
{
if (enabled)
{
- body->sensor_initialization |= 1<<7;
+ body->sensor_initialization |= 1 << 7;
}
else
{
- body->sensor_initialization &= ~(1<<7);
+ body->sensor_initialization &= ~(1 << 7);
}
};
inline void set_percentage(SensorDataFullRecordBody* body)
{
- body->sensor_units_1 |= 1<<0;
+ body->sensor_units_1 |= 1 << 0;
};
inline void unset_percentage(SensorDataFullRecordBody* body)
{
- body->sensor_units_1 &= ~(1<<0);
+ body->sensor_units_1 &= ~(1 << 0);
};
inline void set_modifier_operation(uint8_t op, SensorDataFullRecordBody* body)
{
- body->sensor_units_1 &= ~(3<<1);
- body->sensor_units_1 |= (op & 0x3)<<1;
+ body->sensor_units_1 &= ~(3 << 1);
+ body->sensor_units_1 |= (op & 0x3) << 1;
};
inline void set_rate_unit(uint8_t unit, SensorDataFullRecordBody* body)
{
- body->sensor_units_1 &= ~(7<<3);
- body->sensor_units_1 |= (unit & 0x7)<<3;
+ body->sensor_units_1 &= ~(7 << 3);
+ body->sensor_units_1 |= (unit & 0x7) << 3;
};
inline void set_analog_data_format(uint8_t format,
SensorDataFullRecordBody* body)
{
- body->sensor_units_1 &= ~(3<<6);
- body->sensor_units_1 |= (format & 0x3)<<6;
+ body->sensor_units_1 &= ~(3 << 6);
+ body->sensor_units_1 |= (format & 0x3) << 6;
};
inline void set_m(uint16_t m, SensorDataFullRecordBody* body)
{
body->m_lsb = m & 0xff;
- body->m_msb_and_tolerance &= ~(3<<6);
- body->m_msb_and_tolerance |= ((m & (3<<8)) >> 2);
+ body->m_msb_and_tolerance &= ~(3 << 6);
+ body->m_msb_and_tolerance |= ((m & (3 << 8)) >> 2);
};
inline void set_tolerance(uint8_t tol, SensorDataFullRecordBody* body)
{
@@ -478,8 +473,8 @@ inline void set_tolerance(uint8_t tol, SensorDataFullRecordBody* body)
inline void set_b(uint16_t b, SensorDataFullRecordBody* body)
{
body->b_lsb = b & 0xff;
- body->b_msb_and_accuracy_lsb &= ~(3<<6);
- body->b_msb_and_accuracy_lsb |= ((b & (3<<8)) >> 2);
+ body->b_msb_and_accuracy_lsb &= ~(3 << 6);
+ body->b_msb_and_accuracy_lsb |= ((b & (3 << 8)) >> 2);
};
inline void set_accuracy(uint16_t acc, SensorDataFullRecordBody* body)
{
@@ -492,12 +487,12 @@ inline void set_accuracy(uint16_t acc, SensorDataFullRecordBody* body)
};
inline void set_accuracy_exp(uint8_t exp, SensorDataFullRecordBody* body)
{
- body->accuracy_and_sensor_direction &= ~(3<<2);
- body->accuracy_and_sensor_direction |= (exp & 3)<<2;
+ body->accuracy_and_sensor_direction &= ~(3 << 2);
+ body->accuracy_and_sensor_direction |= (exp & 3) << 2;
};
inline void set_sensor_dir(uint8_t dir, SensorDataFullRecordBody* body)
{
- body->accuracy_and_sensor_direction &= ~(3<<0);
+ body->accuracy_and_sensor_direction &= ~(3 << 0);
body->accuracy_and_sensor_direction |= (dir & 3);
};
@@ -509,7 +504,7 @@ inline void set_b_exp(uint8_t exp, SensorDataFullRecordBody* body)
inline void set_r_exp(uint8_t exp, SensorDataFullRecordBody* body)
{
body->r_b_exponents &= 0x0f;
- body->r_b_exponents |= (exp & 0x0f)<<4;
+ body->r_b_exponents |= (exp & 0x0f) << 4;
};
inline void set_id_strlen(uint8_t len, SensorDataFullRecordBody* body)
@@ -517,14 +512,14 @@ inline void set_id_strlen(uint8_t len, SensorDataFullRecordBody* body)
body->id_string_info &= ~(0x1f);
body->id_string_info |= len & 0x1f;
};
-inline uint8_t get_id_strlen( SensorDataFullRecordBody* body)
+inline uint8_t get_id_strlen(SensorDataFullRecordBody* body)
{
return body->id_string_info & 0x1f;
};
inline void set_id_type(uint8_t type, SensorDataFullRecordBody* body)
{
- body->id_string_info &= ~(3<<6);
- body->id_string_info |= (type & 0x3)<<6;
+ body->id_string_info &= ~(3 << 6);
+ body->id_string_info |= (type & 0x3) << 6;
};
inline void set_device_id_strlen(uint8_t len, SensorDataFruRecordBody* body)
@@ -577,7 +572,7 @@ struct SensorDataFruRecord
SensorDataFruRecordBody body;
} __attribute__((packed));
-} // get_sdr
+} // namespace get_sdr
namespace ipmi
{
diff --git a/settings.cpp b/settings.cpp
index a1ca62c..770bde0 100644
--- a/settings.cpp
+++ b/settings.cpp
@@ -1,9 +1,11 @@
-#include <phosphor-logging/elog-errors.hpp>
-#include <phosphor-logging/log.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
#include "settings.hpp"
+
#include "utils.hpp"
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
namespace settings
{
@@ -15,14 +17,12 @@ constexpr auto mapperPath = "/xyz/openbmc_project/object_mapper";
constexpr auto mapperIntf = "xyz.openbmc_project.ObjectMapper";
Objects::Objects(sdbusplus::bus::bus& bus,
- const std::vector<Interface>& filter):
+ const std::vector<Interface>& filter) :
bus(bus)
{
auto depth = 0;
- auto mapperCall = bus.new_method_call(mapperService,
- mapperPath,
- mapperIntf,
+ auto mapperCall = bus.new_method_call(mapperService, mapperPath, mapperIntf,
"GetSubTree");
mapperCall.append(root);
mapperCall.append(depth);
@@ -66,10 +66,8 @@ Objects::Objects(sdbusplus::bus::bus& bus,
Service Objects::service(const Path& path, const Interface& interface) const
{
using Interfaces = std::vector<Interface>;
- auto mapperCall = bus.new_method_call(mapperService,
- mapperPath,
- mapperIntf,
- "GetObject");
+ auto mapperCall =
+ bus.new_method_call(mapperService, mapperPath, mapperIntf, "GetObject");
mapperCall.append(path);
mapperCall.append(Interfaces({interface}));
@@ -118,12 +116,9 @@ std::tuple<Path, OneTimeEnabled> setting(const Objects& objects,
const Path& oneTimeSetting = paths[index];
const Path& regularSetting = paths[!index];
- auto method =
- objects.bus.new_method_call(
- objects.service(oneTimeSetting, iface).c_str(),
- oneTimeSetting.c_str(),
- ipmi::PROP_INTF,
- "Get");
+ auto method = objects.bus.new_method_call(
+ objects.service(oneTimeSetting, iface).c_str(), oneTimeSetting.c_str(),
+ ipmi::PROP_INTF, "Get");
method.append(enabledIntf, "Enabled");
auto reply = objects.bus.call(method);
if (reply.is_method_error())
diff --git a/settings.hpp b/settings.hpp
index 91c9930..5382fdd 100644
--- a/settings.hpp
+++ b/settings.hpp
@@ -1,8 +1,8 @@
#pragma once
+#include <sdbusplus/bus.hpp>
#include <string>
#include <tuple>
-#include <sdbusplus/bus.hpp>
namespace settings
{
@@ -18,36 +18,36 @@ constexpr auto root = "/";
*/
struct Objects
{
- public:
- /** @brief Constructor - fetch settings objects
- *
- * @param[in] bus - The Dbus bus object
- * @param[in] filter - A vector of settings interfaces the caller is
- * interested in.
- */
- Objects(sdbusplus::bus::bus& bus, const std::vector<Interface>& filter);
- Objects(const Objects&) = default;
- Objects& operator=(const Objects&) = default;
- Objects(Objects&&) = delete;
- Objects& operator=(Objects&&) = delete;
- ~Objects() = default;
+ public:
+ /** @brief Constructor - fetch settings objects
+ *
+ * @param[in] bus - The Dbus bus object
+ * @param[in] filter - A vector of settings interfaces the caller is
+ * interested in.
+ */
+ Objects(sdbusplus::bus::bus& bus, const std::vector<Interface>& filter);
+ Objects(const Objects&) = default;
+ Objects& operator=(const Objects&) = default;
+ Objects(Objects&&) = delete;
+ Objects& operator=(Objects&&) = delete;
+ ~Objects() = default;
- /** @brief Fetch d-bus service, given a path and an interface. The
- * service can't be cached because mapper returns unique
- * service names.
- *
- * @param[in] path - The Dbus object
- * @param[in] interface - The Dbus interface
- *
- * @return std::string - the dbus service
- */
- Service service(const Path& path, const Interface& interface) const;
+ /** @brief Fetch d-bus service, given a path and an interface. The
+ * service can't be cached because mapper returns unique
+ * service names.
+ *
+ * @param[in] path - The Dbus object
+ * @param[in] interface - The Dbus interface
+ *
+ * @return std::string - the dbus service
+ */
+ Service service(const Path& path, const Interface& interface) const;
- /** @brief map of settings objects */
- std::map<Interface, std::vector<Path>> map;
+ /** @brief map of settings objects */
+ std::map<Interface, std::vector<Path>> map;
- /** @brief The Dbus bus object */
- sdbusplus::bus::bus& bus;
+ /** @brief The Dbus bus object */
+ sdbusplus::bus::bus& bus;
};
namespace boot
diff --git a/softoff/mainapp.cpp b/softoff/mainapp.cpp
index 3a47cc4..3b153a8 100644
--- a/softoff/mainapp.cpp
+++ b/softoff/mainapp.cpp
@@ -13,13 +13,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#include "config.h"
+
+#include "softoff.hpp"
+#include "timer.hpp"
+
#include <systemd/sd-event.h>
-#include <phosphor-logging/elog.hpp>
+
#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/elog.hpp>
#include <xyz/openbmc_project/State/Host/error.hpp>
-#include "softoff.hpp"
-#include "config.h"
-#include "timer.hpp"
// Return -1 on any errors to ensure we follow the calling targets OnFailure=
// path
@@ -41,7 +44,7 @@ int main(int argc, char** argv)
if (r < 0)
{
log<level::ERR>("Failure to create sd_event handler",
- entry("ERRNO=0x%X", -r));
+ entry("ERRNO=0x%X", -r));
return -1;
}
@@ -58,22 +61,23 @@ int main(int argc, char** argv)
// Wait for client requests until this application has processed
// at least one successful SoftPowerOff or we timed out
- while(!powerObj.isCompleted() && !powerObj.isTimerExpired())
+ while (!powerObj.isCompleted() && !powerObj.isTimerExpired())
{
// -1 denotes wait for ever
r = sd_event_run(events, (uint64_t)-1);
if (r < 0)
{
log<level::ERR>("Failure in processing request",
- entry("ERRNO=0x%X", -r));
+ entry("ERRNO=0x%X", -r));
return -1;
}
}
// Log an error if we timed out after getting Ack for SMS_ATN and before
// getting the Host Shutdown response
- if(powerObj.isTimerExpired() && (powerObj.responseReceived() ==
- phosphor::ipmi::Base::SoftPowerOff::HostResponse::SoftOffReceived))
+ if (powerObj.isTimerExpired() &&
+ (powerObj.responseReceived() ==
+ phosphor::ipmi::Base::SoftPowerOff::HostResponse::SoftOffReceived))
{
using error =
sdbusplus::xyz::openbmc_project::State::Host::Error::SoftOffTimeout;
diff --git a/softoff/softoff.cpp b/softoff/softoff.cpp
index d76750a..921536f 100644
--- a/softoff/softoff.cpp
+++ b/softoff/softoff.cpp
@@ -13,12 +13,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+#include "config.h"
+
+#include "softoff.hpp"
+
#include <chrono>
#include <phosphor-logging/log.hpp>
-#include <xyz/openbmc_project/Control/Host/server.hpp>
#include <utils.hpp>
-#include "softoff.hpp"
-#include "config.h"
+#include <xyz/openbmc_project/Control/Host/server.hpp>
namespace phosphor
{
namespace ipmi
@@ -29,16 +31,13 @@ using namespace sdbusplus::xyz::openbmc_project::Control::server;
void SoftPowerOff::sendHostShutDownCmd()
{
- auto ctrlHostPath = std::string{CONTROL_HOST_OBJ_MGR} + '/' +
- HOST_NAME + '0';
- auto host = ::ipmi::getService(this->bus,
- CONTROL_HOST_BUSNAME,
+ auto ctrlHostPath =
+ std::string{CONTROL_HOST_OBJ_MGR} + '/' + HOST_NAME + '0';
+ auto host = ::ipmi::getService(this->bus, CONTROL_HOST_BUSNAME,
ctrlHostPath.c_str());
- auto method = bus.new_method_call(host.c_str(),
- ctrlHostPath.c_str(),
- CONTROL_HOST_BUSNAME,
- "Execute");
+ auto method = bus.new_method_call(host.c_str(), ctrlHostPath.c_str(),
+ CONTROL_HOST_BUSNAME, "Execute");
method.append(convertForMessage(Host::Command::SoftOff).c_str());
@@ -53,7 +52,6 @@ void SoftPowerOff::sendHostShutDownCmd()
return;
}
-
// Function called on host control signals
void SoftPowerOff::hostControlEvent(sdbusplus::message::message& msg)
{
@@ -63,32 +61,33 @@ void SoftPowerOff::hostControlEvent(sdbusplus::message::message& msg)
msg.read(cmdCompleted, cmdStatus);
log<level::DEBUG>("Host control signal values",
- entry("COMMAND=%s",cmdCompleted.c_str()),
- entry("STATUS=%s",cmdStatus.c_str()));
+ entry("COMMAND=%s", cmdCompleted.c_str()),
+ entry("STATUS=%s", cmdStatus.c_str()));
- if(Host::convertResultFromString(cmdStatus) == Host::Result::Success)
+ if (Host::convertResultFromString(cmdStatus) == Host::Result::Success)
{
// Set our internal property indicating we got host attention
- sdbusplus::xyz::openbmc_project::Ipmi::Internal
- ::server::SoftPowerOff::responseReceived(
- HostResponse::SoftOffReceived);
+ sdbusplus::xyz::openbmc_project::Ipmi::Internal ::server::SoftPowerOff::
+ responseReceived(HostResponse::SoftOffReceived);
// Start timer for host shutdown
using namespace std::chrono;
auto time = duration_cast<microseconds>(
- seconds(IPMI_HOST_SHUTDOWN_COMPLETE_TIMEOUT_SECS));
+ seconds(IPMI_HOST_SHUTDOWN_COMPLETE_TIMEOUT_SECS));
auto r = startTimer(time);
if (r < 0)
{
log<level::ERR>("Failure to start Host shutdown wait timer",
- entry("ERRNO=0x%X", -r));
+ entry("ERRNO=0x%X", -r));
}
else
{
- log<level::INFO>("Timer started waiting for host to shutdown",
+ log<level::INFO>(
+ "Timer started waiting for host to shutdown",
entry("TIMEOUT_IN_MSEC=%llu",
- (duration_cast<milliseconds>(seconds
- (IPMI_HOST_SHUTDOWN_COMPLETE_TIMEOUT_SECS))).count()));
+ (duration_cast<milliseconds>(
+ seconds(IPMI_HOST_SHUTDOWN_COMPLETE_TIMEOUT_SECS)))
+ .count()));
}
}
else
@@ -120,15 +119,15 @@ auto SoftPowerOff::responseReceived(HostResponse response) -> HostResponse
if (r < 0)
{
log<level::ERR>("Failure to STOP the timer",
- entry("ERRNO=0x%X", -r));
+ entry("ERRNO=0x%X", -r));
}
// This marks the completion of soft power off sequence.
completed = true;
}
- return sdbusplus::xyz::openbmc_project::Ipmi::Internal
- ::server::SoftPowerOff::responseReceived(response);
+ return sdbusplus::xyz::openbmc_project::Ipmi::Internal ::server::
+ SoftPowerOff::responseReceived(response);
}
} // namespace ipmi
diff --git a/softoff/softoff.hpp b/softoff/softoff.hpp
index 43bc303..b7555e3 100644
--- a/softoff/softoff.hpp
+++ b/softoff/softoff.hpp
@@ -1,12 +1,14 @@
#pragma once
+#include "config.h"
+
+#include "timer.hpp"
+
+#include <functional>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/server/object.hpp>
-#include <functional>
#include <xyz/openbmc_project/Control/Host/server.hpp>
#include <xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp>
-#include "timer.hpp"
-#include "config.h"
namespace phosphor
{
namespace ipmi
@@ -20,126 +22,121 @@ namespace sdbusRule = sdbusplus::bus::match::rules;
/** @class SoftPowerOff
* @brief Responsible for coordinating Host SoftPowerOff operation
*/
-class SoftPowerOff : public sdbusplus::server::object::object<
- Base::SoftPowerOff>
+class SoftPowerOff
+ : public sdbusplus::server::object::object<Base::SoftPowerOff>
{
- public:
- /** @brief Constructs SoftPowerOff object.
- *
- * @param[in] bus - system dbus handler
- * @param[in] event - sd_event handler
- * @param[in] objPath - The Dbus path hosting SoftPowerOff function
- */
- SoftPowerOff(sdbusplus::bus::bus& bus,
- sd_event* event,
- const char* objPath) :
- sdbusplus::server::object::object<
- Base::SoftPowerOff>(bus, objPath, false),
- bus(bus),
- timer(event),
- hostControlSignal(
- bus,
- sdbusRule::type::signal() +
- sdbusRule::member("CommandComplete") +
- sdbusRule::path("/xyz/openbmc_project/control/host0") +
- sdbusRule::interface(CONTROL_HOST_BUSNAME) +
- sdbusRule::argN(0,convertForMessage(
- Host::Command::SoftOff)),
- std::bind(std::mem_fn(&SoftPowerOff::hostControlEvent),
- this, std::placeholders::_1))
- {
- // Need to announce since we may get the response
- // very quickly on host shutdown command
- emit_object_added();
-
- // The whole purpose of this application is to send a host shutdown
- // command and watch for the soft power off to go through. We need
- // the interface added signal emitted before we send the shutdown
- // command just to attend to lightning fast response from host
- sendHostShutDownCmd();
- }
-
- /** @brief Tells if the objective of this application is completed */
- inline auto isCompleted()
- {
- return completed;
- }
-
- /** @brief Tells if the referenced timer is expired or not */
- inline auto isTimerExpired()
- {
- return timer.isExpired();
- }
-
- /** @brief overloaded property setter function
- *
- * @param[in] value - One of SoftOffReceived / HostShutdown
- *
- * @return Success or exception thrown
- */
- HostResponse responseReceived(HostResponse value) override;
-
- /** @brief Using the base class's getter method */
- using Base::SoftPowerOff::responseReceived;
-
- /** @brief Calls to start a timer
- *
- * @param[in] usec - Time in microseconds
- *
- * @return Success or exception thrown
- */
- int startTimer(const std::chrono::microseconds& usec);
-
- private:
- // Need this to send SMS_ATTN
- // TODO : Switch over to using mapper service in a different patch
- static constexpr auto HOST_IPMI_BUS = "org.openbmc.HostIpmi";
- static constexpr auto HOST_IPMI_OBJ = "/org/openbmc/HostIpmi/1";
- static constexpr auto HOST_IPMI_INTF = "org.openbmc.HostIpmi";
-
- /* @brief sdbusplus handle */
- sdbusplus::bus::bus& bus;
-
- /** @brief Reference to Timer object */
- Timer timer;
-
- /** @brief Marks the end of life of this application.
- *
- * This is set to true if host gives appropriate responses
- * for the sequence of commands.
- */
- bool completed = false;
-
- /** @brief Subscribe to host control signals
- *
- * Protocol is to send the host power off request to the host
- * control interface and then wait for a signal indicating pass/fail
- **/
- sdbusplus::bus::match_t hostControlSignal;
-
- /** @brief Sends host control command to tell host to shut down
- *
- * After sending the command, wait for a signal indicating the status
- * of the command.
- *
- * After receiving the initial response, start a timer for 30 minutes
- * to let host do a clean shutdown of partitions. When the response is
- * received from the host, it indicates that BMC can do a power off.
- * If BMC fails to get any response, then a hard power off would
- * be forced.
- *
- * @return - Does not return anything. Error will result in exception
- * being thrown
- */
- void sendHostShutDownCmd();
-
- /** @brief Callback function on host control signals
- *
- * @param[in] msg - Data associated with subscribed signal
- *
- */
- void hostControlEvent(sdbusplus::message::message& msg);
-
+ public:
+ /** @brief Constructs SoftPowerOff object.
+ *
+ * @param[in] bus - system dbus handler
+ * @param[in] event - sd_event handler
+ * @param[in] objPath - The Dbus path hosting SoftPowerOff function
+ */
+ SoftPowerOff(sdbusplus::bus::bus& bus, sd_event* event,
+ const char* objPath) :
+ sdbusplus::server::object::object<Base::SoftPowerOff>(bus, objPath,
+ false),
+ bus(bus), timer(event),
+ hostControlSignal(
+ bus,
+ sdbusRule::type::signal() + sdbusRule::member("CommandComplete") +
+ sdbusRule::path("/xyz/openbmc_project/control/host0") +
+ sdbusRule::interface(CONTROL_HOST_BUSNAME) +
+ sdbusRule::argN(0, convertForMessage(Host::Command::SoftOff)),
+ std::bind(std::mem_fn(&SoftPowerOff::hostControlEvent), this,
+ std::placeholders::_1))
+ {
+ // Need to announce since we may get the response
+ // very quickly on host shutdown command
+ emit_object_added();
+
+ // The whole purpose of this application is to send a host shutdown
+ // command and watch for the soft power off to go through. We need
+ // the interface added signal emitted before we send the shutdown
+ // command just to attend to lightning fast response from host
+ sendHostShutDownCmd();
+ }
+
+ /** @brief Tells if the objective of this application is completed */
+ inline auto isCompleted()
+ {
+ return completed;
+ }
+
+ /** @brief Tells if the referenced timer is expired or not */
+ inline auto isTimerExpired()
+ {
+ return timer.isExpired();
+ }
+
+ /** @brief overloaded property setter function
+ *
+ * @param[in] value - One of SoftOffReceived / HostShutdown
+ *
+ * @return Success or exception thrown
+ */
+ HostResponse responseReceived(HostResponse value) override;
+
+ /** @brief Using the base class's getter method */
+ using Base::SoftPowerOff::responseReceived;
+
+ /** @brief Calls to start a timer
+ *
+ * @param[in] usec - Time in microseconds
+ *
+ * @return Success or exception thrown
+ */
+ int startTimer(const std::chrono::microseconds& usec);
+
+ private:
+ // Need this to send SMS_ATTN
+ // TODO : Switch over to using mapper service in a different patch
+ static constexpr auto HOST_IPMI_BUS = "org.openbmc.HostIpmi";
+ static constexpr auto HOST_IPMI_OBJ = "/org/openbmc/HostIpmi/1";
+ static constexpr auto HOST_IPMI_INTF = "org.openbmc.HostIpmi";
+
+ /* @brief sdbusplus handle */
+ sdbusplus::bus::bus& bus;
+
+ /** @brief Reference to Timer object */
+ Timer timer;
+
+ /** @brief Marks the end of life of this application.
+ *
+ * This is set to true if host gives appropriate responses
+ * for the sequence of commands.
+ */
+ bool completed = false;
+
+ /** @brief Subscribe to host control signals
+ *
+ * Protocol is to send the host power off request to the host
+ * control interface and then wait for a signal indicating pass/fail
+ **/
+ sdbusplus::bus::match_t hostControlSignal;
+
+ /** @brief Sends host control command to tell host to shut down
+ *
+ * After sending the command, wait for a signal indicating the status
+ * of the command.
+ *
+ * After receiving the initial response, start a timer for 30 minutes
+ * to let host do a clean shutdown of partitions. When the response is
+ * received from the host, it indicates that BMC can do a power off.
+ * If BMC fails to get any response, then a hard power off would
+ * be forced.
+ *
+ * @return - Does not return anything. Error will result in exception
+ * being thrown
+ */
+ void sendHostShutDownCmd();
+
+ /** @brief Callback function on host control signals
+ *
+ * @param[in] msg - Data associated with subscribed signal
+ *
+ */
+ void hostControlEvent(sdbusplus::message::message& msg);
};
} // namespace ipmi
} // namespace phosphor
diff --git a/softoff/test/utest.cpp b/softoff/test/utest.cpp
index baaead4..0dd99ae 100644
--- a/softoff/test/utest.cpp
+++ b/softoff/test/utest.cpp
@@ -1,85 +1,83 @@
-#include <iostream>
+#include "timer.hpp"
+
#include <chrono>
+#include <iostream>
+
#include <gtest/gtest.h>
-#include "timer.hpp"
using namespace phosphor::ipmi;
class TimerTest : public ::testing::Test
{
- public:
- // systemd event handler
- sd_event* events;
+ public:
+ // systemd event handler
+ sd_event* events;
- // Need this so that events can be initialized.
- int rc;
+ // Need this so that events can be initialized.
+ int rc;
- // Source of event
- sd_event_source* eventSource = nullptr;
+ // Source of event
+ sd_event_source* eventSource = nullptr;
- // Add a Timer Object
- Timer timer;
+ // Add a Timer Object
+ Timer timer;
- // Gets called as part of each TEST_F construction
- TimerTest()
- : rc(sd_event_default(&events)),
- timer(events)
- {
- // Check for successful creation of
- // event handler and timer object.
- EXPECT_GE(rc, 0);
- }
+ // Gets called as part of each TEST_F construction
+ TimerTest() : rc(sd_event_default(&events)), timer(events)
+ {
+ // Check for successful creation of
+ // event handler and timer object.
+ EXPECT_GE(rc, 0);
+ }
- // Gets called as part of each TEST_F destruction
- ~TimerTest()
- {
- events = sd_event_unref(events);
- }
+ // Gets called as part of each TEST_F destruction
+ ~TimerTest()
+ {
+ events = sd_event_unref(events);
+ }
};
-
class TimerTestCallBack : public ::testing::Test
{
- public:
- // systemd event handler
- sd_event* events;
+ public:
+ // systemd event handler
+ sd_event* events;
- // Need this so that events can be initialized.
- int rc;
+ // Need this so that events can be initialized.
+ int rc;
- // Source of event
- sd_event_source* eventSource = nullptr;
+ // Source of event
+ sd_event_source* eventSource = nullptr;
- // Add a Timer Object
- std::unique_ptr<Timer> timer = nullptr;
+ // Add a Timer Object
+ std::unique_ptr<Timer> timer = nullptr;
- // Indicates optional call back fun was called
- bool callBackDone = false;
+ // Indicates optional call back fun was called
+ bool callBackDone = false;
- void callBack()
- {
- callBackDone = true;
- }
+ void callBack()
+ {
+ callBackDone = true;
+ }
- // Gets called as part of each TEST_F construction
- TimerTestCallBack()
- : rc(sd_event_default(&events))
+ // Gets called as part of each TEST_F construction
+ TimerTestCallBack() : rc(sd_event_default(&events))
- {
- // Check for successful creation of
- // event handler and timer object.
- EXPECT_GE(rc, 0);
+ {
+ // Check for successful creation of
+ // event handler and timer object.
+ EXPECT_GE(rc, 0);
- std::function<void()> func(std::bind(
- &TimerTestCallBack::callBack, this));
- timer = std::make_unique<Timer>(events, func);
- }
+ std::function<void()> func(
+ std::bind(&TimerTestCallBack::callBack, this));
+ timer = std::make_unique<Timer>(events, func);
+ }
- // Gets called as part of each TEST_F destruction
- ~TimerTestCallBack()
- {
- events = sd_event_unref(events);
- }
+ // Gets called as part of each TEST_F destruction
+ ~TimerTestCallBack()
+ {
+ events = sd_event_unref(events);
+ }
};
/** @brief Makes sure that timer is expired and the
@@ -95,11 +93,11 @@ TEST_F(TimerTest, timerExpiresAfter2seconds)
// Waiting 2 seconds is enough here since we have
// already spent some usec now
int count = 0;
- while(count < 2 && !timer.isExpired())
+ while (count < 2 && !timer.isExpired())
{
// Returns -0- on timeout and positive number on dispatch
auto sleepTime = duration_cast<microseconds>(seconds(1));
- if(!sd_event_run(events, sleepTime.count()))
+ if (!sd_event_run(events, sleepTime.count()))
{
count++;
}
@@ -123,11 +121,11 @@ TEST_F(TimerTest, timerNotExpiredAfter2Seconds)
// Wait 2 seconds and see that timer is not expired
int count = 0;
- while(count < 2)
+ while (count < 2)
{
// Returns -0- on timeout
auto sleepTime = duration_cast<microseconds>(seconds(1));
- if(!sd_event_run(events, sleepTime.count()))
+ if (!sd_event_run(events, sleepTime.count()))
{
count++;
}
@@ -157,11 +155,11 @@ TEST_F(TimerTest, updateTimerAndExpectExpire)
// Wait 3 seconds and see that timer is expired
int count = 0;
- while(count < 3 && !timer.isExpired())
+ while (count < 3 && !timer.isExpired())
{
// Returns -0- on timeout
auto sleepTime = duration_cast<microseconds>(seconds(1));
- if(!sd_event_run(events, sleepTime.count()))
+ if (!sd_event_run(events, sleepTime.count()))
{
count++;
}
@@ -193,11 +191,11 @@ TEST_F(TimerTest, updateTimerAndNeverExpire)
// Wait 2 seconds and see that timer is expired
int count = 0;
- while(count < 2)
+ while (count < 2)
{
// Returns -0- on timeout
auto sleepTime = duration_cast<microseconds>(seconds(1));
- if(!sd_event_run(events, sleepTime.count()))
+ if (!sd_event_run(events, sleepTime.count()))
{
count++;
}
@@ -219,11 +217,11 @@ TEST_F(TimerTestCallBack, optionalFuncCallBackDone)
// Waiting 2 seconds is enough here since we have
// already spent some usec now
int count = 0;
- while(count < 2 && !timer->isExpired())
+ while (count < 2 && !timer->isExpired())
{
// Returns -0- on timeout and positive number on dispatch
auto sleepTime = duration_cast<microseconds>(seconds(1));
- if(!sd_event_run(events, sleepTime.count()))
+ if (!sd_event_run(events, sleepTime.count()))
{
count++;
}
@@ -248,11 +246,11 @@ TEST_F(TimerTestCallBack, timerNotExpiredAfter2SecondsNoOptionalCallBack)
// Wait 2 seconds and see that timer is not expired
int count = 0;
- while(count < 2)
+ while (count < 2)
{
// Returns -0- on timeout
auto sleepTime = duration_cast<microseconds>(seconds(1));
- if(!sd_event_run(events, sleepTime.count()))
+ if (!sd_event_run(events, sleepTime.count()))
{
count++;
}
diff --git a/storageaddsel.cpp b/storageaddsel.cpp
index ec33b1a..95fcddf 100644
--- a/storageaddsel.cpp
+++ b/storageaddsel.cpp
@@ -1,22 +1,24 @@
+#include "elog-errors.hpp"
+#include "error-HostEvent.hpp"
+#include "types.hpp"
+
+#include <mapper.h>
#include <stdint.h>
+#include <systemd/sd-bus.h>
+
+#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <iostream>
-#include <algorithm>
-#include <vector>
#include <memory>
-#include <systemd/sd-bus.h>
-#include <mapper.h>
#include <phosphor-logging/elog.hpp>
+#include <vector>
+#include <xyz/openbmc_project/Logging/Entry/server.hpp>
+
#include "host-ipmid/ipmid-api.h"
-#include "elog-errors.hpp"
-#include "error-HostEvent.hpp"
#include "sensorhandler.h"
#include "storagehandler.h"
-#include "types.hpp"
-#include "xyz/openbmc_project/Logging/Entry/server.hpp"
-
using namespace std;
using namespace phosphor::logging;
@@ -24,7 +26,8 @@ using namespace sdbusplus::xyz::openbmc_project::Logging::server;
extern const ipmi::sensor::InvObjectIDMap invSensors;
//////////////////////////
-struct esel_section_headers_t {
+struct esel_section_headers_t
+{
uint8_t sectionid[2];
uint8_t sectionlength[2];
uint8_t version;
@@ -32,118 +35,128 @@ struct esel_section_headers_t {
uint8_t compid;
};
-struct severity_values_t {
+struct severity_values_t
+{
uint8_t type;
Entry::Level level;
};
-
const std::vector<severity_values_t> g_sev_desc = {
{0x10, Entry::Level::Warning}, // recoverable error
{0x20, Entry::Level::Warning}, // predictive error
- // TODO via github issue 3066 : map level below to Level::Unrecoverable
- {0x40, Entry::Level::Error}, // unrecoverable error
- // TODO via github issue 3066 : map level below to Level::Critical
- {0x50, Entry::Level::Error}, // critical error
- {0x60, Entry::Level::Error}, // error from a diagnostic test
+ // TODO via github issue 3066 : map level
+ // below to Level::Unrecoverable
+ {0x40, Entry::Level::Error}, // unrecoverable error
+ // TODO via github issue 3066 : map level below
+ // to Level::Critical
+ {0x50, Entry::Level::Error}, // critical error
+ {0x60, Entry::Level::Error}, // error from a diagnostic test
{0x70, Entry::Level::Warning}, // recoverable symptom
- {0xFF, Entry::Level::Error}, //unknown error
+ {0xFF, Entry::Level::Error}, // unknown error
};
-Entry::Level sev_lookup(uint8_t n) {
- auto i = std::find_if(std::begin(g_sev_desc), std::end(g_sev_desc),
- [n](auto p){ return p.type == n || p.type == 0xFF; });
+Entry::Level sev_lookup(uint8_t n)
+{
+ auto i =
+ std::find_if(std::begin(g_sev_desc), std::end(g_sev_desc),
+ [n](auto p) { return p.type == n || p.type == 0xFF; });
return i->level;
}
-
-
-
-int find_sensor_type_string(uint8_t sensor_number, char **s) {
+int find_sensor_type_string(uint8_t sensor_number, char** s)
+{
dbus_interface_t a;
- const char *p;
+ const char* p;
int r;
r = find_openbmc_path(sensor_number, &a);
- if ((r < 0) || (a.bus[0] == 0)) {
+ if ((r < 0) || (a.bus[0] == 0))
+ {
// Just make a generic message for errors that
// occur on sensors that don't exist
r = asprintf(s, "Unknown Sensor (0x%02x)", sensor_number);
- } else {
+ }
+ else
+ {
- if ((p = strrchr (a.path, '/')) == NULL) {
+ if ((p = strrchr(a.path, '/')) == NULL)
+ {
p = "/Unknown Sensor";
}
- *s = strdup(p+1);
+ *s = strdup(p + 1);
}
return 0;
}
+size_t getfilestream(const char* fn, uint8_t** buffer)
+{
-size_t getfilestream(const char *fn, uint8_t **buffer) {
-
- FILE *fp;
+ FILE* fp;
ssize_t size = 0;
int r;
- if ((fp = fopen(fn, "rb")) != NULL) {
+ if ((fp = fopen(fn, "rb")) != NULL)
+ {
r = fseek(fp, 0, SEEK_END);
- if (r) {
+ if (r)
+ {
log<level::ERR>("Fseek failed");
goto fclose_fp;
}
size = ftell(fp);
- if (size == -1L) {
- log<level::ERR>("Ftell failed",
- entry("ERROR=%s", strerror(errno)));
+ if (size == -1L)
+ {
+ log<level::ERR>("Ftell failed", entry("ERROR=%s", strerror(errno)));
size = 0;
goto fclose_fp;
}
r = fseek(fp, 0, SEEK_SET);
- if (r) {
+ if (r)
+ {
log<level::ERR>("Fseek failed");
size = 0;
goto fclose_fp;
}
- *buffer = new uint8_t [size];
+ *buffer = new uint8_t[size];
r = fread(*buffer, 1, size, fp);
- if ( r != size) {
+ if (r != size)
+ {
size = 0;
log<level::ERR>("Fread failed\n");
}
-fclose_fp:
+ fclose_fp:
fclose(fp);
}
return static_cast<size_t>(size);
}
-
-Entry::Level create_esel_severity(const uint8_t *buffer) {
+Entry::Level create_esel_severity(const uint8_t* buffer)
+{
uint8_t severity;
// Dive in to the IBM log to find the severity
- severity = (0xF0 & buffer[0x4A]);
+ severity = (0xF0 & buffer[0x4A]);
return sev_lookup(severity);
}
-int create_esel_association(const uint8_t *buffer, std::string& inventoryPath)
+int create_esel_association(const uint8_t* buffer, std::string& inventoryPath)
{
- ipmi_add_sel_request_t *p;
+ ipmi_add_sel_request_t* p;
uint8_t sensor;
- p = ( ipmi_add_sel_request_t *) buffer;
+ p = (ipmi_add_sel_request_t*)buffer;
sensor = p->sensornumber;
@@ -153,7 +166,7 @@ int create_esel_association(const uint8_t *buffer, std::string& inventoryPath)
* Search the sensor number to inventory path mapping to figure out the
* inventory associated with the ESEL.
*/
- for (auto const &iter : invSensors)
+ for (auto const& iter : invSensors)
{
if (iter.second.sensorID == sensor)
{
@@ -165,23 +178,22 @@ int create_esel_association(const uint8_t *buffer, std::string& inventoryPath)
return 0;
}
+int create_esel_description(const uint8_t* buffer, Entry::Level level,
+ char** message)
+{
-
-int create_esel_description(const uint8_t *buffer, Entry::Level level,
- char **message) {
-
-
- ipmi_add_sel_request_t *p;
- char *m;
+ ipmi_add_sel_request_t* p;
+ char* m;
int r;
- p = ( ipmi_add_sel_request_t *) buffer;
+ p = (ipmi_add_sel_request_t*)buffer;
- find_sensor_type_string(p->sensornumber,&m);
+ find_sensor_type_string(p->sensornumber, &m);
- r = asprintf(message, "A %s has experienced an error of level %d",
- m, static_cast<uint32_t>(level) );
- if (r == -1) {
+ r = asprintf(message, "A %s has experienced an error of level %d", m,
+ static_cast<uint32_t>(level));
+ if (r == -1)
+ {
log<level::ERR>("Failed to allocate memory for ESEL description");
}
@@ -190,45 +202,42 @@ int create_esel_description(const uint8_t *buffer, Entry::Level level,
return 0;
}
-
-int send_esel_to_dbus(const char *desc,
- Entry::Level level,
- const std::string& inventoryPath,
- uint8_t *debug,
+int send_esel_to_dbus(const char* desc, Entry::Level level,
+ const std::string& inventoryPath, uint8_t* debug,
size_t debuglen)
{
// Allocate enough space to represent the data in hex separated by spaces,
// to mimic how IPMI would display the data.
- unique_ptr<char[]> selData(new char[(debuglen*3) + 1]());
+ unique_ptr<char[]> selData(new char[(debuglen * 3) + 1]());
uint32_t i = 0;
- for(i = 0; i < debuglen; i++)
+ for (i = 0; i < debuglen; i++)
{
- sprintf(&selData[i*3], "%02x ", 0xFF & ((char*)debug)[i]);
+ sprintf(&selData[i * 3], "%02x ", 0xFF & ((char*)debug)[i]);
}
- selData[debuglen*3] = '\0';
+ selData[debuglen * 3] = '\0';
- using error = sdbusplus::org::open_power::Host::Error::Event;
+ using error = sdbusplus::org::open_power::Host::Error::Event;
using metadata = org::open_power::Host::Event;
- report<error>(level,
- metadata::ESEL(selData.get()),
+ report<error>(level, metadata::ESEL(selData.get()),
metadata::CALLOUT_INVENTORY_PATH(inventoryPath.c_str()));
return 0;
}
-
-void send_esel(uint16_t recordid) {
- char *desc;
- uint8_t *buffer = NULL;
- const char *path = "/tmp/esel";
+void send_esel(uint16_t recordid)
+{
+ char* desc;
+ uint8_t* buffer = NULL;
+ const char* path = "/tmp/esel";
ssize_t sz;
int r;
std::string inventoryPath;
sz = getfilestream(path, &buffer);
- if (sz == 0) {
+ if (sz == 0)
+ {
log<level::ERR>("Error file does not exist",
entry("FILENAME=%s", path));
return;
@@ -239,7 +248,8 @@ void send_esel(uint16_t recordid) {
create_esel_description(buffer, sev, &desc);
r = send_esel_to_dbus(desc, sev, inventoryPath, buffer, sz);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to send esel to dbus");
}
@@ -278,8 +288,8 @@ void createProcedureLogEntry(uint8_t procedureNum)
// Each byte in eSEL is formatted as %02x with a space between bytes and
// insert '/0' at the end of the character array.
static constexpr auto byteSeparator = 3;
- std::unique_ptr<char[]> data(new char[
- (eSELData.size() * byteSeparator) + 1]());
+ std::unique_ptr<char[]> data(
+ new char[(eSELData.size() * byteSeparator) + 1]());
for (size_t i = 0; i < eSELData.size(); i++)
{
@@ -287,7 +297,7 @@ void createProcedureLogEntry(uint8_t procedureNum)
}
data[eSELData.size() * byteSeparator] = '\0';
- using error = sdbusplus::org::open_power::Host::Error::MaintenanceProcedure;
+ using error = sdbusplus::org::open_power::Host::Error::MaintenanceProcedure;
using metadata = org::open_power::Host::MaintenanceProcedure;
report<error>(metadata::ESEL(data.get()),
diff --git a/storageaddsel.h b/storageaddsel.h
index 5cb826e..113254b 100644
--- a/storageaddsel.h
+++ b/storageaddsel.h
@@ -1,6 +1,6 @@
#include <stdint.h>
-void send_esel(uint16_t recordid) ;
+void send_esel(uint16_t recordid);
/** @brief Read eSEL data into a string
*
diff --git a/storagehandler.cpp b/storagehandler.cpp
index f0997e8..72a0c08 100644
--- a/storagehandler.cpp
+++ b/storagehandler.cpp
@@ -1,49 +1,52 @@
-#include <algorithm>
#include <arpa/inet.h>
+
+#include <algorithm>
#include <chrono>
#include <cstdio>
#if __has_include(<filesystem>)
#include <filesystem>
#elif __has_include(<experimental/filesystem>)
#include <experimental/filesystem>
-namespace std {
- // splice experimental::filesystem into std
- namespace filesystem = std::experimental::filesystem;
-}
+namespace std
+{
+// splice experimental::filesystem into std
+namespace filesystem = std::experimental::filesystem;
+} // namespace std
#else
-# error filesystem not available
+#error filesystem not available
#endif
+#include "fruread.hpp"
+#include "read_fru_data.hpp"
+#include "selutility.hpp"
+#include "utils.hpp"
+
#include <mapper.h>
-#include <string>
#include <systemd/sd-bus.h>
-#include <phosphor-logging/log.hpp>
#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
#include <sdbusplus/server.hpp>
+#include <string>
+#include <xyz/openbmc_project/Common/error.hpp>
-#include "fruread.hpp"
#include "host-ipmid/ipmid-api.h"
-#include "read_fru_data.hpp"
-#include "selutility.hpp"
+#include "sensorhandler.h"
#include "storageaddsel.h"
#include "storagehandler.h"
-#include "utils.hpp"
-#include "xyz/openbmc_project/Common/error.hpp"
-#include "sensorhandler.h"
-
void register_netfn_storage_functions() __attribute__((constructor));
-unsigned int g_sel_time = 0xFFFFFFFF;
+unsigned int g_sel_time = 0xFFFFFFFF;
extern unsigned short g_sel_reserve;
extern const ipmi::sensor::IdInfoMap sensors;
extern const FruMap frus;
-namespace {
+namespace
+{
constexpr auto TIME_INTERFACE = "xyz.openbmc_project.Time.EpochTime";
constexpr auto HOST_TIME_PATH = "/xyz/openbmc_project/time/host";
constexpr auto DBUS_PROPERTIES = "org.freedesktop.DBus.Properties";
-constexpr auto PROPERTY_ELAPSED= "Elapsed";
+constexpr auto PROPERTY_ELAPSED = "Elapsed";
const char* getTimeString(const uint64_t& usecSinceEpoch)
{
@@ -52,26 +55,26 @@ const char* getTimeString(const uint64_t& usecSinceEpoch)
auto t = system_clock::to_time_t(tp);
return std::ctime(&t);
}
-}
+} // namespace
namespace cache
{
- /*
- * This cache contains the object paths of the logging entries sorted in the
- * order of the filename(numeric order). The cache is initialized by
- * invoking readLoggingObjectPaths with the cache as the parameter. The
- * cache is invoked in the execution of the Get SEL info and Delete SEL
- * entry command. The Get SEL Info command is typically invoked before the
- * Get SEL entry command, so the cache is utilized for responding to Get SEL
- * entry command. The cache is invalidated by clearing after Delete SEL
- * entry and Clear SEL command.
- */
- ipmi::sel::ObjectPaths paths;
+/*
+ * This cache contains the object paths of the logging entries sorted in the
+ * order of the filename(numeric order). The cache is initialized by
+ * invoking readLoggingObjectPaths with the cache as the parameter. The
+ * cache is invoked in the execution of the Get SEL info and Delete SEL
+ * entry command. The Get SEL Info command is typically invoked before the
+ * Get SEL entry command, so the cache is utilized for responding to Get SEL
+ * entry command. The cache is invalidated by clearing after Delete SEL
+ * entry and Clear SEL command.
+ */
+ipmi::sel::ObjectPaths paths;
-} // namespace objectPathsCache
+} // namespace cache
using InternalFailure =
- sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
+ sdbusplus::xyz::openbmc_project::Common::Error::InternalFailure;
using namespace phosphor::logging;
using namespace ipmi::fru;
@@ -84,10 +87,11 @@ enum class AccessMode
words ///< Device is accessed by words
};
-
ipmi_ret_t ipmi_storage_wildcard(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
// Status code.
ipmi_ret_t rc = IPMI_CC_INVALID;
@@ -100,8 +104,8 @@ ipmi_ret_t getSELInfo(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_data_len_t data_len, ipmi_context_t context)
{
std::vector<uint8_t> outPayload(sizeof(ipmi::sel::GetSELInfoResponse));
- auto responseData = reinterpret_cast<ipmi::sel::GetSELInfoResponse*>
- (outPayload.data());
+ auto responseData =
+ reinterpret_cast<ipmi::sel::GetSELInfoResponse*>(outPayload.data());
responseData->selVersion = ipmi::sel::selVersion;
// Last erase timestamp is not available from log manager.
@@ -119,8 +123,7 @@ ipmi_ret_t getSELInfo(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
try
{
responseData->addTimeStamp = static_cast<uint32_t>(
- (ipmi::sel::getEntryTimeStamp(cache::paths.back())
- .count()));
+ (ipmi::sel::getEntryTimeStamp(cache::paths.back()).count()));
}
catch (InternalFailure& e)
{
@@ -141,8 +144,8 @@ ipmi_ret_t getSELEntry(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)
{
- auto requestData = reinterpret_cast<const ipmi::sel::GetSELEntryRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const ipmi::sel::GetSELEntryRequest*>(request);
if (requestData->reservationID != 0)
{
@@ -183,7 +186,7 @@ ipmi_ret_t getSELEntry(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
}
- ipmi::sel::GetSELEntryResponse record {};
+ ipmi::sel::GetSELEntryResponse record{};
// Convert the log entry into SEL record.
try
@@ -202,9 +205,8 @@ ipmi_ret_t getSELEntry(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_UNSPECIFIED_ERROR;
}
-
// Identify the next SEL record ID
- if(iter != cache::paths.end())
+ if (iter != cache::paths.end())
{
++iter;
if (iter == cache::paths.end())
@@ -215,8 +217,8 @@ ipmi_ret_t getSELEntry(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
namespace fs = std::filesystem;
fs::path path(*iter);
- record.nextRecordID = static_cast<uint16_t>
- (std::stoul(std::string(path.filename().c_str())));
+ record.nextRecordID = static_cast<uint16_t>(
+ std::stoul(std::string(path.filename().c_str())));
}
}
else
@@ -239,8 +241,8 @@ ipmi_ret_t getSELEntry(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
auto diff = ipmi::sel::selRecordSize - requestData->offset;
- auto readLength = std::min(diff,
- static_cast<int>(requestData->readLength));
+ auto readLength =
+ std::min(diff, static_cast<int>(requestData->readLength));
memcpy(response, &record.nextRecordID, sizeof(record.nextRecordID));
memcpy(static_cast<uint8_t*>(response) + sizeof(record.nextRecordID),
@@ -256,8 +258,8 @@ ipmi_ret_t deleteSELEntry(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_data_len_t data_len, ipmi_context_t context)
{
namespace fs = std::experimental::filesystem;
- auto requestData = reinterpret_cast<const ipmi::sel::DeleteSELEntryRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const ipmi::sel::DeleteSELEntryRequest*>(request);
if (g_sel_reserve != requestData->reservationID)
{
@@ -280,15 +282,15 @@ ipmi_ret_t deleteSELEntry(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
{
iter = cache::paths.begin();
fs::path path(*iter);
- delRecordID = static_cast<uint16_t>
- (std::stoul(std::string(path.filename().c_str())));
+ delRecordID = static_cast<uint16_t>(
+ std::stoul(std::string(path.filename().c_str())));
}
else if (requestData->selRecordID == ipmi::sel::lastEntry)
{
iter = cache::paths.end();
fs::path path(*iter);
- delRecordID = static_cast<uint16_t>
- (std::stoul(std::string(path.filename().c_str())));
+ delRecordID = static_cast<uint16_t>(
+ std::stoul(std::string(path.filename().c_str())));
}
else
{
@@ -318,10 +320,8 @@ ipmi_ret_t deleteSELEntry(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return IPMI_CC_UNSPECIFIED_ERROR;
}
- auto methodCall = bus.new_method_call(service.c_str(),
- (*iter).c_str(),
- ipmi::sel::logDeleteIntf,
- "Delete");
+ auto methodCall = bus.new_method_call(service.c_str(), (*iter).c_str(),
+ ipmi::sel::logDeleteIntf, "Delete");
auto reply = bus.call(methodCall);
if (reply.is_method_error())
{
@@ -341,8 +341,8 @@ ipmi_ret_t clearSEL(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)
{
- auto requestData = reinterpret_cast<const ipmi::sel::ClearSELRequest*>
- (request);
+ auto requestData =
+ reinterpret_cast<const ipmi::sel::ClearSELRequest*>(request);
if (g_sel_reserve != requestData->reservationID)
{
@@ -350,8 +350,7 @@ ipmi_ret_t clearSEL(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
return IPMI_CC_INVALID_RESERVATION_ID;
}
- if (requestData->charC != 'C' ||
- requestData->charL != 'L' ||
+ if (requestData->charC != 'C' || requestData->charL != 'L' ||
requestData->charR != 'R')
{
*data_len = 0;
@@ -374,10 +373,9 @@ ipmi_ret_t clearSEL(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
sdbusplus::bus::bus bus{ipmid_get_sd_bus_connection()};
auto depth = 0;
- auto mapperCall = bus.new_method_call(ipmi::sel::mapperBusName,
- ipmi::sel::mapperObjPath,
- ipmi::sel::mapperIntf,
- "GetSubTreePaths");
+ auto mapperCall =
+ bus.new_method_call(ipmi::sel::mapperBusName, ipmi::sel::mapperObjPath,
+ ipmi::sel::mapperIntf, "GetSubTreePaths");
mapperCall.append(ipmi::sel::logBasePath);
mapperCall.append(depth);
mapperCall.append(ipmi::sel::ObjectPaths({ipmi::sel::logEntryIntf}));
@@ -403,8 +401,7 @@ ipmi_ret_t clearSEL(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
try
{
- service = ipmi::getService(bus,
- ipmi::sel::logDeleteIntf,
+ service = ipmi::getService(bus, ipmi::sel::logDeleteIntf,
objectPaths.front());
}
catch (const std::runtime_error& e)
@@ -416,10 +413,8 @@ ipmi_ret_t clearSEL(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
for (const auto& iter : objectPaths)
{
- auto methodCall = bus.new_method_call(service.c_str(),
- iter.c_str(),
- ipmi::sel::logDeleteIntf,
- "Delete");
+ auto methodCall = bus.new_method_call(
+ service.c_str(), iter.c_str(), ipmi::sel::logDeleteIntf, "Delete");
auto reply = bus.call(methodCall);
if (reply.is_method_error())
@@ -437,8 +432,10 @@ ipmi_ret_t clearSEL(ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
}
ipmi_ret_t ipmi_storage_get_sel_time(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
using namespace std::chrono;
uint64_t host_time_usec = 0;
@@ -452,10 +449,8 @@ ipmi_ret_t ipmi_storage_get_sel_time(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
sdbusplus::message::variant<uint64_t> value;
// Get host time
- auto method = bus.new_method_call(service.c_str(),
- HOST_TIME_PATH,
- DBUS_PROPERTIES,
- "Get");
+ auto method = bus.new_method_call(service.c_str(), HOST_TIME_PATH,
+ DBUS_PROPERTIES, "Get");
method.append(TIME_INTERFACE, PROPERTY_ELAPSED);
auto reply = bus.call(method);
@@ -483,7 +478,6 @@ ipmi_ret_t ipmi_storage_get_sel_time(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
hostTime << "Host time:" << getTimeString(host_time_usec);
log<level::DEBUG>(hostTime.str().c_str());
-
// Time is really long int but IPMI wants just uint32. This works okay until
// the number of seconds since 1970 overflows uint32 size.. Still a whole
// lot of time here to even think about that.
@@ -500,8 +494,10 @@ ipmi_ret_t ipmi_storage_get_sel_time(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_storage_set_sel_time(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
using namespace std::chrono;
ipmi_ret_t rc = IPMI_CC_OK;
@@ -518,10 +514,8 @@ ipmi_ret_t ipmi_storage_set_sel_time(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
sdbusplus::message::variant<uint64_t> value{usec.count()};
// Set host time
- auto method = bus.new_method_call(service.c_str(),
- HOST_TIME_PATH,
- DBUS_PROPERTIES,
- "Set");
+ auto method = bus.new_method_call(service.c_str(), HOST_TIME_PATH,
+ DBUS_PROPERTIES, "Set");
method.append(TIME_INTERFACE, PROPERTY_ELAPSED, value);
auto reply = bus.call(method);
@@ -548,13 +542,16 @@ ipmi_ret_t ipmi_storage_set_sel_time(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_storage_reserve_sel(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
- // IPMI spec, Reservation ID, the value simply increases against each execution of reserve_sel command.
- if( ++g_sel_reserve == 0)
+ // IPMI spec, Reservation ID, the value simply increases against each
+ // execution of reserve_sel command.
+ if (++g_sel_reserve == 0)
g_sel_reserve = 1;
*data_len = sizeof(g_sel_reserve);
@@ -566,12 +563,14 @@ ipmi_ret_t ipmi_storage_reserve_sel(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
ipmi_ret_t ipmi_storage_add_sel(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
- ipmi_add_sel_request_t *p = (ipmi_add_sel_request_t*) request;
+ ipmi_add_sel_request_t* p = (ipmi_add_sel_request_t*)request;
uint16_t recordid;
recordid = ((uint16_t)p->eventdata[1] << 8) | p->eventdata[2];
@@ -598,11 +597,10 @@ ipmi_ret_t ipmi_storage_add_sel(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return rc;
}
-//Read FRU info area
+// Read FRU info area
ipmi_ret_t ipmi_storage_get_fru_inv_area_info(
- 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_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_ret_t rc = IPMI_CC_OK;
const FruInvenAreaInfoRequest* reqptr =
@@ -629,7 +627,7 @@ ipmi_ret_t ipmi_storage_get_fru_inv_area_info(
// Pack the actual response
memcpy(response, &resp, *data_len);
}
- catch(const InternalFailure& e)
+ catch (const InternalFailure& e)
{
rc = IPMI_CC_UNSPECIFIED_ERROR;
*data_len = 0;
@@ -638,17 +636,17 @@ ipmi_ret_t ipmi_storage_get_fru_inv_area_info(
return rc;
}
-//Read FRU data
-ipmi_ret_t ipmi_storage_read_fru_data(
- 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)
+// Read FRU data
+ipmi_ret_t ipmi_storage_read_fru_data(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_ret_t rc = IPMI_CC_OK;
const ReadFruDataRequest* reqptr =
reinterpret_cast<const ReadFruDataRequest*>(request);
- auto resptr =
- reinterpret_cast<ReadFruDataResponse*>(response);
+ auto resptr = reinterpret_cast<ReadFruDataResponse*>(response);
auto iter = frus.find(reqptr->fruID);
if (iter == frus.end())
@@ -680,8 +678,7 @@ ipmi_ret_t ipmi_storage_read_fru_data(
}
std::copy((fruArea.begin() + offset),
- (fruArea.begin() + offset + resptr->count),
- resptr->data);
+ (fruArea.begin() + offset + resptr->count), resptr->data);
*data_len = resptr->count + 1; // additional one byte for count
}
@@ -695,14 +692,15 @@ ipmi_ret_t ipmi_storage_read_fru_data(
}
ipmi_ret_t ipmi_get_repository_info(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
constexpr auto sdrVersion = 0x51;
- auto responseData =
- reinterpret_cast<GetRepositoryInfoResponse*>(response);
+ auto responseData = reinterpret_cast<GetRepositoryInfoResponse*>(response);
- memset(responseData, 0 , sizeof(GetRepositoryInfoResponse));
+ memset(responseData, 0, sizeof(GetRepositoryInfoResponse));
responseData->sdrVersion = sdrVersion;
@@ -721,63 +719,60 @@ ipmi_ret_t ipmi_get_repository_info(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
void register_netfn_storage_functions()
{
// <Wildcard Command>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_WILDCARD, NULL, ipmi_storage_wildcard,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_WILDCARD, NULL,
+ ipmi_storage_wildcard, PRIVILEGE_USER);
// <Get SEL Info>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SEL_INFO, NULL, getSELInfo,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SEL_INFO, NULL,
+ getSELInfo, PRIVILEGE_USER);
// <Get SEL Time>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SEL_TIME, NULL, ipmi_storage_get_sel_time,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SEL_TIME, NULL,
+ ipmi_storage_get_sel_time, PRIVILEGE_USER);
// <Set SEL Time>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_SET_SEL_TIME, NULL, ipmi_storage_set_sel_time,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_SET_SEL_TIME, NULL,
+ ipmi_storage_set_sel_time, PRIVILEGE_OPERATOR);
// <Reserve SEL>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_RESERVE_SEL, NULL, ipmi_storage_reserve_sel,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_RESERVE_SEL, NULL,
+ ipmi_storage_reserve_sel, PRIVILEGE_USER);
// <Get SEL Entry>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SEL_ENTRY, NULL, getSELEntry,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SEL_ENTRY, NULL,
+ getSELEntry, PRIVILEGE_USER);
// <Delete SEL Entry>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_DELETE_SEL, NULL, deleteSELEntry,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_DELETE_SEL, NULL,
+ deleteSELEntry, PRIVILEGE_OPERATOR);
// <Add SEL Entry>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_ADD_SEL, NULL, ipmi_storage_add_sel,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_ADD_SEL, NULL,
+ ipmi_storage_add_sel, PRIVILEGE_OPERATOR);
// <Clear SEL>
ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_CLEAR_SEL, NULL, clearSEL,
PRIVILEGE_OPERATOR);
// <Get FRU Inventory Area Info>
ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_FRU_INV_AREA_INFO, NULL,
- ipmi_storage_get_fru_inv_area_info, PRIVILEGE_OPERATOR);
+ ipmi_storage_get_fru_inv_area_info,
+ PRIVILEGE_OPERATOR);
// <Add READ FRU Data
ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_READ_FRU_DATA, NULL,
- ipmi_storage_read_fru_data, PRIVILEGE_OPERATOR);
+ ipmi_storage_read_fru_data, PRIVILEGE_OPERATOR);
// <Get Repository Info>
ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_REPOSITORY_INFO,
- nullptr, ipmi_get_repository_info,
- PRIVILEGE_USER);
+ nullptr, ipmi_get_repository_info, PRIVILEGE_USER);
// <Reserve SDR Repository>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_RESERVE_SDR,
- nullptr, ipmi_sen_reserve_sdr,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_RESERVE_SDR, nullptr,
+ ipmi_sen_reserve_sdr, PRIVILEGE_USER);
// <Get SDR>
- ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SDR,
- nullptr, ipmi_sen_get_sdr,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_STORAGE, IPMI_CMD_GET_SDR, nullptr,
+ ipmi_sen_get_sdr, PRIVILEGE_USER);
ipmi::fru::registerCallbackHandler();
return;
}
-
diff --git a/storagehandler.h b/storagehandler.h
index 2e8f1fc..17ac7b8 100644
--- a/storagehandler.h
+++ b/storagehandler.h
@@ -5,33 +5,34 @@
enum ipmi_netfn_storage_cmds
{
// Get capability bits
- IPMI_CMD_GET_FRU_INV_AREA_INFO = 0x10,
+ IPMI_CMD_GET_FRU_INV_AREA_INFO = 0x10,
IPMI_CMD_GET_REPOSITORY_INFO = 0x20,
- IPMI_CMD_READ_FRU_DATA = 0x11,
- IPMI_CMD_RESERVE_SDR = 0x22,
- IPMI_CMD_GET_SDR = 0x23,
- IPMI_CMD_GET_SEL_INFO = 0x40,
- IPMI_CMD_RESERVE_SEL = 0x42,
- IPMI_CMD_GET_SEL_ENTRY = 0x43,
- IPMI_CMD_ADD_SEL = 0x44,
- IPMI_CMD_DELETE_SEL = 0x46,
- IPMI_CMD_CLEAR_SEL = 0x47,
- IPMI_CMD_GET_SEL_TIME = 0x48,
- IPMI_CMD_SET_SEL_TIME = 0x49,
+ IPMI_CMD_READ_FRU_DATA = 0x11,
+ IPMI_CMD_RESERVE_SDR = 0x22,
+ IPMI_CMD_GET_SDR = 0x23,
+ IPMI_CMD_GET_SEL_INFO = 0x40,
+ IPMI_CMD_RESERVE_SEL = 0x42,
+ IPMI_CMD_GET_SEL_ENTRY = 0x43,
+ IPMI_CMD_ADD_SEL = 0x44,
+ IPMI_CMD_DELETE_SEL = 0x46,
+ IPMI_CMD_CLEAR_SEL = 0x47,
+ IPMI_CMD_GET_SEL_TIME = 0x48,
+ IPMI_CMD_SET_SEL_TIME = 0x49,
};
-struct ipmi_add_sel_request_t {
+struct ipmi_add_sel_request_t
+{
- uint8_t recordid[2];
- uint8_t recordtype;
- uint8_t timestampe[4];
- uint8_t generatorid[2];
- uint8_t evmrev;
- uint8_t sensortype;
- uint8_t sensornumber;
- uint8_t eventdir;
- uint8_t eventdata[3];
+ uint8_t recordid[2];
+ uint8_t recordtype;
+ uint8_t timestampe[4];
+ uint8_t generatorid[2];
+ uint8_t evmrev;
+ uint8_t sensortype;
+ uint8_t sensornumber;
+ uint8_t eventdir;
+ uint8_t eventdata[3];
};
/**
@@ -39,20 +40,20 @@ struct ipmi_add_sel_request_t {
*/
struct ReadFruDataRequest
{
- uint8_t fruID; ///< FRU Device ID. FFh = reserved
- uint8_t offsetLS; ///< FRU Inventory Offset to read, LS Byte
- uint8_t offsetMS; ///< FRU Inventory Offset ro read, MS Byte
- uint8_t count; ///< Count to read
-}__attribute__ ((packed));
+ uint8_t fruID; ///< FRU Device ID. FFh = reserved
+ uint8_t offsetLS; ///< FRU Inventory Offset to read, LS Byte
+ uint8_t offsetMS; ///< FRU Inventory Offset ro read, MS Byte
+ uint8_t count; ///< Count to read
+} __attribute__((packed));
/**
* @struct Read FRU Data command response data
*/
struct ReadFruDataResponse
{
- uint8_t count; ///< Response data Count.
+ uint8_t count; ///< Response data Count.
uint8_t data[]; ///< Response data.
-}__attribute__ ((packed));
+} __attribute__((packed));
/**
* @struct Get FRU inventory area info command request data
@@ -60,30 +61,29 @@ struct ReadFruDataResponse
struct FruInvenAreaInfoRequest
{
uint8_t fruID; ///< FRU Device ID. FFH = reserved.
-}__attribute__ ((packed));
-
+} __attribute__((packed));
/**
* @struct Get FRU inventory area info command response
*/
struct FruInvenAreaInfoResponse
{
- uint8_t sizels; ///< Fru Inventory area size in bytes, LS Byte
- uint8_t sizems; ///< Fru Inventory are size in bytes, MS Byte
- uint8_t access; ///< 0b Devices is accessed by bytes, 1b - by words
-}__attribute__ ((packed));
+ uint8_t sizels; ///< Fru Inventory area size in bytes, LS Byte
+ uint8_t sizems; ///< Fru Inventory are size in bytes, MS Byte
+ uint8_t access; ///< 0b Devices is accessed by bytes, 1b - by words
+} __attribute__((packed));
/**
* @struct Get Repository info command response
*/
struct GetRepositoryInfoResponse
{
- uint8_t sdrVersion; //< SDR version
- uint8_t recordCountLs; //< Record count LS byte
- uint8_t recordCountMs; //< Record count MS bte
- uint8_t freeSpace[2]; //< Free space in bytes, LS first
+ uint8_t sdrVersion; //< SDR version
+ uint8_t recordCountLs; //< Record count LS byte
+ uint8_t recordCountMs; //< Record count MS bte
+ uint8_t freeSpace[2]; //< Free space in bytes, LS first
uint8_t additionTimestamp[4]; //< Most recent addition timestamp LS first
uint8_t deletionTimestamp[4]; //< Most recent deletion timestamp LS first
- uint8_t operationSupport; //< Operation support
-}__attribute__ ((packed));
+ uint8_t operationSupport; //< Operation support
+} __attribute__((packed));
#endif
diff --git a/systemintfcmds.cpp b/systemintfcmds.cpp
index d363233..c39a7af 100644
--- a/systemintfcmds.cpp
+++ b/systemintfcmds.cpp
@@ -1,12 +1,15 @@
-#include "systemintfcmds.h"
-#include "host-ipmid/ipmid-api.h"
-#include "host-ipmid/ipmid-host-cmd.hpp"
#include "config.h"
+
+#include "systemintfcmds.h"
+
#include "host-cmd-manager.hpp"
#include "host-interface.hpp"
+#include "host-ipmid/ipmid-host-cmd.hpp"
-#include <stdio.h>
#include <mapper.h>
+#include <stdio.h>
+
+#include "host-ipmid/ipmid-api.h"
void register_netfn_app_functions() __attribute__((constructor));
@@ -20,8 +23,8 @@ extern cmdManagerPtr& ipmid_get_host_cmd_manager();
// Called by Host post response from Get_Message_Flags
//-------------------------------------------------------------------
ipmi_ret_t ipmi_app_read_event(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_request_t request, ipmi_response_t response,
+ ipmi_data_len_t data_len, ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
@@ -29,22 +32,22 @@ ipmi_ret_t ipmi_app_read_event(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
*data_len = sizeof(struct oem_sel_timestamped);
// either id[0] -or- id[1] can be filled in. We will use id[0]
- oem_sel.id[0] = SEL_OEM_ID_0;
- oem_sel.id[1] = SEL_OEM_ID_0;
- oem_sel.type = SEL_RECORD_TYPE_OEM;
+ oem_sel.id[0] = SEL_OEM_ID_0;
+ oem_sel.id[1] = SEL_OEM_ID_0;
+ oem_sel.type = SEL_RECORD_TYPE_OEM;
// Following 3 bytes are from IANA Manufactre_Id field. See below
- oem_sel.manuf_id[0]= 0x41;
- oem_sel.manuf_id[1]= 0xA7;
- oem_sel.manuf_id[2]= 0x00;
+ oem_sel.manuf_id[0] = 0x41;
+ oem_sel.manuf_id[1] = 0xA7;
+ oem_sel.manuf_id[2] = 0x00;
// per IPMI spec NetFuntion for OEM
- oem_sel.netfun = 0x3A;
+ oem_sel.netfun = 0x3A;
// Read from the Command Manager queue. What gets returned is a
// pair of <command, data> that can be directly used here
- auto hostCmd = ipmid_get_host_cmd_manager()->getNextCommand();
- oem_sel.cmd = hostCmd.first;
+ auto hostCmd = ipmid_get_host_cmd_manager()->getNextCommand();
+ oem_sel.cmd = hostCmd.first;
oem_sel.data[0] = hostCmd.second;
// All '0xFF' since unused.
@@ -60,8 +63,10 @@ ipmi_ret_t ipmi_app_read_event(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
// value of 0x2 indicating we need Host read some data.
//-------------------------------------------------------------------
ipmi_ret_t ipmi_app_get_msg_flags(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
// Generic return from IPMI commands.
ipmi_ret_t rc = IPMI_CC_OK;
@@ -82,8 +87,10 @@ ipmi_ret_t ipmi_app_get_msg_flags(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
}
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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
ipmi_ret_t rc = IPMI_CC_OK;
*data_len = 0;
@@ -96,29 +103,30 @@ ipmi_ret_t ipmi_app_set_bmc_global_enables(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
return rc;
}
-namespace {
+namespace
+{
// Static storage to keep the object alive during process life
std::unique_ptr<phosphor::host::command::Host> host
- __attribute__((init_priority(101)));
+ __attribute__((init_priority(101)));
std::unique_ptr<sdbusplus::server::manager::manager> objManager
- __attribute__((init_priority(101)));
-}
+ __attribute__((init_priority(101)));
+} // namespace
#include <unistd.h>
void register_netfn_app_functions()
{
// <Read Event Message Buffer>
- ipmi_register_callback(NETFUN_APP, IPMI_CMD_READ_EVENT, NULL, ipmi_app_read_event,
- SYSTEM_INTERFACE);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_READ_EVENT, NULL,
+ 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);
// <Get Message Flags>
- ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_MSG_FLAGS, NULL, ipmi_app_get_msg_flags,
- SYSTEM_INTERFACE);
+ ipmi_register_callback(NETFUN_APP, IPMI_CMD_GET_MSG_FLAGS, NULL,
+ ipmi_app_get_msg_flags, SYSTEM_INTERFACE);
// Create new xyz.openbmc_project.host object on the bus
auto objPath = std::string{CONTROL_HOST_OBJ_MGR} + '/' + HOST_NAME + '0';
@@ -126,11 +134,10 @@ void register_netfn_app_functions()
// Add sdbusplus ObjectManager.
auto& sdbusPlusHandler = ipmid_get_sdbus_plus_handler();
objManager = std::make_unique<sdbusplus::server::manager::manager>(
- *sdbusPlusHandler,
- CONTROL_HOST_OBJ_MGR);
+ *sdbusPlusHandler, CONTROL_HOST_OBJ_MGR);
- host = std::make_unique<phosphor::host::command::Host>(
- *sdbusPlusHandler, objPath.c_str());
+ host = std::make_unique<phosphor::host::command::Host>(*sdbusPlusHandler,
+ objPath.c_str());
sdbusPlusHandler->request_name(CONTROL_HOST_BUSNAME);
return;
diff --git a/systemintfcmds.h b/systemintfcmds.h
index d603aaa..0243c02 100644
--- a/systemintfcmds.h
+++ b/systemintfcmds.h
@@ -6,22 +6,22 @@
// These are per skiboot ipmi-sel code
// OEM_SEL type with Timestamp
-#define SEL_OEM_ID_0 0x55
+#define SEL_OEM_ID_0 0x55
// SEL type is OEM and -not- general SEL
#define SEL_RECORD_TYPE_OEM 0xC0
// Minor command for soft shurdown
-#define SOFT_OFF 0x00
+#define SOFT_OFF 0x00
// Major command for Any kind of power ops
-#define CMD_POWER 0x04
+#define CMD_POWER 0x04
// Major command for the heartbeat operation (verify host is alive)
-#define CMD_HEARTBEAT 0xFF
+#define CMD_HEARTBEAT 0xFF
// IPMI commands used via System Interface functions.
enum ipmi_netfn_system_intf_cmds
{
IPMI_CMD_SET_BMC_GLOBAL_ENABLES = 0x2E,
- IPMI_CMD_GET_MSG_FLAGS = 0x31,
- IPMI_CMD_READ_EVENT = 0x35,
+ IPMI_CMD_GET_MSG_FLAGS = 0x31,
+ IPMI_CMD_READ_EVENT = 0x35,
};
// A Mechanism to tell host to shtudown hosts by sending this PEM SEL. Really
diff --git a/test/oemrouter_unittest.cpp b/test/oemrouter_unittest.cpp
index a5a79dd..b48798b 100644
--- a/test/oemrouter_unittest.cpp
+++ b/test/oemrouter_unittest.cpp
@@ -1,8 +1,10 @@
-#include "host-ipmid/ipmid-api.h"
#include "host-ipmid/oemrouter.hpp"
-#include "sample.h"
#include <cstring>
+
+#include "host-ipmid/ipmid-api.h"
+#include "sample.h"
+
#include <gtest/gtest.h>
// Watch for correct singleton behavior.
@@ -52,19 +54,18 @@ void RegisterWithRouter(Number oen, ipmi_cmd_t cmd, Handler cb)
singletonUnderTest->registerHandler(oen, cmd, cb);
}
-uint8_t msgPlain[] = { 0x56, 0x34, 0x12 };
-uint8_t replyPlain[] = { 0x56, 0x34, 0x12, 0x31, 0x41 };
-uint8_t msgPlus2[] = { 0x67, 0x45, 0x23, 0x10, 0x20 };
-uint8_t msgBadOen[] = { 0x57, 0x34, 0x12 };
+uint8_t msgPlain[] = {0x56, 0x34, 0x12};
+uint8_t replyPlain[] = {0x56, 0x34, 0x12, 0x31, 0x41};
+uint8_t msgPlus2[] = {0x67, 0x45, 0x23, 0x10, 0x20};
+uint8_t msgBadOen[] = {0x57, 0x34, 0x12};
-void RegisterTwoWays(ipmi_cmd_t *nextCmd)
+void RegisterTwoWays(ipmi_cmd_t* nextCmd)
{
- Handler f = [](ipmi_cmd_t cmd, const uint8_t* reqBuf,
- uint8_t* replyBuf, size_t* dataLen)
- {
+ Handler f = [](ipmi_cmd_t cmd, const uint8_t* reqBuf, uint8_t* replyBuf,
+ size_t* dataLen) {
// Check inputs
EXPECT_EQ(0x78, cmd);
- EXPECT_EQ(0, *dataLen); // Excludes OEN
+ EXPECT_EQ(0, *dataLen); // Excludes OEN
// Generate reply.
*dataLen = 2;
@@ -75,11 +76,10 @@ void RegisterTwoWays(ipmi_cmd_t *nextCmd)
*nextCmd = IPMI_CMD_WILDCARD;
Handler g = [nextCmd](ipmi_cmd_t cmd, const uint8_t* reqBuf,
- uint8_t* replyBuf, size_t* dataLen)
- {
+ uint8_t* replyBuf, size_t* dataLen) {
// Check inputs
EXPECT_EQ(*nextCmd, cmd);
- EXPECT_EQ(2, *dataLen); // Excludes OEN
+ EXPECT_EQ(2, *dataLen); // Excludes OEN
if (2 != *dataLen)
{
return 0xE0;
@@ -93,18 +93,21 @@ void RegisterTwoWays(ipmi_cmd_t *nextCmd)
};
RegisterWithRouter(0x234567, IPMI_CMD_WILDCARD, g);
}
-} // namespace
+} // namespace
-TEST(OemRouterTest, MakeRouterProducesConsistentSingleton) {
+TEST(OemRouterTest, MakeRouterProducesConsistentSingleton)
+{
MakeRouter();
}
-TEST(OemRouterTest, ActivateRouterSetsLastNetToOEMGROUP) {
+TEST(OemRouterTest, ActivateRouterSetsLastNetToOEMGROUP)
+{
lastNetFunction = 0;
ActivateRouter();
}
-TEST(OemRouterTest, VerifiesSpecificCommandMatches) {
+TEST(OemRouterTest, VerifiesSpecificCommandMatches)
+{
ipmi_cmd_t cmd;
uint8_t reply[256];
size_t dataLen;
@@ -112,9 +115,8 @@ TEST(OemRouterTest, VerifiesSpecificCommandMatches) {
RegisterTwoWays(&cmd);
dataLen = 3;
- EXPECT_EQ(0,
- wildHandler(NETFUN_OEM_GROUP, 0x78, msgPlain, reply,
- &dataLen, nullptr));
+ EXPECT_EQ(0, wildHandler(NETFUN_OEM_GROUP, 0x78, msgPlain, reply, &dataLen,
+ nullptr));
EXPECT_EQ(5, dataLen);
EXPECT_EQ(replyPlain[0], reply[0]);
EXPECT_EQ(replyPlain[1], reply[1]);
@@ -123,7 +125,8 @@ TEST(OemRouterTest, VerifiesSpecificCommandMatches) {
EXPECT_EQ(replyPlain[4], reply[4]);
}
-TEST(OemRouterTest, WildCardMatchesTwoRandomCodes) {
+TEST(OemRouterTest, WildCardMatchesTwoRandomCodes)
+{
ipmi_cmd_t cmd;
uint8_t reply[256];
size_t dataLen;
@@ -133,20 +136,19 @@ TEST(OemRouterTest, WildCardMatchesTwoRandomCodes) {
// Check two random command codes.
dataLen = 5;
cmd = 0x89;
- EXPECT_EQ(0,
- wildHandler(NETFUN_OEM_GROUP, cmd, msgPlus2, reply,
- &dataLen, nullptr));
+ EXPECT_EQ(0, wildHandler(NETFUN_OEM_GROUP, cmd, msgPlus2, reply, &dataLen,
+ nullptr));
EXPECT_EQ(3, dataLen);
dataLen = 5;
cmd = 0x67;
- EXPECT_EQ(0,
- wildHandler(NETFUN_OEM_GROUP, cmd, msgPlus2, reply,
- &dataLen, nullptr));
+ EXPECT_EQ(0, wildHandler(NETFUN_OEM_GROUP, cmd, msgPlus2, reply, &dataLen,
+ nullptr));
EXPECT_EQ(3, dataLen);
}
-TEST(OemRouterTest, CommandsAreRejectedIfInvalid) {
+TEST(OemRouterTest, CommandsAreRejectedIfInvalid)
+{
ipmi_cmd_t cmd;
uint8_t reply[256];
size_t dataLen;
@@ -156,20 +158,18 @@ TEST(OemRouterTest, CommandsAreRejectedIfInvalid) {
// Message too short to include whole OEN?
dataLen = 2;
EXPECT_EQ(IPMI_CC_REQ_DATA_LEN_INVALID,
- wildHandler(NETFUN_OEM_GROUP, 0x78, msgPlain, reply,
- &dataLen, nullptr));
+ wildHandler(NETFUN_OEM_GROUP, 0x78, msgPlain, reply, &dataLen,
+ nullptr));
// Wrong specific command?
dataLen = 3;
- EXPECT_EQ(IPMI_CC_INVALID,
- wildHandler(NETFUN_OEM_GROUP, 0x89, msgPlain, reply,
- &dataLen, nullptr));
+ EXPECT_EQ(IPMI_CC_INVALID, wildHandler(NETFUN_OEM_GROUP, 0x89, msgPlain,
+ reply, &dataLen, nullptr));
// Wrong OEN?
dataLen = 3;
- EXPECT_EQ(IPMI_CC_INVALID,
- wildHandler(NETFUN_OEM_GROUP, 0x78, msgBadOen, reply,
- &dataLen, nullptr));
+ EXPECT_EQ(IPMI_CC_INVALID, wildHandler(NETFUN_OEM_GROUP, 0x78, msgBadOen,
+ reply, &dataLen, nullptr));
}
-} // namespace oem
+} // namespace oem
diff --git a/test/sample_unittest.cpp b/test/sample_unittest.cpp
index 2a27279..e574173 100644
--- a/test/sample_unittest.cpp
+++ b/test/sample_unittest.cpp
@@ -1,6 +1,8 @@
#include "sample.h"
+
#include <gtest/gtest.h>
-TEST(FactorialTest, Zero) {
+TEST(FactorialTest, Zero)
+{
EXPECT_EQ(1, Factorial(0));
}
diff --git a/testaddsel.cpp b/testaddsel.cpp
index c3b317a..7f42acb 100644
--- a/testaddsel.cpp
+++ b/testaddsel.cpp
@@ -1,63 +1,66 @@
-#include <stdlib.h>
-#include <limits.h>
-#include <stdio.h>
#include <errno.h>
+#include <limits.h>
+#include <mapper.h>
#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
#include <systemd/sd-bus.h>
-#include "sensorhandler.h"
-#include <mapper.h>
+#include "sensorhandler.h"
extern void send_esel(uint16_t recordid);
-sd_bus *bus = NULL;
+sd_bus* bus = NULL;
// Use a lookup table to find the interface name of a specific sensor
// This will be used until an alternative is found. this is the first
// step for mapping IPMI
-int find_openbmc_path(const uint8_t num, dbus_interface_t *interface) {
+int find_openbmc_path(const uint8_t num, dbus_interface_t* interface)
+{
- const char *objname = "/org/openbmc/managers/System";
+ const char* objname = "/org/openbmc/managers/System";
- char *str1, *str2, *str3;
+ char *str1, *str2, *str3;
sd_bus_error error = SD_BUS_ERROR_NULL;
- sd_bus_message *reply = NULL, *m=NULL;
+ sd_bus_message *reply = NULL, *m = NULL;
int r;
- char *busname = NULL;
+ char* busname = NULL;
r = mapper_get_service(bus, objname, &busname);
- if (r < 0) {
- log<level::ERR>("Failed to get busname",
- entry("BUS=%s", objname),
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to get busname", entry("BUS=%s", objname),
entry("ERRNO=0x%X", -r));
goto final;
}
- r = sd_bus_message_new_method_call(bus,&m,busname,objname,busname,"getObjectFromByteId");
- if (r < 0) {
+ r = sd_bus_message_new_method_call(bus, &m, busname, objname, busname,
+ "getObjectFromByteId");
+ if (r < 0)
+ {
log<level::ERR>("Failed to create a method call",
entry("ERRNO=0x%X", -r));
}
r = sd_bus_message_append(m, "sy", type, num);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to create a input parameter",
entry("ERRNO=0x%X", -r));
}
// Call the IPMI responder on the bus so the message can be sent to the CEC
r = sd_bus_call(bus, m, 0, &error, &reply);
- if (r < 0) {
- log<level::ERR>("Failed to call the method",
- entry("ERRNO=0x%X", -r));
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to call the method", entry("ERRNO=0x%X", -r));
goto final;
}
-
r = sd_bus_message_read(reply, "(sss)", &str1, &str2, &str3);
- if (r < 0) {
- log<level::ERR>("Failed to get a response",
- entry("ERRNO=0x%X", -r));
+ if (r < 0)
+ {
+ log<level::ERR>("Failed to get a response", entry("ERRNO=0x%X", -r));
goto final;
}
@@ -71,15 +74,12 @@ final:
sd_bus_error_free(&error);
sd_bus_message_unref(m);
- free (busname);
+ free(busname);
return r;
}
-
-
-
-int main(int argc, char *argv[])
+int main(int argc, char* argv[])
{
int base;
char *endptr, *str;
@@ -87,7 +87,8 @@ int main(int argc, char *argv[])
uint16_t num;
int r;
- if (argc < 2) {
+ if (argc < 2)
+ {
fprintf(stderr, "Usage: %s sensornumber\n", argv[0]);
return -1;
}
@@ -97,13 +98,12 @@ int main(int argc, char *argv[])
val = strtol(str, &endptr, base);
- num = (uint16_t) val;
-
-
+ num = (uint16_t)val;
/* Connect to system bus */
r = sd_bus_open_system(&bus);
- if (r < 0) {
+ if (r < 0)
+ {
log<level::ERR>("Failed to connect to system bus",
entry("ERRNO=0x%X", -r));
goto finish;
@@ -111,7 +111,6 @@ int main(int argc, char *argv[])
send_esel(num);
-
finish:
sd_bus_unref(bus);
diff --git a/testit.cpp b/testit.cpp
index 37bb146..2541915 100644
--- a/testit.cpp
+++ b/testit.cpp
@@ -1,33 +1,33 @@
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
-#include <stdint.h>
+unsigned char g_sensortype[][2] = {
+ {0xC3, 0x01}, {0x07, 0x02}, {0x0F, 0x05}, {0x0c, 0x1F}, {0xFF, 0xff}};
-unsigned char g_sensortype [][2] = {
- {0xC3, 0x01},
- {0x07, 0x02},
- {0x0F, 0x05},
- {0x0c, 0x1F},
- {0xFF ,0xff}
-};
+uint8_t find_type_for_sensor_number(uint8_t sensor_number)
+{
-uint8_t find_type_for_sensor_number(uint8_t sensor_number) {
-
- int i=0;
+ int i = 0;
uint8_t rc;
- while (g_sensortype[i][0] != 0xff) {
- if (g_sensortype[i][1] == sensor_number) {
+ while (g_sensortype[i][0] != 0xff)
+ {
+ if (g_sensortype[i][1] == sensor_number)
+ {
break;
- } else {
+ }
+ else
+ {
i++;
}
}
rc = g_sensortype[i][0];
- if (rc == 0xFF) {
+ if (rc == 0xFF)
+ {
rc = 0;
}
return rc;
@@ -36,19 +36,21 @@ uint8_t find_type_for_sensor_number(uint8_t sensor_number) {
char g_results_method[64];
char g_results_value[64];
-
-int set_sensor_dbus_state_s(unsigned char number, const char *member, const char *value) {
+int set_sensor_dbus_state_s(unsigned char number, const char* member,
+ const char* value)
+{
strcpy(g_results_method, member);
strcpy(g_results_value, value);
return 0;
}
-int set_sensor_dbus_state_y(unsigned char number, char const* member, uint8_t value) {
+int set_sensor_dbus_state_y(unsigned char number, char const* member,
+ uint8_t value)
+{
char val[2];
-
snprintf(val, 2, "%d", value);
strcpy(g_results_method, member);
@@ -57,40 +59,43 @@ int set_sensor_dbus_state_y(unsigned char number, char const* member, uint8_t va
return 0;
}
-
-extern int updateSensorRecordFromSSRAESC(const void *record);
-
-
+extern int updateSensorRecordFromSSRAESC(const void* record);
// DIMM Present
-uint8_t testrec_sensor1[] = {0x1F, 0xa9, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+uint8_t testrec_sensor1[] = {0x1F, 0xa9, 0x00, 0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00};
// DIMM Not present
-uint8_t testrec_sensor2[] = {0x1F, 0xa9, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00};
+uint8_t testrec_sensor2[] = {0x1F, 0xa9, 0x00, 0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00};
// DIMM Not present
-uint8_t testrec_procfailed[] = {0x02, 0xa9, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00};
+uint8_t testrec_procfailed[] = {0x02, 0xa9, 0x00, 0x00, 0x00,
+ 0x00, 0x01, 0x00, 0x00, 0x00};
// Virtual Sensor 5, setting a Value of 0h
-uint8_t testrec_bootprogress[] = {0x05, 0xa9, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x00};
+uint8_t testrec_bootprogress[] = {0x05, 0xa9, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x0E, 0x00};
// Virtual Sensor setting a boot count
-uint8_t testrec_bootcount[] = {0x01, 0x09, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+uint8_t testrec_bootcount[] = {0x01, 0x09, 0x00, 0x03, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00};
// Invalid sensor number
-uint8_t testrec_invalidnumber[]= {0x35, 0xa9, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00};
-
-
-int check_results(int rc, const char *method, const char *value) {
- if (strcmp(g_results_method, method)) {
- log<level::ERR>("Method Failed",
- entry("EXPECT=%s", method),
+uint8_t testrec_invalidnumber[] = {0x35, 0xa9, 0x00, 0x04, 0x00,
+ 0x00, 0x00, 0x00, 0x03, 0x00};
+
+int check_results(int rc, const char* method, const char* value)
+{
+ if (strcmp(g_results_method, method))
+ {
+ log<level::ERR>("Method Failed", entry("EXPECT=%s", method),
entry("GOT=%s", g_results_method));
return -1;
}
- if (strcmp(g_results_value, value)) {
- log<level::ERR>("Value failed",
- entry("EXPECT=%s", value),
+ if (strcmp(g_results_value, value))
+ {
+ log<level::ERR>("Value failed", entry("EXPECT=%s", value),
entry("GOT=%s", g_results_method));
return -2;
}
@@ -98,20 +103,32 @@ int check_results(int rc, const char *method, const char *value) {
return 0;
}
-void testprep(void) {
+void testprep(void)
+{
memset(g_results_method, 0, sizeof(g_results_method));
memset(g_results_value, 0, sizeof(g_results_value));
}
+int main()
+{
+
+ testprep();
+ check_results(updateSensorRecordFromSSRAESC(testrec_bootprogress),
+ "setValue", "FW Progress, Docking station attachment");
+ testprep();
+ check_results(updateSensorRecordFromSSRAESC(testrec_sensor1), "setPresent",
+ "True");
+ testprep();
+ check_results(updateSensorRecordFromSSRAESC(testrec_sensor2), "setPresent",
+ "False");
+ testprep();
+ check_results(updateSensorRecordFromSSRAESC(testrec_procfailed), "setFault",
+ "False");
+ testprep();
+ check_results(updateSensorRecordFromSSRAESC(testrec_bootcount), "setValue",
+ "3");
+ testprep();
+ check_results(updateSensorRecordFromSSRAESC(testrec_invalidnumber), "", "");
-int main() {
-
- testprep(); check_results(updateSensorRecordFromSSRAESC(testrec_bootprogress), "setValue", "FW Progress, Docking station attachment");
- testprep(); check_results(updateSensorRecordFromSSRAESC(testrec_sensor1), "setPresent", "True");
- testprep(); check_results(updateSensorRecordFromSSRAESC(testrec_sensor2), "setPresent", "False");
- testprep(); check_results(updateSensorRecordFromSSRAESC(testrec_procfailed), "setFault", "False");
- testprep(); check_results(updateSensorRecordFromSSRAESC(testrec_bootcount), "setValue", "3");
- testprep(); check_results(updateSensorRecordFromSSRAESC(testrec_invalidnumber), "", "");
-
- return 0;
+ return 0;
}
diff --git a/timer.cpp b/timer.cpp
index 06965de..f1887fd 100644
--- a/timer.cpp
+++ b/timer.cpp
@@ -1,6 +1,7 @@
+#include "timer.hpp"
+
#include <chrono>
#include <phosphor-logging/log.hpp>
-#include "timer.hpp"
namespace phosphor
{
namespace ipmi
@@ -27,7 +28,7 @@ void Timer::initialize()
if (r < 0)
{
log<level::ERR>("Failure to set initial expiration time value",
- entry("ERROR=%s", strerror(-r)));
+ entry("ERROR=%s", strerror(-r)));
throw std::runtime_error("Timer initialization failed");
}
@@ -37,7 +38,7 @@ void Timer::initialize()
if (r < 0)
{
log<level::ERR>("Failure to disable timer",
- entry("ERROR=%s", strerror(-r)));
+ entry("ERROR=%s", strerror(-r)));
throw std::runtime_error("Disabling the timer failed");
}
@@ -45,15 +46,15 @@ void Timer::initialize()
}
/** @brief callback handler on timeout */
-int Timer::timeoutHandler(sd_event_source* eventSource,
- uint64_t usec, void* userData)
+int Timer::timeoutHandler(sd_event_source* eventSource, uint64_t usec,
+ void* userData)
{
auto timer = static_cast<Timer*>(userData);
timer->expired = true;
log<level::INFO>("Timer expired");
// Call optional user call back function if available
- if(timer->userCallBack)
+ if (timer->userCallBack)
{
timer->userCallBack();
}
@@ -91,7 +92,7 @@ int Timer::startTimer(std::chrono::microseconds timeValue)
if (r < 0)
{
log<level::ERR>("Failure to set timer",
- entry("ERROR=%s", strerror(-r)));
+ entry("ERROR=%s", strerror(-r)));
return r;
}
@@ -101,7 +102,7 @@ int Timer::startTimer(std::chrono::microseconds timeValue)
if (r < 0)
{
log<level::ERR>("Failure to start timer",
- entry("ERROR=%s", strerror(-r)));
+ entry("ERROR=%s", strerror(-r)));
}
return r;
}
diff --git a/timer.hpp b/timer.hpp
index e39d85c..ec432ba 100644
--- a/timer.hpp
+++ b/timer.hpp
@@ -1,8 +1,9 @@
#pragma once
+#include <systemd/sd-event.h>
+
#include <chrono>
#include <functional>
-#include <systemd/sd-event.h>
namespace phosphor
{
namespace ipmi
@@ -13,88 +14,87 @@ namespace ipmi
*/
class Timer
{
- public:
- /** @brief Only need the default Timer */
- Timer() = delete;
- Timer(const Timer&) = delete;
- Timer& operator=(const Timer&) = delete;
- Timer(Timer&&) = delete;
- Timer& operator=(Timer&&) = delete;
-
- /** @brief Constructs timer object
- *
- * @param[in] events - sd_event pointer
- * @param[in] funcCallBack - optional function callback for timer
- * expirations
- */
- Timer(sd_event* events,
- std::function<void()> userCallBack = nullptr)
- : timeEvent(events), userCallBack(userCallBack)
- {
- // Initialize the timer
- initialize();
- }
+ public:
+ /** @brief Only need the default Timer */
+ Timer() = delete;
+ Timer(const Timer&) = delete;
+ Timer& operator=(const Timer&) = delete;
+ Timer(Timer&&) = delete;
+ Timer& operator=(Timer&&) = delete;
- ~Timer()
- {
- if (eventSource)
- {
- eventSource = sd_event_source_unref(eventSource);
- }
- }
+ /** @brief Constructs timer object
+ *
+ * @param[in] events - sd_event pointer
+ * @param[in] funcCallBack - optional function callback for timer
+ * expirations
+ */
+ Timer(sd_event* events, std::function<void()> userCallBack = nullptr) :
+ timeEvent(events), userCallBack(userCallBack)
+ {
+ // Initialize the timer
+ initialize();
+ }
- inline auto isExpired() const
+ ~Timer()
+ {
+ if (eventSource)
{
- return expired;
+ eventSource = sd_event_source_unref(eventSource);
}
+ }
+
+ inline auto isExpired() const
+ {
+ return expired;
+ }
+
+ /** @brief Starts the timer with specified expiration value.
+ * input is an offset from the current steady_clock
+ */
+ int startTimer(std::chrono::microseconds usec);
+
+ /** @brief Enables / disables the timer */
+ int setTimer(int action);
+
+ private:
+ /** @brief the sd_event structure */
+ sd_event* timeEvent = nullptr;
+
+ /** @brief Source of events */
+ sd_event_source* eventSource = nullptr;
+
+ /** @brief Returns if the associated timer is expired
+ *
+ * This is set to true when the timeoutHandler is called into
+ */
+ bool expired = true;
+
+ /** @brief Initializes the timer object with infinite
+ * expiration time and sets up the callback handler
+ *
+ * @return None.
+ *
+ * @error std::runtime exception thrown
+ */
+ void initialize();
+
+ /** @brief Callback function when timer goes off
+ *
+ * On getting the signal, initiate the hard power off request
+ *
+ * @param[in] eventSource - Source of the event
+ * @param[in] usec - time in micro seconds
+ * @param[in] userData - User data pointer
+ *
+ */
+ static int timeoutHandler(sd_event_source* eventSource, uint64_t usec,
+ void* userData);
+
+ /** @brief Gets the current time from steady clock */
+ static std::chrono::microseconds getTime();
- /** @brief Starts the timer with specified expiration value.
- * input is an offset from the current steady_clock
- */
- int startTimer(std::chrono::microseconds usec);
-
- /** @brief Enables / disables the timer */
- int setTimer(int action);
-
- private:
- /** @brief the sd_event structure */
- sd_event* timeEvent = nullptr;
-
- /** @brief Source of events */
- sd_event_source* eventSource = nullptr;
-
- /** @brief Returns if the associated timer is expired
- *
- * This is set to true when the timeoutHandler is called into
- */
- bool expired = true;
-
- /** @brief Initializes the timer object with infinite
- * expiration time and sets up the callback handler
- *
- * @return None.
- *
- * @error std::runtime exception thrown
- */
- void initialize();
-
- /** @brief Callback function when timer goes off
- *
- * On getting the signal, initiate the hard power off request
- *
- * @param[in] eventSource - Source of the event
- * @param[in] usec - time in micro seconds
- * @param[in] userData - User data pointer
- *
- */
- static int timeoutHandler(sd_event_source* eventSource,
- uint64_t usec, void* userData);
-
- /** @brief Gets the current time from steady clock */
- static std::chrono::microseconds getTime();
-
- /** @brief Optional function to call on timer expiration */
- std::function<void()> userCallBack;
+ /** @brief Optional function to call on timer expiration */
+ std::function<void()> userCallBack;
};
} // namespace ipmi
diff --git a/transporthandler.cpp b/transporthandler.cpp
index 95b983a..a6239ea 100644
--- a/transporthandler.cpp
+++ b/transporthandler.cpp
@@ -1,44 +1,47 @@
-#include <chrono>
-#include <fstream>
+#include <arpa/inet.h>
+#include <stdint.h>
#include <stdio.h>
#include <string.h>
-#include <stdint.h>
-#include <arpa/inet.h>
+
+#include <chrono>
+#include <fstream>
#include <string>
#if __has_include(<filesystem>)
#include <filesystem>
#elif __has_include(<experimental/filesystem>)
#include <experimental/filesystem>
-namespace std {
- // splice experimental::filesystem into std
- namespace filesystem = std::experimental::filesystem;
-}
+namespace std
+{
+// splice experimental::filesystem into std
+namespace filesystem = std::experimental::filesystem;
+} // namespace std
#else
-# error filesystem not available
+#error filesystem not available
#endif
#include "app/channel.hpp"
-#include "host-ipmid/ipmid-api.h"
#include "ipmid.hpp"
+#include "net.hpp"
#include "timer.hpp"
#include "transporthandler.hpp"
#include "utils.hpp"
-#include "net.hpp"
-#include <phosphor-logging/log.hpp>
#include <phosphor-logging/elog-errors.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
+#include <phosphor-logging/log.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
+#include "host-ipmid/ipmid-api.h"
#define SYSTEMD_NETWORKD_DBUS 1
#ifdef SYSTEMD_NETWORKD_DBUS
-#include <systemd/sd-bus.h>
#include <mapper.h>
+#include <systemd/sd-bus.h>
#endif
extern std::unique_ptr<phosphor::ipmi::Timer> networkTimer;
-const int SIZE_MAC = 18; //xx:xx:xx:xx:xx:xx
+const int SIZE_MAC = 18; // xx:xx:xx:xx:xx:xx
constexpr auto ipv4Protocol = "xyz.openbmc_project.Network.IP.Protocol.IPv4";
std::map<int, std::unique_ptr<struct ChannelConfig_t>> channelConfig;
@@ -61,8 +64,8 @@ struct ChannelConfig_t* getChannelConfig(int channel)
return channelConfig[channel].get();
}
-// Helper Function to get IP Address/NetMask/Gateway/MAC Address from Network Manager or
-// Cache based on Set-In-Progress State
+// Helper Function to get IP Address/NetMask/Gateway/MAC Address from Network
+// Manager or Cache based on Set-In-Progress State
ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
{
ipmi_ret_t rc = IPMI_CC_OK;
@@ -89,17 +92,13 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
{
try
{
- auto ipObjectInfo = ipmi::getIPObject(
- bus,
- ipmi::network::IP_INTERFACE,
- ipmi::network::ROOT,
- ethIP);
+ auto ipObjectInfo =
+ ipmi::getIPObject(bus, ipmi::network::IP_INTERFACE,
+ ipmi::network::ROOT, ethIP);
auto properties = ipmi::getAllDbusProperties(
- bus,
- ipObjectInfo.second,
- ipObjectInfo.first,
- ipmi::network::IP_INTERFACE);
+ bus, ipObjectInfo.second, ipObjectInfo.first,
+ ipmi::network::IP_INTERFACE);
ipaddress = properties["Address"].get<std::string>();
}
@@ -132,33 +131,29 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
// if the system is having ip object,then
// get the IP object.
auto ipObject = ipmi::getDbusObject(
- bus,
- ipmi::network::IP_INTERFACE,
- ipmi::network::ROOT,
- ethIP);
+ bus, ipmi::network::IP_INTERFACE,
+ ipmi::network::ROOT, ethIP);
// Get the parent interface of the IP object.
try
{
ipmi::InterfaceList interfaces;
interfaces.emplace_back(
- ipmi::network::ETHERNET_INTERFACE);
+ ipmi::network::ETHERNET_INTERFACE);
ancestorMap = ipmi::getAllAncestors(
- bus,
- ipObject.first,
- std::move(interfaces));
+ bus, ipObject.first, std::move(interfaces));
}
catch (InternalFailure& e)
{
// if unable to get the parent interface
// then commit the error and return.
- log<level::ERR>("Unable to get the parent interface",
- entry("PATH=%s", ipObject.first.c_str()),
- entry("INTERFACE=%s",
- ipmi::network::ETHERNET_INTERFACE));
+ log<level::ERR>(
+ "Unable to get the parent interface",
+ entry("PATH=%s", ipObject.first.c_str()),
+ entry("INTERFACE=%s",
+ ipmi::network::ETHERNET_INTERFACE));
break;
-
}
// for an ip object there would be single parent
// interface.
@@ -169,54 +164,45 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
// if there is no ip configured on the system,then
// get the network interface object.
auto networkInterfaceObject = ipmi::getDbusObject(
- bus,
- ipmi::network::ETHERNET_INTERFACE,
- ipmi::network::ROOT,
- ethdevice);
+ bus, ipmi::network::ETHERNET_INTERFACE,
+ ipmi::network::ROOT, ethdevice);
networkInterfacePath = networkInterfaceObject.first;
}
auto variant = ipmi::getDbusProperty(
- bus,
- ipmi::network::SERVICE,
- networkInterfacePath,
- ipmi::network::ETHERNET_INTERFACE,
- "DHCPEnabled");
+ bus, ipmi::network::SERVICE, networkInterfacePath,
+ ipmi::network::ETHERNET_INTERFACE, "DHCPEnabled");
auto dhcpEnabled = variant.get<bool>();
// As per IPMI spec 2=>DHCP, 1=STATIC
- auto ipsrc = dhcpEnabled ? ipmi::network::IPOrigin::DHCP :
- ipmi::network::IPOrigin::STATIC;
+ auto ipsrc = dhcpEnabled ? ipmi::network::IPOrigin::DHCP
+ : ipmi::network::IPOrigin::STATIC;
memcpy(data, &ipsrc, ipmi::network::IPSRC_SIZE_BYTE);
}
else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
{
- memcpy(data, &(channelConf->ipsrc),
- ipmi::network::IPSRC_SIZE_BYTE);
+ memcpy(data, &(channelConf->ipsrc),
+ ipmi::network::IPSRC_SIZE_BYTE);
}
}
break;
case LAN_PARM_SUBNET:
{
- unsigned long mask {};
+ unsigned long mask{};
if (channelConf->lan_set_in_progress == SET_COMPLETE)
{
try
{
auto ipObjectInfo = ipmi::getIPObject(
- bus,
- ipmi::network::IP_INTERFACE,
- ipmi::network::ROOT,
- ipmi::network::IP_TYPE);
+ bus, ipmi::network::IP_INTERFACE,
+ ipmi::network::ROOT, ipmi::network::IP_TYPE);
auto properties = ipmi::getAllDbusProperties(
- bus,
- ipObjectInfo.second,
- ipObjectInfo.first,
- ipmi::network::IP_INTERFACE);
+ bus, ipObjectInfo.second, ipObjectInfo.first,
+ ipmi::network::IP_INTERFACE);
auto prefix = properties["PrefixLength"].get<uint8_t>();
mask = ipmi::network::MASK_32_BIT;
@@ -235,7 +221,6 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
inet_pton(AF_INET, channelConf->netmask.c_str(),
reinterpret_cast<void*>(data));
}
-
}
break;
@@ -248,18 +233,15 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
try
{
auto systemObject = ipmi::getDbusObject(
- bus,
- ipmi::network::SYSTEMCONFIG_INTERFACE,
- ipmi::network::ROOT);
+ bus, ipmi::network::SYSTEMCONFIG_INTERFACE,
+ ipmi::network::ROOT);
auto systemProperties = ipmi::getAllDbusProperties(
- bus,
- systemObject.second,
- systemObject.first,
- ipmi::network::SYSTEMCONFIG_INTERFACE);
+ bus, systemObject.second, systemObject.first,
+ ipmi::network::SYSTEMCONFIG_INTERFACE);
- gateway = systemProperties["DefaultGateway"].get<
- std::string>();
+ gateway = systemProperties["DefaultGateway"]
+ .get<std::string>();
}
// ignore the exception, as it is a valid condition that
// the system is not configured with any IP.
@@ -267,7 +249,6 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
{
// nothing to do
}
-
}
else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
{
@@ -284,21 +265,15 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
std::string macAddress;
if (channelConf->lan_set_in_progress == SET_COMPLETE)
{
- auto macObjectInfo = ipmi::getDbusObject(
- bus,
- ipmi::network::MAC_INTERFACE,
- ipmi::network::ROOT,
- ethdevice);
+ auto macObjectInfo =
+ ipmi::getDbusObject(bus, ipmi::network::MAC_INTERFACE,
+ ipmi::network::ROOT, ethdevice);
auto variant = ipmi::getDbusProperty(
- bus,
- macObjectInfo.second,
- macObjectInfo.first,
- ipmi::network::MAC_INTERFACE,
- "MACAddress");
+ bus, macObjectInfo.second, macObjectInfo.first,
+ ipmi::network::MAC_INTERFACE, "MACAddress");
macAddress = variant.get<std::string>();
-
}
else if (channelConf->lan_set_in_progress == SET_IN_PROGRESS)
{
@@ -306,36 +281,30 @@ ipmi_ret_t getNetworkData(uint8_t lan_param, uint8_t* data, int channel)
}
sscanf(macAddress.c_str(), ipmi::network::MAC_ADDRESS_FORMAT,
- (data),
- (data + 1),
- (data + 2),
- (data + 3),
- (data + 4),
+ (data), (data + 1), (data + 2), (data + 3), (data + 4),
(data + 5));
}
break;
case LAN_PARM_VLAN:
{
- uint16_t vlanID {};
+ uint16_t vlanID{};
if (channelConf->lan_set_in_progress == SET_COMPLETE)
{
try
{
auto ipObjectInfo = ipmi::getIPObject(
- bus,
- ipmi::network::IP_INTERFACE,
- ipmi::network::ROOT,
- ipmi::network::IP_TYPE);
+ bus, ipmi::network::IP_INTERFACE,
+ ipmi::network::ROOT, ipmi::network::IP_TYPE);
vlanID = static_cast<uint16_t>(
- ipmi::network::getVLAN(ipObjectInfo.first));
+ ipmi::network::getVLAN(ipObjectInfo.first));
vlanID = htole16(vlanID);
if (vlanID)
{
- //Enable the 16th bit
+ // Enable the 16th bit
vlanID |= htole16(ipmi::network::VLAN_ENABLE_MASK);
}
}
@@ -401,11 +370,13 @@ std::vector<uint8_t> getCipherList()
return cipherList;
}
-} //namespace cipher
+} // namespace cipher
ipmi_ret_t ipmi_transport_wildcard(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_request_t request,
+ ipmi_response_t response,
+ ipmi_data_len_t data_len,
+ ipmi_context_t context)
{
// Status code.
ipmi_ret_t rc = IPMI_CC_INVALID;
@@ -418,10 +389,9 @@ struct set_lan_t
uint8_t channel;
uint8_t parameter;
uint8_t data[8]; // Per IPMI spec, not expecting more than this size
-} __attribute__((packed));
+} __attribute__((packed));
-ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn,
- ipmi_cmd_t cmd,
+ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_request_t request,
ipmi_response_t response,
ipmi_data_len_t data_len,
@@ -456,8 +426,8 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn,
case LAN_PARM_IP:
{
snprintf(ipaddr, INET_ADDRSTRLEN, ipmi::network::IP_ADDRESS_FORMAT,
- reqptr->data[0], reqptr->data[1],
- reqptr->data[2], reqptr->data[3]);
+ reqptr->data[0], reqptr->data[1], reqptr->data[2],
+ reqptr->data[3]);
channelConf->ipaddr.assign(ipaddr);
}
@@ -476,25 +446,16 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn,
char mac[SIZE_MAC];
snprintf(mac, SIZE_MAC, ipmi::network::MAC_ADDRESS_FORMAT,
- reqptr->data[0],
- reqptr->data[1],
- reqptr->data[2],
- reqptr->data[3],
- reqptr->data[4],
- reqptr->data[5]);
-
- auto macObjectInfo = ipmi::getDbusObject(
- bus,
- ipmi::network::MAC_INTERFACE,
- ipmi::network::ROOT,
- ethdevice);
-
- ipmi::setDbusProperty(bus,
- macObjectInfo.second,
- macObjectInfo.first,
- ipmi::network::MAC_INTERFACE,
- "MACAddress",
- std::string(mac));
+ reqptr->data[0], reqptr->data[1], reqptr->data[2],
+ reqptr->data[3], reqptr->data[4], reqptr->data[5]);
+
+ auto macObjectInfo =
+ ipmi::getDbusObject(bus, ipmi::network::MAC_INTERFACE,
+ ipmi::network::ROOT, ethdevice);
+
+ ipmi::setDbusProperty(
+ bus, macObjectInfo.second, macObjectInfo.first,
+ ipmi::network::MAC_INTERFACE, "MACAddress", std::string(mac));
channelConf->macAddress = mac;
}
@@ -503,8 +464,8 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn,
case LAN_PARM_SUBNET:
{
snprintf(netmask, INET_ADDRSTRLEN, ipmi::network::IP_ADDRESS_FORMAT,
- reqptr->data[0], reqptr->data[1],
- reqptr->data[2], reqptr->data[3]);
+ reqptr->data[0], reqptr->data[1], reqptr->data[2],
+ reqptr->data[3]);
channelConf->netmask.assign(netmask);
}
break;
@@ -512,15 +473,15 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn,
case LAN_PARM_GATEWAY:
{
snprintf(gateway, INET_ADDRSTRLEN, ipmi::network::IP_ADDRESS_FORMAT,
- reqptr->data[0], reqptr->data[1],
- reqptr->data[2], reqptr->data[3]);
+ reqptr->data[0], reqptr->data[1], reqptr->data[2],
+ reqptr->data[3]);
channelConf->gateway.assign(gateway);
}
break;
case LAN_PARM_VLAN:
{
- uint16_t vlan {};
+ uint16_t vlan{};
memcpy(&vlan, reqptr->data, ipmi::network::VLAN_SIZE_BYTE);
// We are not storing the enable bit
// We assume that ipmitool always send enable
@@ -536,16 +497,17 @@ ipmi_ret_t ipmi_transport_set_lan(ipmi_netfn_t netfn,
{
channelConf->lan_set_in_progress = SET_COMPLETE;
- log<level::INFO>("Network data from Cache",
- entry("PREFIX=%s", channelConf->netmask.c_str()),
- entry("ADDRESS=%s", channelConf->ipaddr.c_str()),
- entry("GATEWAY=%s", channelConf->gateway.c_str()),
- entry("VLAN=%d", channelConf->vlanID));
+ log<level::INFO>(
+ "Network data from Cache",
+ entry("PREFIX=%s", channelConf->netmask.c_str()),
+ entry("ADDRESS=%s", channelConf->ipaddr.c_str()),
+ entry("GATEWAY=%s", channelConf->gateway.c_str()),
+ entry("VLAN=%d", channelConf->vlanID));
if (!networkTimer)
{
- log<level::ERR>("Network timer is not instantiated");
- return IPMI_CC_UNSPECIFIED_ERROR;
+ log<level::ERR>("Network timer is not instantiated");
+ return IPMI_CC_UNSPECIFIED_ERROR;
}
// start/restart the timer
@@ -574,10 +536,9 @@ struct get_lan_t
uint8_t parameter;
uint8_t parameter_set;
uint8_t parameter_block;
-} __attribute__((packed));
+} __attribute__((packed));
-ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn,
- ipmi_cmd_t cmd,
+ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn, ipmi_cmd_t cmd,
ipmi_request_t request,
ipmi_response_t response,
ipmi_data_len_t data_len,
@@ -587,7 +548,7 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn,
*data_len = 0;
const uint8_t current_revision = 0x11; // Current rev per IPMI Spec 2.0
- get_lan_t *reqptr = (get_lan_t*) request;
+ get_lan_t* reqptr = (get_lan_t*)request;
// channel number is the lower nibble
int channel = reqptr->rev_channel & CHANNEL_MASK;
@@ -609,7 +570,7 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn,
cipherList = cipher::getCipherList();
listInit = true;
}
- catch (const std::exception &e)
+ catch (const std::exception& e)
{
return IPMI_CC_UNSPECIFIED_ERROR;
}
@@ -630,13 +591,13 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn,
}
else if (reqptr->parameter == LAN_PARM_AUTHSUPPORT)
{
- uint8_t buf[] = {current_revision,0x04};
+ uint8_t buf[] = {current_revision, 0x04};
*data_len = sizeof(buf);
memcpy(response, &buf, *data_len);
}
else if (reqptr->parameter == LAN_PARM_AUTHENABLES)
{
- uint8_t buf[] = {current_revision,0x04,0x04,0x04,0x04,0x04};
+ uint8_t buf[] = {current_revision, 0x04, 0x04, 0x04, 0x04, 0x04};
*data_len = sizeof(buf);
memcpy(response, &buf, *data_len);
}
@@ -704,11 +665,10 @@ ipmi_ret_t ipmi_transport_get_lan(ipmi_netfn_t netfn,
{
*(static_cast<uint8_t*>(response)) = current_revision;
// Byte 1 is reserved
- std::copy_n(cipherList.data(),
- cipherList.size(),
+ std::copy_n(cipherList.data(), cipherList.size(),
static_cast<uint8_t*>(response) + 1);
- *data_len = sizeof(current_revision) +
- static_cast<uint8_t>(cipherList.size());
+ *data_len =
+ sizeof(current_revision) + static_cast<uint8_t>(cipherList.size());
}
else
{
@@ -724,8 +684,8 @@ void applyChanges(int channel)
{
std::string ipaddress;
std::string gateway;
- uint8_t prefix {};
- uint32_t vlanID {};
+ uint8_t prefix{};
+ uint32_t vlanID{};
std::string networkInterfacePath;
ipmi::DbusObjectInfo ipObject;
ipmi::DbusObjectInfo systemObject;
@@ -752,8 +712,8 @@ void applyChanges(int channel)
entry("IPSRC=%d", channelConf->ipsrc));
if (channelConf->vlanID != ipmi::network::VLAN_ID_MASK)
{
- //get the first twelve bits which is vlan id
- //not interested in rest of the bits.
+ // get the first twelve bits which is vlan id
+ // not interested in rest of the bits.
channelConf->vlanID = le32toh(channelConf->vlanID);
vlanID = channelConf->vlanID & ipmi::network::VLAN_ID_MASK;
}
@@ -763,10 +723,9 @@ void applyChanges(int channel)
if (channelConf->ipsrc != ipmi::network::IPOrigin::DHCP)
{
// always get the system object
- systemObject = ipmi::getDbusObject(
- bus,
- ipmi::network::SYSTEMCONFIG_INTERFACE,
- ipmi::network::ROOT);
+ systemObject =
+ ipmi::getDbusObject(bus, ipmi::network::SYSTEMCONFIG_INTERFACE,
+ ipmi::network::ROOT);
// the below code is to determine the mode of the interface
// as the handling is same, if the system is configured with
@@ -775,21 +734,18 @@ void applyChanges(int channel)
{
ipmi::ObjectTree ancestorMap;
- ipmi::InterfaceList interfaces {
- ipmi::network::ETHERNET_INTERFACE };
+ ipmi::InterfaceList interfaces{
+ ipmi::network::ETHERNET_INTERFACE};
// if the system is having ip object,then
// get the IP object.
- ipObject = ipmi::getIPObject(bus,
- ipmi::network::IP_INTERFACE,
- ipmi::network::ROOT,
- ethIp);
+ ipObject = ipmi::getIPObject(bus, ipmi::network::IP_INTERFACE,
+ ipmi::network::ROOT, ethIp);
// Get the parent interface of the IP object.
try
{
- ancestorMap = ipmi::getAllAncestors(bus,
- ipObject.first,
+ ancestorMap = ipmi::getAllAncestors(bus, ipObject.first,
std::move(interfaces));
}
catch (InternalFailure& e)
@@ -815,30 +771,27 @@ void applyChanges(int channel)
// if there is no ip configured on the system,then
// get the network interface object.
- auto networkInterfaceObject = ipmi::getDbusObject(
- bus,
- ipmi::network::ETHERNET_INTERFACE,
- ipmi::network::ROOT,
- ethdevice);
+ auto networkInterfaceObject =
+ ipmi::getDbusObject(bus, ipmi::network::ETHERNET_INTERFACE,
+ ipmi::network::ROOT, ethdevice);
networkInterfacePath = std::move(networkInterfaceObject.first);
}
// get the configured mode on the system.
- auto enableDHCP = ipmi::getDbusProperty(
- bus,
- ipmi::network::SERVICE,
- networkInterfacePath,
- ipmi::network::ETHERNET_INTERFACE,
- "DHCPEnabled").get<bool>();
+ auto enableDHCP =
+ ipmi::getDbusProperty(
+ bus, ipmi::network::SERVICE, networkInterfacePath,
+ ipmi::network::ETHERNET_INTERFACE, "DHCPEnabled")
+ .get<bool>();
// if ip address source is not given then get the ip source mode
// from the system so that it can be applied later.
if (channelConf->ipsrc == ipmi::network::IPOrigin::UNSPECIFIED)
{
- channelConf->ipsrc = (enableDHCP) ?
- ipmi::network::IPOrigin::DHCP :
- ipmi::network::IPOrigin::STATIC;
+ channelConf->ipsrc = (enableDHCP)
+ ? ipmi::network::IPOrigin::DHCP
+ : ipmi::network::IPOrigin::STATIC;
}
// check whether user has given all the data
@@ -849,13 +802,13 @@ void applyChanges(int channel)
!channelConf->gateway.empty()) ||
(enableDHCP)) // configured system interface mode = DHCP
{
- //convert mask into prefix
+ // convert mask into prefix
ipaddress = channelConf->ipaddr;
prefix = ipmi::network::toPrefix(AF_INET, channelConf->netmask);
gateway = channelConf->gateway;
}
else // asked ip src = static and configured system src = static
- // or partially given data.
+ // or partially given data.
{
// We have partial filled cache so get the remaining
// info from the system.
@@ -869,36 +822,34 @@ void applyChanges(int channel)
try
{
auto properties = ipmi::getAllDbusProperties(
- bus,
- ipObject.second,
- ipObject.first,
- ipmi::network::IP_INTERFACE);
+ bus, ipObject.second, ipObject.first,
+ ipmi::network::IP_INTERFACE);
- ipaddress = channelConf->ipaddr.empty() ?
- properties["Address"].get<std::string>() :
- channelConf->ipaddr;
+ ipaddress = channelConf->ipaddr.empty()
+ ? properties["Address"].get<std::string>()
+ : channelConf->ipaddr;
- prefix = channelConf->netmask.empty() ?
- properties["PrefixLength"].get<uint8_t>() :
- ipmi::network::toPrefix(AF_INET,
- channelConf->netmask);
- }
+ prefix = channelConf->netmask.empty()
+ ? properties["PrefixLength"].get<uint8_t>()
+ : ipmi::network::toPrefix(
+ AF_INET, channelConf->netmask);
+ }
catch (InternalFailure& e)
{
- log<level::INFO>("Failed to get IP object which matches",
- entry("INTERFACE=%s", ipmi::network::IP_INTERFACE),
- entry("MATCH=%s", ethIp.c_str()));
+ log<level::INFO>(
+ "Failed to get IP object which matches",
+ entry("INTERFACE=%s", ipmi::network::IP_INTERFACE),
+ entry("MATCH=%s", ethIp.c_str()));
}
auto systemProperties = ipmi::getAllDbusProperties(
- bus,
- systemObject.second,
- systemObject.first,
- ipmi::network::SYSTEMCONFIG_INTERFACE);
-
- gateway = channelConf->gateway.empty() ?
- systemProperties["DefaultGateway"].get<std::string>() :
- channelConf->gateway;
+ bus, systemObject.second, systemObject.first,
+ ipmi::network::SYSTEMCONFIG_INTERFACE);
+
+ gateway =
+ channelConf->gateway.empty()
+ ? systemProperties["DefaultGateway"].get<std::string>()
+ : channelConf->gateway;
}
}
@@ -913,100 +864,74 @@ void applyChanges(int channel)
// instead of deleting all the vlan interfaces and
// all the ipv4 address,we will call reset method.
- //delete all the vlan interfaces
+ // delete all the vlan interfaces
- ipmi::deleteAllDbusObjects(bus,
- ipmi::network::ROOT,
+ ipmi::deleteAllDbusObjects(bus, ipmi::network::ROOT,
ipmi::network::VLAN_INTERFACE);
// set the interface mode to static
- auto networkInterfaceObject = ipmi::getDbusObject(
- bus,
- ipmi::network::ETHERNET_INTERFACE,
- ipmi::network::ROOT,
- ethdevice);
+ auto networkInterfaceObject =
+ ipmi::getDbusObject(bus, ipmi::network::ETHERNET_INTERFACE,
+ ipmi::network::ROOT, ethdevice);
// setting the physical interface mode to static.
- ipmi::setDbusProperty(bus,
- ipmi::network::SERVICE,
- networkInterfaceObject.first,
- ipmi::network::ETHERNET_INTERFACE,
- "DHCPEnabled",
- false);
+ ipmi::setDbusProperty(
+ bus, ipmi::network::SERVICE, networkInterfaceObject.first,
+ ipmi::network::ETHERNET_INTERFACE, "DHCPEnabled", false);
networkInterfacePath = networkInterfaceObject.first;
- //delete all the ipv4 addresses
- ipmi::deleteAllDbusObjects(bus,
- ipmi::network::ROOT,
- ipmi::network::IP_INTERFACE,
- ethIp);
+ // delete all the ipv4 addresses
+ ipmi::deleteAllDbusObjects(bus, ipmi::network::ROOT,
+ ipmi::network::IP_INTERFACE, ethIp);
if (vlanID)
{
- ipmi::network::createVLAN(bus,
- ipmi::network::SERVICE,
- ipmi::network::ROOT,
- ethdevice,
- vlanID);
+ ipmi::network::createVLAN(bus, ipmi::network::SERVICE,
+ ipmi::network::ROOT, ethdevice, vlanID);
auto networkInterfaceObject = ipmi::getDbusObject(
- bus,
- ipmi::network::VLAN_INTERFACE,
- ipmi::network::ROOT);
+ bus, ipmi::network::VLAN_INTERFACE, ipmi::network::ROOT);
- networkInterfacePath = networkInterfaceObject.first;
+ networkInterfacePath = networkInterfaceObject.first;
}
if (channelConf->ipsrc == ipmi::network::IPOrigin::DHCP)
{
- ipmi::setDbusProperty(bus,
- ipmi::network::SERVICE,
- networkInterfacePath,
- ipmi::network::ETHERNET_INTERFACE,
- "DHCPEnabled",
- true);
+ ipmi::setDbusProperty(
+ bus, ipmi::network::SERVICE, networkInterfacePath,
+ ipmi::network::ETHERNET_INTERFACE, "DHCPEnabled", true);
}
else
{
- //change the mode to static
- ipmi::setDbusProperty(bus,
- ipmi::network::SERVICE,
- networkInterfacePath,
- ipmi::network::ETHERNET_INTERFACE,
- "DHCPEnabled",
- false);
+ // change the mode to static
+ ipmi::setDbusProperty(
+ bus, ipmi::network::SERVICE, networkInterfacePath,
+ ipmi::network::ETHERNET_INTERFACE, "DHCPEnabled", false);
if (!ipaddress.empty())
{
- ipmi::network::createIP(bus,
- ipmi::network::SERVICE,
- networkInterfacePath,
- ipv4Protocol,
- ipaddress,
- prefix);
+ ipmi::network::createIP(bus, ipmi::network::SERVICE,
+ networkInterfacePath, ipv4Protocol,
+ ipaddress, prefix);
}
if (!gateway.empty())
{
- ipmi::setDbusProperty(bus,
- systemObject.second,
+ ipmi::setDbusProperty(bus, systemObject.second,
systemObject.first,
ipmi::network::SYSTEMCONFIG_INTERFACE,
- "DefaultGateway",
- std::string(gateway));
+ "DefaultGateway", std::string(gateway));
}
}
-
}
catch (InternalFailure& e)
{
- log<level::ERR>("Failed to set network data",
- entry("PREFIX=%d", prefix),
- entry("ADDRESS=%s", ipaddress.c_str()),
- entry("GATEWAY=%s", gateway.c_str()),
- entry("VLANID=%d", vlanID),
- entry("IPSRC=%d", channelConf->ipsrc));
+ log<level::ERR>(
+ "Failed to set network data", entry("PREFIX=%d", prefix),
+ entry("ADDRESS=%s", ipaddress.c_str()),
+ entry("GATEWAY=%s", gateway.c_str()), entry("VLANID=%d", vlanID),
+ entry("IPSRC=%d", channelConf->ipsrc));
commit<InternalFailure>();
}
@@ -1016,7 +941,7 @@ void applyChanges(int channel)
void commitNetworkChanges()
{
- for (const auto &channel : channelConfig)
+ for (const auto& channel : channelConfig)
{
if (channel.second->flush)
{
@@ -1030,14 +955,11 @@ void createNetworkTimer()
if (!networkTimer)
{
std::function<void()> networkTimerCallback(
- std::bind(&commitNetworkChanges));
+ std::bind(&commitNetworkChanges));
- networkTimer =
- std::make_unique<phosphor::ipmi::Timer>(
- ipmid_get_sd_event_connection(),
- networkTimerCallback);
+ networkTimer = std::make_unique<phosphor::ipmi::Timer>(
+ ipmid_get_sd_event_connection(), networkTimerCallback);
}
-
}
void register_netfn_transport_functions()
@@ -1046,16 +968,16 @@ void register_netfn_transport_functions()
// so creating it here.
createNetworkTimer();
// <Wildcard Command>
- ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_WILDCARD, NULL, ipmi_transport_wildcard,
- PRIVILEGE_USER);
+ ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_WILDCARD, NULL,
+ ipmi_transport_wildcard, PRIVILEGE_USER);
// <Set LAN Configuration Parameters>
- ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_SET_LAN, NULL, ipmi_transport_set_lan,
- PRIVILEGE_ADMIN);
+ ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_SET_LAN, NULL,
+ ipmi_transport_set_lan, PRIVILEGE_ADMIN);
// <Get LAN Configuration Parameters>
- ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_GET_LAN, NULL, ipmi_transport_get_lan,
- PRIVILEGE_OPERATOR);
+ ipmi_register_callback(NETFUN_TRANSPORT, IPMI_CMD_GET_LAN, NULL,
+ ipmi_transport_get_lan, PRIVILEGE_OPERATOR);
return;
}
diff --git a/transporthandler.hpp b/transporthandler.hpp
index 432bd68..a47b908 100644
--- a/transporthandler.hpp
+++ b/transporthandler.hpp
@@ -1,6 +1,7 @@
#pragma once
#include "types.hpp"
+
#include <string>
// IPMI commands for Transport net functions.
enum ipmi_netfn_storage_cmds
@@ -17,22 +18,22 @@ enum ipmi_transport_return_codes
};
// Parameters
-static const int LAN_PARM_INPROGRESS = 0;
+static const int LAN_PARM_INPROGRESS = 0;
static const int LAN_PARM_AUTHSUPPORT = 1;
static const int LAN_PARM_AUTHENABLES = 2;
-static const int LAN_PARM_IP = 3;
-static const int LAN_PARM_IPSRC = 4;
-static const int LAN_PARM_MAC = 5;
-static const int LAN_PARM_SUBNET = 6;
-static const int LAN_PARM_GATEWAY = 12;
-static const int LAN_PARM_VLAN = 20;
-static const int CIPHER_SUITE_COUNT = 22;
+static const int LAN_PARM_IP = 3;
+static const int LAN_PARM_IPSRC = 4;
+static const int LAN_PARM_MAC = 5;
+static const int LAN_PARM_SUBNET = 6;
+static const int LAN_PARM_GATEWAY = 12;
+static const int LAN_PARM_VLAN = 20;
+static const int CIPHER_SUITE_COUNT = 22;
static const int CIPHER_SUITE_ENTRIES = 23;
constexpr uint8_t SET_COMPLETE = 0;
constexpr uint8_t SET_IN_PROGRESS = 1;
-constexpr uint8_t SET_COMMIT_WRITE = 2; //Optional
-constexpr uint8_t SET_IN_PROGRESS_RESERVED = 3; //Reserved
+constexpr uint8_t SET_COMMIT_WRITE = 2; // Optional
+constexpr uint8_t SET_IN_PROGRESS_RESERVED = 3; // Reserved
const int CHANNEL_MASK = 0x0f;
const int NUM_CHANNELS = 0x0f;
diff --git a/types.hpp b/types.hpp
index b6bab94..431d5b6 100644
--- a/types.hpp
+++ b/types.hpp
@@ -3,9 +3,8 @@
#include <stdint.h>
#include <map>
-#include <string>
-
#include <sdbusplus/server.hpp>
+#include <string>
namespace ipmi
{
@@ -22,8 +21,8 @@ using Value = sdbusplus::message::variant<bool, uint8_t, int16_t, uint16_t,
using PropertyMap = std::map<DbusProperty, Value>;
-using ObjectTree = std::map<DbusObjectPath,
- std::map<DbusService, std::vector<DbusInterface>>>;
+using ObjectTree =
+ std::map<DbusObjectPath, std::map<DbusService, std::vector<DbusInterface>>>;
using InterfaceList = std::vector<std::string>;
@@ -43,16 +42,16 @@ using Offset = uint8_t;
*/
enum class SkipAssertion
{
- NONE, //No skip defined
- ASSERT, //Skip on Assert
- DEASSERT, //Skip on Deassert
+ NONE, // No skip defined
+ ASSERT, // Skip on Assert
+ DEASSERT, // Skip on Deassert
};
struct Values
{
- SkipAssertion skip;
- Value assert;
- Value deassert;
+ SkipAssertion skip;
+ Value assert;
+ Value deassert;
};
/**
@@ -61,8 +60,8 @@ struct Values
*/
struct PreReqValues
{
- Value assert; //Value in case of assert.
- Value deassert; //Value in case of deassert.
+ Value assert; // Value in case of assert.
+ Value deassert; // Value in case of deassert.
};
using PreReqOffsetValueMap = std::map<Offset, PreReqValues>;
@@ -93,17 +92,17 @@ struct SetSensorReadingReq
*/
struct GetReadingResponse
{
- uint8_t reading; //!< Sensor reading.
- uint8_t operation; //!< Sensor scanning status / reading state.
- uint8_t assertOffset0_7; //!< Discrete assertion states(0-7).
- uint8_t assertOffset8_14; //!< Discrete assertion states(8-14).
+ uint8_t reading; //!< Sensor reading.
+ uint8_t operation; //!< Sensor scanning status / reading state.
+ uint8_t assertOffset0_7; //!< Discrete assertion states(0-7).
+ uint8_t assertOffset8_14; //!< Discrete assertion states(8-14).
} __attribute__((packed));
constexpr auto inventoryRoot = "/xyz/openbmc_project/inventory";
using GetSensorResponse = std::array<uint8_t, sizeof(GetReadingResponse)>;
-using OffsetValueMap = std::map<Offset,Values>;
+using OffsetValueMap = std::map<Offset, Values>;
using DbusPropertyValues = std::pair<PreReqOffsetValueMap, OffsetValueMap>;
@@ -126,47 +125,47 @@ using SensorName = std::string;
enum class Mutability
{
- Read = 1 << 0,
- Write = 1 << 1,
+ Read = 1 << 0,
+ Write = 1 << 1,
};
inline Mutability operator|(Mutability lhs, Mutability rhs)
{
- return static_cast<Mutability>(
- static_cast<uint8_t>(lhs) | static_cast<uint8_t>(rhs));
+ return static_cast<Mutability>(static_cast<uint8_t>(lhs) |
+ static_cast<uint8_t>(rhs));
}
inline Mutability operator&(Mutability lhs, Mutability rhs)
{
- return static_cast<Mutability>(
- static_cast<uint8_t>(lhs) & static_cast<uint8_t>(rhs));
+ return static_cast<Mutability>(static_cast<uint8_t>(lhs) &
+ static_cast<uint8_t>(rhs));
}
struct Info
{
- EntityType entityType;
- EntityInst instance;
- Type sensorType;
- InstancePath sensorPath;
- DbusInterface sensorInterface;
- ReadingType sensorReadingType;
- Multiplier coefficientM;
- OffsetB coefficientB;
- Exponent exponentB;
- ScaledOffset scaledOffset;
- Exponent exponentR;
- bool hasScale;
- Scale scale;
- Unit unit;
- std::function<uint8_t(SetSensorReadingReq&, const Info&)> updateFunc;
- std::function<GetSensorResponse(const Info&)> getFunc;
- Mutability mutability;
- std::function<SensorName(const Info&)> sensorNameFunc;
- DbusInterfaceMap propertyInterfaces;
+ EntityType entityType;
+ EntityInst instance;
+ Type sensorType;
+ InstancePath sensorPath;
+ DbusInterface sensorInterface;
+ ReadingType sensorReadingType;
+ Multiplier coefficientM;
+ OffsetB coefficientB;
+ Exponent exponentB;
+ ScaledOffset scaledOffset;
+ Exponent exponentR;
+ bool hasScale;
+ Scale scale;
+ Unit unit;
+ std::function<uint8_t(SetSensorReadingReq&, const Info&)> updateFunc;
+ std::function<GetSensorResponse(const Info&)> getFunc;
+ Mutability mutability;
+ std::function<SensorName(const Info&)> sensorNameFunc;
+ DbusInterfaceMap propertyInterfaces;
};
using Id = uint8_t;
-using IdInfoMap = std::map<Id,Info>;
+using IdInfoMap = std::map<Id, Info>;
using PropertyMap = ipmi::PropertyMap;
@@ -179,10 +178,10 @@ using IpmiUpdateData = sdbusplus::message::message;
struct SelData
{
- Id sensorID;
- Type sensorType;
- ReadingType eventReadingType;
- Offset eventOffset;
+ Id sensorID;
+ Type sensorType;
+ ReadingType eventReadingType;
+ Offset eventOffset;
};
using InventoryPath = std::string;
@@ -197,7 +196,7 @@ enum class ThresholdMask
CRITICAL_HIGH_MASK = 0x10,
};
-}// namespace sensor
+} // namespace sensor
namespace network
{
@@ -222,13 +221,12 @@ constexpr auto MASK_32_BIT = 0xFFFFFFFF;
constexpr auto VLAN_ID_MASK = 0x00000FFF;
constexpr auto VLAN_ENABLE_MASK = 0x8000;
-enum class IPOrigin: uint8_t
+enum class IPOrigin : uint8_t
{
UNSPECIFIED = 0,
STATIC = 1,
DHCP = 2,
};
-
-}//namespace network
-}//namespace ipmi
+} // namespace network
+} // namespace ipmi
diff --git a/utils.cpp b/utils.cpp
index bfe924c..225b1cc 100644
--- a/utils.cpp
+++ b/utils.cpp
@@ -1,12 +1,13 @@
#include "utils.hpp"
-#include <phosphor-logging/log.hpp>
-#include <phosphor-logging/elog-errors.hpp>
-#include "xyz/openbmc_project/Common/error.hpp"
#include <arpa/inet.h>
#include <dirent.h>
#include <net/if.h>
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
+
namespace ipmi
{
@@ -17,13 +18,13 @@ namespace network
{
/** @brief checks if the given ip is Link Local Ip or not.
- * @param[in] ipaddress - IPAddress.
- */
+ * @param[in] ipaddress - IPAddress.
+ */
bool isLinkLocalIP(const std::string& ipaddress);
-}
+} // namespace network
-//TODO There may be cases where an interface is implemented by multiple
+// TODO There may be cases where an interface is implemented by multiple
// objects,to handle such cases we are interested on that object
// which are on interested busname.
// Currently mapper doesn't give the readable busname(gives busid) so we can't
@@ -39,10 +40,8 @@ DbusObjectInfo getDbusObject(sdbusplus::bus::bus& bus,
auto depth = 0;
- auto mapperCall = bus.new_method_call(MAPPER_BUS_NAME,
- MAPPER_OBJ,
- MAPPER_INTF,
- "GetSubTree");
+ auto mapperCall = bus.new_method_call(MAPPER_BUS_NAME, MAPPER_OBJ,
+ MAPPER_INTF, "GetSubTree");
mapperCall.append(serviceRoot, depth, interfaces);
@@ -66,9 +65,10 @@ DbusObjectInfo getDbusObject(sdbusplus::bus::bus& bus,
DbusObjectInfo objectInfo;
// if match is empty then return the first object
- if(match == "")
+ if (match == "")
{
- objectInfo = std::make_pair(objectTree.begin()->first,
+ objectInfo = std::make_pair(
+ objectTree.begin()->first,
std::move(objectTree.begin()->second.begin()->first));
return objectInfo;
}
@@ -77,23 +77,22 @@ DbusObjectInfo getDbusObject(sdbusplus::bus::bus& bus,
auto objectFound = false;
for (auto& object : objectTree)
{
- if(object.first.find(match) != std::string::npos)
+ if (object.first.find(match) != std::string::npos)
{
objectFound = true;
objectInfo = make_pair(object.first,
- std::move(object.second.begin()->first));
+ std::move(object.second.begin()->first));
break;
}
}
- if(!objectFound)
+ if (!objectFound)
{
log<level::ERR>("Failed to find object which matches",
entry("MATCH=%s", match.c_str()));
elog<InternalFailure>();
}
return objectInfo;
-
}
DbusObjectInfo getIPObject(sdbusplus::bus::bus& bus,
@@ -115,13 +114,10 @@ DbusObjectInfo getIPObject(sdbusplus::bus::bus& bus,
for (auto& object : objectTree)
{
auto variant = ipmi::getDbusProperty(
- bus,
- object.second.begin()->first,
- object.first,
- ipmi::network::IP_INTERFACE,
- "Address");
+ bus, object.second.begin()->first, object.first,
+ ipmi::network::IP_INTERFACE, "Address");
- objectInfo = std::make_pair(object.first, object.second.begin()->first);
+ objectInfo = std::make_pair(object.first, object.second.begin()->first);
// if LinkLocalIP found look for Non-LinkLocalIP
if (ipmi::network::isLinkLocalIP(variant.get<std::string>()))
@@ -136,20 +132,15 @@ DbusObjectInfo getIPObject(sdbusplus::bus::bus& bus,
return objectInfo;
}
-Value getDbusProperty(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface,
+Value getDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interface,
const std::string& property)
{
Value value;
- auto method = bus.new_method_call(
- service.c_str(),
- objPath.c_str(),
- PROP_INTF,
- METHOD_GET);
+ auto method = bus.new_method_call(service.c_str(), objPath.c_str(),
+ PROP_INTF, METHOD_GET);
method.append(interface, property);
@@ -157,10 +148,10 @@ Value getDbusProperty(sdbusplus::bus::bus& bus,
if (reply.is_method_error())
{
- log<level::ERR>("Failed to get property",
- entry("PROPERTY=%s", property.c_str()),
- entry("PATH=%s", objPath.c_str()),
- entry("INTERFACE=%s", interface.c_str()));
+ log<level::ERR>("Failed to get property",
+ entry("PROPERTY=%s", property.c_str()),
+ entry("PATH=%s", objPath.c_str()),
+ entry("INTERFACE=%s", interface.c_str()));
elog<InternalFailure>();
}
@@ -176,11 +167,8 @@ PropertyMap getAllDbusProperties(sdbusplus::bus::bus& bus,
{
PropertyMap properties;
- auto method = bus.new_method_call(
- service.c_str(),
- objPath.c_str(),
- PROP_INTF,
- METHOD_GET_ALL);
+ auto method = bus.new_method_call(service.c_str(), objPath.c_str(),
+ PROP_INTF, METHOD_GET_ALL);
method.append(interface);
@@ -188,10 +176,10 @@ PropertyMap getAllDbusProperties(sdbusplus::bus::bus& bus,
if (reply.is_method_error())
{
- log<level::ERR>("Failed to get all properties",
- entry("PATH=%s", objPath.c_str()),
- entry("INTERFACE=%s", interface.c_str()));
- elog<InternalFailure>();
+ log<level::ERR>("Failed to get all properties",
+ entry("PATH=%s", objPath.c_str()),
+ entry("INTERFACE=%s", interface.c_str()));
+ elog<InternalFailure>();
}
reply.read(properties);
@@ -199,42 +187,34 @@ PropertyMap getAllDbusProperties(sdbusplus::bus::bus& bus,
}
ObjectValueTree getManagedObjects(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath)
+ const std::string& service,
+ const std::string& objPath)
{
ipmi::ObjectValueTree interfaces;
- auto method = bus.new_method_call(
- service.c_str(),
- objPath.c_str(),
- "org.freedesktop.DBus.ObjectManager",
- "GetManagedObjects");
+ auto method = bus.new_method_call(service.c_str(), objPath.c_str(),
+ "org.freedesktop.DBus.ObjectManager",
+ "GetManagedObjects");
auto reply = bus.call(method);
if (reply.is_method_error())
{
- log<level::ERR>("Failed to get managed objects",
- entry("PATH=%s", objPath.c_str()));
- elog<InternalFailure>();
+ log<level::ERR>("Failed to get managed objects",
+ entry("PATH=%s", objPath.c_str()));
+ elog<InternalFailure>();
}
reply.read(interfaces);
return interfaces;
}
-void setDbusProperty(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface,
- const std::string& property,
- const Value& value)
+void setDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interface,
+ const std::string& property, const Value& value)
{
- auto method = bus.new_method_call(
- service.c_str(),
- objPath.c_str(),
- PROP_INTF,
- METHOD_SET);
+ auto method = bus.new_method_call(service.c_str(), objPath.c_str(),
+ PROP_INTF, METHOD_SET);
method.append(interface, property, value);
@@ -242,24 +222,22 @@ void setDbusProperty(sdbusplus::bus::bus& bus,
{
log<level::ERR>("Failed to set property",
entry("PROPERTY=%s", property.c_str()),
- entry("PATH=%s",objPath.c_str()),
- entry("INTERFACE=%s",interface.c_str()));
+ entry("PATH=%s", objPath.c_str()),
+ entry("INTERFACE=%s", interface.c_str()));
elog<InternalFailure>();
}
-
}
-
-ServiceCache::ServiceCache(const std::string& intf, const std::string& path)
- : intf(intf), path(path), cachedService(std::experimental::nullopt),
- cachedBusName(std::experimental::nullopt)
+ServiceCache::ServiceCache(const std::string& intf, const std::string& path) :
+ intf(intf), path(path), cachedService(std::experimental::nullopt),
+ cachedBusName(std::experimental::nullopt)
{
}
-ServiceCache::ServiceCache(std::string&& intf, std::string&& path)
- : intf(std::move(intf)), path(std::move(path)),
- cachedService(std::experimental::nullopt),
- cachedBusName(std::experimental::nullopt)
+ServiceCache::ServiceCache(std::string&& intf, std::string&& path) :
+ intf(std::move(intf)), path(std::move(path)),
+ cachedService(std::experimental::nullopt),
+ cachedBusName(std::experimental::nullopt)
{
}
@@ -279,11 +257,12 @@ void ServiceCache::invalidate()
cachedService = std::experimental::nullopt;
}
-sdbusplus::message::message ServiceCache::newMethodCall(
- sdbusplus::bus::bus& bus, const char *intf, const char *method)
+sdbusplus::message::message
+ ServiceCache::newMethodCall(sdbusplus::bus::bus& bus, const char* intf,
+ const char* method)
{
- return bus.new_method_call(getService(bus).c_str(), path.c_str(),
- intf, method);
+ return bus.new_method_call(getService(bus).c_str(), path.c_str(), intf,
+ method);
}
bool ServiceCache::isValid(sdbusplus::bus::bus& bus) const
@@ -291,14 +270,13 @@ bool ServiceCache::isValid(sdbusplus::bus::bus& bus) const
return cachedService && cachedBusName == bus.get_unique_name();
}
-std::string getService(sdbusplus::bus::bus& bus,
- const std::string& intf,
+std::string getService(sdbusplus::bus::bus& bus, const std::string& intf,
const std::string& path)
{
- auto mapperCall = bus.new_method_call("xyz.openbmc_project.ObjectMapper",
- "/xyz/openbmc_project/object_mapper",
- "xyz.openbmc_project.ObjectMapper",
- "GetObject");
+ auto mapperCall =
+ bus.new_method_call("xyz.openbmc_project.ObjectMapper",
+ "/xyz/openbmc_project/object_mapper",
+ "xyz.openbmc_project.ObjectMapper", "GetObject");
mapperCall.append(path);
mapperCall.append(std::vector<std::string>({intf}));
@@ -331,10 +309,8 @@ ipmi::ObjectTree getAllDbusObjects(sdbusplus::bus::bus& bus,
auto depth = 0;
- auto mapperCall = bus.new_method_call(MAPPER_BUS_NAME,
- MAPPER_OBJ,
- MAPPER_INTF,
- "GetSubTree");
+ auto mapperCall = bus.new_method_call(MAPPER_BUS_NAME, MAPPER_OBJ,
+ MAPPER_INTF, "GetSubTree");
mapperCall.append(serviceRoot, depth, interfaces);
@@ -342,7 +318,7 @@ ipmi::ObjectTree getAllDbusObjects(sdbusplus::bus::bus& bus,
if (mapperReply.is_method_error())
{
log<level::ERR>("Error in mapper call",
- entry("SERVICEROOT=%s",serviceRoot.c_str()),
+ entry("SERVICEROOT=%s", serviceRoot.c_str()),
entry("INTERFACE=%s", interface.c_str()));
elog<InternalFailure>();
@@ -373,14 +349,13 @@ void deleteAllDbusObjects(sdbusplus::bus::bus& bus,
{
try
{
- auto objectTree = getAllDbusObjects(bus, serviceRoot, interface, match);
+ auto objectTree = getAllDbusObjects(bus, serviceRoot, interface, match);
for (auto& object : objectTree)
{
- method_no_args::callDbusMethod(bus,
- object.second.begin()->first,
- object.first,
- DELETE_INTERFACE, "Delete");
+ method_no_args::callDbusMethod(bus, object.second.begin()->first,
+ object.first, DELETE_INTERFACE,
+ "Delete");
}
}
catch (InternalFailure& e)
@@ -391,12 +366,10 @@ void deleteAllDbusObjects(sdbusplus::bus::bus& bus,
}
}
-ObjectTree getAllAncestors(sdbusplus::bus::bus& bus,
- const std::string& path,
+ObjectTree getAllAncestors(sdbusplus::bus::bus& bus, const std::string& path,
InterfaceList&& interfaces)
{
- auto convertToString = [](InterfaceList& interfaces) -> std::string
- {
+ auto convertToString = [](InterfaceList& interfaces) -> std::string {
std::string intfStr;
for (const auto& intf : interfaces)
{
@@ -405,19 +378,16 @@ ObjectTree getAllAncestors(sdbusplus::bus::bus& bus,
return intfStr;
};
- auto mapperCall = bus.new_method_call(MAPPER_BUS_NAME,
- MAPPER_OBJ,
- MAPPER_INTF,
- "GetAncestors");
+ auto mapperCall = bus.new_method_call(MAPPER_BUS_NAME, MAPPER_OBJ,
+ MAPPER_INTF, "GetAncestors");
mapperCall.append(path, interfaces);
auto mapperReply = bus.call(mapperCall);
if (mapperReply.is_method_error())
{
- log<level::ERR>("Error in mapper call",
- entry("PATH=%s", path.c_str()),
- entry("INTERFACES=%s",
- convertToString(interfaces).c_str()));
+ log<level::ERR>(
+ "Error in mapper call", entry("PATH=%s", path.c_str()),
+ entry("INTERFACES=%s", convertToString(interfaces).c_str()));
elog<InternalFailure>();
}
@@ -427,10 +397,10 @@ ObjectTree getAllAncestors(sdbusplus::bus::bus& bus,
if (objectTree.empty())
{
- log<level::ERR>("No Object has implemented the interface",
- entry("PATH=%s", path.c_str()),
- entry("INTERFACES=%s",
- convertToString(interfaces).c_str()));
+ log<level::ERR>(
+ "No Object has implemented the interface",
+ entry("PATH=%s", path.c_str()),
+ entry("INTERFACES=%s", convertToString(interfaces).c_str()));
elog<InternalFailure>();
}
@@ -440,18 +410,13 @@ ObjectTree getAllAncestors(sdbusplus::bus::bus& bus,
namespace method_no_args
{
-void callDbusMethod(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface,
+void callDbusMethod(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interface,
const std::string& method)
{
- auto busMethod = bus.new_method_call(
- service.c_str(),
- objPath.c_str(),
- interface.c_str(),
- method.c_str());
+ auto busMethod = bus.new_method_call(service.c_str(), objPath.c_str(),
+ interface.c_str(), method.c_str());
auto reply = bus.call(busMethod);
@@ -465,7 +430,7 @@ void callDbusMethod(sdbusplus::bus::bus& bus,
}
}
-}// namespace method_no_args
+} // namespace method_no_args
namespace network
{
@@ -475,20 +440,14 @@ bool isLinkLocalIP(const std::string& address)
return address.find(IPV4_PREFIX) == 0 || address.find(IPV6_PREFIX) == 0;
}
-void createIP(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& protocolType,
- const std::string& ipaddress,
- uint8_t prefix)
+void createIP(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& protocolType,
+ const std::string& ipaddress, uint8_t prefix)
{
std::string gateway = "";
- auto busMethod = bus.new_method_call(
- service.c_str(),
- objPath.c_str(),
- IP_CREATE_INTERFACE,
- "IP");
+ auto busMethod = bus.new_method_call(service.c_str(), objPath.c_str(),
+ IP_CREATE_INTERFACE, "IP");
busMethod.append(protocolType, ipaddress, prefix, gateway);
@@ -496,25 +455,18 @@ void createIP(sdbusplus::bus::bus& bus,
if (reply.is_method_error())
{
- log<level::ERR>("Failed to execute method",
- entry("METHOD=%s", "IP"),
+ log<level::ERR>("Failed to execute method", entry("METHOD=%s", "IP"),
entry("PATH=%s", objPath.c_str()));
elog<InternalFailure>();
}
-
}
-void createVLAN(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interfaceName,
+void createVLAN(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interfaceName,
uint32_t vlanID)
{
- auto busMethod = bus.new_method_call(
- service.c_str(),
- objPath.c_str(),
- VLAN_CREATE_INTERFACE,
- "VLAN");
+ auto busMethod = bus.new_method_call(service.c_str(), objPath.c_str(),
+ VLAN_CREATE_INTERFACE, "VLAN");
busMethod.append(interfaceName, vlanID);
@@ -522,12 +474,10 @@ void createVLAN(sdbusplus::bus::bus& bus,
if (reply.is_method_error())
{
- log<level::ERR>("Failed to execute method",
- entry("METHOD=%s", "VLAN"),
+ log<level::ERR>("Failed to execute method", entry("METHOD=%s", "VLAN"),
entry("PATH=%s", objPath.c_str()));
elog<InternalFailure>();
}
-
}
uint8_t toPrefix(int addressFamily, const std::string& subnetMask)
@@ -537,7 +487,7 @@ uint8_t toPrefix(int addressFamily, const std::string& subnetMask)
return 0;
}
- uint32_t buff {};
+ uint32_t buff{};
auto rc = inet_pton(addressFamily, subnetMask.c_str(), &buff);
if (rc <= 0)
@@ -549,7 +499,8 @@ uint8_t toPrefix(int addressFamily, const std::string& subnetMask)
buff = be32toh(buff);
// total no of bits - total no of leading zero == total no of ones
- if (((sizeof(buff) * 8) - (__builtin_ctz(buff))) == __builtin_popcount(buff))
+ if (((sizeof(buff) * 8) - (__builtin_ctz(buff))) ==
+ __builtin_popcount(buff))
{
return __builtin_popcount(buff);
}
@@ -569,8 +520,7 @@ uint32_t getVLAN(const std::string& path)
uint32_t vlanID = 0;
try
{
- auto intfObjectPath = path.substr(0,
- path.find(IP_TYPE) - 1);
+ auto intfObjectPath = path.substr(0, path.find(IP_TYPE) - 1);
auto intfName = intfObjectPath.substr(intfObjectPath.rfind("/") + 1);
@@ -581,10 +531,10 @@ uint32_t getVLAN(const std::string& path)
vlanID = std::stoul(str);
}
}
- catch (std::exception & e)
+ catch (std::exception& e)
{
log<level::ERR>("Exception occurred during getVLAN",
- entry("PATH=%s",path.c_str()),
+ entry("PATH=%s", path.c_str()),
entry("EXCEPTION=%s", e.what()));
}
return vlanID;
diff --git a/utils.hpp b/utils.hpp
index 535ea66..8b69b09 100644
--- a/utils.hpp
+++ b/utils.hpp
@@ -1,9 +1,9 @@
#pragma once
+#include "types.hpp"
+
#include <experimental/optional>
#include <sdbusplus/server.hpp>
-#include "types.hpp"
-
namespace ipmi
{
@@ -29,54 +29,56 @@ constexpr auto METHOD_SET = "Set";
* require. This class reduces the number of such calls by caching
* the lookup for a specific service.
*/
-class ServiceCache {
- public:
- /** @brief Creates a new service cache for the given interface
- * and path.
- *
- * @param[in] intf - The interface used for each lookup
- * @param[in] path - The path used for each lookup
- */
- ServiceCache(const std::string& intf, const std::string& path);
- ServiceCache(std::string&& intf, std::string&& path);
-
- /** @brief Gets the service name from the cache or does in a
- * lookup when invalid.
- *
- * @param[in] bus - The bus associated with and used for looking
- * up the service.
- */
- const std::string& getService(sdbusplus::bus::bus& bus);
-
- /** @brief Invalidates the current service name */
- void invalidate();
-
- /** @brief A wrapper around sdbusplus bus.new_method_call
- *
- * @param[in] bus - The bus used for calling the method
- * @param[in] intf - The interface containing the method
- * @param[in] method - The method name
- * @return The message containing the method call.
- */
- sdbusplus::message::message newMethodCall(sdbusplus::bus::bus& bus,
- const char *intf,
- const char *method);
-
- /** @brief Check to see if the current cache is valid
- *
- * @param[in] bus - The bus used for the service lookup
- * @return True if the cache is valid false otherwise.
- */
- bool isValid(sdbusplus::bus::bus& bus) const;
- private:
- /** @brief DBUS interface provided by the service */
- const std::string intf;
- /** @brief DBUS path provided by the service */
- const std::string path;
- /** @brief The name of the service if valid */
- std::experimental::optional<std::string> cachedService;
- /** @brief The name of the bus used in the service lookup */
- std::experimental::optional<std::string> cachedBusName;
+class ServiceCache
+{
+ public:
+ /** @brief Creates a new service cache for the given interface
+ * and path.
+ *
+ * @param[in] intf - The interface used for each lookup
+ * @param[in] path - The path used for each lookup
+ */
+ ServiceCache(const std::string& intf, const std::string& path);
+ ServiceCache(std::string&& intf, std::string&& path);
+
+ /** @brief Gets the service name from the cache or does in a
+ * lookup when invalid.
+ *
+ * @param[in] bus - The bus associated with and used for looking
+ * up the service.
+ */
+ const std::string& getService(sdbusplus::bus::bus& bus);
+
+ /** @brief Invalidates the current service name */
+ void invalidate();
+
+ /** @brief A wrapper around sdbusplus bus.new_method_call
+ *
+ * @param[in] bus - The bus used for calling the method
+ * @param[in] intf - The interface containing the method
+ * @param[in] method - The method name
+ * @return The message containing the method call.
+ */
+ sdbusplus::message::message newMethodCall(sdbusplus::bus::bus& bus,
+ const char* intf,
+ const char* method);
+
+ /** @brief Check to see if the current cache is valid
+ *
+ * @param[in] bus - The bus used for the service lookup
+ * @return True if the cache is valid false otherwise.
+ */
+ bool isValid(sdbusplus::bus::bus& bus) const;
+
+ private:
+ /** @brief DBUS interface provided by the service */
+ const std::string intf;
+ /** @brief DBUS path provided by the service */
+ const std::string path;
+ /** @brief The name of the service if valid */
+ std::experimental::optional<std::string> cachedService;
+ /** @brief The name of the bus used in the service lookup */
+ std::experimental::optional<std::string> cachedBusName;
};
/**
@@ -87,8 +89,7 @@ class ServiceCache {
* @param[in] path - DBUS Object Path
*
*/
-std::string getService(sdbusplus::bus::bus& bus,
- const std::string& intf,
+std::string getService(sdbusplus::bus::bus& bus, const std::string& intf,
const std::string& path);
/** @brief Gets the dbus object info implementing the given interface
@@ -127,10 +128,8 @@ DbusObjectInfo getIPObject(sdbusplus::bus::bus& bus,
* @param[in] property - name of the property.
* @return On success returns the value of the property.
*/
-Value getDbusProperty(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface,
+Value getDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interface,
const std::string& property);
/** @brief Gets all the properties associated with the given object
@@ -154,8 +153,8 @@ PropertyMap getAllDbusProperties(sdbusplus::bus::bus& bus,
* @return On success returns the map of name value pair.
*/
ObjectValueTree getManagedObjects(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath);
+ const std::string& service,
+ const std::string& objPath);
/** @brief Sets the property value of the given object.
* @param[in] bus - DBUS Bus Object.
@@ -165,12 +164,9 @@ ObjectValueTree getManagedObjects(sdbusplus::bus::bus& bus,
* @param[in] property - name of the property.
* @param[in] value - value which needs to be set.
*/
-void setDbusProperty(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface,
- const std::string& property,
- const Value& value);
+void setDbusProperty(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interface,
+ const std::string& property, const Value& value);
/** @brief Gets all the dbus objects from the given service root
* which matches the object identifier.
@@ -204,8 +200,7 @@ void deleteAllDbusObjects(sdbusplus::bus::bus& bus,
* @param[in] interfaces - Dbus interface list.
* @return map of object path and service info.
*/
-ObjectTree getAllAncestors(sdbusplus::bus::bus& bus,
- const std::string& path,
+ObjectTree getAllAncestors(sdbusplus::bus::bus& bus, const std::string& path,
InterfaceList&& interfaces);
/** @struct VariantToDoubleVisitor
@@ -216,14 +211,14 @@ struct VariantToDoubleVisitor
{
template <typename T>
std::enable_if_t<std::is_arithmetic<T>::value, double>
- operator()(const T &t) const
+ operator()(const T& t) const
{
return static_cast<double>(t);
}
template <typename T>
std::enable_if_t<!std::is_arithmetic<T>::value, double>
- operator()(const T &t) const
+ operator()(const T& t) const
{
throw std::invalid_argument("Cannot translate type to double");
}
@@ -239,13 +234,11 @@ namespace method_no_args
* @param[in] interface - Dbus interface.
* @param[in] method - Dbus method.
*/
-void callDbusMethod(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface,
+void callDbusMethod(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interface,
const std::string& method);
-} //namespace method_no_args
+} // namespace method_no_args
namespace network
{
@@ -257,10 +250,13 @@ constexpr auto IPV4_PREFIX = "169.254";
constexpr auto IPV6_PREFIX = "fe80";
constexpr auto IP_INTERFACE = "xyz.openbmc_project.Network.IP";
constexpr auto MAC_INTERFACE = "xyz.openbmc_project.Network.MACAddress";
-constexpr auto SYSTEMCONFIG_INTERFACE = "xyz.openbmc_project.Network.SystemConfiguration";
-constexpr auto ETHERNET_INTERFACE = "xyz.openbmc_project.Network.EthernetInterface";
+constexpr auto SYSTEMCONFIG_INTERFACE =
+ "xyz.openbmc_project.Network.SystemConfiguration";
+constexpr auto ETHERNET_INTERFACE =
+ "xyz.openbmc_project.Network.EthernetInterface";
constexpr auto IP_CREATE_INTERFACE = "xyz.openbmc_project.Network.IP.Create";
-constexpr auto VLAN_CREATE_INTERFACE = "xyz.openbmc_project.Network.VLAN.Create";
+constexpr auto VLAN_CREATE_INTERFACE =
+ "xyz.openbmc_project.Network.VLAN.Create";
constexpr auto VLAN_INTERFACE = "xyz.openbmc_project.Network.VLAN";
/* @brief converts the given subnet into prefix notation.
@@ -270,7 +266,6 @@ constexpr auto VLAN_INTERFACE = "xyz.openbmc_project.Network.VLAN";
*/
uint8_t toPrefix(int addressFamily, const std::string& subnetMask);
-
/** @brief Sets the ip on the system.
* @param[in] bus - DBUS Bus Object.
* @param[in] service - Dbus service name.
@@ -279,12 +274,9 @@ uint8_t toPrefix(int addressFamily, const std::string& subnetMask);
* @param[in] ipaddress - IPaddress.
* @param[in] prefix - Prefix length.
*/
-void createIP(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& protocolType,
- const std::string& ipaddress,
- uint8_t prefix);
+void createIP(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& protocolType,
+ const std::string& ipaddress, uint8_t prefix);
/** @brief Creates the VLAN on the given interface.
* @param[in] bus - DBUS Bus Object.
@@ -293,10 +285,8 @@ void createIP(sdbusplus::bus::bus& bus,
* @param[in] interface - EthernetInterface.
* @param[in] vlanID - Vlan ID.
*/
-void createVLAN(sdbusplus::bus::bus& bus,
- const std::string& service,
- const std::string& objPath,
- const std::string& interface,
+void createVLAN(sdbusplus::bus::bus& bus, const std::string& service,
+ const std::string& objPath, const std::string& interface,
uint32_t vlanID);
/** @brief Gets the vlan id from the given object path.
@@ -304,7 +294,5 @@ void createVLAN(sdbusplus::bus::bus& bus,
*/
uint32_t getVLAN(const std::string& path);
-} //namespace network
+} // namespace network
} // namespace ipmi
-
-
OpenPOWER on IntegriCloud