#pragma once #include #include #include namespace ipmi { namespace transport { using stdplus::operator""_zsv; // D-Bus Network Daemon definitions constexpr auto PATH_ROOT = "/xyz/openbmc_project/network"_zsv; constexpr auto INTF_ETHERNET = "xyz.openbmc_project.Network.EthernetInterface"; constexpr auto INTF_IP = "xyz.openbmc_project.Network.IP"; constexpr auto INTF_IP_CREATE = "xyz.openbmc_project.Network.IP.Create"; constexpr auto INTF_MAC = "xyz.openbmc_project.Network.MACAddress"; constexpr auto INTF_NEIGHBOR = "xyz.openbmc_project.Network.Neighbor"; constexpr auto INTF_NEIGHBOR_CREATE_STATIC = "xyz.openbmc_project.Network.Neighbor.CreateStatic"; constexpr auto INTF_VLAN = "xyz.openbmc_project.Network.VLAN"; constexpr auto INTF_VLAN_CREATE = "xyz.openbmc_project.Network.VLAN.Create"; /** @brief IPMI LAN Parameters */ enum class LanParam : uint8_t { SetStatus = 0, AuthSupport = 1, AuthEnables = 2, IP = 3, IPSrc = 4, MAC = 5, SubnetMask = 6, Gateway1 = 12, Gateway1MAC = 13, VLANId = 20, CiphersuiteSupport = 22, CiphersuiteEntries = 23, cipherSuitePrivilegeLevels = 24, IPFamilySupport = 50, IPFamilyEnables = 51, IPv6Status = 55, IPv6StaticAddresses = 56, IPv6DynamicAddresses = 59, IPv6RouterControl = 64, IPv6StaticRouter1IP = 65, IPv6StaticRouter1MAC = 66, IPv6StaticRouter1PrefixLength = 67, IPv6StaticRouter1PrefixValue = 68, }; /** @brief IPMI IP Origin Types */ enum class IPSrc : uint8_t { Unspecified = 0, Static = 1, DHCP = 2, BIOS = 3, BMC = 4, }; /** @brief IPMI Set Status */ enum class SetStatus : uint8_t { Complete = 0, InProgress = 1, Commit = 2, }; /** @brief IPMI Family Suport Bits */ namespace IPFamilySupportFlag { constexpr uint8_t IPv6Only = 0; constexpr uint8_t DualStack = 1; constexpr uint8_t IPv6Alerts = 2; } // namespace IPFamilySupportFlag /** @brief IPMI IPFamily Enables Flag */ enum class IPFamilyEnables : uint8_t { IPv4Only = 0, IPv6Only = 1, DualStack = 2, }; /** @brief IPMI IPv6 Dyanmic Status Bits */ namespace IPv6StatusFlag { constexpr uint8_t DHCP = 0; constexpr uint8_t SLAAC = 1; }; // namespace IPv6StatusFlag /** @brief IPMI IPv6 Source */ enum class IPv6Source : uint8_t { Static = 0, SLAAC = 1, DHCP = 2, }; /** @brief IPMI IPv6 Address Status */ enum class IPv6AddressStatus : uint8_t { Active = 0, Disabled = 1, }; namespace IPv6RouterControlFlag { constexpr uint8_t Static = 0; constexpr uint8_t Dynamic = 1; }; // namespace IPv6RouterControlFlag // LAN Handler specific response codes constexpr Cc ccParamNotSupported = 0x80; constexpr Cc ccParamSetLocked = 0x81; constexpr Cc ccParamReadOnly = 0x82; // VLANs are a 12-bit value constexpr uint16_t VLAN_VALUE_MASK = 0x0fff; constexpr uint16_t VLAN_ENABLE_FLAG = 0x8000; // Arbitrary v4 Address Limits constexpr uint8_t MAX_IPV4_ADDRESSES = 2; // Arbitrary v6 Address Limits to prevent too much output in ipmitool constexpr uint8_t MAX_IPV6_STATIC_ADDRESSES = 15; constexpr uint8_t MAX_IPV6_DYNAMIC_ADDRESSES = 15; // Prefix length limits of phosphor-networkd constexpr uint8_t MIN_IPV4_PREFIX_LENGTH = 1; constexpr uint8_t MAX_IPV4_PREFIX_LENGTH = 32; constexpr uint8_t MIN_IPV6_PREFIX_LENGTH = 1; constexpr uint8_t MAX_IPV6_PREFIX_LENGTH = 128; /** @enum SolConfParam * * using for Set/Get SOL configuration parameters command. */ enum class SolConfParam : uint8_t { Progress, //!< Set In Progress. Enable, //!< SOL Enable. Authentication, //!< SOL Authentication. Accumulate, //!< Character Accumulate Interval & Send Threshold. Retry, //!< SOL Retry. NonVbitrate, //!< SOL non-volatile bit rate. Vbitrate, //!< SOL volatile bit rate. Channel, //!< SOL payload channel. Port, //!< SOL payload port. }; constexpr uint8_t ipmiCCParamNotSupported = 0x80; constexpr uint8_t ipmiCCWriteReadParameter = 0x82; } // namespace transport } // namespace ipmi