1*40e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 2*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 30ec8b83dSEd Tanous #pragma once 40ec8b83dSEd Tanous #include <nlohmann/json.hpp> 50ec8b83dSEd Tanous 60ec8b83dSEd Tanous namespace event_destination 70ec8b83dSEd Tanous { 80ec8b83dSEd Tanous // clang-format off 90ec8b83dSEd Tanous 100ec8b83dSEd Tanous enum class EventFormatType{ 110ec8b83dSEd Tanous Invalid, 120ec8b83dSEd Tanous Event, 130ec8b83dSEd Tanous MetricReport, 140ec8b83dSEd Tanous }; 150ec8b83dSEd Tanous 160ec8b83dSEd Tanous enum class EventDestinationProtocol{ 170ec8b83dSEd Tanous Invalid, 180ec8b83dSEd Tanous Redfish, 19a8d8f9d8SEd Tanous Kafka, 200ec8b83dSEd Tanous SNMPv1, 210ec8b83dSEd Tanous SNMPv2c, 220ec8b83dSEd Tanous SNMPv3, 230ec8b83dSEd Tanous SMTP, 240ec8b83dSEd Tanous SyslogTLS, 250ec8b83dSEd Tanous SyslogTCP, 260ec8b83dSEd Tanous SyslogUDP, 270ec8b83dSEd Tanous SyslogRELP, 280ec8b83dSEd Tanous OEM, 290ec8b83dSEd Tanous }; 300ec8b83dSEd Tanous 310ec8b83dSEd Tanous enum class SubscriptionType{ 320ec8b83dSEd Tanous Invalid, 330ec8b83dSEd Tanous RedfishEvent, 340ec8b83dSEd Tanous SSE, 350ec8b83dSEd Tanous SNMPTrap, 360ec8b83dSEd Tanous SNMPInform, 370ec8b83dSEd Tanous Syslog, 380ec8b83dSEd Tanous OEM, 390ec8b83dSEd Tanous }; 400ec8b83dSEd Tanous 410ec8b83dSEd Tanous enum class DeliveryRetryPolicy{ 420ec8b83dSEd Tanous Invalid, 430ec8b83dSEd Tanous TerminateAfterRetries, 440ec8b83dSEd Tanous SuspendRetries, 450ec8b83dSEd Tanous RetryForever, 460ec8b83dSEd Tanous RetryForeverWithBackoff, 470ec8b83dSEd Tanous }; 480ec8b83dSEd Tanous 490ec8b83dSEd Tanous enum class SNMPAuthenticationProtocols{ 500ec8b83dSEd Tanous Invalid, 510ec8b83dSEd Tanous None, 520ec8b83dSEd Tanous CommunityString, 530ec8b83dSEd Tanous HMAC_MD5, 540ec8b83dSEd Tanous HMAC_SHA96, 550ec8b83dSEd Tanous HMAC128_SHA224, 560ec8b83dSEd Tanous HMAC192_SHA256, 570ec8b83dSEd Tanous HMAC256_SHA384, 580ec8b83dSEd Tanous HMAC384_SHA512, 590ec8b83dSEd Tanous }; 600ec8b83dSEd Tanous 610ec8b83dSEd Tanous enum class SNMPEncryptionProtocols{ 620ec8b83dSEd Tanous Invalid, 630ec8b83dSEd Tanous None, 640ec8b83dSEd Tanous CBC_DES, 650ec8b83dSEd Tanous CFB128_AES128, 662ae81db9SGunnar Mills CFB128_AES192, 672ae81db9SGunnar Mills CFB128_AES256, 680ec8b83dSEd Tanous }; 690ec8b83dSEd Tanous 700ec8b83dSEd Tanous enum class SyslogSeverity{ 710ec8b83dSEd Tanous Invalid, 720ec8b83dSEd Tanous Emergency, 730ec8b83dSEd Tanous Alert, 740ec8b83dSEd Tanous Critical, 750ec8b83dSEd Tanous Error, 760ec8b83dSEd Tanous Warning, 770ec8b83dSEd Tanous Notice, 780ec8b83dSEd Tanous Informational, 790ec8b83dSEd Tanous Debug, 800ec8b83dSEd Tanous All, 810ec8b83dSEd Tanous }; 820ec8b83dSEd Tanous 830ec8b83dSEd Tanous enum class SyslogFacility{ 840ec8b83dSEd Tanous Invalid, 850ec8b83dSEd Tanous Kern, 860ec8b83dSEd Tanous User, 870ec8b83dSEd Tanous Mail, 880ec8b83dSEd Tanous Daemon, 890ec8b83dSEd Tanous Auth, 900ec8b83dSEd Tanous Syslog, 910ec8b83dSEd Tanous LPR, 920ec8b83dSEd Tanous News, 930ec8b83dSEd Tanous UUCP, 940ec8b83dSEd Tanous Cron, 950ec8b83dSEd Tanous Authpriv, 960ec8b83dSEd Tanous FTP, 970ec8b83dSEd Tanous NTP, 980ec8b83dSEd Tanous Security, 990ec8b83dSEd Tanous Console, 1000ec8b83dSEd Tanous SolarisCron, 1010ec8b83dSEd Tanous Local0, 1020ec8b83dSEd Tanous Local1, 1030ec8b83dSEd Tanous Local2, 1040ec8b83dSEd Tanous Local3, 1050ec8b83dSEd Tanous Local4, 1060ec8b83dSEd Tanous Local5, 1070ec8b83dSEd Tanous Local6, 1080ec8b83dSEd Tanous Local7, 1090ec8b83dSEd Tanous }; 1100ec8b83dSEd Tanous 1110ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EventFormatType, { 1120ec8b83dSEd Tanous {EventFormatType::Invalid, "Invalid"}, 1130ec8b83dSEd Tanous {EventFormatType::Event, "Event"}, 1140ec8b83dSEd Tanous {EventFormatType::MetricReport, "MetricReport"}, 1150ec8b83dSEd Tanous }); 1160ec8b83dSEd Tanous 1170ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EventDestinationProtocol, { 1180ec8b83dSEd Tanous {EventDestinationProtocol::Invalid, "Invalid"}, 1190ec8b83dSEd Tanous {EventDestinationProtocol::Redfish, "Redfish"}, 120a8d8f9d8SEd Tanous {EventDestinationProtocol::Kafka, "Kafka"}, 1210ec8b83dSEd Tanous {EventDestinationProtocol::SNMPv1, "SNMPv1"}, 1220ec8b83dSEd Tanous {EventDestinationProtocol::SNMPv2c, "SNMPv2c"}, 1230ec8b83dSEd Tanous {EventDestinationProtocol::SNMPv3, "SNMPv3"}, 1240ec8b83dSEd Tanous {EventDestinationProtocol::SMTP, "SMTP"}, 1250ec8b83dSEd Tanous {EventDestinationProtocol::SyslogTLS, "SyslogTLS"}, 1260ec8b83dSEd Tanous {EventDestinationProtocol::SyslogTCP, "SyslogTCP"}, 1270ec8b83dSEd Tanous {EventDestinationProtocol::SyslogUDP, "SyslogUDP"}, 1280ec8b83dSEd Tanous {EventDestinationProtocol::SyslogRELP, "SyslogRELP"}, 1290ec8b83dSEd Tanous {EventDestinationProtocol::OEM, "OEM"}, 1300ec8b83dSEd Tanous }); 1310ec8b83dSEd Tanous 1320ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SubscriptionType, { 1330ec8b83dSEd Tanous {SubscriptionType::Invalid, "Invalid"}, 1340ec8b83dSEd Tanous {SubscriptionType::RedfishEvent, "RedfishEvent"}, 1350ec8b83dSEd Tanous {SubscriptionType::SSE, "SSE"}, 1360ec8b83dSEd Tanous {SubscriptionType::SNMPTrap, "SNMPTrap"}, 1370ec8b83dSEd Tanous {SubscriptionType::SNMPInform, "SNMPInform"}, 1380ec8b83dSEd Tanous {SubscriptionType::Syslog, "Syslog"}, 1390ec8b83dSEd Tanous {SubscriptionType::OEM, "OEM"}, 1400ec8b83dSEd Tanous }); 1410ec8b83dSEd Tanous 1420ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DeliveryRetryPolicy, { 1430ec8b83dSEd Tanous {DeliveryRetryPolicy::Invalid, "Invalid"}, 1440ec8b83dSEd Tanous {DeliveryRetryPolicy::TerminateAfterRetries, "TerminateAfterRetries"}, 1450ec8b83dSEd Tanous {DeliveryRetryPolicy::SuspendRetries, "SuspendRetries"}, 1460ec8b83dSEd Tanous {DeliveryRetryPolicy::RetryForever, "RetryForever"}, 1470ec8b83dSEd Tanous {DeliveryRetryPolicy::RetryForeverWithBackoff, "RetryForeverWithBackoff"}, 1480ec8b83dSEd Tanous }); 1490ec8b83dSEd Tanous 1500ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SNMPAuthenticationProtocols, { 1510ec8b83dSEd Tanous {SNMPAuthenticationProtocols::Invalid, "Invalid"}, 1520ec8b83dSEd Tanous {SNMPAuthenticationProtocols::None, "None"}, 1530ec8b83dSEd Tanous {SNMPAuthenticationProtocols::CommunityString, "CommunityString"}, 1540ec8b83dSEd Tanous {SNMPAuthenticationProtocols::HMAC_MD5, "HMAC_MD5"}, 1550ec8b83dSEd Tanous {SNMPAuthenticationProtocols::HMAC_SHA96, "HMAC_SHA96"}, 1560ec8b83dSEd Tanous {SNMPAuthenticationProtocols::HMAC128_SHA224, "HMAC128_SHA224"}, 1570ec8b83dSEd Tanous {SNMPAuthenticationProtocols::HMAC192_SHA256, "HMAC192_SHA256"}, 1580ec8b83dSEd Tanous {SNMPAuthenticationProtocols::HMAC256_SHA384, "HMAC256_SHA384"}, 1590ec8b83dSEd Tanous {SNMPAuthenticationProtocols::HMAC384_SHA512, "HMAC384_SHA512"}, 1600ec8b83dSEd Tanous }); 1610ec8b83dSEd Tanous 1620ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SNMPEncryptionProtocols, { 1630ec8b83dSEd Tanous {SNMPEncryptionProtocols::Invalid, "Invalid"}, 1640ec8b83dSEd Tanous {SNMPEncryptionProtocols::None, "None"}, 1650ec8b83dSEd Tanous {SNMPEncryptionProtocols::CBC_DES, "CBC_DES"}, 1660ec8b83dSEd Tanous {SNMPEncryptionProtocols::CFB128_AES128, "CFB128_AES128"}, 1672ae81db9SGunnar Mills {SNMPEncryptionProtocols::CFB128_AES192, "CFB128_AES192"}, 1682ae81db9SGunnar Mills {SNMPEncryptionProtocols::CFB128_AES256, "CFB128_AES256"}, 1690ec8b83dSEd Tanous }); 1700ec8b83dSEd Tanous 1710ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SyslogSeverity, { 1720ec8b83dSEd Tanous {SyslogSeverity::Invalid, "Invalid"}, 1730ec8b83dSEd Tanous {SyslogSeverity::Emergency, "Emergency"}, 1740ec8b83dSEd Tanous {SyslogSeverity::Alert, "Alert"}, 1750ec8b83dSEd Tanous {SyslogSeverity::Critical, "Critical"}, 1760ec8b83dSEd Tanous {SyslogSeverity::Error, "Error"}, 1770ec8b83dSEd Tanous {SyslogSeverity::Warning, "Warning"}, 1780ec8b83dSEd Tanous {SyslogSeverity::Notice, "Notice"}, 1790ec8b83dSEd Tanous {SyslogSeverity::Informational, "Informational"}, 1800ec8b83dSEd Tanous {SyslogSeverity::Debug, "Debug"}, 1810ec8b83dSEd Tanous {SyslogSeverity::All, "All"}, 1820ec8b83dSEd Tanous }); 1830ec8b83dSEd Tanous 1840ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SyslogFacility, { 1850ec8b83dSEd Tanous {SyslogFacility::Invalid, "Invalid"}, 1860ec8b83dSEd Tanous {SyslogFacility::Kern, "Kern"}, 1870ec8b83dSEd Tanous {SyslogFacility::User, "User"}, 1880ec8b83dSEd Tanous {SyslogFacility::Mail, "Mail"}, 1890ec8b83dSEd Tanous {SyslogFacility::Daemon, "Daemon"}, 1900ec8b83dSEd Tanous {SyslogFacility::Auth, "Auth"}, 1910ec8b83dSEd Tanous {SyslogFacility::Syslog, "Syslog"}, 1920ec8b83dSEd Tanous {SyslogFacility::LPR, "LPR"}, 1930ec8b83dSEd Tanous {SyslogFacility::News, "News"}, 1940ec8b83dSEd Tanous {SyslogFacility::UUCP, "UUCP"}, 1950ec8b83dSEd Tanous {SyslogFacility::Cron, "Cron"}, 1960ec8b83dSEd Tanous {SyslogFacility::Authpriv, "Authpriv"}, 1970ec8b83dSEd Tanous {SyslogFacility::FTP, "FTP"}, 1980ec8b83dSEd Tanous {SyslogFacility::NTP, "NTP"}, 1990ec8b83dSEd Tanous {SyslogFacility::Security, "Security"}, 2000ec8b83dSEd Tanous {SyslogFacility::Console, "Console"}, 2010ec8b83dSEd Tanous {SyslogFacility::SolarisCron, "SolarisCron"}, 2020ec8b83dSEd Tanous {SyslogFacility::Local0, "Local0"}, 2030ec8b83dSEd Tanous {SyslogFacility::Local1, "Local1"}, 2040ec8b83dSEd Tanous {SyslogFacility::Local2, "Local2"}, 2050ec8b83dSEd Tanous {SyslogFacility::Local3, "Local3"}, 2060ec8b83dSEd Tanous {SyslogFacility::Local4, "Local4"}, 2070ec8b83dSEd Tanous {SyslogFacility::Local5, "Local5"}, 2080ec8b83dSEd Tanous {SyslogFacility::Local6, "Local6"}, 2090ec8b83dSEd Tanous {SyslogFacility::Local7, "Local7"}, 2100ec8b83dSEd Tanous }); 2110ec8b83dSEd Tanous 2120ec8b83dSEd Tanous } 2130ec8b83dSEd Tanous // clang-format on 214