1853c0dc5SEd Tanous #pragma once 2853c0dc5SEd Tanous #include <nlohmann/json.hpp> 3853c0dc5SEd Tanous 4853c0dc5SEd Tanous namespace port 5853c0dc5SEd Tanous { 6853c0dc5SEd Tanous // clang-format off 7853c0dc5SEd Tanous 8853c0dc5SEd Tanous enum class PortType{ 9853c0dc5SEd Tanous Invalid, 10853c0dc5SEd Tanous UpstreamPort, 11853c0dc5SEd Tanous DownstreamPort, 12853c0dc5SEd Tanous InterswitchPort, 13853c0dc5SEd Tanous ManagementPort, 14853c0dc5SEd Tanous BidirectionalPort, 15853c0dc5SEd Tanous UnconfiguredPort, 16853c0dc5SEd Tanous }; 17853c0dc5SEd Tanous 18853c0dc5SEd Tanous enum class PortMedium{ 19853c0dc5SEd Tanous Invalid, 20853c0dc5SEd Tanous Electrical, 21853c0dc5SEd Tanous Optical, 22853c0dc5SEd Tanous }; 23853c0dc5SEd Tanous 24853c0dc5SEd Tanous enum class LinkState{ 25853c0dc5SEd Tanous Invalid, 26853c0dc5SEd Tanous Enabled, 27853c0dc5SEd Tanous Disabled, 28853c0dc5SEd Tanous }; 29853c0dc5SEd Tanous 30853c0dc5SEd Tanous enum class LinkStatus{ 31853c0dc5SEd Tanous Invalid, 32853c0dc5SEd Tanous LinkUp, 33853c0dc5SEd Tanous Starting, 34853c0dc5SEd Tanous Training, 35853c0dc5SEd Tanous LinkDown, 36853c0dc5SEd Tanous NoLink, 37853c0dc5SEd Tanous }; 38853c0dc5SEd Tanous 39853c0dc5SEd Tanous enum class LinkNetworkTechnology{ 40853c0dc5SEd Tanous Invalid, 41853c0dc5SEd Tanous Ethernet, 42853c0dc5SEd Tanous InfiniBand, 43853c0dc5SEd Tanous FibreChannel, 44853c0dc5SEd Tanous GenZ, 45*a8d8f9d8SEd Tanous PCIe, 46853c0dc5SEd Tanous }; 47853c0dc5SEd Tanous 48853c0dc5SEd Tanous enum class PortConnectionType{ 49853c0dc5SEd Tanous Invalid, 50853c0dc5SEd Tanous NotConnected, 51853c0dc5SEd Tanous NPort, 52853c0dc5SEd Tanous PointToPoint, 53853c0dc5SEd Tanous PrivateLoop, 54853c0dc5SEd Tanous PublicLoop, 55853c0dc5SEd Tanous Generic, 56853c0dc5SEd Tanous ExtenderFabric, 57853c0dc5SEd Tanous FPort, 58853c0dc5SEd Tanous EPort, 59853c0dc5SEd Tanous TEPort, 60853c0dc5SEd Tanous NPPort, 61853c0dc5SEd Tanous GPort, 62853c0dc5SEd Tanous NLPort, 63853c0dc5SEd Tanous FLPort, 64853c0dc5SEd Tanous EXPort, 65853c0dc5SEd Tanous UPort, 66853c0dc5SEd Tanous DPort, 67853c0dc5SEd Tanous }; 68853c0dc5SEd Tanous 69853c0dc5SEd Tanous enum class SupportedEthernetCapabilities{ 70853c0dc5SEd Tanous Invalid, 71853c0dc5SEd Tanous WakeOnLAN, 72853c0dc5SEd Tanous EEE, 73853c0dc5SEd Tanous }; 74853c0dc5SEd Tanous 75853c0dc5SEd Tanous enum class FlowControl{ 76853c0dc5SEd Tanous Invalid, 77853c0dc5SEd Tanous None, 78853c0dc5SEd Tanous TX, 79853c0dc5SEd Tanous RX, 80853c0dc5SEd Tanous TX_RX, 81853c0dc5SEd Tanous }; 82853c0dc5SEd Tanous 83853c0dc5SEd Tanous enum class IEEE802IdSubtype{ 84853c0dc5SEd Tanous Invalid, 85853c0dc5SEd Tanous ChassisComp, 86853c0dc5SEd Tanous IfAlias, 87853c0dc5SEd Tanous PortComp, 88853c0dc5SEd Tanous MacAddr, 89853c0dc5SEd Tanous NetworkAddr, 90853c0dc5SEd Tanous IfName, 91853c0dc5SEd Tanous AgentId, 92853c0dc5SEd Tanous LocalAssign, 93853c0dc5SEd Tanous NotTransmitted, 94853c0dc5SEd Tanous }; 95853c0dc5SEd Tanous 96853c0dc5SEd Tanous enum class SFPType{ 97853c0dc5SEd Tanous Invalid, 98853c0dc5SEd Tanous SFP, 99853c0dc5SEd Tanous SFPPlus, 100853c0dc5SEd Tanous SFP28, 101853c0dc5SEd Tanous cSFP, 102853c0dc5SEd Tanous SFPDD, 103853c0dc5SEd Tanous QSFP, 104853c0dc5SEd Tanous QSFPPlus, 105853c0dc5SEd Tanous QSFP14, 106853c0dc5SEd Tanous QSFP28, 107853c0dc5SEd Tanous QSFP56, 108853c0dc5SEd Tanous MiniSASHD, 109853c0dc5SEd Tanous }; 110853c0dc5SEd Tanous 111853c0dc5SEd Tanous enum class MediumType{ 112853c0dc5SEd Tanous Invalid, 113853c0dc5SEd Tanous Copper, 114853c0dc5SEd Tanous FiberOptic, 115853c0dc5SEd Tanous }; 116853c0dc5SEd Tanous 117853c0dc5SEd Tanous enum class FiberConnectionType{ 118853c0dc5SEd Tanous Invalid, 119853c0dc5SEd Tanous SingleMode, 120853c0dc5SEd Tanous MultiMode, 121853c0dc5SEd Tanous }; 122853c0dc5SEd Tanous 123*a8d8f9d8SEd Tanous enum class LLDPSystemCapabilities{ 124*a8d8f9d8SEd Tanous Invalid, 125*a8d8f9d8SEd Tanous None, 126*a8d8f9d8SEd Tanous Bridge, 127*a8d8f9d8SEd Tanous DOCSISCableDevice, 128*a8d8f9d8SEd Tanous Other, 129*a8d8f9d8SEd Tanous Repeater, 130*a8d8f9d8SEd Tanous Router, 131*a8d8f9d8SEd Tanous Station, 132*a8d8f9d8SEd Tanous Telephone, 133*a8d8f9d8SEd Tanous WLANAccessPoint, 134*a8d8f9d8SEd Tanous }; 135*a8d8f9d8SEd Tanous 136*a8d8f9d8SEd Tanous enum class CurrentPortConfigurationState{ 137*a8d8f9d8SEd Tanous Invalid, 138*a8d8f9d8SEd Tanous Disabled, 139*a8d8f9d8SEd Tanous BindInProgress, 140*a8d8f9d8SEd Tanous UnbindInProgress, 141*a8d8f9d8SEd Tanous DSP, 142*a8d8f9d8SEd Tanous USP, 143*a8d8f9d8SEd Tanous Reserved, 144*a8d8f9d8SEd Tanous }; 145*a8d8f9d8SEd Tanous 146*a8d8f9d8SEd Tanous enum class ConnectedDeviceMode{ 147*a8d8f9d8SEd Tanous Invalid, 148*a8d8f9d8SEd Tanous Disconnected, 149*a8d8f9d8SEd Tanous RCD, 150*a8d8f9d8SEd Tanous CXL68BFlitAndVH, 151*a8d8f9d8SEd Tanous Standard256BFlit, 152*a8d8f9d8SEd Tanous CXLLatencyOptimized256BFlit, 153*a8d8f9d8SEd Tanous PBR, 154*a8d8f9d8SEd Tanous }; 155*a8d8f9d8SEd Tanous 156*a8d8f9d8SEd Tanous enum class ConnectedDeviceType{ 157*a8d8f9d8SEd Tanous Invalid, 158*a8d8f9d8SEd Tanous None, 159*a8d8f9d8SEd Tanous PCIeDevice, 160*a8d8f9d8SEd Tanous Type1, 161*a8d8f9d8SEd Tanous Type2, 162*a8d8f9d8SEd Tanous Type3SLD, 163*a8d8f9d8SEd Tanous Type3MLD, 164*a8d8f9d8SEd Tanous }; 165*a8d8f9d8SEd Tanous 166853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PortType, { 167853c0dc5SEd Tanous {PortType::Invalid, "Invalid"}, 168853c0dc5SEd Tanous {PortType::UpstreamPort, "UpstreamPort"}, 169853c0dc5SEd Tanous {PortType::DownstreamPort, "DownstreamPort"}, 170853c0dc5SEd Tanous {PortType::InterswitchPort, "InterswitchPort"}, 171853c0dc5SEd Tanous {PortType::ManagementPort, "ManagementPort"}, 172853c0dc5SEd Tanous {PortType::BidirectionalPort, "BidirectionalPort"}, 173853c0dc5SEd Tanous {PortType::UnconfiguredPort, "UnconfiguredPort"}, 174853c0dc5SEd Tanous }); 175853c0dc5SEd Tanous 176853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PortMedium, { 177853c0dc5SEd Tanous {PortMedium::Invalid, "Invalid"}, 178853c0dc5SEd Tanous {PortMedium::Electrical, "Electrical"}, 179853c0dc5SEd Tanous {PortMedium::Optical, "Optical"}, 180853c0dc5SEd Tanous }); 181853c0dc5SEd Tanous 182853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LinkState, { 183853c0dc5SEd Tanous {LinkState::Invalid, "Invalid"}, 184853c0dc5SEd Tanous {LinkState::Enabled, "Enabled"}, 185853c0dc5SEd Tanous {LinkState::Disabled, "Disabled"}, 186853c0dc5SEd Tanous }); 187853c0dc5SEd Tanous 188853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 189853c0dc5SEd Tanous {LinkStatus::Invalid, "Invalid"}, 190853c0dc5SEd Tanous {LinkStatus::LinkUp, "LinkUp"}, 191853c0dc5SEd Tanous {LinkStatus::Starting, "Starting"}, 192853c0dc5SEd Tanous {LinkStatus::Training, "Training"}, 193853c0dc5SEd Tanous {LinkStatus::LinkDown, "LinkDown"}, 194853c0dc5SEd Tanous {LinkStatus::NoLink, "NoLink"}, 195853c0dc5SEd Tanous }); 196853c0dc5SEd Tanous 197853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LinkNetworkTechnology, { 198853c0dc5SEd Tanous {LinkNetworkTechnology::Invalid, "Invalid"}, 199853c0dc5SEd Tanous {LinkNetworkTechnology::Ethernet, "Ethernet"}, 200853c0dc5SEd Tanous {LinkNetworkTechnology::InfiniBand, "InfiniBand"}, 201853c0dc5SEd Tanous {LinkNetworkTechnology::FibreChannel, "FibreChannel"}, 202853c0dc5SEd Tanous {LinkNetworkTechnology::GenZ, "GenZ"}, 203*a8d8f9d8SEd Tanous {LinkNetworkTechnology::PCIe, "PCIe"}, 204853c0dc5SEd Tanous }); 205853c0dc5SEd Tanous 206853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(PortConnectionType, { 207853c0dc5SEd Tanous {PortConnectionType::Invalid, "Invalid"}, 208853c0dc5SEd Tanous {PortConnectionType::NotConnected, "NotConnected"}, 209853c0dc5SEd Tanous {PortConnectionType::NPort, "NPort"}, 210853c0dc5SEd Tanous {PortConnectionType::PointToPoint, "PointToPoint"}, 211853c0dc5SEd Tanous {PortConnectionType::PrivateLoop, "PrivateLoop"}, 212853c0dc5SEd Tanous {PortConnectionType::PublicLoop, "PublicLoop"}, 213853c0dc5SEd Tanous {PortConnectionType::Generic, "Generic"}, 214853c0dc5SEd Tanous {PortConnectionType::ExtenderFabric, "ExtenderFabric"}, 215853c0dc5SEd Tanous {PortConnectionType::FPort, "FPort"}, 216853c0dc5SEd Tanous {PortConnectionType::EPort, "EPort"}, 217853c0dc5SEd Tanous {PortConnectionType::TEPort, "TEPort"}, 218853c0dc5SEd Tanous {PortConnectionType::NPPort, "NPPort"}, 219853c0dc5SEd Tanous {PortConnectionType::GPort, "GPort"}, 220853c0dc5SEd Tanous {PortConnectionType::NLPort, "NLPort"}, 221853c0dc5SEd Tanous {PortConnectionType::FLPort, "FLPort"}, 222853c0dc5SEd Tanous {PortConnectionType::EXPort, "EXPort"}, 223853c0dc5SEd Tanous {PortConnectionType::UPort, "UPort"}, 224853c0dc5SEd Tanous {PortConnectionType::DPort, "DPort"}, 225853c0dc5SEd Tanous }); 226853c0dc5SEd Tanous 227853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SupportedEthernetCapabilities, { 228853c0dc5SEd Tanous {SupportedEthernetCapabilities::Invalid, "Invalid"}, 229853c0dc5SEd Tanous {SupportedEthernetCapabilities::WakeOnLAN, "WakeOnLAN"}, 230853c0dc5SEd Tanous {SupportedEthernetCapabilities::EEE, "EEE"}, 231853c0dc5SEd Tanous }); 232853c0dc5SEd Tanous 233853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(FlowControl, { 234853c0dc5SEd Tanous {FlowControl::Invalid, "Invalid"}, 235853c0dc5SEd Tanous {FlowControl::None, "None"}, 236853c0dc5SEd Tanous {FlowControl::TX, "TX"}, 237853c0dc5SEd Tanous {FlowControl::RX, "RX"}, 238853c0dc5SEd Tanous {FlowControl::TX_RX, "TX_RX"}, 239853c0dc5SEd Tanous }); 240853c0dc5SEd Tanous 241853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(IEEE802IdSubtype, { 242853c0dc5SEd Tanous {IEEE802IdSubtype::Invalid, "Invalid"}, 243853c0dc5SEd Tanous {IEEE802IdSubtype::ChassisComp, "ChassisComp"}, 244853c0dc5SEd Tanous {IEEE802IdSubtype::IfAlias, "IfAlias"}, 245853c0dc5SEd Tanous {IEEE802IdSubtype::PortComp, "PortComp"}, 246853c0dc5SEd Tanous {IEEE802IdSubtype::MacAddr, "MacAddr"}, 247853c0dc5SEd Tanous {IEEE802IdSubtype::NetworkAddr, "NetworkAddr"}, 248853c0dc5SEd Tanous {IEEE802IdSubtype::IfName, "IfName"}, 249853c0dc5SEd Tanous {IEEE802IdSubtype::AgentId, "AgentId"}, 250853c0dc5SEd Tanous {IEEE802IdSubtype::LocalAssign, "LocalAssign"}, 251853c0dc5SEd Tanous {IEEE802IdSubtype::NotTransmitted, "NotTransmitted"}, 252853c0dc5SEd Tanous }); 253853c0dc5SEd Tanous 254853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(SFPType, { 255853c0dc5SEd Tanous {SFPType::Invalid, "Invalid"}, 256853c0dc5SEd Tanous {SFPType::SFP, "SFP"}, 257853c0dc5SEd Tanous {SFPType::SFPPlus, "SFPPlus"}, 258853c0dc5SEd Tanous {SFPType::SFP28, "SFP28"}, 259853c0dc5SEd Tanous {SFPType::cSFP, "cSFP"}, 260853c0dc5SEd Tanous {SFPType::SFPDD, "SFPDD"}, 261853c0dc5SEd Tanous {SFPType::QSFP, "QSFP"}, 262853c0dc5SEd Tanous {SFPType::QSFPPlus, "QSFPPlus"}, 263853c0dc5SEd Tanous {SFPType::QSFP14, "QSFP14"}, 264853c0dc5SEd Tanous {SFPType::QSFP28, "QSFP28"}, 265853c0dc5SEd Tanous {SFPType::QSFP56, "QSFP56"}, 266853c0dc5SEd Tanous {SFPType::MiniSASHD, "MiniSASHD"}, 267853c0dc5SEd Tanous }); 268853c0dc5SEd Tanous 269853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(MediumType, { 270853c0dc5SEd Tanous {MediumType::Invalid, "Invalid"}, 271853c0dc5SEd Tanous {MediumType::Copper, "Copper"}, 272853c0dc5SEd Tanous {MediumType::FiberOptic, "FiberOptic"}, 273853c0dc5SEd Tanous }); 274853c0dc5SEd Tanous 275853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(FiberConnectionType, { 276853c0dc5SEd Tanous {FiberConnectionType::Invalid, "Invalid"}, 277853c0dc5SEd Tanous {FiberConnectionType::SingleMode, "SingleMode"}, 278853c0dc5SEd Tanous {FiberConnectionType::MultiMode, "MultiMode"}, 279853c0dc5SEd Tanous }); 280853c0dc5SEd Tanous 281*a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(LLDPSystemCapabilities, { 282*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::Invalid, "Invalid"}, 283*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::None, "None"}, 284*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::Bridge, "Bridge"}, 285*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::DOCSISCableDevice, "DOCSISCableDevice"}, 286*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::Other, "Other"}, 287*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::Repeater, "Repeater"}, 288*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::Router, "Router"}, 289*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::Station, "Station"}, 290*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::Telephone, "Telephone"}, 291*a8d8f9d8SEd Tanous {LLDPSystemCapabilities::WLANAccessPoint, "WLANAccessPoint"}, 292*a8d8f9d8SEd Tanous }); 293*a8d8f9d8SEd Tanous 294*a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(CurrentPortConfigurationState, { 295*a8d8f9d8SEd Tanous {CurrentPortConfigurationState::Invalid, "Invalid"}, 296*a8d8f9d8SEd Tanous {CurrentPortConfigurationState::Disabled, "Disabled"}, 297*a8d8f9d8SEd Tanous {CurrentPortConfigurationState::BindInProgress, "BindInProgress"}, 298*a8d8f9d8SEd Tanous {CurrentPortConfigurationState::UnbindInProgress, "UnbindInProgress"}, 299*a8d8f9d8SEd Tanous {CurrentPortConfigurationState::DSP, "DSP"}, 300*a8d8f9d8SEd Tanous {CurrentPortConfigurationState::USP, "USP"}, 301*a8d8f9d8SEd Tanous {CurrentPortConfigurationState::Reserved, "Reserved"}, 302*a8d8f9d8SEd Tanous }); 303*a8d8f9d8SEd Tanous 304*a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceMode, { 305*a8d8f9d8SEd Tanous {ConnectedDeviceMode::Invalid, "Invalid"}, 306*a8d8f9d8SEd Tanous {ConnectedDeviceMode::Disconnected, "Disconnected"}, 307*a8d8f9d8SEd Tanous {ConnectedDeviceMode::RCD, "RCD"}, 308*a8d8f9d8SEd Tanous {ConnectedDeviceMode::CXL68BFlitAndVH, "CXL68BFlitAndVH"}, 309*a8d8f9d8SEd Tanous {ConnectedDeviceMode::Standard256BFlit, "Standard256BFlit"}, 310*a8d8f9d8SEd Tanous {ConnectedDeviceMode::CXLLatencyOptimized256BFlit, "CXLLatencyOptimized256BFlit"}, 311*a8d8f9d8SEd Tanous {ConnectedDeviceMode::PBR, "PBR"}, 312*a8d8f9d8SEd Tanous }); 313*a8d8f9d8SEd Tanous 314*a8d8f9d8SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceType, { 315*a8d8f9d8SEd Tanous {ConnectedDeviceType::Invalid, "Invalid"}, 316*a8d8f9d8SEd Tanous {ConnectedDeviceType::None, "None"}, 317*a8d8f9d8SEd Tanous {ConnectedDeviceType::PCIeDevice, "PCIeDevice"}, 318*a8d8f9d8SEd Tanous {ConnectedDeviceType::Type1, "Type1"}, 319*a8d8f9d8SEd Tanous {ConnectedDeviceType::Type2, "Type2"}, 320*a8d8f9d8SEd Tanous {ConnectedDeviceType::Type3SLD, "Type3SLD"}, 321*a8d8f9d8SEd Tanous {ConnectedDeviceType::Type3MLD, "Type3MLD"}, 322*a8d8f9d8SEd Tanous }); 323*a8d8f9d8SEd Tanous 324853c0dc5SEd Tanous } 325853c0dc5SEd Tanous // clang-format on 326