1 #include "comm_module.hpp" 2 3 #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 12 #include <algorithm> 13 #include <cstring> 14 #include <iomanip> 15 #include <iostream> 16 17 namespace command 18 { 19 20 void sessionSetupCommands() 21 { 22 static const command::CmdDetails commands[] = { 23 // Open Session Request/Response 24 {{(static_cast<uint32_t>(message::PayloadType::OPEN_SESSION_REQUEST) 25 << 16)}, 26 &openSession, 27 session::Privilege::HIGHEST_MATCHING, 28 true}, 29 // RAKP1 & RAKP2 Message 30 {{(static_cast<uint32_t>(message::PayloadType::RAKP1) << 16)}, 31 &RAKP12, 32 session::Privilege::HIGHEST_MATCHING, 33 true}, 34 // RAKP3 & RAKP4 Message 35 {{(static_cast<uint32_t>(message::PayloadType::RAKP3) << 16)}, 36 &RAKP34, 37 session::Privilege::HIGHEST_MATCHING, 38 true}, 39 // Get Channel Authentication Capabilities Command 40 {{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) | 41 static_cast<uint16_t>(command::NetFns::APP) | 0x38}, 42 &GetChannelCapabilities, 43 session::Privilege::HIGHEST_MATCHING, 44 true}, 45 // Set Session Privilege Command 46 {{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) | 47 static_cast<uint16_t>(command::NetFns::APP) | 0x3B}, 48 &setSessionPrivilegeLevel, 49 session::Privilege::USER, 50 false}, 51 // Close Session Command 52 {{(static_cast<uint32_t>(message::PayloadType::IPMI) << 16) | 53 static_cast<uint16_t>(command::NetFns::APP) | 0x3C}, 54 &closeSession, 55 session::Privilege::CALLBACK, 56 false}, 57 }; 58 59 for (auto& iter : commands) 60 { 61 std::get<command::Table&>(singletonPool) 62 .registerCommand(iter.command, 63 std::make_unique<command::NetIpmidEntry>( 64 iter.command, iter.functor, iter.privilege, 65 iter.sessionless)); 66 } 67 } 68 69 } // namespace command 70