diff options
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch')
-rw-r--r-- | meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch | 282 |
1 files changed, 0 insertions, 282 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch deleted file mode 100644 index c6b87bf4f..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net/0008-Sync-GetSession-Info-cmd-based-on-Upstream-review.patch +++ /dev/null @@ -1,282 +0,0 @@ -From a413e390563205476656a9005ca447f5b626872f Mon Sep 17 00:00:00 2001 -From: Suryakanth Sekar <suryakanth.sekar@linux.intel.com> -Date: Wed, 6 Mar 2019 10:35:56 +0530 -Subject: [PATCH 2/2] Sync GetSession Info cmd based on Upstream review - -Signed-off-by: Suryakanth Sekar <suryakanth.sekar@linux.intel.com> ---- - comm_module.cpp | 12 +++---- - command/session_cmds.cpp | 71 ++++++++++++++++++---------------------- - sessions_manager.cpp | 10 +++--- - sessions_manager.hpp | 2 +- - socket_channel.hpp | 33 ++++++++++--------- - 5 files changed, 59 insertions(+), 69 deletions(-) - -diff --git a/comm_module.cpp b/comm_module.cpp -index 7a1a17d..2546583 100644 ---- a/comm_module.cpp -+++ b/comm_module.cpp -@@ -54,13 +54,11 @@ void sessionSetupCommands() - session::Privilege::CALLBACK, - false}, - // Session Info Command -- { -- { -- (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) | -- static_cast<uint16_t>(command::NetFns::APP) | 0x3D -- }, -- &getSessionInfo, session::Privilege::USER, false -- }, -+ {{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) | -+ static_cast<uint16_t>(command::NetFns::APP) | 0x3D}, -+ &getSessionInfo, -+ session::Privilege::USER, -+ false}, - }; - - for (auto& iter : commands) -diff --git a/command/session_cmds.cpp b/command/session_cmds.cpp -index 4beeb6e..0c3a4ed 100644 ---- a/command/session_cmds.cpp -+++ b/command/session_cmds.cpp -@@ -8,7 +8,7 @@ - namespace command - { - --// Defined as per IPMI sepcification -+// Defined as per IPMI specification - static constexpr uint8_t searchCurrentSession = 0x00; - static constexpr uint8_t searchSessionByHandle = 0xFE; - static constexpr uint8_t searchSessionByID = 0xFF; -@@ -111,20 +111,6 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload, - reinterpret_cast<GetSessionInfoResponse*>(outPayload.data()); - uint32_t reqSessionID = handler.sessionID; - response->completionCode = IPMI_CC_OK; -- if (inPayload.size() == 1 && request->sessionIndex != 0) -- { -- if (request->sessionIndex <= session::MAX_SESSION_COUNT) -- { -- reqSessionID = std::get<session::Manager&>(singletonPool) -- .getSessionIDbyHandle(request->sessionIndex); -- } -- else -- { -- response->completionCode = IPMI_CC_INVALID_FIELD_REQUEST; -- outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -- } -- } - - // Here we look for session info according to session index parameter - switch (request->sessionIndex) -@@ -132,29 +118,22 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload, - // Look for current active session which this cmd is received over - case searchCurrentSession: - // Request data should only contain session index byte -- if (inPayload.size() != 1) -+ if (inPayload.size() != sizeof(request->sessionIndex)) - { - response->completionCode = IPMI_CC_REQ_DATA_LEN_INVALID; - outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -- } -- // To look for current active session which the command came over, -- // the session ID cannot be 0. -- if (0 == reqSessionID) -- { -- response->completionCode = IPMI_CC_INVALID_FIELD_REQUEST; -- outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -+ return outPayload; - } - break; - case searchSessionByHandle: - // Request data should only contain session index byte and Session - // handle -- if (inPayload.size() != 2) -+ if (inPayload.size() != (sizeof(request->sessionIndex) + -+ sizeof(request->sessionHandle))) - { - response->completionCode = IPMI_CC_REQ_DATA_LEN_INVALID; - outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -+ return outPayload; - } - - // Retrieve session id based on session handle -@@ -168,7 +147,7 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload, - { - response->completionCode = IPMI_CC_INVALID_FIELD_REQUEST; - outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -+ return outPayload; - } - break; - case searchSessionByID: -@@ -178,23 +157,38 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload, - { - response->completionCode = IPMI_CC_REQ_DATA_LEN_INVALID; - outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -+ return outPayload; - } - reqSessionID = endian::from_ipmi(request->sessionID); - - break; - default: -- if (inPayload.size() != 1) -+ if (inPayload.size() == sizeof(request->sessionIndex)) -+ { -+ if (request->sessionIndex <= session::MAX_SESSION_COUNT) -+ { -+ reqSessionID = -+ std::get<session::Manager&>(singletonPool) -+ .getSessionIDbyHandle(request->sessionIndex); -+ } -+ else -+ { -+ response->completionCode = IPMI_CC_REQ_DATA_LEN_INVALID; -+ outPayload.resize(sizeof(response->completionCode)); -+ return outPayload; -+ } -+ } -+ else - { - response->completionCode = IPMI_CC_REQ_DATA_LEN_INVALID; - outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -+ return outPayload; - } - } - - response->totalSessionCount = session::MAX_SESSION_COUNT; - response->activeSessioncount = -- std::get<session::Manager&>(singletonPool).getNoOfActiveSession(); -+ std::get<session::Manager&>(singletonPool).getActiveSessionCount(); - response->sessionHandle = 0; - if (reqSessionID != 0) - { -@@ -207,9 +201,9 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload, - } - catch (std::exception& e) - { -- response->completionCode = IPMI_CC_UNSPECIFIED_ERROR; -+ response->completionCode = IPMI_CC_REQ_DATA_LEN_INVALID; - outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -+ return outPayload; - } - response->sessionHandle = std::get<session::Manager&>(singletonPool) - .getSessionHandle(reqSessionID); -@@ -218,25 +212,24 @@ std::vector<uint8_t> getSessionInfo(const std::vector<uint8_t>& inPayload, - { - response->completionCode = IPMI_CC_UNSPECIFIED_ERROR; - outPayload.resize(sizeof(response->completionCode)); -- return std::move(outPayload); -+ return outPayload; - } - response->userID = userId; // userId; - response->privLevel = static_cast<uint8_t>(sessionInfo->curPrivLevel); - response->chanNum = sessionInfo->chNum; // byte7 3:0 - response->ipmiVer = ipmi20VerSession; // byte7 7:4 -- response->remoteIpAddr = -- sessionInfo->channelPtr->getRemoteAddressInbytes(); - response->remotePort = - sessionInfo->channelPtr->getPort(); // remoteSessionPort; -+ response->remoteIpAddr = -+ sessionInfo->channelPtr->getRemoteAddressInBytes(); - -- std::cerr << "\nSessionInfo:" << (int)reqSessionID; - // TODO: Filling the Remote MACAddress - } - else - { - outPayload.resize(4); - } -- return std::move(outPayload); -+ return outPayload; - } - - } // namespace command -diff --git a/sessions_manager.cpp b/sessions_manager.cpp -index 9f3210b..c6897c6 100644 ---- a/sessions_manager.cpp -+++ b/sessions_manager.cpp -@@ -152,15 +152,13 @@ std::shared_ptr<Session> Manager::getSession(SessionID sessionID, - - void Manager::cleanStaleEntries() - { -- uint8_t sessionIndex = 0; - for (auto iter = sessionsMap.begin(); iter != sessionsMap.end();) - { - auto session = iter->second; - if ((session->getBMCSessionID() != SESSION_ZERO) && - !(session->isSessionActive())) - { -- sessionIndex = getSessionHandle(session->getBMCSessionID()); -- sessionHandleMap[sessionIndex] = 0; -+ sessionHandleMap[getSessionHandle(session->getBMCSessionID())] = 0; - iter = sessionsMap.erase(iter); - } - else -@@ -172,8 +170,8 @@ void Manager::cleanStaleEntries() - - uint8_t Manager::storeSessionHandle(SessionID bmcSessionID) - { -- // Zero handler is reserved for invalid session. -- //index starts with 1, for direct usage. Index 0 reserved -+ // Handler index 0 is reserved for invalid session. -+ // index starts with 1, for direct usage. Index 0 reserved - for (uint8_t i = 1; i <= MAX_SESSION_COUNT; i++) - { - if (sessionHandleMap[i] == 0) -@@ -206,7 +204,7 @@ uint8_t Manager::getSessionHandle(SessionID bmcSessionID) const - } - return 0; - } --uint8_t Manager::getNoOfActiveSession() const -+uint8_t Manager::getActiveSessionCount() const - { - uint8_t count = 0; - for (const auto& it : sessionsMap) -diff --git a/sessions_manager.hpp b/sessions_manager.hpp -index f6ed1c3..3ff213e 100644 ---- a/sessions_manager.hpp -+++ b/sessions_manager.hpp -@@ -82,7 +82,7 @@ class Manager - std::shared_ptr<Session> - getSession(SessionID sessionID, - RetrieveOption option = RetrieveOption::BMC_SESSION_ID); -- uint8_t getNoOfActiveSession() const; -+ uint8_t getActiveSessionCount() const; - uint8_t getSessionHandle(SessionID bmcSessionID) const; - uint8_t storeSessionHandle(SessionID bmcSessionID); - uint32_t getSessionIDbyHandle(uint8_t sessionHandle) const; -diff --git a/socket_channel.hpp b/socket_channel.hpp -index 349701e..8b64740 100644 ---- a/socket_channel.hpp -+++ b/socket_channel.hpp -@@ -107,14 +107,15 @@ class Channel - * - * @return A uint32_t representation of the remote IPv4 address - */ -- std::uint32_t getRemoteAddressInbytes() -+ uint32_t getRemoteAddressInBytes() const - { -- const boost::asio::ip::address& addr = endpoint.address(); -- if (addr.is_v4()) -+ uint32_t v4addr = 0; -+ if (sockAddrSize == sizeof(sockaddr_in)) - { -- return addr.to_v4().to_uint(); -+ auto saddr = reinterpret_cast<const sockaddr_in*>(&remoteSockAddr); -+ v4addr = ntohl(saddr->sin_addr.s_addr); - } -- return 0; -+ return v4addr; - } - - /** --- -2.17.1 - |