clang-format: copy latest and re-format

clang-format-17 has some backwards incompatible changes that require
additional settings for best compatibility and re-running the formatter.
Copy the latest .clang-format from the docs repository and reformat the
repository.

Change-Id: I4140fc8062005e4434d605c7ded3f1e49002e817
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/.clang-format b/.clang-format
index 38daa66..d43e884 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,111 +1,135 @@
-# SPDX-License-Identifier: GPL-2.0
-#
-# Originally from Linux v5.6
 ---
-AccessModifierOffset: -4
+Language:        Cpp
+# BasedOnStyle:  LLVM
+AccessModifierOffset: -2
 AlignAfterOpenBracket: Align
-AlignConsecutiveMacros: true
 AlignConsecutiveAssignments: false
 AlignConsecutiveDeclarations: false
-#AlignEscapedNewlines: Left # Unknown to clang-format-4.0
-AlignOperands: true
-AlignTrailingComments: false
-AllowAllParametersOfDeclarationOnNextLine: false
-AllowShortBlocksOnASingleLine: false
+AlignEscapedNewlines: Right
+AlignOperands:  Align
+AlignTrailingComments:
+  Kind: Always
+  OverEmptyLines: 1
+AllowAllParametersOfDeclarationOnNextLine: true
+AllowShortBlocksOnASingleLine: Empty
 AllowShortCaseLabelsOnASingleLine: false
-AllowShortFunctionsOnASingleLine: None
-AllowShortIfStatementsOnASingleLine: false
+AllowShortFunctionsOnASingleLine: Empty
+AllowShortIfStatementsOnASingleLine: Never
+AllowShortLambdasOnASingleLine: true
 AllowShortLoopsOnASingleLine: false
-AlwaysBreakAfterDefinitionReturnType: None
 AlwaysBreakAfterReturnType: None
 AlwaysBreakBeforeMultilineStrings: false
-AlwaysBreakTemplateDeclarations: false
+AlwaysBreakTemplateDeclarations: Yes
 BinPackArguments: true
 BinPackParameters: true
+BitFieldColonSpacing: None
 BraceWrapping:
-  AfterClass: false
-  AfterControlStatement: false
-  AfterEnum: false
-  AfterFunction: true
-  AfterNamespace: true
-  AfterObjCDeclaration: false
-  AfterStruct: false
-  AfterUnion: false
-  #AfterExternBlock: false # Unknown to clang-format-5.0
-  BeforeCatch: false
-  BeforeElse: false
-  IndentBraces: false
-  #SplitEmptyFunction: true # Unknown to clang-format-4.0
-  #SplitEmptyRecord: true # Unknown to clang-format-4.0
-  #SplitEmptyNamespace: true # Unknown to clang-format-4.0
+  AfterCaseLabel:  true
+  AfterClass:      true
+  AfterControlStatement: true
+  AfterEnum:       true
+  AfterExternBlock: true
+  AfterFunction:   true
+  AfterNamespace:  true
+  AfterObjCDeclaration: true
+  AfterStruct:     true
+  AfterUnion:      true
+  BeforeCatch:     true
+  BeforeElse:      true
+  BeforeLambdaBody: false
+  BeforeWhile:     false
+  IndentBraces:    false
+  SplitEmptyFunction:   false
+  SplitEmptyRecord:     false
+  SplitEmptyNamespace:  false
+BreakAfterAttributes: Never
 BreakBeforeBinaryOperators: None
 BreakBeforeBraces: Custom
-#BreakBeforeInheritanceComma: false # Unknown to clang-format-4.0
-BreakBeforeTernaryOperators: false
-BreakConstructorInitializersBeforeComma: false
-#BreakConstructorInitializers: BeforeComma # Unknown to clang-format-4.0
-BreakAfterJavaFieldAnnotations: false
+BreakBeforeTernaryOperators: true
+BreakConstructorInitializers: AfterColon
+BreakInheritanceList: AfterColon
 BreakStringLiterals: false
-ColumnLimit: 80
-CommentPragmas: '^ IWYU pragma:'
-#CompactNamespaces: false # Unknown to clang-format-4.0
-ConstructorInitializerAllOnOneLineOrOnePerLine: false
-ConstructorInitializerIndentWidth: 8
-ContinuationIndentWidth: 8
-Cpp11BracedListStyle: false
+ColumnLimit:     80
+CommentPragmas:  '^ IWYU pragma:'
+CompactNamespaces: false
+ConstructorInitializerIndentWidth: 4
+ContinuationIndentWidth: 4
+Cpp11BracedListStyle: true
 DerivePointerAlignment: false
-DisableFormat: false
-ExperimentalAutoDetectBinPacking: false
-#FixNamespaceComments: false # Unknown to clang-format-4.0
-#IncludeBlocks: Preserve # Unknown to clang-format-5.0
+DisableFormat:   false
+FixNamespaceComments: true
+ForEachMacros:
+  - foreach
+  - Q_FOREACH
+  - BOOST_FOREACH
+IncludeBlocks: Regroup
 IncludeCategories:
