blob: acc90890f090ba2fc95e6ba22379dcdd263d533f [file] [log] [blame]
Tom Josephd8be3362016-12-06 17:54:13 +05301#include "comm_module.hpp"
2
Tom Josephd8be3362016-12-06 17:54:13 +05303#include "command/channel_auth.hpp"
4#include "command/open_session.hpp"
5#include "command/rakp12.hpp"
6#include "command/rakp34.hpp"
7#include "command/session_cmds.hpp"
8#include "command_table.hpp"
9#include "main.hpp"
10#include "session.hpp"
11
Vernon Mauery9e801a22018-10-12 13:20:49 -070012#include <algorithm>
13#include <cstring>
14#include <iomanip>
Vernon Mauery9e801a22018-10-12 13:20:49 -070015
Tom Josephd8be3362016-12-06 17:54:13 +053016namespace command
17{
18
19void sessionSetupCommands()
20{
Vernon Mauery9e801a22018-10-12 13:20:49 -070021 static const command::CmdDetails commands[] = {
Tom Josephd8be3362016-12-06 17:54:13 +053022 // Open Session Request/Response
Vernon Mauery9e801a22018-10-12 13:20:49 -070023 {{(static_cast<uint32_t>(message::PayloadType::OPEN_SESSION_REQUEST)
24 << 16)},
25 &openSession,
26 session::Privilege::HIGHEST_MATCHING,
27 true},
Tom Josephd8be3362016-12-06 17:54:13 +053028 // RAKP1 & RAKP2 Message
Vernon Mauery9e801a22018-10-12 13:20:49 -070029 {{(static_cast<uint32_t>(message::PayloadType::RAKP1) << 16)},
30 &RAKP12,
31 session::Privilege::HIGHEST_MATCHING,
32 true},
Tom Josephd8be3362016-12-06 17:54:13 +053033 // RAKP3 & RAKP4 Message
Vernon Mauery9e801a22018-10-12 13:20:49 -070034 {{(static_cast<uint32_t>(message::PayloadType::RAKP3) << 16)},
35 &RAKP34,
36 session::Privilege::HIGHEST_MATCHING,
37 true},
Tom Josephd8be3362016-12-06 17:54:13 +053038 // Get Channel Authentication Capabilities Command
Vernon Mauery9e801a22018-10-12 13:20:49 -070039 {{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
40 static_cast<uint16_t>(command::NetFns::APP) | 0x38},
41 &GetChannelCapabilities,
42 session::Privilege::HIGHEST_MATCHING,
43 true},
Tom Josephd8be3362016-12-06 17:54:13 +053044 // Set Session Privilege Command
Vernon Mauery9e801a22018-10-12 13:20:49 -070045 {{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
46 static_cast<uint16_t>(command::NetFns::APP) | 0x3B},
47 &setSessionPrivilegeLevel,
48 session::Privilege::USER,
49 false},
Tom Josephd8be3362016-12-06 17:54:13 +053050 // Close Session Command
Vernon Mauery9e801a22018-10-12 13:20:49 -070051 {{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
52 static_cast<uint16_t>(command::NetFns::APP) | 0x3C},
53 &closeSession,
54 session::Privilege::CALLBACK,
55 false},
Tom Josephd8be3362016-12-06 17:54:13 +053056 };
57
58 for (auto& iter : commands)
59 {
Vernon Mauery9e801a22018-10-12 13:20:49 -070060 std::get<command::Table&>(singletonPool)
61 .registerCommand(iter.command,
62 std::make_unique<command::NetIpmidEntry>(
63 iter.command, iter.functor, iter.privilege,
64 iter.sessionless));
Tom Josephd8be3362016-12-06 17:54:13 +053065 }
66}
67
68} // namespace command