1 #pragma once
2 #include <nlohmann/json.hpp>
3 
4 namespace aggregation_source
5 {
6 // clang-format off
7 
8 enum class SNMPAuthenticationProtocols{
9     Invalid,
10     None,
11     CommunityString,
12     HMAC_MD5,
13     HMAC_SHA96,
14     HMAC128_SHA224,
15     HMAC192_SHA256,
16     HMAC256_SHA384,
17     HMAC384_SHA512,
18 };
19 
20 enum class SNMPEncryptionProtocols{
21     Invalid,
22     None,
23     CBC_DES,
24     CFB128_AES128,
25     CFB128_AES192,
26     CFB128_AES256,
27 };
28 
29 enum class AggregationType{
30     Invalid,
31     NotificationsOnly,
32     Full,
33 };
34 
35 enum class UserAuthenticationMethod{
36     Invalid,
37     PublicKey,
38     Password,
39 };
40 
41 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPAuthenticationProtocols, {
42     {SNMPAuthenticationProtocols::Invalid, "Invalid"},
43     {SNMPAuthenticationProtocols::None, "None"},
44     {SNMPAuthenticationProtocols::CommunityString, "CommunityString"},
45     {SNMPAuthenticationProtocols::HMAC_MD5, "HMAC_MD5"},
46     {SNMPAuthenticationProtocols::HMAC_SHA96, "HMAC_SHA96"},
47     {SNMPAuthenticationProtocols::HMAC128_SHA224, "HMAC128_SHA224"},
48     {SNMPAuthenticationProtocols::HMAC192_SHA256, "HMAC192_SHA256"},
49     {SNMPAuthenticationProtocols::HMAC256_SHA384, "HMAC256_SHA384"},
50     {SNMPAuthenticationProtocols::HMAC384_SHA512, "HMAC384_SHA512"},
51 });
52 
53 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPEncryptionProtocols, {
54     {SNMPEncryptionProtocols::Invalid, "Invalid"},
55     {SNMPEncryptionProtocols::None, "None"},
56     {SNMPEncryptionProtocols::CBC_DES, "CBC_DES"},
57     {SNMPEncryptionProtocols::CFB128_AES128, "CFB128_AES128"},
58     {SNMPEncryptionProtocols::CFB128_AES192, "CFB128_AES192"},
59     {SNMPEncryptionProtocols::CFB128_AES256, "CFB128_AES256"},
60 });
61 
62 NLOHMANN_JSON_SERIALIZE_ENUM(AggregationType, {
63     {AggregationType::Invalid, "Invalid"},
64     {AggregationType::NotificationsOnly, "NotificationsOnly"},
65     {AggregationType::Full, "Full"},
66 });
67 
68 NLOHMANN_JSON_SERIALIZE_ENUM(UserAuthenticationMethod, {
69     {UserAuthenticationMethod::Invalid, "Invalid"},
70     {UserAuthenticationMethod::PublicKey, "PublicKey"},
71     {UserAuthenticationMethod::Password, "Password"},
72 });
73 
74 }
75 // clang-format on
76