1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace event_destination 7 { 8 // clang-format off 9 10 enum class EventFormatType{ 11 Invalid, 12 Event, 13 MetricReport, 14 }; 15 16 enum class EventDestinationProtocol{ 17 Invalid, 18 Redfish, 19 Kafka, 20 SNMPv1, 21 SNMPv2c, 22 SNMPv3, 23 SMTP, 24 SyslogTLS, 25 SyslogTCP, 26 SyslogUDP, 27 SyslogRELP, 28 OEM, 29 }; 30 31 enum class SubscriptionType{ 32 Invalid, 33 RedfishEvent, 34 SSE, 35 SNMPTrap, 36 SNMPInform, 37 Syslog, 38 OEM, 39 }; 40 41 enum class DeliveryRetryPolicy{ 42 Invalid, 43 TerminateAfterRetries, 44 SuspendRetries, 45 RetryForever, 46 RetryForeverWithBackoff, 47 }; 48 49 enum class SNMPAuthenticationProtocols{ 50 Invalid, 51 None, 52 CommunityString, 53 HMAC_MD5, 54 HMAC_SHA96, 55 HMAC128_SHA224, 56 HMAC192_SHA256, 57 HMAC256_SHA384, 58 HMAC384_SHA512, 59 }; 60 61 enum class SNMPEncryptionProtocols{ 62 Invalid, 63 None, 64 CBC_DES, 65 CFB128_AES128, 66 CFB128_AES192, 67 CFB128_AES256, 68 }; 69 70 enum class SyslogSeverity{ 71 Invalid, 72 Emergency, 73 Alert, 74 Critical, 75 Error, 76 Warning, 77 Notice, 78 Informational, 79 Debug, 80 All, 81 }; 82 83 enum class SyslogFacility{ 84 Invalid, 85 Kern, 86 User, 87 Mail, 88 Daemon, 89 Auth, 90 Syslog, 91 LPR, 92 News, 93 UUCP, 94 Cron, 95 Authpriv, 96 FTP, 97 NTP, 98 Security, 99 Console, 100 SolarisCron, 101 Local0, 102 Local1, 103 Local2, 104 Local3, 105 Local4, 106 Local5, 107 Local6, 108 Local7, 109 }; 110 111 NLOHMANN_JSON_SERIALIZE_ENUM(EventFormatType, { 112 {EventFormatType::Invalid, "Invalid"}, 113 {EventFormatType::Event, "Event"}, 114 {EventFormatType::MetricReport, "MetricReport"}, 115 }); 116 117 NLOHMANN_JSON_SERIALIZE_ENUM(EventDestinationProtocol, { 118 {EventDestinationProtocol::Invalid, "Invalid"}, 119 {EventDestinationProtocol::Redfish, "Redfish"}, 120 {EventDestinationProtocol::Kafka, "Kafka"}, 121 {EventDestinationProtocol::SNMPv1, "SNMPv1"}, 122 {EventDestinationProtocol::SNMPv2c, "SNMPv2c"}, 123 {EventDestinationProtocol::SNMPv3, "SNMPv3"}, 124 {EventDestinationProtocol::SMTP, "SMTP"}, 125 {EventDestinationProtocol::SyslogTLS, "SyslogTLS"}, 126 {EventDestinationProtocol::SyslogTCP, "SyslogTCP"}, 127 {EventDestinationProtocol::SyslogUDP, "SyslogUDP"}, 128 {EventDestinationProtocol::SyslogRELP, "SyslogRELP"}, 129 {EventDestinationProtocol::OEM, "OEM"}, 130 }); 131 132 NLOHMANN_JSON_SERIALIZE_ENUM(SubscriptionType, { 133 {SubscriptionType::Invalid, "Invalid"}, 134 {SubscriptionType::RedfishEvent, "RedfishEvent"}, 135 {SubscriptionType::SSE, "SSE"}, 136 {SubscriptionType::SNMPTrap, "SNMPTrap"}, 137 {SubscriptionType::SNMPInform, "SNMPInform"}, 138 {SubscriptionType::Syslog, "Syslog"}, 139 {SubscriptionType::OEM, "OEM"}, 140 }); 141 142 NLOHMANN_JSON_SERIALIZE_ENUM(DeliveryRetryPolicy, { 143 {DeliveryRetryPolicy::Invalid, "Invalid"}, 144 {DeliveryRetryPolicy::TerminateAfterRetries, "TerminateAfterRetries"}, 145 {DeliveryRetryPolicy::SuspendRetries, "SuspendRetries"}, 146 {DeliveryRetryPolicy::RetryForever, "RetryForever"}, 147 {DeliveryRetryPolicy::RetryForeverWithBackoff, "RetryForeverWithBackoff"}, 148 }); 149 150 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPAuthenticationProtocols, { 151 {SNMPAuthenticationProtocols::Invalid, "Invalid"}, 152 {SNMPAuthenticationProtocols::None, "None"}, 153 {SNMPAuthenticationProtocols::CommunityString, "CommunityString"}, 154 {SNMPAuthenticationProtocols::HMAC_MD5, "HMAC_MD5"}, 155 {SNMPAuthenticationProtocols::HMAC_SHA96, "HMAC_SHA96"}, 156 {SNMPAuthenticationProtocols::HMAC128_SHA224, "HMAC128_SHA224"}, 157 {SNMPAuthenticationProtocols::HMAC192_SHA256, "HMAC192_SHA256"}, 158 {SNMPAuthenticationProtocols::HMAC256_SHA384, "HMAC256_SHA384"}, 159 {SNMPAuthenticationProtocols::HMAC384_SHA512, "HMAC384_SHA512"}, 160 }); 161 162 NLOHMANN_JSON_SERIALIZE_ENUM(SNMPEncryptionProtocols, { 163 {SNMPEncryptionProtocols::Invalid, "Invalid"}, 164 {SNMPEncryptionProtocols::None, "None"}, 165 {SNMPEncryptionProtocols::CBC_DES, "CBC_DES"}, 166 {SNMPEncryptionProtocols::CFB128_AES128, "CFB128_AES128"}, 167 {SNMPEncryptionProtocols::CFB128_AES192, "CFB128_AES192"}, 168 {SNMPEncryptionProtocols::CFB128_AES256, "CFB128_AES256"}, 169 }); 170 171 NLOHMANN_JSON_SERIALIZE_ENUM(SyslogSeverity, { 172 {SyslogSeverity::Invalid, "Invalid"}, 173 {SyslogSeverity::Emergency, "Emergency"}, 174 {SyslogSeverity::Alert, "Alert"}, 175 {SyslogSeverity::Critical, "Critical"}, 176 {SyslogSeverity::Error, "Error"}, 177 {SyslogSeverity::Warning, "Warning"}, 178 {SyslogSeverity::Notice, "Notice"}, 179 {SyslogSeverity::Informational, "Informational"}, 180 {SyslogSeverity::Debug, "Debug"}, 181 {SyslogSeverity::All, "All"}, 182 }); 183 184 NLOHMANN_JSON_SERIALIZE_ENUM(SyslogFacility, { 185 {SyslogFacility::Invalid, "Invalid"}, 186 {SyslogFacility::Kern, "Kern"}, 187 {SyslogFacility::User, "User"}, 188 {SyslogFacility::Mail, "Mail"}, 189 {SyslogFacility::Daemon, "Daemon"}, 190 {SyslogFacility::Auth, "Auth"}, 191 {SyslogFacility::Syslog, "Syslog"}, 192 {SyslogFacility::LPR, "LPR"}, 193 {SyslogFacility::News, "News"}, 194 {SyslogFacility::UUCP, "UUCP"}, 195 {SyslogFacility::Cron, "Cron"}, 196 {SyslogFacility::Authpriv, "Authpriv"}, 197 {SyslogFacility::FTP, "FTP"}, 198 {SyslogFacility::NTP, "NTP"}, 199 {SyslogFacility::Security, "Security"}, 200 {SyslogFacility::Console, "Console"}, 201 {SyslogFacility::SolarisCron, "SolarisCron"}, 202 {SyslogFacility::Local0, "Local0"}, 203 {SyslogFacility::Local1, "Local1"}, 204 {SyslogFacility::Local2, "Local2"}, 205 {SyslogFacility::Local3, "Local3"}, 206 {SyslogFacility::Local4, "Local4"}, 207 {SyslogFacility::Local5, "Local5"}, 208 {SyslogFacility::Local6, "Local6"}, 209 {SyslogFacility::Local7, "Local7"}, 210 }); 211 212 } 213 // clang-format on 214