1*40e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 2*40e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3853c0dc5SEd Tanous #pragma once 4853c0dc5SEd Tanous #include <nlohmann/json.hpp> 5853c0dc5SEd Tanous 6853c0dc5SEd Tanous namespace network_device_function 7853c0dc5SEd Tanous { 8853c0dc5SEd Tanous // clang-format off 9853c0dc5SEd Tanous 10853c0dc5SEd Tanous enum class NetworkDeviceTechnology{ 11853c0dc5SEd Tanous Invalid, 12853c0dc5SEd Tanous Disabled, 13853c0dc5SEd Tanous Ethernet, 14853c0dc5SEd Tanous FibreChannel, 15853c0dc5SEd Tanous iSCSI, 16853c0dc5SEd Tanous FibreChannelOverEthernet, 17853c0dc5SEd Tanous InfiniBand, 18853c0dc5SEd Tanous }; 19853c0dc5SEd Tanous 20853c0dc5SEd Tanous enum class IPAddressType{ 21853c0dc5SEd Tanous Invalid, 22853c0dc5SEd Tanous IPv4, 23853c0dc5SEd Tanous IPv6, 24853c0dc5SEd Tanous }; 25853c0dc5SEd Tanous 26853c0dc5SEd Tanous enum class AuthenticationMethod{ 27853c0dc5SEd Tanous Invalid, 28853c0dc5SEd Tanous None, 29853c0dc5SEd Tanous CHAP, 30853c0dc5SEd Tanous MutualCHAP, 31853c0dc5SEd Tanous }; 32853c0dc5SEd Tanous 33853c0dc5SEd Tanous enum class WWNSource{ 34853c0dc5SEd Tanous Invalid, 35853c0dc5SEd Tanous ConfiguredLocally, 36853c0dc5SEd Tanous ProvidedByFabric, 37853c0dc5SEd Tanous }; 38853c0dc5SEd Tanous 39853c0dc5SEd Tanous enum class BootMode{ 40853c0dc5SEd Tanous Invalid, 41853c0dc5SEd Tanous Disabled, 42853c0dc5SEd Tanous PXE, 43853c0dc5SEd Tanous iSCSI, 44853c0dc5SEd Tanous FibreChannel, 45853c0dc5SEd Tanous FibreChannelOverEthernet, 46853c0dc5SEd Tanous HTTP, 47853c0dc5SEd Tanous }; 48853c0dc5SEd Tanous 49853c0dc5SEd Tanous enum class DataDirection{ 50853c0dc5SEd Tanous Invalid, 51853c0dc5SEd Tanous None, 52853c0dc5SEd Tanous Ingress, 53853c0dc5SEd Tanous Egress, 54853c0dc5SEd Tanous }; 55853c0dc5SEd Tanous 56853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(NetworkDeviceTechnology, { 57853c0dc5SEd Tanous {NetworkDeviceTechnology::Invalid, "Invalid"}, 58853c0dc5SEd Tanous {NetworkDeviceTechnology::Disabled, "Disabled"}, 59853c0dc5SEd Tanous {NetworkDeviceTechnology::Ethernet, "Ethernet"}, 60853c0dc5SEd Tanous {NetworkDeviceTechnology::FibreChannel, "FibreChannel"}, 61853c0dc5SEd Tanous {NetworkDeviceTechnology::iSCSI, "iSCSI"}, 62853c0dc5SEd Tanous {NetworkDeviceTechnology::FibreChannelOverEthernet, "FibreChannelOverEthernet"}, 63853c0dc5SEd Tanous {NetworkDeviceTechnology::InfiniBand, "InfiniBand"}, 64853c0dc5SEd Tanous }); 65853c0dc5SEd Tanous 66853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(IPAddressType, { 67853c0dc5SEd Tanous {IPAddressType::Invalid, "Invalid"}, 68853c0dc5SEd Tanous {IPAddressType::IPv4, "IPv4"}, 69853c0dc5SEd Tanous {IPAddressType::IPv6, "IPv6"}, 70853c0dc5SEd Tanous }); 71853c0dc5SEd Tanous 72853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AuthenticationMethod, { 73853c0dc5SEd Tanous {AuthenticationMethod::Invalid, "Invalid"}, 74853c0dc5SEd Tanous {AuthenticationMethod::None, "None"}, 75853c0dc5SEd Tanous {AuthenticationMethod::CHAP, "CHAP"}, 76853c0dc5SEd Tanous {AuthenticationMethod::MutualCHAP, "MutualCHAP"}, 77853c0dc5SEd Tanous }); 78853c0dc5SEd Tanous 79853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(WWNSource, { 80853c0dc5SEd Tanous {WWNSource::Invalid, "Invalid"}, 81853c0dc5SEd Tanous {WWNSource::ConfiguredLocally, "ConfiguredLocally"}, 82853c0dc5SEd Tanous {WWNSource::ProvidedByFabric, "ProvidedByFabric"}, 83853c0dc5SEd Tanous }); 84853c0dc5SEd Tanous 85853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(BootMode, { 86853c0dc5SEd Tanous {BootMode::Invalid, "Invalid"}, 87853c0dc5SEd Tanous {BootMode::Disabled, "Disabled"}, 88853c0dc5SEd Tanous {BootMode::PXE, "PXE"}, 89853c0dc5SEd Tanous {BootMode::iSCSI, "iSCSI"}, 90853c0dc5SEd Tanous {BootMode::FibreChannel, "FibreChannel"}, 91853c0dc5SEd Tanous {BootMode::FibreChannelOverEthernet, "FibreChannelOverEthernet"}, 92853c0dc5SEd Tanous {BootMode::HTTP, "HTTP"}, 93853c0dc5SEd Tanous }); 94853c0dc5SEd Tanous 95853c0dc5SEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(DataDirection, { 96853c0dc5SEd Tanous {DataDirection::Invalid, "Invalid"}, 97853c0dc5SEd Tanous {DataDirection::None, "None"}, 98853c0dc5SEd Tanous {DataDirection::Ingress, "Ingress"}, 99853c0dc5SEd Tanous {DataDirection::Egress, "Egress"}, 100853c0dc5SEd Tanous }); 101853c0dc5SEd Tanous 102853c0dc5SEd Tanous } 103853c0dc5SEd Tanous // clang-format on 104