-  - Regex: '.*'
-    Priority: 1
-IncludeIsMainRegex: '(Test)?$'
-IndentCaseLabels: false
-#IndentPPDirectives: None # Unknown to clang-format-5.0
-IndentWidth: 8
-IndentWrappedFunctionNames: false
-JavaScriptQuotes: Leave
-JavaScriptWrapImports: true
+  - Regex:           '^[<"](gtest|gmock)'
+    Priority:        7
+  - Regex:           '^"config.h"'
+    Priority:        -1
+  - Regex:           '^".*\.h"'
+    Priority:        1
+  - Regex:           '^".*\.hpp"'
+    Priority:        2
+  - Regex:           '^<.*\.h>'
+    Priority:        3
+  - Regex:           '^<.*\.hpp>'
+    Priority:        4
+  - Regex:           '^<.*'
+    Priority:        5
+  - Regex:           '.*'
+    Priority:        6
+IndentCaseLabels: true
+IndentExternBlock: NoIndent
+IndentRequiresClause: true
+IndentWidth:     4
+IndentWrappedFunctionNames: true
+InsertNewlineAtEOF: true
 KeepEmptyLinesAtTheStartOfBlocks: false
+LambdaBodyIndentation: OuterScope
+LineEnding: LF
 MacroBlockBegin: ''
-MacroBlockEnd: ''
+MacroBlockEnd:   ''
 MaxEmptyLinesToKeep: 1
-NamespaceIndentation: Inner
-#ObjCBinPackProtocolList: Auto # Unknown to clang-format-5.0
-ObjCBlockIndentWidth: 8
-ObjCSpaceAfterProperty: true
+NamespaceIndentation: None
+ObjCBlockIndentWidth: 2
+ObjCSpaceAfterProperty: false
 ObjCSpaceBeforeProtocolList: true
-
-# Taken from git's rules
-#PenaltyBreakAssignment: 10 # Unknown to clang-format-4.0
-PenaltyBreakBeforeFirstCallParameter: 30
-PenaltyBreakComment: 10
-PenaltyBreakFirstLessLess: 0
-PenaltyBreakString: 10
-PenaltyExcessCharacter: 100
+PackConstructorInitializers: BinPack
+PenaltyBreakAssignment: 25
+PenaltyBreakBeforeFirstCallParameter: 19
+PenaltyBreakComment: 300
+PenaltyBreakFirstLessLess: 120
+PenaltyBreakString: 1000
+PenaltyExcessCharacter: 1000000
 PenaltyReturnTypeOnItsOwnLine: 60
-
-PointerAlignment: Right
-ReflowComments: false
-SortIncludes: false
-#SortUsingDeclarations: false # Unknown to clang-format-4.0
+PenaltyIndentedWhitespace: 0
+PointerAlignment: Left
+QualifierAlignment: Left
+ReferenceAlignment: Left
+ReflowComments:  true
+RequiresClausePosition: OwnLine
+RequiresExpressionIndentation: Keyword
+SortIncludes: CaseSensitive
+SortUsingDeclarations: true
 SpaceAfterCStyleCast: false
 SpaceAfterTemplateKeyword: true
 SpaceBeforeAssignmentOperators: true
-#SpaceBeforeCtorInitializerColon: true # Unknown to clang-format-5.0
-#SpaceBeforeInheritanceColon: true # Unknown to clang-format-5.0
+SpaceBeforeCpp11BracedList: false
+SpaceBeforeCtorInitializerColon: true
+SpaceBeforeInheritanceColon: true
 SpaceBeforeParens: ControlStatements
-#SpaceBeforeRangeBasedForLoopColon: true # Unknown to clang-format-5.0
+SpaceBeforeRangeBasedForLoopColon: true
 SpaceInEmptyParentheses: false
 SpacesBeforeTrailingComments: 1
-SpacesInAngles: false
-SpacesInContainerLiterals: false
+SpacesInAngles: Never
+SpacesInContainerLiterals: true
 SpacesInCStyleCastParentheses: false
 SpacesInParentheses: false
 SpacesInSquareBrackets: false
-Standard: Cpp03
-TabWidth: 8
-UseTab: Always
+Standard:        Latest
+TabWidth:        4
+UseTab:          Never
 ...
+
diff --git a/ssifbridged.cpp b/ssifbridged.cpp
index ee30df9..7ed8c66 100644
--- a/ssifbridged.cpp
+++ b/ssifbridged.cpp
@@ -26,8 +26,8 @@
 #include <phosphor-logging/log.hpp>
 #include <sdbusplus/asio/connection.hpp>
 #include <sdbusplus/asio/object_server.hpp>
-#include <sdbusplus/timer.hpp>
 #include <sdbusplus/asio/sd_event.hpp>
+#include <sdbusplus/timer.hpp>
 
 #include <iostream>
 
@@ -36,375 +36,364 @@
 
 using namespace phosphor::logging;
 
