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 ethernet_interface 70ec8b83dSEd Tanous { 80ec8b83dSEd Tanous // clang-format off 90ec8b83dSEd Tanous 100ec8b83dSEd Tanous enum class LinkStatus{ 110ec8b83dSEd Tanous Invalid, 120ec8b83dSEd Tanous LinkUp, 130ec8b83dSEd Tanous NoLink, 140ec8b83dSEd Tanous LinkDown, 150ec8b83dSEd Tanous }; 160ec8b83dSEd Tanous 170ec8b83dSEd Tanous enum class DHCPv6OperatingMode{ 180ec8b83dSEd Tanous Invalid, 190ec8b83dSEd Tanous Stateful, 200ec8b83dSEd Tanous Stateless, 210ec8b83dSEd Tanous Disabled, 220ec8b83dSEd Tanous Enabled, 230ec8b83dSEd Tanous }; 240ec8b83dSEd Tanous 250ec8b83dSEd Tanous enum class DHCPFallback{ 260ec8b83dSEd Tanous Invalid, 270ec8b83dSEd Tanous Static, 280ec8b83dSEd Tanous AutoConfig, 290ec8b83dSEd Tanous None, 300ec8b83dSEd Tanous }; 310ec8b83dSEd Tanous 320ec8b83dSEd Tanous enum class EthernetDeviceType{ 330ec8b83dSEd Tanous Invalid, 340ec8b83dSEd Tanous Physical, 350ec8b83dSEd Tanous Virtual, 360ec8b83dSEd Tanous }; 370ec8b83dSEd Tanous 380ec8b83dSEd Tanous enum class TeamMode{ 390ec8b83dSEd Tanous Invalid, 400ec8b83dSEd Tanous None, 410ec8b83dSEd Tanous RoundRobin, 420ec8b83dSEd Tanous ActiveBackup, 430ec8b83dSEd Tanous XOR, 440ec8b83dSEd Tanous Broadcast, 450ec8b83dSEd Tanous IEEE802_3ad, 460ec8b83dSEd Tanous AdaptiveTransmitLoadBalancing, 470ec8b83dSEd Tanous AdaptiveLoadBalancing, 480ec8b83dSEd Tanous }; 490ec8b83dSEd Tanous 50e9cc1bc9SEd Tanous enum class RoutingScope{ 51e9cc1bc9SEd Tanous Invalid, 52e9cc1bc9SEd Tanous External, 53e9cc1bc9SEd Tanous HostOnly, 54e9cc1bc9SEd Tanous Internal, 55e9cc1bc9SEd Tanous Limited, 56e9cc1bc9SEd Tanous }; 57e9cc1bc9SEd Tanous 580ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 590ec8b83dSEd Tanous {LinkStatus::Invalid, "Invalid"}, 600ec8b83dSEd Tanous {LinkStatus::LinkUp, "LinkUp"}, 610ec8b83dSEd Tanous {LinkStatus::NoLink, "NoLink"}, 620ec8b83dSEd Tanous {LinkStatus::LinkDown, "LinkDown"}, 630ec8b83dSEd Tanous }); 640ec8b83dSEd Tanous 650ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPv6OperatingMode, { 660ec8b83dSEd Tanous {DHCPv6OperatingMode::Invalid, "Invalid"}, 670ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateful, "Stateful"}, 680ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateless, "Stateless"}, 690ec8b83dSEd Tanous {DHCPv6OperatingMode::Disabled, "Disabled"}, 700ec8b83dSEd Tanous {DHCPv6OperatingMode::Enabled, "Enabled"}, 710ec8b83dSEd Tanous }); 720ec8b83dSEd Tanous 730ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPFallback, { 740ec8b83dSEd Tanous {DHCPFallback::Invalid, "Invalid"}, 750ec8b83dSEd Tanous {DHCPFallback::Static, "Static"}, 760ec8b83dSEd Tanous {DHCPFallback::AutoConfig, "AutoConfig"}, 770ec8b83dSEd Tanous {DHCPFallback::None, "None"}, 780ec8b83dSEd Tanous }); 790ec8b83dSEd Tanous 800ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EthernetDeviceType, { 810ec8b83dSEd Tanous {EthernetDeviceType::Invalid, "Invalid"}, 820ec8b83dSEd Tanous {EthernetDeviceType::Physical, "Physical"}, 830ec8b83dSEd Tanous {EthernetDeviceType::Virtual, "Virtual"}, 840ec8b83dSEd Tanous }); 850ec8b83dSEd Tanous 860ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(TeamMode, { 870ec8b83dSEd Tanous {TeamMode::Invalid, "Invalid"}, 880ec8b83dSEd Tanous {TeamMode::None, "None"}, 890ec8b83dSEd Tanous {TeamMode::RoundRobin, "RoundRobin"}, 900ec8b83dSEd Tanous {TeamMode::ActiveBackup, "ActiveBackup"}, 910ec8b83dSEd Tanous {TeamMode::XOR, "XOR"}, 920ec8b83dSEd Tanous {TeamMode::Broadcast, "Broadcast"}, 930ec8b83dSEd Tanous {TeamMode::IEEE802_3ad, "IEEE802_3ad"}, 940ec8b83dSEd Tanous {TeamMode::AdaptiveTransmitLoadBalancing, "AdaptiveTransmitLoadBalancing"}, 950ec8b83dSEd Tanous {TeamMode::AdaptiveLoadBalancing, "AdaptiveLoadBalancing"}, 960ec8b83dSEd Tanous }); 970ec8b83dSEd Tanous 98e9cc1bc9SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(RoutingScope, { 99e9cc1bc9SEd Tanous {RoutingScope::Invalid, "Invalid"}, 100e9cc1bc9SEd Tanous {RoutingScope::External, "External"}, 101e9cc1bc9SEd Tanous {RoutingScope::HostOnly, "HostOnly"}, 102e9cc1bc9SEd Tanous {RoutingScope::Internal, "Internal"}, 103e9cc1bc9SEd Tanous {RoutingScope::Limited, "Limited"}, 104e9cc1bc9SEd Tanous }); 105e9cc1bc9SEd Tanous 1060ec8b83dSEd Tanous } 1070ec8b83dSEd Tanous // clang-format on 108