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     CFB128_AES192,
40     CFB128_AES256,
41 };
42 
43 NLOHMANN_JSON_SERIALIZE_ENUM(NotifyIPv6Scope, {
44     {NotifyIPv6Scope::Invalid, "Invalid"},
45     {NotifyIPv6Scope::Link, "Link"},
46     {NotifyIPv6Scope::Site, "Site"},
47     {NotifyIPv6Scope::Organization, "Organization"},
48 });
49 
50 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPCommunityAccessMode, {
51     {SNMPCommunityAccessMode::Invalid, "Invalid"},
52     {SNMPCommunityAccessMode::Full, "Full"},
53     {SNMPCommunityAccessMode::Limited, "Limited"},
54 });
55 
56 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPAuthenticationProtocols, {
57     {SNMPAuthenticationProtocols::Invalid, "Invalid"},
58     {SNMPAuthenticationProtocols::Account, "Account"},
59     {SNMPAuthenticationProtocols::CommunityString, "CommunityString"},
60     {SNMPAuthenticationProtocols::HMAC_MD5, "HMAC_MD5"},
61     {SNMPAuthenticationProtocols::HMAC_SHA96, "HMAC_SHA96"},
62     {SNMPAuthenticationProtocols::HMAC128_SHA224, "HMAC128_SHA224"},
63     {SNMPAuthenticationProtocols::HMAC192_SHA256, "HMAC192_SHA256"},
64     {SNMPAuthenticationProtocols::HMAC256_SHA384, "HMAC256_SHA384"},
65     {SNMPAuthenticationProtocols::HMAC384_SHA512, "HMAC384_SHA512"},
66 });
67 
68 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPEncryptionProtocols, {
69     {SNMPEncryptionProtocols::Invalid, "Invalid"},
70     {SNMPEncryptionProtocols::None, "None"},
71     {SNMPEncryptionProtocols::Account, "Account"},
72     {SNMPEncryptionProtocols::CBC_DES, "CBC_DES"},
73     {SNMPEncryptionProtocols::CFB128_AES128, "CFB128_AES128"},
74     {SNMPEncryptionProtocols::CFB128_AES192, "CFB128_AES192"},
75     {SNMPEncryptionProtocols::CFB128_AES256, "CFB128_AES256"},
76 });
77 
78 }
79 // clang-format on
80