-struct ipmi_cmd {
-	uint8_t netfn;
-	uint8_t lun;
-	uint8_t cmd;
+struct ipmi_cmd
+{
+    uint8_t netfn;
+    uint8_t lun;
+    uint8_t cmd;
 } prev_req_cmd;
 
 static constexpr const char devBase[] = "/dev/ipmi-ssif-host";
 /* SSIF use IPMI SSIF channel */
-static constexpr const char *ssifBus =
-	"xyz.openbmc_project.Ipmi.Channel.ipmi_ssif";
-static constexpr const char *ssifObj =
-	"/xyz/openbmc_project/Ipmi/Channel/ipmi_ssif";
+static constexpr const char* ssifBus =
+    "xyz.openbmc_project.Ipmi.Channel.ipmi_ssif";
+static constexpr const char* ssifObj =
+    "/xyz/openbmc_project/Ipmi/Channel/ipmi_ssif";
 /* The timer of driver is set to 15 seconds, need to send
  * response before timeout occurs
  */
 static constexpr const unsigned int hostReqTimeout = 14000000;
 
-class SsifChannel {
-    public:
-	static constexpr size_t ssifMessageSize =
-		IPMI_SSIF_PAYLOAD_MAX + sizeof(unsigned int);
-	size_t sizeofLenField = sizeof(unsigned int);
-	static constexpr uint8_t netFnShift = 2;
-	static constexpr uint8_t lunMask = (1 << netFnShift) - 1;
+class SsifChannel
+{
+  public:
+    static constexpr size_t ssifMessageSize = IPMI_SSIF_PAYLOAD_MAX +
+                                              sizeof(unsigned int);
+    size_t sizeofLenField = sizeof(unsigned int);
+    static constexpr uint8_t netFnShift = 2;
+    static constexpr uint8_t lunMask = (1 << netFnShift) - 1;
 
-	SsifChannel(std::shared_ptr<boost::asio::io_context> &io,
-		    std::shared_ptr<sdbusplus::asio::connection> &bus,
-		    const std::string &channel, bool verbose,
-		    int numberOfReqNotRsp);
-	bool initOK() const
-	{
-		return !!dev;
-	}
-	void channelAbort(const char *msg, const boost::system::error_code &ec);
-	void async_read();
-	void processMessage(const boost::system::error_code &ecRd, size_t rlen);
-	int showNumOfReqNotRsp();
-	std::unique_ptr<boost::asio::posix::stream_descriptor> dev = nullptr;
+    SsifChannel(std::shared_ptr<boost::asio::io_context>& io,
+                std::shared_ptr<sdbusplus::asio::connection>& bus,
+                const std::string& channel, bool verbose,
+                int numberOfReqNotRsp);
+    bool initOK() const
+    {
+        return !!dev;
+    }
+    void channelAbort(const char* msg, const boost::system::error_code& ec);
+    void async_read();
+    void processMessage(const boost::system::error_code& ecRd, size_t rlen);
+    int showNumOfReqNotRsp();
+    std::unique_ptr<boost::asio::posix::stream_descriptor> dev = nullptr;
 
-    protected:
-	std::array<uint8_t, ssifMessageSize> xferBuffer;
-	std::shared_ptr<boost::asio::io_context> io;
-	std::shared_ptr<sdbusplus::asio::connection> bus;
-	std::shared_ptr<sdbusplus::asio::object_server> server;
-	bool verbose;
-	/* This variable is always 0 when a request is responsed properly,
-	 * any value larger than 0 meaning there is/are request(s) which
-	 * not processed properly
-	 * */
-	int numberOfReqNotRsp;
+  protected:
+    std::array<uint8_t, ssifMessageSize> xferBuffer;
+    std::shared_ptr<boost::asio::io_context> io;
+    std::shared_ptr<sdbusplus::asio::connection> bus;
+    std::shared_ptr<sdbusplus::asio::object_server> server;
+    bool verbose;
+    /* This variable is always 0 when a request is responsed properly,
+     * any value larger than 0 meaning there is/are request(s) which
+     * not processed properly
+     * */
+    int numberOfReqNotRsp;
 };
 
 std::unique_ptr<phosphor::Timer> rspTimer __attribute__((init_priority(101)));
 std::unique_ptr<SsifChannel> ssifchannel = nullptr;
 
-SsifChannel::SsifChannel(std::shared_ptr<boost::asio::io_context> &io,
-			 std::shared_ptr<sdbusplus::asio::connection> &bus,
-			 const std::string &device, bool verbose,
-			 int numberOfReqNotRsp)
-	: io(io), bus(bus), verbose(verbose),
-	  numberOfReqNotRsp(numberOfReqNotRsp)
+SsifChannel::SsifChannel(std::shared_ptr<boost::asio::io_context>& io,
+                         std::shared_ptr<sdbusplus::asio::connection>& bus,
+                         const std::string& device, bool verbose,
+                         int numberOfReqNotRsp) :
+    io(io),
+    bus(bus), verbose(verbose), numberOfReqNotRsp(numberOfReqNotRsp)
 {
-	std::string devName = devBase;
-	if (!device.empty()) {
-		devName = device;
-	}
+    std::string devName = devBase;
+    if (!device.empty())
+    {
+        devName = device;
+    }
 
-	// open device
-	int fd = open(devName.c_str(), O_RDWR | O_NONBLOCK);
-	if (fd < 0) {
-		std::string msgToLog =
-			"Couldn't open SSIF driver with flags O_RDWR."
-			" FILENAME=" +
-			devName + " ERROR=" + strerror(errno);
-		log<level::ERR>(msgToLog.c_str());
-		return;
-	} else {
-		dev = std::make_unique<boost::asio::posix::stream_descriptor>(
-			*io, fd);
-	}
+    // open device
+    int fd = open(devName.c_str(), O_RDWR | O_NONBLOCK);
+    if (fd < 0)
+    {
+        std::string msgToLog = "Couldn't open SSIF driver with flags O_RDWR."
+                               " FILENAME=" +
+                               devName + " ERROR=" + strerror(errno);
+        log<level::ERR>(msgToLog.c_str());
+        return;
+    }
+    else
+    {
+        dev = std::make_unique<boost::asio::posix::stream_descriptor>(*io, fd);
+    }
 
-	async_read();
-	// register interfaces...
-	server = std::make_shared<sdbusplus::asio::object_server>(bus);
-	std::shared_ptr<sdbusplus::asio::dbus_interface> iface =
-		server->add_interface(ssifObj, ssifBus);
-	iface->initialize();
+    async_read();
+    // register interfaces...
+    server = std::make_shared<sdbusplus::asio::object_server>(bus);
+    std::shared_ptr<sdbusplus::asio::dbus_interface> iface =
+        server->add_interface(ssifObj, ssifBus);
+    iface->initialize();
 }
 
-void SsifChannel::channelAbort(const char *msg,
-			       const boost::system::error_code &ec)
+void SsifChannel::channelAbort(const char* msg,
+                               const boost::system::error_code& ec)
 {
-	std::string msgToLog = std::string(msg) + " ERROR=" + ec.message();
-	log<level::ERR>(msgToLog.c_str());
-	// bail; maybe a restart from systemd can clear the error
-	io->stop();
+    std::string msgToLog = std::string(msg) + " ERROR=" + ec.message();
+    log<level::ERR>(msgToLog.c_str());
+    // bail; maybe a restart from systemd can clear the error
+    io->stop();
 }
 
 void SsifChannel::async_read()
 {
-	boost::asio::async_read(
-		*dev, boost::asio::buffer(xferBuffer, xferBuffer.size()),
-		boost::asio::transfer_at_least(2),
-		[this](const boost::system::error_code &ec, size_t rlen) {
-			processMessage(ec, rlen);
-		});
+    boost::asio::async_read(*dev,
+                            boost::asio::buffer(xferBuffer, xferBuffer.size()),
+                            boost::asio::transfer_at_least(2),
+                            [this](const boost::system::error_code& ec,
+                                   size_t rlen) { processMessage(ec, rlen); });
 }
 
 int SsifChannel::showNumOfReqNotRsp()
 {
-	return numberOfReqNotRsp;
+    return numberOfReqNotRsp;
 }
 
 void rspTimerHandler()
 {
-	std::vector<uint8_t> rsp;
-	constexpr uint8_t ccResponseNotAvailable = 0xce;
+    std::vector<uint8_t> rsp;
+    constexpr uint8_t ccResponseNotAvailable = 0xce;
 
-	rsp.resize(ssifchannel->sizeofLenField + sizeof(prev_req_cmd.cmd) +
-		   sizeof(prev_req_cmd.netfn) + sizeof(ccResponseNotAvailable));
-	std::string msgToLog =
-		"timeout, send response to keep host alive"
-		" netfn=" +
-		std::to_string(prev_req_cmd.netfn) +
-		" lun=" + std::to_string(prev_req_cmd.lun) +
-		" cmd=" + std::to_string(prev_req_cmd.cmd) +
-		" cc=" + std::to_string(ccResponseNotAvailable) +
-		" numberOfReqNotRsp=" +
-		std::to_string(ssifchannel->showNumOfReqNotRsp());
-	log<level::INFO>(msgToLog.c_str());
+    rsp.resize(ssifchannel->sizeofLenField + sizeof(prev_req_cmd.cmd) +
+               sizeof(prev_req_cmd.netfn) + sizeof(ccResponseNotAvailable));
+    std::string msgToLog = "timeout, send response to keep host alive"
+                           " netfn=" +
+                           std::to_string(prev_req_cmd.netfn) +
+                           " lun=" + std::to_string(prev_req_cmd.lun) +
+                           " cmd=" + std::to_string(prev_req_cmd.cmd) +
+                           " cc=" + std::to_string(ccResponseNotAvailable) +
+                           " numberOfReqNotRsp=" +
+                           std::to_string(ssifchannel->showNumOfReqNotRsp());
+    log<level::INFO>(msgToLog.c_str());
 
-	unsigned int *t = (unsigned int *)&rsp[0];
-	*t = 3;
-	rsp[ssifchannel->sizeofLenField] =
-		((prev_req_cmd.netfn + 1) << ssifchannel->netFnShift) |
-		(prev_req_cmd.lun & ssifchannel->lunMask);
-	rsp[ssifchannel->sizeofLenField + 1] = prev_req_cmd.cmd;
-	rsp[ssifchannel->sizeofLenField + 2] = ccResponseNotAvailable;
+    unsigned int* t = (unsigned int*)&rsp[0];
+    *t = 3;
+    rsp[ssifchannel->sizeofLenField] =
+        ((prev_req_cmd.netfn + 1) << ssifchannel->netFnShift) |
+        (prev_req_cmd.lun & ssifchannel->lunMask);
+    rsp[ssifchannel->sizeofLenField + 1] = prev_req_cmd.cmd;
+    rsp[ssifchannel->sizeofLenField + 2] = ccResponseNotAvailable;
 
-	boost::system::error_code ecWr;
+    boost::system::error_code ecWr;
 
-	size_t wlen = boost::asio::write(*(ssifchannel->dev),
-					 boost::asio::buffer(rsp), ecWr);
-	if (ecWr || wlen != rsp.size()) {
-		msgToLog =
-			"Failed to send ssif respond message:"
-			" size=" +
-			std::to_string(wlen) +
-			" expect=" + std::to_string(rsp.size()) +
-			" error=" + ecWr.message() +
-			" netfn=" + std::to_string(prev_req_cmd.netfn + 1) +
-			" lun=" + std::to_string(prev_req_cmd.lun) + " cmd=" +
-			std::to_string(rsp[ssifchannel->sizeofLenField + 1]) +
-			" cc=" + std::to_string(ccResponseNotAvailable);
-		log<level::ERR>(msgToLog.c_str());
-	}
+    size_t wlen = boost::asio::write(*(ssifchannel->dev),
+                                     boost::asio::buffer(rsp), ecWr);
+    if (ecWr || wlen != rsp.size())
+    {
+        msgToLog =
+            "Failed to send ssif respond message:"
+            " size=" +
+            std::to_string(wlen) + " expect=" + std::to_string(rsp.size()) +
+            " error=" + ecWr.message() +
+            " netfn=" + std::to_string(prev_req_cmd.netfn + 1) +
+            " lun=" + std::to_string(prev_req_cmd.lun) +
+            " cmd=" + std::to_string(rsp[ssifchannel->sizeofLenField + 1]) +
+            " cc=" + std::to_string(ccResponseNotAvailable);
+        log<level::ERR>(msgToLog.c_str());
+    }
 }
 
 void initTimer()
 {
-	if (!rspTimer) {
-		rspTimer = std::make_unique<phosphor::Timer>(rspTimerHandler);
-	}
+    if (!rspTimer)
+    {
+        rspTimer = std::make_unique<phosphor::Timer>(rspTimerHandler);
+    }
 }
 
-void SsifChannel::processMessage(const boost::system::error_code &ecRd,
-				 size_t rlen)
+void SsifChannel::processMessage(const boost::system::error_code& ecRd,
+                                 size_t rlen)
 {
-	if (ecRd || rlen < 2) {
-		channelAbort("Failed to read req msg", ecRd);
-		return;
-	}
-	async_read();
+    if (ecRd || rlen < 2)
+    {
+        channelAbort("Failed to read req msg", ecRd);
+        return;
+    }
+    async_read();
 
-	auto rawIter = xferBuffer.cbegin();
-	auto rawEnd = rawIter + rlen;
-	uint8_t netfn = rawIter[sizeofLenField] >> netFnShift;
-	uint8_t lun = rawIter[sizeofLenField] & lunMask;
-	uint8_t cmd = rawIter[sizeofLenField + 1];
+    auto rawIter = xferBuffer.cbegin();
+    auto rawEnd = rawIter + rlen;
+    uint8_t netfn = rawIter[sizeofLenField] >> netFnShift;
+    uint8_t lun = rawIter[sizeofLenField] & lunMask;
+    uint8_t cmd = rawIter[sizeofLenField + 1];
 
-	/* keep track of previous request */
-	prev_req_cmd.netfn = netfn;
-	prev_req_cmd.lun = lun;
-	prev_req_cmd.cmd = cmd;
+    /* keep track of previous request */
+    prev_req_cmd.netfn = netfn;
+    prev_req_cmd.lun = lun;
+    prev_req_cmd.cmd = cmd;
 
-	/* there is a request coming */
-	numberOfReqNotRsp++;
-	/* start response timer */
-	rspTimer->start(std::chrono::microseconds(hostReqTimeout), false);
+    /* there is a request coming */
+    numberOfReqNotRsp++;
+    /* start response timer */
+    rspTimer->start(std::chrono::microseconds(hostReqTimeout), false);
 
-	if (verbose) {
-		unsigned int lenRecv;
-		unsigned int *p = (unsigned int *)rawIter;
-		lenRecv = p[0];
-		std::string msgToLog = "Read ssif request message with"
-				       " len=" +
-				       std::to_string(lenRecv) +
-				       " netfn=" + std::to_string(netfn) +
-				       " lun=" + std::to_string(lun) +
-				       " cmd=" + std::to_string(cmd) +
-				       " numberOfReqNotRsp=" +
-				       std::to_string(numberOfReqNotRsp);
-		log<level::INFO>(msgToLog.c_str());
-	}
-	// copy out payload
-	std::vector<uint8_t> data(rawIter + sizeofLenField + 2, rawEnd);
-	// non-session bridges still need to pass an empty options map
-	std::map<std::string, std::variant<int> > options;
-	// the response is a tuple because dbus can only return a single value
-	using IpmiDbusRspType = std::tuple<uint8_t, uint8_t, uint8_t, uint8_t,
-					   std::vector<uint8_t> >;
-	static constexpr const char ipmiQueueService[] =
-		"xyz.openbmc_project.Ipmi.Host";
-	static constexpr const char ipmiQueuePath[] =
-		"/xyz/openbmc_project/Ipmi";
-	static constexpr const char ipmiQueueIntf[] =
-		"xyz.openbmc_project.Ipmi.Server";
-	static constexpr const char ipmiQueueMethod[] = "execute";
-	/* now, we do not care dbus timeout, since we already have actions
-	 * before dbus timeout occurs
-	 */
-	static constexpr unsigned int dbusTimeout = 60000000;
-	bus->async_method_call_timed(
-		[this, netfnCap{ netfn }, lunCap{ lun },
-		 cmdCap{ cmd }](const boost::system::error_code &ec,
-				const IpmiDbusRspType &response) {
-			std::vector<uint8_t> rsp;
-			const auto &[netfn, lun, cmd, cc, payload] = response;
-			numberOfReqNotRsp--;
-			if (ec) {
-				std::string msgToLog =
-					"ssif<->ipmid bus error:"
-					" netfn=" +
-					std::to_string(netfn) +
-					" lun=" + std::to_string(lun) +
-					" cmd=" + std::to_string(cmd) +
-					" error=" + ec.message();
-				log<level::ERR>(msgToLog.c_str());
-				rsp.resize(sizeofLenField + sizeof(netfn) +
-					   sizeof(cmd) + sizeof(cc));
-				/* if dbusTimeout, just return and do not send any response
-				 * to let host continue with other commands, response here
-				 * is potentially make the response duplicated
-				 * */
-				return;
-			} else {
-				if ((prev_req_cmd.netfn != (netfn - 1) ||
-				     prev_req_cmd.lun != lun ||
-				     prev_req_cmd.cmd != cmd) ||
-				    ((prev_req_cmd.netfn == (netfn - 1) &&
-				      prev_req_cmd.lun == lun &&
-				      prev_req_cmd.cmd == cmd) &&
-				     numberOfReqNotRsp != 0)) {
-					/* Only send response to the last request command to void
-					 * duplicated response which makes host driver confused and
-					 * failed to create interface
-					 *
-					 * Drop responses which are (1) different from the request
-					 * (2) parameters are the same as request but handshake flow
-					 * are in dupplicate request state
-					 * */
-					if (verbose) {
-						std::string msgToLog =
-							"Drop ssif respond message with"
-							" len=" +
-							std::to_string(
-								payload.size() +
-								3) +
-							" netfn=" +
-							std::to_string(netfn) +
-							" lun=" +
-							std::to_string(lun) +
-							" cmd=" +
-							std::to_string(cmd) +
-							" cc=" +
-							std::to_string(cc) +
-							" numberOfReqNotRsp=" +
-							std::to_string(
-								numberOfReqNotRsp);
-						log<level::INFO>(
-							msgToLog.c_str());
-					}
-					return;
-				}
-				rsp.resize(sizeofLenField + sizeof(netfn) +
-					   sizeof(cmd) + sizeof(cc) +
-					   payload.size());
+    if (verbose)
+    {
+        unsigned int lenRecv;
+        unsigned int* p = (unsigned int*)rawIter;
+        lenRecv = p[0];
+        std::string msgToLog =
+            "Read ssif request message with"
+            " len=" +
+            std::to_string(lenRecv) + " netfn=" + std::to_string(netfn) +
+            " lun=" + std::to_string(lun) + " cmd=" + std::to_string(cmd) +
+            " numberOfReqNotRsp=" + std::to_string(numberOfReqNotRsp);
+        log<level::INFO>(msgToLog.c_str());
+    }
+    // copy out payload
+    std::vector<uint8_t> data(rawIter + sizeofLenField + 2, rawEnd);
+    // non-session bridges still need to pass an empty options map
+    std::map<std::string, std::variant<int>> options;
+    // the response is a tuple because dbus can only return a single value
+    using IpmiDbusRspType =
+        std::tuple<uint8_t, uint8_t, uint8_t, uint8_t, std::vector<uint8_t>>;
+    static constexpr const char ipmiQueueService[] =
+        "xyz.openbmc_project.Ipmi.Host";
+    static constexpr const char ipmiQueuePath[] = "/xyz/openbmc_project/Ipmi";
+    static constexpr const char ipmiQueueIntf[] =
+        "xyz.openbmc_project.Ipmi.Server";
+    static constexpr const char ipmiQueueMethod[] = "execute";
+    /* now, we do not care dbus timeout, since we already have actions
+     * before dbus timeout occurs
+     */
+    static constexpr unsigned int dbusTimeout = 60000000;
+    bus->async_method_call_timed(
+        [this, netfnCap{netfn}, lunCap{lun},
+         cmdCap{cmd}](const boost::system::error_code& ec,
+                      const IpmiDbusRspType& response) {
+        std::vector<uint8_t> rsp;
+        const auto& [netfn, lun, cmd, cc, payload] = response;
+        numberOfReqNotRsp--;
+        if (ec)
+        {
+            std::string msgToLog =
+                "ssif<->ipmid bus error:"
+                " netfn=" +
+                std::to_string(netfn) + " lun=" + std::to_string(lun) +
+                " cmd=" + std::to_string(cmd) + " error=" + ec.message();
+            log<level::ERR>(msgToLog.c_str());
+            rsp.resize(sizeofLenField + sizeof(netfn) + sizeof(cmd) +
+                       sizeof(cc));
+            /* if dbusTimeout, just return and do not send any response
+             * to let host continue with other commands, response here
+             * is potentially make the response duplicated
+             * */
+            return;
+        }
+        else
+        {
+            if ((prev_req_cmd.netfn != (netfn - 1) || prev_req_cmd.lun != lun ||
+                 prev_req_cmd.cmd != cmd) ||
+                ((prev_req_cmd.netfn == (netfn - 1) &&
+                  prev_req_cmd.lun == lun && prev_req_cmd.cmd == cmd) &&
+                 numberOfReqNotRsp != 0))
+            {
+                /* Only send response to the last request command to void
+                 * duplicated response which makes host driver confused and
+                 * failed to create interface
+                 *
+                 * Drop responses which are (1) different from the request
+                 * (2) parameters are the same as request but handshake flow
+                 * are in dupplicate request state
+                 * */
+                if (verbose)
+                {
+                    std::string msgToLog = "Drop ssif respond message with"
+                                           " len=" +
+                                           std::to_string(payload.size() + 3) +
+                                           " netfn=" + std::to_string(netfn) +
+                                           " lun=" + std::to_string(lun) +
+                                           " cmd=" + std::to_string(cmd) +
+                                           " cc=" + std::to_string(cc) +
+                                           " numberOfReqNotRsp=" +
+                                           std::to_string(numberOfReqNotRsp);
+                    log<level::INFO>(msgToLog.c_str());
+                }
+                return;
+            }
+            rsp.resize(sizeofLenField + sizeof(netfn) + sizeof(cmd) +
+                       sizeof(cc) + payload.size());
 
-				// write the response
-				auto rspIter = rsp.begin();
-				unsigned int *p = (unsigned int *)&rspIter[0];
-				*p = payload.size() + 3;
-				rspIter[sizeofLenField] =
-					(netfn << netFnShift) | (lun & lunMask);
-				rspIter[sizeofLenField + 1] = cmd;
-				rspIter[sizeofLenField + 2] = cc;
-				if (payload.size()) {
-					std::copy(payload.cbegin(),
-						  payload.cend(),
-						  rspIter + sizeofLenField + 3);
-				}
-			}
-			if (verbose) {
-				std::string msgToLog =
-					"Send ssif respond message with"
-					" len=" +
-					std::to_string(payload.size() + 3) +
-					" netfn=" + std::to_string(netfn) +
-					" lun=" + std::to_string(lun) +
-					" cmd=" + std::to_string(cmd) +
-					" cc=" + std::to_string(cc) +
-					" numberOfReqNotRsp=" +
-					std::to_string(numberOfReqNotRsp);
-				log<level::INFO>(msgToLog.c_str());
-			}
-			boost::system::error_code ecWr;
-			size_t wlen = boost::asio::write(
-				*dev, boost::asio::buffer(rsp), ecWr);
-			if (ecWr || wlen != rsp.size()) {
-				std::string msgToLog =
-					"Failed to send ssif respond message:"
-					" size=" +
-					std::to_string(wlen) + " expect=" +
-					std::to_string(rsp.size()) +
-					" error=" + ecWr.message() +
-					" netfn=" + std::to_string(netfn) +
-					" lun=" + std::to_string(lun) +
-					" cmd=" + std::to_string(cmd) +
-					" cc=" + std::to_string(cc);
-				log<level::ERR>(msgToLog.c_str());
-			}
-			rspTimer->stop();
-		},
-		ipmiQueueService, ipmiQueuePath, ipmiQueueIntf, ipmiQueueMethod,
-		dbusTimeout, netfn, lun, cmd, data, options);
+            // write the response
+            auto rspIter = rsp.begin();
+            unsigned int* p = (unsigned int*)&rspIter[0];
+            *p = payload.size() + 3;
+            rspIter[sizeofLenField] = (netfn << netFnShift) | (lun & lunMask);
+            rspIter[sizeofLenField + 1] = cmd;
+            rspIter[sizeofLenField + 2] = cc;
+            if (payload.size())
+            {
+                std::copy(payload.cbegin(), payload.cend(),
+                          rspIter + sizeofLenField + 3);
+            }
+        }
+        if (verbose)
+        {
+            std::string msgToLog =
+                "Send ssif respond message with"
+                " len=" +
+                std::to_string(payload.size() + 3) +
+                " netfn=" + std::to_string(netfn) +
+                " lun=" + std::to_string(lun) + " cmd=" + std::to_string(cmd) +
+                " cc=" + std::to_string(cc) +
+                " numberOfReqNotRsp=" + std::to_string(numberOfReqNotRsp);
+            log<level::INFO>(msgToLog.c_str());
+        }
+        boost::system::error_code ecWr;
+        size_t wlen = boost::asio::write(*dev, boost::asio::buffer(rsp), ecWr);
+        if (ecWr || wlen != rsp.size())
+        {
+            std::string msgToLog =
+                "Failed to send ssif respond message:"
+                " size=" +
+                std::to_string(wlen) + " expect=" + std::to_string(rsp.size()) +
+                " error=" + ecWr.message() + " netfn=" + std::to_string(netfn) +
+                " lun=" + std::to_string(lun) + " cmd=" + std::to_string(cmd) +
+                " cc=" + std::to_string(cc);
+            log<level::ERR>(msgToLog.c_str());
+        }
+        rspTimer->stop();
+    },
+        ipmiQueueService, ipmiQueuePath, ipmiQueueIntf, ipmiQueueMethod,
+        dbusTimeout, netfn, lun, cmd, data, options);
 }
 
-int main(int argc, char *argv[])
+int main(int argc, char* argv[])
 {
-	CLI::App app("SSIF IPMI bridge");
-	std::string device;
-	app.add_option("-d,--device", device,
-		       "use <DEVICE> file. Default is /dev/ipmi-ssif-host");
-	bool verbose = false;
-	int numberOfReqNotRsp = 0;
-	app.add_option("-v,--verbose", verbose, "print more verbose output");
-	CLI11_PARSE(app, argc, argv);
+    CLI::App app("SSIF IPMI bridge");
+    std::string device;
+    app.add_option("-d,--device", device,
+                   "use <DEVICE> file. Default is /dev/ipmi-ssif-host");
+    bool verbose = false;
+    int numberOfReqNotRsp = 0;
+    app.add_option("-v,--verbose", verbose, "print more verbose output");
+    CLI11_PARSE(app, argc, argv);
 
-	// Connect to system bus
-	auto io = std::make_shared<boost::asio::io_context>();
-	sd_bus *dbus;
-	sd_bus_default_system(&dbus);
+    // Connect to system bus
+    auto io = std::make_shared<boost::asio::io_context>();
+    sd_bus* dbus;
+    sd_bus_default_system(&dbus);
 
-	/* This might be a phosphor::Timer bug, without timer t2, rspTimer
-	 * will not work
-	 */
-	phosphor::Timer t2([]() { ; });
-	t2.start(std::chrono::microseconds(500000), true);
-	auto bus = std::make_shared<sdbusplus::asio::connection>(*io, dbus);
-	bus->request_name(ssifBus);
-	// Create the SSIF channel, listening on D-Bus and on the SSIF device
-	ssifchannel = make_unique<SsifChannel>(io, bus, device, verbose,
-					       numberOfReqNotRsp);
-	if (!ssifchannel->initOK()) {
-		return EXIT_FAILURE;
-	}
-	initTimer();
-	sdbusplus::asio::sd_event_wrapper sdEvents(*io);
-	io->run();
+    /* This might be a phosphor::Timer bug, without timer t2, rspTimer
+     * will not work
+     */
+    phosphor::Timer t2([]() { ; });
+    t2.start(std::chrono::microseconds(500000), true);
+    auto bus = std::make_shared<sdbusplus::asio::connection>(*io, dbus);
+    bus->request_name(ssifBus);
+    // Create the SSIF channel, listening on D-Bus and on the SSIF device
+    ssifchannel = make_unique<SsifChannel>(io, bus, device, verbose,
+                                           numberOfReqNotRsp);
+    if (!ssifchannel->initOK())
+    {
+        return EXIT_FAILURE;
+    }
+    initTimer();
+    sdbusplus::asio::sd_event_wrapper sdEvents(*io);
+    io->run();
 
-	return 0;
+    return 0;
 }