diff options
Diffstat (limited to 'app/channel.hpp')
-rw-r--r-- | app/channel.hpp | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/app/channel.hpp b/app/channel.hpp index 1391d62..79522e4 100644 --- a/app/channel.hpp +++ b/app/channel.hpp @@ -1,4 +1,5 @@ #include "ipmid.hpp" +#include "nlohmann/json.hpp" /** @brief The set channel access IPMI command. * @@ -57,3 +58,66 @@ ipmi_ret_t ipmi_app_channel_info( ipmi_data_len_t data_len, ipmi_context_t context); +/** @brief Implementation of get channel cipher suites command + * + * @param[in] netfn - Net Function + * @param[in] cmd - Command + * @param[in] request - Request pointer + * @param[in,out] response - Response pointer + * @param[in,out] data_len - Data Length + * @param[in] context - Context + * + * @return IPMI_CC_OK on success, non-zero otherwise. + */ +ipmi_ret_t getChannelCipherSuites(ipmi_netfn_t netfn, + ipmi_cmd_t cmd, + ipmi_request_t request, + ipmi_response_t response, + ipmi_data_len_t data_len, + ipmi_context_t context); + +namespace cipher +{ + +static constexpr auto defaultChannelNumber = 1; +static constexpr auto listTypeMask = 0x80; +static constexpr auto listCipherSuite = 0x80; +static constexpr auto listIndexMask = 0x3F; +static constexpr auto respSize = 16; + +using Json = nlohmann::json; +static constexpr auto configFile = + "/usr/share/ipmi-providers/cipher_list.json"; +static constexpr auto cipher = "cipher"; +static constexpr auto stdCipherSuite = 0xC0; +static constexpr auto oemCipherSuite = 0xC1; +static constexpr auto oem = "oemiana"; +static constexpr auto auth = "authentication"; +static constexpr auto integrity = "integrity"; +static constexpr auto integrityTag = 0x40; +static constexpr auto conf = "confidentiality"; +static constexpr auto confTag = 0x80; + +} //namespace cipher + +/** @struct GetChannelCipherRequest + * + * IPMI payload for Get Channel Cipher Suites command request + */ +struct GetChannelCipherRequest +{ + uint8_t channelNumber; //!< Channel Number + uint8_t payloadType; //!< Payload type number + uint8_t listIndex; //!< List Index +} __attribute__((packed)); + +/** @struct GetChannelCipherRespHeader + * + * IPMI payload for Get Channel Cipher Suites command response header + */ +struct GetChannelCipherRespHeader +{ + uint8_t channelNumber; //!< Channel Number +} __attribute__((packed)); + + |