summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Joseph <tomjoseph@in.ibm.com>2017-03-31 10:52:27 +0530
committerPatrick Williams <patrick@stwcx.xyz>2017-04-25 19:12:26 +0000
commit22596f21a91e138eb4774416c1ef36b9655e7376 (patch)
tree2cf378941d7dae09885025d9d1fc3251c92b7253
parent703adbfacedd34dd9f98a315b0851569fed6a2a3 (diff)
downloadphosphor-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.cpp17
-rw-r--r--message_handler.hpp8
-rw-r--r--sol/sol_context.cpp5
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
OpenPOWER on IntegriCloud