Provide API to hook SOL commands to the command table.

Change-Id: Ib95ac064044f60e4cc90ea412b0992779e4b2469
Signed-off-by: Tom Joseph <tomjoseph@in.ibm.com>
diff --git a/sol_module.cpp b/sol_module.cpp
new file mode 100644
index 0000000..174f58f
--- /dev/null
+++ b/sol_module.cpp
@@ -0,0 +1,59 @@
+#include "command/sol_cmds.hpp"
+#include "command/payload_cmds.hpp"
+#include "command_table.hpp"
+#include "main.hpp"
+#include "session.hpp"
+
+namespace sol
+{
+
+namespace command
+{
+
+void registerCommands()
+{
+    static const ::command::CmdDetails commands[] =
+    {
+        // SOL Payload Handler
+        {
+            {(static_cast<uint32_t>(message::PayloadType::SOL) << 16)},
+            &payloadHandler, session::Privilege::HIGHEST_MATCHING,
+            false
+        },
+        // Activate Payload Command
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(::command::NetFns::APP) | 0x48
+            },
+            &activatePayload, session::Privilege::USER, false
+        },
+        // Deactivate Payload Command
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(::command::NetFns::APP) | 0x49
+            },
+            &deactivatePayload, session::Privilege::USER, false
+        },
+        // Get Payload Activation Status
+        {
+            {
+                (static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
+                static_cast<uint16_t>(::command::NetFns::APP) | 0x4A
+            },
+            &getPayloadStatus, session::Privilege::USER, false
+        },
+    };
+
+    for (const auto& iter : commands)
+    {
+        std::get<::command::Table&>(singletonPool).registerCommand(
+            iter.command, std::make_unique<::command::NetIpmidEntry>
+            (iter.command, iter.functor, iter.privilege, iter.sessionless));
+    }
+}
+
+} // namespace command
+
+} // namespace sol