140e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 240e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 30ec8b83dSEd Tanous #pragma once 40ec8b83dSEd Tanous #include <nlohmann/json.hpp> 50ec8b83dSEd Tanous 60ec8b83dSEd Tanous namespace ethernet_interface 70ec8b83dSEd Tanous { 80ec8b83dSEd Tanous // clang-format off 90ec8b83dSEd Tanous 10*d1a3caa4SChandramohan Harkude enum class MACAddress{ 11*d1a3caa4SChandramohan Harkude Invalid, 12*d1a3caa4SChandramohan Harkude }; 13*d1a3caa4SChandramohan Harkude 140ec8b83dSEd Tanous enum class LinkStatus{ 150ec8b83dSEd Tanous Invalid, 160ec8b83dSEd Tanous LinkUp, 170ec8b83dSEd Tanous NoLink, 180ec8b83dSEd Tanous LinkDown, 190ec8b83dSEd Tanous }; 200ec8b83dSEd Tanous 210ec8b83dSEd Tanous enum class DHCPv6OperatingMode{ 220ec8b83dSEd Tanous Invalid, 230ec8b83dSEd Tanous Stateful, 240ec8b83dSEd Tanous Stateless, 250ec8b83dSEd Tanous Disabled, 260ec8b83dSEd Tanous Enabled, 270ec8b83dSEd Tanous }; 280ec8b83dSEd Tanous 290ec8b83dSEd Tanous enum class DHCPFallback{ 300ec8b83dSEd Tanous Invalid, 310ec8b83dSEd Tanous Static, 320ec8b83dSEd Tanous AutoConfig, 330ec8b83dSEd Tanous None, 340ec8b83dSEd Tanous }; 350ec8b83dSEd Tanous 360ec8b83dSEd Tanous enum class EthernetDeviceType{ 370ec8b83dSEd Tanous Invalid, 380ec8b83dSEd Tanous Physical, 390ec8b83dSEd Tanous Virtual, 400ec8b83dSEd Tanous }; 410ec8b83dSEd Tanous 420ec8b83dSEd Tanous enum class TeamMode{ 430ec8b83dSEd Tanous Invalid, 440ec8b83dSEd Tanous None, 450ec8b83dSEd Tanous RoundRobin, 460ec8b83dSEd Tanous ActiveBackup, 470ec8b83dSEd Tanous XOR, 480ec8b83dSEd Tanous Broadcast, 490ec8b83dSEd Tanous IEEE802_3ad, 500ec8b83dSEd Tanous AdaptiveTransmitLoadBalancing, 510ec8b83dSEd Tanous AdaptiveLoadBalancing, 520ec8b83dSEd Tanous }; 530ec8b83dSEd Tanous 54e9cc1bc9SEd Tanous enum class RoutingScope{ 55e9cc1bc9SEd Tanous Invalid, 56e9cc1bc9SEd Tanous External, 57e9cc1bc9SEd Tanous HostOnly, 58e9cc1bc9SEd Tanous Internal, 59e9cc1bc9SEd Tanous Limited, 60e9cc1bc9SEd Tanous }; 61e9cc1bc9SEd Tanous 62*d1a3caa4SChandramohan Harkude NLOHMANN_JSON_SERIALIZE_ENUM(MACAddress, { 63*d1a3caa4SChandramohan Harkude {MACAddress::Invalid, "Invalid"}, 64*d1a3caa4SChandramohan Harkude }); 65*d1a3caa4SChandramohan Harkude 660ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 670ec8b83dSEd Tanous {LinkStatus::Invalid, "Invalid"}, 680ec8b83dSEd Tanous {LinkStatus::LinkUp, "LinkUp"}, 690ec8b83dSEd Tanous {LinkStatus::NoLink, "NoLink"}, 700ec8b83dSEd Tanous {LinkStatus::LinkDown, "LinkDown"}, 710ec8b83dSEd Tanous }); 720ec8b83dSEd Tanous 730ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPv6OperatingMode, { 740ec8b83dSEd Tanous {DHCPv6OperatingMode::Invalid, "Invalid"}, 750ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateful, "Stateful"}, 760ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateless, "Stateless"}, 770ec8b83dSEd Tanous {DHCPv6OperatingMode::Disabled, "Disabled"}, 780ec8b83dSEd Tanous {DHCPv6OperatingMode::Enabled, "Enabled"}, 790ec8b83dSEd Tanous }); 800ec8b83dSEd Tanous 810ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPFallback, { 820ec8b83dSEd Tanous {DHCPFallback::Invalid, "Invalid"}, 830ec8b83dSEd Tanous {DHCPFallback::Static, "Static"}, 840ec8b83dSEd Tanous {DHCPFallback::AutoConfig, "AutoConfig"}, 850ec8b83dSEd Tanous {DHCPFallback::None, "None"}, 860ec8b83dSEd Tanous }); 870ec8b83dSEd Tanous 880ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EthernetDeviceType, { 890ec8b83dSEd Tanous {EthernetDeviceType::Invalid, "Invalid"}, 900ec8b83dSEd Tanous {EthernetDeviceType::Physical, "Physical"}, 910ec8b83dSEd Tanous {EthernetDeviceType::Virtual, "Virtual"}, 920ec8b83dSEd Tanous }); 930ec8b83dSEd Tanous 940ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(TeamMode, { 950ec8b83dSEd Tanous {TeamMode::Invalid, "Invalid"}, 960ec8b83dSEd Tanous {TeamMode::None, "None"}, 970ec8b83dSEd Tanous {TeamMode::RoundRobin, "RoundRobin"}, 980ec8b83dSEd Tanous {TeamMode::ActiveBackup, "ActiveBackup"}, 990ec8b83dSEd Tanous {TeamMode::XOR, "XOR"}, 1000ec8b83dSEd Tanous {TeamMode::Broadcast, "Broadcast"}, 1010ec8b83dSEd Tanous {TeamMode::IEEE802_3ad, "IEEE802_3ad"}, 1020ec8b83dSEd Tanous {TeamMode::AdaptiveTransmitLoadBalancing, "AdaptiveTransmitLoadBalancing"}, 1030ec8b83dSEd Tanous {TeamMode::AdaptiveLoadBalancing, "AdaptiveLoadBalancing"}, 1040ec8b83dSEd Tanous }); 1050ec8b83dSEd Tanous 106e9cc1bc9SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(RoutingScope, { 107e9cc1bc9SEd Tanous {RoutingScope::Invalid, "Invalid"}, 108e9cc1bc9SEd Tanous {RoutingScope::External, "External"}, 109e9cc1bc9SEd Tanous {RoutingScope::HostOnly, "HostOnly"}, 110e9cc1bc9SEd Tanous {RoutingScope::Internal, "Internal"}, 111e9cc1bc9SEd Tanous {RoutingScope::Limited, "Limited"}, 112e9cc1bc9SEd Tanous }); 113e9cc1bc9SEd Tanous 1140ec8b83dSEd Tanous } 1150ec8b83dSEd Tanous // clang-format on 116