10ec8b83dSEd Tanous #pragma once 20ec8b83dSEd Tanous #include <nlohmann/json.hpp> 30ec8b83dSEd Tanous 40ec8b83dSEd Tanous namespace ethernet_interface 50ec8b83dSEd Tanous { 60ec8b83dSEd Tanous // clang-format off 70ec8b83dSEd Tanous 80ec8b83dSEd Tanous enum class LinkStatus{ 90ec8b83dSEd Tanous Invalid, 100ec8b83dSEd Tanous LinkUp, 110ec8b83dSEd Tanous NoLink, 120ec8b83dSEd Tanous LinkDown, 130ec8b83dSEd Tanous }; 140ec8b83dSEd Tanous 150ec8b83dSEd Tanous enum class DHCPv6OperatingMode{ 160ec8b83dSEd Tanous Invalid, 170ec8b83dSEd Tanous Stateful, 180ec8b83dSEd Tanous Stateless, 190ec8b83dSEd Tanous Disabled, 200ec8b83dSEd Tanous Enabled, 210ec8b83dSEd Tanous }; 220ec8b83dSEd Tanous 230ec8b83dSEd Tanous enum class DHCPFallback{ 240ec8b83dSEd Tanous Invalid, 250ec8b83dSEd Tanous Static, 260ec8b83dSEd Tanous AutoConfig, 270ec8b83dSEd Tanous None, 280ec8b83dSEd Tanous }; 290ec8b83dSEd Tanous 300ec8b83dSEd Tanous enum class EthernetDeviceType{ 310ec8b83dSEd Tanous Invalid, 320ec8b83dSEd Tanous Physical, 330ec8b83dSEd Tanous Virtual, 340ec8b83dSEd Tanous }; 350ec8b83dSEd Tanous 360ec8b83dSEd Tanous enum class TeamMode{ 370ec8b83dSEd Tanous Invalid, 380ec8b83dSEd Tanous None, 390ec8b83dSEd Tanous RoundRobin, 400ec8b83dSEd Tanous ActiveBackup, 410ec8b83dSEd Tanous XOR, 420ec8b83dSEd Tanous Broadcast, 430ec8b83dSEd Tanous IEEE802_3ad, 440ec8b83dSEd Tanous AdaptiveTransmitLoadBalancing, 450ec8b83dSEd Tanous AdaptiveLoadBalancing, 460ec8b83dSEd Tanous }; 470ec8b83dSEd Tanous 48*e9cc1bc9SEd Tanous enum class RoutingScope{ 49*e9cc1bc9SEd Tanous Invalid, 50*e9cc1bc9SEd Tanous External, 51*e9cc1bc9SEd Tanous HostOnly, 52*e9cc1bc9SEd Tanous Internal, 53*e9cc1bc9SEd Tanous Limited, 54*e9cc1bc9SEd Tanous }; 55*e9cc1bc9SEd Tanous 560ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 570ec8b83dSEd Tanous {LinkStatus::Invalid, "Invalid"}, 580ec8b83dSEd Tanous {LinkStatus::LinkUp, "LinkUp"}, 590ec8b83dSEd Tanous {LinkStatus::NoLink, "NoLink"}, 600ec8b83dSEd Tanous {LinkStatus::LinkDown, "LinkDown"}, 610ec8b83dSEd Tanous }); 620ec8b83dSEd Tanous 630ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPv6OperatingMode, { 640ec8b83dSEd Tanous {DHCPv6OperatingMode::Invalid, "Invalid"}, 650ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateful, "Stateful"}, 660ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateless, "Stateless"}, 670ec8b83dSEd Tanous {DHCPv6OperatingMode::Disabled, "Disabled"}, 680ec8b83dSEd Tanous {DHCPv6OperatingMode::Enabled, "Enabled"}, 690ec8b83dSEd Tanous }); 700ec8b83dSEd Tanous 710ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPFallback, { 720ec8b83dSEd Tanous {DHCPFallback::Invalid, "Invalid"}, 730ec8b83dSEd Tanous {DHCPFallback::Static, "Static"}, 740ec8b83dSEd Tanous {DHCPFallback::AutoConfig, "AutoConfig"}, 750ec8b83dSEd Tanous {DHCPFallback::None, "None"}, 760ec8b83dSEd Tanous }); 770ec8b83dSEd Tanous 780ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EthernetDeviceType, { 790ec8b83dSEd Tanous {EthernetDeviceType::Invalid, "Invalid"}, 800ec8b83dSEd Tanous {EthernetDeviceType::Physical, "Physical"}, 810ec8b83dSEd Tanous {EthernetDeviceType::Virtual, "Virtual"}, 820ec8b83dSEd Tanous }); 830ec8b83dSEd Tanous 840ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(TeamMode, { 850ec8b83dSEd Tanous {TeamMode::Invalid, "Invalid"}, 860ec8b83dSEd Tanous {TeamMode::None, "None"}, 870ec8b83dSEd Tanous {TeamMode::RoundRobin, "RoundRobin"}, 880ec8b83dSEd Tanous {TeamMode::ActiveBackup, "ActiveBackup"}, 890ec8b83dSEd Tanous {TeamMode::XOR, "XOR"}, 900ec8b83dSEd Tanous {TeamMode::Broadcast, "Broadcast"}, 910ec8b83dSEd Tanous {TeamMode::IEEE802_3ad, "IEEE802_3ad"}, 920ec8b83dSEd Tanous {TeamMode::AdaptiveTransmitLoadBalancing, "AdaptiveTransmitLoadBalancing"}, 930ec8b83dSEd Tanous {TeamMode::AdaptiveLoadBalancing, "AdaptiveLoadBalancing"}, 940ec8b83dSEd Tanous }); 950ec8b83dSEd Tanous 96*e9cc1bc9SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(RoutingScope, { 97*e9cc1bc9SEd Tanous {RoutingScope::Invalid, "Invalid"}, 98*e9cc1bc9SEd Tanous {RoutingScope::External, "External"}, 99*e9cc1bc9SEd Tanous {RoutingScope::HostOnly, "HostOnly"}, 100*e9cc1bc9SEd Tanous {RoutingScope::Internal, "Internal"}, 101*e9cc1bc9SEd Tanous {RoutingScope::Limited, "Limited"}, 102*e9cc1bc9SEd Tanous }); 103*e9cc1bc9SEd Tanous 1040ec8b83dSEd Tanous } 1050ec8b83dSEd Tanous // clang-format on 106