-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathcomm_module.cpp
72 lines (66 loc) · 2.31 KB
/
comm_module.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "comm_module.hpp"
#include "command/channel_auth.hpp"
#include "command/open_session.hpp"
#include "command/rakp12.hpp"
#include "command/rakp34.hpp"
#include "command/session_cmds.hpp"
#include "command_table.hpp"
#include "session.hpp"
#include <algorithm>
#include <cstring>
#include <iomanip>
namespace command
{
void sessionSetupCommands()
{
static const command::CmdDetails commands[] = {
// Open Session Request/Response
{{(static_cast<uint32_t>(message::PayloadType::OPEN_SESSION_REQUEST)
<< 16)},
&openSession,
session::Privilege::HIGHEST_MATCHING,
true},
// RAKP1 & RAKP2 Message
{{(static_cast<uint32_t>(message::PayloadType::RAKP1) << 16)},
&RAKP12,
session::Privilege::HIGHEST_MATCHING,
true},
// RAKP3 & RAKP4 Message
{{(static_cast<uint32_t>(message::PayloadType::RAKP3) << 16)},
&RAKP34,
session::Privilege::HIGHEST_MATCHING,
true},
// Get Channel Authentication Capabilities Command
{{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
static_cast<uint16_t>(command::NetFns::APP) | 0x38},
&GetChannelCapabilities,
session::Privilege::HIGHEST_MATCHING,
true},
// Get Channel Cipher Suites Command
{{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
static_cast<uint16_t>(::command::NetFns::APP) | 0x54},
&getChannelCipherSuites,
session::Privilege::HIGHEST_MATCHING,
true},
// Set Session Privilege Command
{{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
static_cast<uint16_t>(command::NetFns::APP) | 0x3B},
&setSessionPrivilegeLevel,
session::Privilege::USER,
false},
// Close Session Command
{{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) |
static_cast<uint16_t>(command::NetFns::APP) | 0x3C},
&closeSession,
session::Privilege::CALLBACK,
false},
};
for (auto& iter : commands)
{
command::Table::get().registerCommand(
iter.command,
std::make_unique<command::NetIpmidEntry>(
iter.command, iter.functor, iter.privilege, iter.sessionless));
}
}
} // namespace command