1d3e7a617STom Joseph #pragma once
2d3e7a617STom Joseph 
3d3e7a617STom Joseph #include <cstdint>
4d3e7a617STom Joseph 
5d3e7a617STom Joseph #include "message_handler.hpp"
6d3e7a617STom Joseph 
7d3e7a617STom Joseph namespace command
8d3e7a617STom Joseph {
9d3e7a617STom Joseph 
10*3563f8feSTom Joseph /**
11d3e7a617STom Joseph  * @brief RMCP+ and RAKP Message Status Codes
12d3e7a617STom Joseph  */
13d3e7a617STom Joseph enum class RAKP_ReturnCode : uint8_t
14d3e7a617STom Joseph {
15*3563f8feSTom Joseph     NO_ERROR,                   //!< No errors
16*3563f8feSTom Joseph     INSUFFICIENT_RESOURCE,      //!< Insufficient resources to create a session
17*3563f8feSTom Joseph     INVALID_SESSION_ID,         //!< Invalid Session ID
18*3563f8feSTom Joseph     INVALID_PAYLOAD_TYPE,       //!< Invalid payload type
19*3563f8feSTom Joseph     INVALID_AUTH_ALGO,          //!< Invalid authentication algorithm
20*3563f8feSTom Joseph     INVALID_INTEGRITY_ALGO,     //!< Invalid integrity algorithm
21*3563f8feSTom Joseph     NO_MATCH_AUTH_PAYLOAD,      //!< No matching authentication payload
22*3563f8feSTom Joseph     NO_MATCH_INTEGRITY_PAYLOAD, //!< No matching integrity payload
23*3563f8feSTom Joseph     INACTIVE_SESSIONID,         //!< Inactive Session ID
24*3563f8feSTom Joseph     INACTIVE_ROLE,              //!< Invalid role
25*3563f8feSTom Joseph     UNAUTH_ROLE_PRIV,           //!< Unauthorized role or privilege requested
26*3563f8feSTom Joseph     INSUFFICIENT_RESOURCES_ROLE,//!< Insufficient resources to create a session
27*3563f8feSTom Joseph     INVALID_NAME_LENGTH,        //!< Invalid name length
28*3563f8feSTom Joseph     UNAUTH_NAME,                //!< Unauthorized name
29*3563f8feSTom Joseph     UNAUTH_GUID,                //!< Unauthorized GUID
30*3563f8feSTom Joseph     INVALID_INTEGRITY_VALUE,    //!< Invalid integrity check value
31*3563f8feSTom Joseph     INVALID_CONF_ALGO,          //!< Invalid confidentiality algorithm
32*3563f8feSTom Joseph     NO_CIPHER_SUITE_MATCH,      //!< No Cipher Suite match with security algos
33*3563f8feSTom Joseph     ILLEGAL_PARAMETER,          //!< Illegal or unrecognized parameter
34d3e7a617STom Joseph };
35d3e7a617STom Joseph 
36*3563f8feSTom Joseph /**
37d3e7a617STom Joseph  * @brief Register Session Setup commands to the Command Table
38d3e7a617STom Joseph  */
39d3e7a617STom Joseph void sessionSetupCommands();
40d3e7a617STom Joseph 
41d3e7a617STom Joseph } // namespace command
42