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 LinkStatus{ 11 Invalid, 12 LinkUp, 13 NoLink, 14 LinkDown, 15 }; 16 17 enum class DHCPv6OperatingMode{ 18 Invalid, 19 Stateful, 20 Stateless, 21 Disabled, 22 Enabled, 23 }; 24 25 enum class DHCPFallback{ 26 Invalid, 27 Static, 28 AutoConfig, 29 None, 30 }; 31 32 enum class EthernetDeviceType{ 33 Invalid, 34 Physical, 35 Virtual, 36 }; 37 38 enum class TeamMode{ 39 Invalid, 40 None, 41 RoundRobin, 42 ActiveBackup, 43 XOR, 44 Broadcast, 45 IEEE802_3ad, 46 AdaptiveTransmitLoadBalancing, 47 AdaptiveLoadBalancing, 48 }; 49 50 enum class RoutingScope{ 51 Invalid, 52 External, 53 HostOnly, 54 Internal, 55 Limited, 56 }; 57 58 NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 59 {LinkStatus::Invalid, "Invalid"}, 60 {LinkStatus::LinkUp, "LinkUp"}, 61 {LinkStatus::NoLink, "NoLink"}, 62 {LinkStatus::LinkDown, "LinkDown"}, 63 }); 64 65 NLOHMANN_JSON_SERIALIZE_ENUM(DHCPv6OperatingMode, { 66 {DHCPv6OperatingMode::Invalid, "Invalid"}, 67 {DHCPv6OperatingMode::Stateful, "Stateful"}, 68 {DHCPv6OperatingMode::Stateless, "Stateless"}, 69 {DHCPv6OperatingMode::Disabled, "Disabled"}, 70 {DHCPv6OperatingMode::Enabled, "Enabled"}, 71 }); 72 73 NLOHMANN_JSON_SERIALIZE_ENUM(DHCPFallback, { 74 {DHCPFallback::Invalid, "Invalid"}, 75 {DHCPFallback::Static, "Static"}, 76 {DHCPFallback::AutoConfig, "AutoConfig"}, 77 {DHCPFallback::None, "None"}, 78 }); 79 80 NLOHMANN_JSON_SERIALIZE_ENUM(EthernetDeviceType, { 81 {EthernetDeviceType::Invalid, "Invalid"}, 82 {EthernetDeviceType::Physical, "Physical"}, 83 {EthernetDeviceType::Virtual, "Virtual"}, 84 }); 85 86 NLOHMANN_JSON_SERIALIZE_ENUM(TeamMode, { 87 {TeamMode::Invalid, "Invalid"}, 88 {TeamMode::None, "None"}, 89 {TeamMode::RoundRobin, "RoundRobin"}, 90 {TeamMode::ActiveBackup, "ActiveBackup"}, 91 {TeamMode::XOR, "XOR"}, 92 {TeamMode::Broadcast, "Broadcast"}, 93 {TeamMode::IEEE802_3ad, "IEEE802_3ad"}, 94 {TeamMode::AdaptiveTransmitLoadBalancing, "AdaptiveTransmitLoadBalancing"}, 95 {TeamMode::AdaptiveLoadBalancing, "AdaptiveLoadBalancing"}, 96 }); 97 98 NLOHMANN_JSON_SERIALIZE_ENUM(RoutingScope, { 99 {RoutingScope::Invalid, "Invalid"}, 100 {RoutingScope::External, "External"}, 101 {RoutingScope::HostOnly, "HostOnly"}, 102 {RoutingScope::Internal, "Internal"}, 103 {RoutingScope::Limited, "Limited"}, 104 }); 105 106 } 107 // clang-format on 108