1 // SPDX-License-Identifier: Apache-2.0 2 // SPDX-FileCopyrightText: Copyright OpenBMC Authors 3 #pragma once 4 #include <nlohmann/json.hpp> 5 6 namespace ip_addresses 7 { 8 // clang-format off 9 10 enum class IPv4AddressOrigin{ 11 Invalid, 12 Static, 13 DHCP, 14 BOOTP, 15 IPv4LinkLocal, 16 }; 17 18 enum class IPv6AddressOrigin{ 19 Invalid, 20 Static, 21 DHCPv6, 22 LinkLocal, 23 SLAAC, 24 }; 25 26 enum class SubnetMask{ 27 Invalid, 28 }; 29 30 enum class PrefixLength{ 31 Invalid, 32 }; 33 34 enum class AddressState{ 35 Invalid, 36 Preferred, 37 Deprecated, 38 Tentative, 39 Failed, 40 }; 41 42 NLOHMANN_JSON_SERIALIZE_ENUM(IPv4AddressOrigin, { 43 {IPv4AddressOrigin::Invalid, "Invalid"}, 44 {IPv4AddressOrigin::Static, "Static"}, 45 {IPv4AddressOrigin::DHCP, "DHCP"}, 46 {IPv4AddressOrigin::BOOTP, "BOOTP"}, 47 {IPv4AddressOrigin::IPv4LinkLocal, "IPv4LinkLocal"}, 48 }); 49 50 NLOHMANN_JSON_SERIALIZE_ENUM(IPv6AddressOrigin, { 51 {IPv6AddressOrigin::Invalid, "Invalid"}, 52 {IPv6AddressOrigin::Static, "Static"}, 53 {IPv6AddressOrigin::DHCPv6, "DHCPv6"}, 54 {IPv6AddressOrigin::LinkLocal, "LinkLocal"}, 55 {IPv6AddressOrigin::SLAAC, "SLAAC"}, 56 }); 57 58 NLOHMANN_JSON_SERIALIZE_ENUM(SubnetMask, { 59 {SubnetMask::Invalid, "Invalid"}, 60 }); 61 62 NLOHMANN_JSON_SERIALIZE_ENUM(PrefixLength, { 63 {PrefixLength::Invalid, "Invalid"}, 64 }); 65 66 NLOHMANN_JSON_SERIALIZE_ENUM(AddressState, { 67 {AddressState::Invalid, "Invalid"}, 68 {AddressState::Preferred, "Preferred"}, 69 {AddressState::Deprecated, "Deprecated"}, 70 {AddressState::Tentative, "Tentative"}, 71 {AddressState::Failed, "Failed"}, 72 }); 73 74 } 75 // clang-format on 76