1*0ec8b83dSEd Tanous #pragma once 2*0ec8b83dSEd Tanous #include <nlohmann/json.hpp> 3*0ec8b83dSEd Tanous 4*0ec8b83dSEd Tanous namespace ethernet_interface 5*0ec8b83dSEd Tanous { 6*0ec8b83dSEd Tanous // clang-format off 7*0ec8b83dSEd Tanous 8*0ec8b83dSEd Tanous enum class LinkStatus{ 9*0ec8b83dSEd Tanous Invalid, 10*0ec8b83dSEd Tanous LinkUp, 11*0ec8b83dSEd Tanous NoLink, 12*0ec8b83dSEd Tanous LinkDown, 13*0ec8b83dSEd Tanous }; 14*0ec8b83dSEd Tanous 15*0ec8b83dSEd Tanous enum class DHCPv6OperatingMode{ 16*0ec8b83dSEd Tanous Invalid, 17*0ec8b83dSEd Tanous Stateful, 18*0ec8b83dSEd Tanous Stateless, 19*0ec8b83dSEd Tanous Disabled, 20*0ec8b83dSEd Tanous Enabled, 21*0ec8b83dSEd Tanous }; 22*0ec8b83dSEd Tanous 23*0ec8b83dSEd Tanous enum class DHCPFallback{ 24*0ec8b83dSEd Tanous Invalid, 25*0ec8b83dSEd Tanous Static, 26*0ec8b83dSEd Tanous AutoConfig, 27*0ec8b83dSEd Tanous None, 28*0ec8b83dSEd Tanous }; 29*0ec8b83dSEd Tanous 30*0ec8b83dSEd Tanous enum class EthernetDeviceType{ 31*0ec8b83dSEd Tanous Invalid, 32*0ec8b83dSEd Tanous Physical, 33*0ec8b83dSEd Tanous Virtual, 34*0ec8b83dSEd Tanous }; 35*0ec8b83dSEd Tanous 36*0ec8b83dSEd Tanous enum class TeamMode{ 37*0ec8b83dSEd Tanous Invalid, 38*0ec8b83dSEd Tanous None, 39*0ec8b83dSEd Tanous RoundRobin, 40*0ec8b83dSEd Tanous ActiveBackup, 41*0ec8b83dSEd Tanous XOR, 42*0ec8b83dSEd Tanous Broadcast, 43*0ec8b83dSEd Tanous IEEE802_3ad, 44*0ec8b83dSEd Tanous AdaptiveTransmitLoadBalancing, 45*0ec8b83dSEd Tanous AdaptiveLoadBalancing, 46*0ec8b83dSEd Tanous }; 47*0ec8b83dSEd Tanous 48*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 49*0ec8b83dSEd Tanous {LinkStatus::Invalid, "Invalid"}, 50*0ec8b83dSEd Tanous {LinkStatus::LinkUp, "LinkUp"}, 51*0ec8b83dSEd Tanous {LinkStatus::NoLink, "NoLink"}, 52*0ec8b83dSEd Tanous {LinkStatus::LinkDown, "LinkDown"}, 53*0ec8b83dSEd Tanous }); 54*0ec8b83dSEd Tanous 55*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPv6OperatingMode, { 56*0ec8b83dSEd Tanous {DHCPv6OperatingMode::Invalid, "Invalid"}, 57*0ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateful, "Stateful"}, 58*0ec8b83dSEd Tanous {DHCPv6OperatingMode::Stateless, "Stateless"}, 59*0ec8b83dSEd Tanous {DHCPv6OperatingMode::Disabled, "Disabled"}, 60*0ec8b83dSEd Tanous {DHCPv6OperatingMode::Enabled, "Enabled"}, 61*0ec8b83dSEd Tanous }); 62*0ec8b83dSEd Tanous 63*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DHCPFallback, { 64*0ec8b83dSEd Tanous {DHCPFallback::Invalid, "Invalid"}, 65*0ec8b83dSEd Tanous {DHCPFallback::Static, "Static"}, 66*0ec8b83dSEd Tanous {DHCPFallback::AutoConfig, "AutoConfig"}, 67*0ec8b83dSEd Tanous {DHCPFallback::None, "None"}, 68*0ec8b83dSEd Tanous }); 69*0ec8b83dSEd Tanous 70*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(EthernetDeviceType, { 71*0ec8b83dSEd Tanous {EthernetDeviceType::Invalid, "Invalid"}, 72*0ec8b83dSEd Tanous {EthernetDeviceType::Physical, "Physical"}, 73*0ec8b83dSEd Tanous {EthernetDeviceType::Virtual, "Virtual"}, 74*0ec8b83dSEd Tanous }); 75*0ec8b83dSEd Tanous 76*0ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(TeamMode, { 77*0ec8b83dSEd Tanous {TeamMode::Invalid, "Invalid"}, 78*0ec8b83dSEd Tanous {TeamMode::None, "None"}, 79*0ec8b83dSEd Tanous {TeamMode::RoundRobin, "RoundRobin"}, 80*0ec8b83dSEd Tanous {TeamMode::ActiveBackup, "ActiveBackup"}, 81*0ec8b83dSEd Tanous {TeamMode::XOR, "XOR"}, 82*0ec8b83dSEd Tanous {TeamMode::Broadcast, "Broadcast"}, 83*0ec8b83dSEd Tanous {TeamMode::IEEE802_3ad, "IEEE802_3ad"}, 84*0ec8b83dSEd Tanous {TeamMode::AdaptiveTransmitLoadBalancing, "AdaptiveTransmitLoadBalancing"}, 85*0ec8b83dSEd Tanous {TeamMode::AdaptiveLoadBalancing, "AdaptiveLoadBalancing"}, 86*0ec8b83dSEd Tanous }); 87*0ec8b83dSEd Tanous 88*0ec8b83dSEd Tanous } 89*0ec8b83dSEd Tanous // clang-format on 90