1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace ethernet_interface 7 { 8 // clang-format off 9 10 enum class MACAddress{ 11 Invalid, 12 }; 13 14 enum class LinkStatus{ 15 Invalid, 16 LinkUp, 17 NoLink, 18 LinkDown, 19 }; 20 21 enum class DHCPv6OperatingMode{ 22 Invalid, 23 Stateful, 24 Stateless, 25 Disabled, 26 Enabled, 27 }; 28 29 enum class DHCPFallback{ 30 Invalid, 31 Static, 32 AutoConfig, 33 None, 34 }; 35 36 enum class EthernetDeviceType{ 37 Invalid, 38 Physical, 39 Virtual, 40 }; 41 42 enum class TeamMode{ 43 Invalid, 44 None, 45 RoundRobin, 46 ActiveBackup, 47 XOR, 48 Broadcast, 49 IEEE802_3ad, 50 AdaptiveTransmitLoadBalancing, 51 AdaptiveLoadBalancing, 52 }; 53 54 enum class RoutingScope{ 55 Invalid, 56 External, 57 HostOnly, 58 Internal, 59 Limited, 60 }; 61 62 NLOHMANN_JSON_SERIALIZE_ENUM(MACAddress, { 63 {MACAddress::Invalid, "Invalid"}, 64 }); 65 66 NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 67 {LinkStatus::Invalid, "Invalid"}, 68 {LinkStatus::LinkUp, "LinkUp"}, 69 {LinkStatus::NoLink, "NoLink"}, 70 {LinkStatus::LinkDown, "LinkDown"}, 71 }); 72 73 NLOHMANN_JSON_SERIALIZE_ENUM(DHCPv6OperatingMode, { 74 {DHCPv6OperatingMode::Invalid, "Invalid"}, 75 {DHCPv6OperatingMode::Stateful, "Stateful"}, 76 {DHCPv6OperatingMode::Stateless, "Stateless"}, 77 {DHCPv6OperatingMode::Disabled, "Disabled"}, 78 {DHCPv6OperatingMode::Enabled, "Enabled"}, 79 }); 80 81 NLOHMANN_JSON_SERIALIZE_ENUM(DHCPFallback, { 82 {DHCPFallback::Invalid, "Invalid"}, 83 {DHCPFallback::Static, "Static"}, 84 {DHCPFallback::AutoConfig, "AutoConfig"}, 85 {DHCPFallback::None, "None"}, 86 }); 87 88 NLOHMANN_JSON_SERIALIZE_ENUM(EthernetDeviceType, { 89 {EthernetDeviceType::Invalid, "Invalid"}, 90 {EthernetDeviceType::Physical, "Physical"}, 91 {EthernetDeviceType::Virtual, "Virtual"}, 92 }); 93 94 NLOHMANN_JSON_SERIALIZE_ENUM(TeamMode, { 95 {TeamMode::Invalid, "Invalid"}, 96 {TeamMode::None, "None"}, 97 {TeamMode::RoundRobin, "RoundRobin"}, 98 {TeamMode::ActiveBackup, "ActiveBackup"}, 99 {TeamMode::XOR, "XOR"}, 100 {TeamMode::Broadcast, "Broadcast"}, 101 {TeamMode::IEEE802_3ad, "IEEE802_3ad"}, 102 {TeamMode::AdaptiveTransmitLoadBalancing, "AdaptiveTransmitLoadBalancing"}, 103 {TeamMode::AdaptiveLoadBalancing, "AdaptiveLoadBalancing"}, 104 }); 105 106 NLOHMANN_JSON_SERIALIZE_ENUM(RoutingScope, { 107 {RoutingScope::Invalid, "Invalid"}, 108 {RoutingScope::External, "External"}, 109 {RoutingScope::HostOnly, "HostOnly"}, 110 {RoutingScope::Internal, "Internal"}, 111 {RoutingScope::Limited, "Limited"}, 112 }); 113 114 } 115 // clang-format on 116