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