diff options
author | Tom Joseph <tomjoseph@in.ibm.com> | 2017-03-31 10:52:27 +0530 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2017-04-25 19:12:26 +0000 |
commit | 22596f21a91e138eb4774416c1ef36b9655e7376 (patch) | |
tree | 2cf378941d7dae09885025d9d1fc3251c92b7253 | |
parent | 703adbfacedd34dd9f98a315b0851569fed6a2a3 (diff) | |
download | phosphor-net-ipmid-22596f21a91e138eb4774416c1ef36b9655e7376.tar.gz phosphor-net-ipmid-22596f21a91e138eb4774416c1ef36b9655e7376.zip |
Add function to send outbound SOL payload
Change-Id: I63213034110c0a550b43e1cbc0115b1312821e3d
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
-rw-r--r-- | message_handler.cpp | 17 | ||||
-rw-r--r-- | message_handler.hpp | 8 | ||||
-rw-r--r-- | sol/sol_context.cpp | 5 |
3 files changed, 30 insertions, 0 deletions
diff --git a/message_handler.cpp b/message_handler.cpp index 820895d..e8dbe7d 100644 --- a/message_handler.cpp +++ b/message_handler.cpp @@ -190,5 +190,22 @@ void Handler::setChannelInSession() const session->channelPtr = channel; } +void Handler::sendSOLPayload(const sol::Buffer& input) +{ + Message outMessage; + + auto session = (std::get<session::Manager&>(singletonPool).getSession( + sessionID)).lock(); + + outMessage.payloadType = PayloadType::SOL; + outMessage.payload = input; + outMessage.isPacketEncrypted = session->isCryptAlgoEnabled(); + outMessage.isPacketAuthenticated = session->isIntegrityAlgoEnabled(); + outMessage.rcSessionID = session->getRCSessionID(); + outMessage.bmcSessionID = sessionID; + + send(outMessage); +} + } //namespace message diff --git a/message_handler.hpp b/message_handler.hpp index 457af3e..60b7a6d 100644 --- a/message_handler.hpp +++ b/message_handler.hpp @@ -65,6 +65,14 @@ class Handler /** @brief Set socket channel in session object */ void setChannelInSession() const; + /** @brief Send the SOL payload + * + * The SOL payload is flattened and sent out on the socket + * + * @param[in] input - SOL Payload + */ + void sendSOLPayload(const sol::Buffer& input); + // BMC Session ID for the Channel session::SessionID sessionID; diff --git a/sol/sol_context.cpp b/sol/sol_context.cpp index ec48a59..c00d01c 100644 --- a/sol/sol_context.cpp +++ b/sol/sol_context.cpp @@ -198,7 +198,12 @@ void Context::resendPayload(bool clear) void Context::sendPayload(const Buffer& out) const { + auto session = (std::get<session::Manager&>(singletonPool).getSession( + sessionID)).lock(); + message::Handler msgHandler(session->channelPtr, sessionID); + + msgHandler.sendSOLPayload(out); } } // namespace sol |