10ec8b83dSEd Tanous #pragma once
20ec8b83dSEd Tanous #include <nlohmann/json.hpp>
30ec8b83dSEd Tanous 
40ec8b83dSEd Tanous namespace manager_network_protocol
50ec8b83dSEd Tanous {
60ec8b83dSEd Tanous // clang-format off
70ec8b83dSEd Tanous 
80ec8b83dSEd Tanous enum class NotifyIPv6Scope{
90ec8b83dSEd Tanous     Invalid,
100ec8b83dSEd Tanous     Link,
110ec8b83dSEd Tanous     Site,
120ec8b83dSEd Tanous     Organization,
130ec8b83dSEd Tanous };
140ec8b83dSEd Tanous 
150ec8b83dSEd Tanous enum class SNMPCommunityAccessMode{
160ec8b83dSEd Tanous     Invalid,
170ec8b83dSEd Tanous     Full,
180ec8b83dSEd Tanous     Limited,
190ec8b83dSEd Tanous };
200ec8b83dSEd Tanous 
210ec8b83dSEd Tanous enum class SNMPAuthenticationProtocols{
220ec8b83dSEd Tanous     Invalid,
230ec8b83dSEd Tanous     Account,
240ec8b83dSEd Tanous     CommunityString,
250ec8b83dSEd Tanous     HMAC_MD5,
260ec8b83dSEd Tanous     HMAC_SHA96,
270ec8b83dSEd Tanous     HMAC128_SHA224,
280ec8b83dSEd Tanous     HMAC192_SHA256,
290ec8b83dSEd Tanous     HMAC256_SHA384,
300ec8b83dSEd Tanous     HMAC384_SHA512,
310ec8b83dSEd Tanous };
320ec8b83dSEd Tanous 
330ec8b83dSEd Tanous enum class SNMPEncryptionProtocols{
340ec8b83dSEd Tanous     Invalid,
350ec8b83dSEd Tanous     None,
360ec8b83dSEd Tanous     Account,
370ec8b83dSEd Tanous     CBC_DES,
380ec8b83dSEd Tanous     CFB128_AES128,
39*2ae81db9SGunnar Mills     CFB128_AES192,
40*2ae81db9SGunnar Mills     CFB128_AES256,
410ec8b83dSEd Tanous };
420ec8b83dSEd Tanous 
430ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(NotifyIPv6Scope, {
440ec8b83dSEd Tanous     {NotifyIPv6Scope::Invalid, "Invalid"},
450ec8b83dSEd Tanous     {NotifyIPv6Scope::Link, "Link"},
460ec8b83dSEd Tanous     {NotifyIPv6Scope::Site, "Site"},
470ec8b83dSEd Tanous     {NotifyIPv6Scope::Organization, "Organization"},
480ec8b83dSEd Tanous });
490ec8b83dSEd Tanous 
500ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SNMPCommunityAccessMode, {
510ec8b83dSEd Tanous     {SNMPCommunityAccessMode::Invalid, "Invalid"},
520ec8b83dSEd Tanous     {SNMPCommunityAccessMode::Full, "Full"},
530ec8b83dSEd Tanous     {SNMPCommunityAccessMode::Limited, "Limited"},
540ec8b83dSEd Tanous });
550ec8b83dSEd Tanous 
560ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SNMPAuthenticationProtocols, {
570ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::Invalid, "Invalid"},
580ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::Account, "Account"},
590ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::CommunityString, "CommunityString"},
600ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::HMAC_MD5, "HMAC_MD5"},
610ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::HMAC_SHA96, "HMAC_SHA96"},
620ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::HMAC128_SHA224, "HMAC128_SHA224"},
630ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::HMAC192_SHA256, "HMAC192_SHA256"},
640ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::HMAC256_SHA384, "HMAC256_SHA384"},
650ec8b83dSEd Tanous     {SNMPAuthenticationProtocols::HMAC384_SHA512, "HMAC384_SHA512"},
660ec8b83dSEd Tanous });
670ec8b83dSEd Tanous 
680ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SNMPEncryptionProtocols, {
690ec8b83dSEd Tanous     {SNMPEncryptionProtocols::Invalid, "Invalid"},
700ec8b83dSEd Tanous     {SNMPEncryptionProtocols::None, "None"},
710ec8b83dSEd Tanous     {SNMPEncryptionProtocols::Account, "Account"},
720ec8b83dSEd Tanous     {SNMPEncryptionProtocols::CBC_DES, "CBC_DES"},
730ec8b83dSEd Tanous     {SNMPEncryptionProtocols::CFB128_AES128, "CFB128_AES128"},
74*2ae81db9SGunnar Mills     {SNMPEncryptionProtocols::CFB128_AES192, "CFB128_AES192"},
75*2ae81db9SGunnar Mills     {SNMPEncryptionProtocols::CFB128_AES256, "CFB128_AES256"},
760ec8b83dSEd Tanous });
770ec8b83dSEd Tanous 
780ec8b83dSEd Tanous }
790ec8b83dSEd Tanous // clang-format on
80