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 }; 46 47 enum class PortConnectionType{ 48 Invalid, 49 NotConnected, 50 NPort, 51 PointToPoint, 52 PrivateLoop, 53 PublicLoop, 54 Generic, 55 ExtenderFabric, 56 FPort, 57 EPort, 58 TEPort, 59 NPPort, 60 GPort, 61 NLPort, 62 FLPort, 63 EXPort, 64 UPort, 65 DPort, 66 }; 67 68 enum class SupportedEthernetCapabilities{ 69 Invalid, 70 WakeOnLAN, 71 EEE, 72 }; 73 74 enum class FlowControl{ 75 Invalid, 76 None, 77 TX, 78 RX, 79 TX_RX, 80 }; 81 82 enum class IEEE802IdSubtype{ 83 Invalid, 84 ChassisComp, 85 IfAlias, 86 PortComp, 87 MacAddr, 88 NetworkAddr, 89 IfName, 90 AgentId, 91 LocalAssign, 92 NotTransmitted, 93 }; 94 95 enum class SFPType{ 96 Invalid, 97 SFP, 98 SFPPlus, 99 SFP28, 100 cSFP, 101 SFPDD, 102 QSFP, 103 QSFPPlus, 104 QSFP14, 105 QSFP28, 106 QSFP56, 107 MiniSASHD, 108 }; 109 110 enum class MediumType{ 111 Invalid, 112 Copper, 113 FiberOptic, 114 }; 115 116 enum class FiberConnectionType{ 117 Invalid, 118 SingleMode, 119 MultiMode, 120 }; 121 122 NLOHMANN_JSON_SERIALIZE_ENUM(PortType, { 123 {PortType::Invalid, "Invalid"}, 124 {PortType::UpstreamPort, "UpstreamPort"}, 125 {PortType::DownstreamPort, "DownstreamPort"}, 126 {PortType::InterswitchPort, "InterswitchPort"}, 127 {PortType::ManagementPort, "ManagementPort"}, 128 {PortType::BidirectionalPort, "BidirectionalPort"}, 129 {PortType::UnconfiguredPort, "UnconfiguredPort"}, 130 }); 131 132 NLOHMANN_JSON_SERIALIZE_ENUM(PortMedium, { 133 {PortMedium::Invalid, "Invalid"}, 134 {PortMedium::Electrical, "Electrical"}, 135 {PortMedium::Optical, "Optical"}, 136 }); 137 138 NLOHMANN_JSON_SERIALIZE_ENUM(LinkState, { 139 {LinkState::Invalid, "Invalid"}, 140 {LinkState::Enabled, "Enabled"}, 141 {LinkState::Disabled, "Disabled"}, 142 }); 143 144 NLOHMANN_JSON_SERIALIZE_ENUM(LinkStatus, { 145 {LinkStatus::Invalid, "Invalid"}, 146 {LinkStatus::LinkUp, "LinkUp"}, 147 {LinkStatus::Starting, "Starting"}, 148 {LinkStatus::Training, "Training"}, 149 {LinkStatus::LinkDown, "LinkDown"}, 150 {LinkStatus::NoLink, "NoLink"}, 151 }); 152 153 NLOHMANN_JSON_SERIALIZE_ENUM(LinkNetworkTechnology, { 154 {LinkNetworkTechnology::Invalid, "Invalid"}, 155 {LinkNetworkTechnology::Ethernet, "Ethernet"}, 156 {LinkNetworkTechnology::InfiniBand, "InfiniBand"}, 157 {LinkNetworkTechnology::FibreChannel, "FibreChannel"}, 158 {LinkNetworkTechnology::GenZ, "GenZ"}, 159 }); 160 161 NLOHMANN_JSON_SERIALIZE_ENUM(PortConnectionType, { 162 {PortConnectionType::Invalid, "Invalid"}, 163 {PortConnectionType::NotConnected, "NotConnected"}, 164 {PortConnectionType::NPort, "NPort"}, 165 {PortConnectionType::PointToPoint, "PointToPoint"}, 166 {PortConnectionType::PrivateLoop, "PrivateLoop"}, 167 {PortConnectionType::PublicLoop, "PublicLoop"}, 168 {PortConnectionType::Generic, "Generic"}, 169 {PortConnectionType::ExtenderFabric, "ExtenderFabric"}, 170 {PortConnectionType::FPort, "FPort"}, 171 {PortConnectionType::EPort, "EPort"}, 172 {PortConnectionType::TEPort, "TEPort"}, 173 {PortConnectionType::NPPort, "NPPort"}, 174 {PortConnectionType::GPort, "GPort"}, 175 {PortConnectionType::NLPort, "NLPort"}, 176 {PortConnectionType::FLPort, "FLPort"}, 177 {PortConnectionType::EXPort, "EXPort"}, 178 {PortConnectionType::UPort, "UPort"}, 179 {PortConnectionType::DPort, "DPort"}, 180 }); 181 182 NLOHMANN_JSON_SERIALIZE_ENUM(SupportedEthernetCapabilities, { 183 {SupportedEthernetCapabilities::Invalid, "Invalid"}, 184 {SupportedEthernetCapabilities::WakeOnLAN, "WakeOnLAN"}, 185 {SupportedEthernetCapabilities::EEE, "EEE"}, 186 }); 187 188 NLOHMANN_JSON_SERIALIZE_ENUM(FlowControl, { 189 {FlowControl::Invalid, "Invalid"}, 190 {FlowControl::None, "None"}, 191 {FlowControl::TX, "TX"}, 192 {FlowControl::RX, "RX"}, 193 {FlowControl::TX_RX, "TX_RX"}, 194 }); 195 196 NLOHMANN_JSON_SERIALIZE_ENUM(IEEE802IdSubtype, { 197 {IEEE802IdSubtype::Invalid, "Invalid"}, 198 {IEEE802IdSubtype::ChassisComp, "ChassisComp"}, 199 {IEEE802IdSubtype::IfAlias, "IfAlias"}, 200 {IEEE802IdSubtype::PortComp, "PortComp"}, 201 {IEEE802IdSubtype::MacAddr, "MacAddr"}, 202 {IEEE802IdSubtype::NetworkAddr, "NetworkAddr"}, 203 {IEEE802IdSubtype::IfName, "IfName"}, 204 {IEEE802IdSubtype::AgentId, "AgentId"}, 205 {IEEE802IdSubtype::LocalAssign, "LocalAssign"}, 206 {IEEE802IdSubtype::NotTransmitted, "NotTransmitted"}, 207 }); 208 209 NLOHMANN_JSON_SERIALIZE_ENUM(SFPType, { 210 {SFPType::Invalid, "Invalid"}, 211 {SFPType::SFP, "SFP"}, 212 {SFPType::SFPPlus, "SFPPlus"}, 213 {SFPType::SFP28, "SFP28"}, 214 {SFPType::cSFP, "cSFP"}, 215 {SFPType::SFPDD, "SFPDD"}, 216 {SFPType::QSFP, "QSFP"}, 217 {SFPType::QSFPPlus, "QSFPPlus"}, 218 {SFPType::QSFP14, "QSFP14"}, 219 {SFPType::QSFP28, "QSFP28"}, 220 {SFPType::QSFP56, "QSFP56"}, 221 {SFPType::MiniSASHD, "MiniSASHD"}, 222 }); 223 224 NLOHMANN_JSON_SERIALIZE_ENUM(MediumType, { 225 {MediumType::Invalid, "Invalid"}, 226 {MediumType::Copper, "Copper"}, 227 {MediumType::FiberOptic, "FiberOptic"}, 228 }); 229 230 NLOHMANN_JSON_SERIALIZE_ENUM(FiberConnectionType, { 231 {FiberConnectionType::Invalid, "Invalid"}, 232 {FiberConnectionType::SingleMode, "SingleMode"}, 233 {FiberConnectionType::MultiMode, "MultiMode"}, 234 }); 235 236 } 237 // clang-format on 238