1 #pragma once 2 #include <nlohmann/json.hpp> 3 4 namespace port 5 { 6 // clang-format off 7 8 enum class PortType{ 9 Invalid, 10 UpstreamPort, 11 DownstreamPort, 12 InterswitchPort, 13 ManagementPort, 14 BidirectionalPort, 15 UnconfiguredPort, 16 }; 17 18 enum class PortMedium{ 19 Invalid, 20 Electrical, 21 Optical, 22 }; 23 24 enum class LinkState{ 25 Invalid, 26 Enabled, 27 Disabled, 28 }; 29 30 enum class LinkStatus{ 31 Invalid, 32 LinkUp, 33 Starting, 34 Training, 35 LinkDown, 36 NoLink, 37 }; 38 39 enum class LinkNetworkTechnology{ 40 Invalid, 41 Ethernet, 42 InfiniBand, 43 FibreChannel, 44 GenZ, 45 PCIe, 46 }; 47 48 enum class PortConnectionType{ 49 Invalid, 50 NotConnected, 51 NPort, 52 PointToPoint, 53 PrivateLoop, 54 PublicLoop, 55 Generic, 56 ExtenderFabric, 57 FPort, 58 EPort, 59 TEPort, 60 NPPort, 61 GPort, 62 NLPort, 63 FLPort, 64 EXPort, 65 UPort, 66 DPort, 67 }; 68 69 enum class SupportedEthernetCapabilities{ 70 Invalid, 71 WakeOnLAN, 72 EEE, 73 }; 74 75 enum class FlowControl{ 76 Invalid, 77 None, 78 TX, 79 RX, 80 TX_RX, 81 }; 82 83 enum class IEEE802IdSubtype{ 84 Invalid, 85 ChassisComp, 86 IfAlias, 87 PortComp, 88 MacAddr, 89 NetworkAddr, 90 IfName, 91 AgentId, 92 LocalAssign, 93 NotTransmitted, 94 }; 95 96 enum class SFPType{ 97 Invalid, 98 SFP, 99 SFPPlus, 100 SFP28, 101 cSFP, 102 SFPDD, 103 QSFP, 104 QSFPPlus, 105 QSFP14, 106 QSFP28, 107 QSFP56, 108 MiniSASHD, 109 }; 110 111 enum class MediumType{ 112 Invalid, 113 Copper, 114 FiberOptic, 115 }; 116 117 enum class FiberConnectionType{ 118 Invalid, 119 SingleMode, 120 MultiMode, 121 }; 122 123 enum class LLDPSystemCapabilities{ 124 Invalid, 125 None, 126 Bridge, 127 DOCSISCableDevice, 128 Other, 129 Repeater, 130 Router, 131 Station, 132 Telephone, 133 WLANAccessPoint, 134 }; 135 136 enum class CurrentPortConfigurationState{ 137 Invalid, 138 Disabled, 139 BindInProgress, 140 UnbindInProgress, 141 DSP, 142 USP, 143 Reserved, 144 }; 145 146 enum class ConnectedDeviceMode{ 147 Invalid, 148 Disconnected, 149 RCD, 150 CXL68BFlitAndVH, 151 Standard256BFlit, 152 CXLLatencyOptimized256BFlit, 153 PBR, 154 }; 155 156 enum class ConnectedDeviceType{ 157 Invalid, 158 None, 159 PCIeDevice, 160 Type1, 161 Type2, 162 Type3SLD, 163 Type3MLD, 164 }; 165 166 NLOHMANN_JSON_SERIALIZE_ENUM(PortType, { 167 {PortType::Invalid, "Invalid"}, 168 {PortType::UpstreamPort, "UpstreamPort"}, 169 {PortType::DownstreamPort, "DownstreamPort"}, 170 {PortType::InterswitchPort, "InterswitchPort"}, 171 {PortType::ManagementPort, "ManagementPort"}, 172 {PortType::BidirectionalPort, "BidirectionalPort"}, 173 {PortType::UnconfiguredPort, "UnconfiguredPort"}, 174 }); 175 176 NLOHMANN_JSON_SERIALIZE_ENUM(PortMedium, { 177 {PortMedium::Invalid, "Invalid"}, 178 {PortMedium::Electrical, "Electrical"}, 179 {PortMedium::Optical, "Optical"}, 180 }); 181 182 NLOHMANN_JSON_SERIALIZE_ENUM(LinkState, { 183 {LinkState::Invalid, "Invalid"}, 184 {LinkState::Enabled, "Enabled"}, 185 {LinkState::Disabled, "Disabled"}, 186 }); 187 188 NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 189 {LinkStatus::Invalid, "Invalid"}, 190 {LinkStatus::LinkUp, "LinkUp"}, 191 {LinkStatus::Starting, "Starting"}, 192 {LinkStatus::Training, "Training"}, 193 {LinkStatus::LinkDown, "LinkDown"}, 194 {LinkStatus::NoLink, "NoLink"}, 195 }); 196 197 NLOHMANN_JSON_SERIALIZE_ENUM(LinkNetworkTechnology, { 198 {LinkNetworkTechnology::Invalid, "Invalid"}, 199 {LinkNetworkTechnology::Ethernet, "Ethernet"}, 200 {LinkNetworkTechnology::InfiniBand, "InfiniBand"}, 201 {LinkNetworkTechnology::FibreChannel, "FibreChannel"}, 202 {LinkNetworkTechnology::GenZ, "GenZ"}, 203 {LinkNetworkTechnology::PCIe, "PCIe"}, 204 }); 205 206 NLOHMANN_JSON_SERIALIZE_ENUM(PortConnectionType, { 207 {PortConnectionType::Invalid, "Invalid"}, 208 {PortConnectionType::NotConnected, "NotConnected"}, 209 {PortConnectionType::NPort, "NPort"}, 210 {PortConnectionType::PointToPoint, "PointToPoint"}, 211 {PortConnectionType::PrivateLoop, "PrivateLoop"}, 212 {PortConnectionType::PublicLoop, "PublicLoop"}, 213 {PortConnectionType::Generic, "Generic"}, 214 {PortConnectionType::ExtenderFabric, "ExtenderFabric"}, 215 {PortConnectionType::FPort, "FPort"}, 216 {PortConnectionType::EPort, "EPort"}, 217 {PortConnectionType::TEPort, "TEPort"}, 218 {PortConnectionType::NPPort, "NPPort"}, 219 {PortConnectionType::GPort, "GPort"}, 220 {PortConnectionType::NLPort, "NLPort"}, 221 {PortConnectionType::FLPort, "FLPort"}, 222 {PortConnectionType::EXPort, "EXPort"}, 223 {PortConnectionType::UPort, "UPort"}, 224 {PortConnectionType::DPort, "DPort"}, 225 }); 226 227 NLOHMANN_JSON_SERIALIZE_ENUM(SupportedEthernetCapabilities, { 228 {SupportedEthernetCapabilities::Invalid, "Invalid"}, 229 {SupportedEthernetCapabilities::WakeOnLAN, "WakeOnLAN"}, 230 {SupportedEthernetCapabilities::EEE, "EEE"}, 231 }); 232 233 NLOHMANN_JSON_SERIALIZE_ENUM(FlowControl, { 234 {FlowControl::Invalid, "Invalid"}, 235 {FlowControl::None, "None"}, 236 {FlowControl::TX, "TX"}, 237 {FlowControl::RX, "RX"}, 238 {FlowControl::TX_RX, "TX_RX"}, 239 }); 240 241 NLOHMANN_JSON_SERIALIZE_ENUM(IEEE802IdSubtype, { 242 {IEEE802IdSubtype::Invalid, "Invalid"}, 243 {IEEE802IdSubtype::ChassisComp, "ChassisComp"}, 244 {IEEE802IdSubtype::IfAlias, "IfAlias"}, 245 {IEEE802IdSubtype::PortComp, "PortComp"}, 246 {IEEE802IdSubtype::MacAddr, "MacAddr"}, 247 {IEEE802IdSubtype::NetworkAddr, "NetworkAddr"}, 248 {IEEE802IdSubtype::IfName, "IfName"}, 249 {IEEE802IdSubtype::AgentId, "AgentId"}, 250 {IEEE802IdSubtype::LocalAssign, "LocalAssign"}, 251 {IEEE802IdSubtype::NotTransmitted, "NotTransmitted"}, 252 }); 253 254 NLOHMANN_JSON_SERIALIZE_ENUM(SFPType, { 255 {SFPType::Invalid, "Invalid"}, 256 {SFPType::SFP, "SFP"}, 257 {SFPType::SFPPlus, "SFPPlus"}, 258 {SFPType::SFP28, "SFP28"}, 259 {SFPType::cSFP, "cSFP"}, 260 {SFPType::SFPDD, "SFPDD"}, 261 {SFPType::QSFP, "QSFP"}, 262 {SFPType::QSFPPlus, "QSFPPlus"}, 263 {SFPType::QSFP14, "QSFP14"}, 264 {SFPType::QSFP28, "QSFP28"}, 265 {SFPType::QSFP56, "QSFP56"}, 266 {SFPType::MiniSASHD, "MiniSASHD"}, 267 }); 268 269 NLOHMANN_JSON_SERIALIZE_ENUM(MediumType, { 270 {MediumType::Invalid, "Invalid"}, 271 {MediumType::Copper, "Copper"}, 272 {MediumType::FiberOptic, "FiberOptic"}, 273 }); 274 275 NLOHMANN_JSON_SERIALIZE_ENUM(FiberConnectionType, { 276 {FiberConnectionType::Invalid, "Invalid"}, 277 {FiberConnectionType::SingleMode, "SingleMode"}, 278 {FiberConnectionType::MultiMode, "MultiMode"}, 279 }); 280 281 NLOHMANN_JSON_SERIALIZE_ENUM(LLDPSystemCapabilities, { 282 {LLDPSystemCapabilities::Invalid, "Invalid"}, 283 {LLDPSystemCapabilities::None, "None"}, 284 {LLDPSystemCapabilities::Bridge, "Bridge"}, 285 {LLDPSystemCapabilities::DOCSISCableDevice, "DOCSISCableDevice"}, 286 {LLDPSystemCapabilities::Other, "Other"}, 287 {LLDPSystemCapabilities::Repeater, "Repeater"}, 288 {LLDPSystemCapabilities::Router, "Router"}, 289 {LLDPSystemCapabilities::Station, "Station"}, 290 {LLDPSystemCapabilities::Telephone, "Telephone"}, 291 {LLDPSystemCapabilities::WLANAccessPoint, "WLANAccessPoint"}, 292 }); 293 294 NLOHMANN_JSON_SERIALIZE_ENUM(CurrentPortConfigurationState, { 295 {CurrentPortConfigurationState::Invalid, "Invalid"}, 296 {CurrentPortConfigurationState::Disabled, "Disabled"}, 297 {CurrentPortConfigurationState::BindInProgress, "BindInProgress"}, 298 {CurrentPortConfigurationState::UnbindInProgress, "UnbindInProgress"}, 299 {CurrentPortConfigurationState::DSP, "DSP"}, 300 {CurrentPortConfigurationState::USP, "USP"}, 301 {CurrentPortConfigurationState::Reserved, "Reserved"}, 302 }); 303 304 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceMode, { 305 {ConnectedDeviceMode::Invalid, "Invalid"}, 306 {ConnectedDeviceMode::Disconnected, "Disconnected"}, 307 {ConnectedDeviceMode::RCD, "RCD"}, 308 {ConnectedDeviceMode::CXL68BFlitAndVH, "CXL68BFlitAndVH"}, 309 {ConnectedDeviceMode::Standard256BFlit, "Standard256BFlit"}, 310 {ConnectedDeviceMode::CXLLatencyOptimized256BFlit, "CXLLatencyOptimized256BFlit"}, 311 {ConnectedDeviceMode::PBR, "PBR"}, 312 }); 313 314 NLOHMANN_JSON_SERIALIZE_ENUM(ConnectedDeviceType, { 315 {ConnectedDeviceType::Invalid, "Invalid"}, 316 {ConnectedDeviceType::None, "None"}, 317 {ConnectedDeviceType::PCIeDevice, "PCIeDevice"}, 318 {ConnectedDeviceType::Type1, "Type1"}, 319 {ConnectedDeviceType::Type2, "Type2"}, 320 {ConnectedDeviceType::Type3SLD, "Type3SLD"}, 321 {ConnectedDeviceType::Type3MLD, "Type3MLD"}, 322 }); 323 324 } 325 // clang-format on 326