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 AddressState{ 27 Invalid, 28 Preferred, 29 Deprecated, 30 Tentative, 31 Failed, 32 }; 33 34 NLOHMANN_JSON_SERIALIZE_ENUM(IPv4AddressOrigin, { 35 {IPv4AddressOrigin::Invalid, "Invalid"}, 36 {IPv4AddressOrigin::Static, "Static"}, 37 {IPv4AddressOrigin::DHCP, "DHCP"}, 38 {IPv4AddressOrigin::BOOTP, "BOOTP"}, 39 {IPv4AddressOrigin::IPv4LinkLocal, "IPv4LinkLocal"}, 40 }); 41 42 NLOHMANN_JSON_SERIALIZE_ENUM(IPv6AddressOrigin, { 43 {IPv6AddressOrigin::Invalid, "Invalid"}, 44 {IPv6AddressOrigin::Static, "Static"}, 45 {IPv6AddressOrigin::DHCPv6, "DHCPv6"}, 46 {IPv6AddressOrigin::LinkLocal, "LinkLocal"}, 47 {IPv6AddressOrigin::SLAAC, "SLAAC"}, 48 }); 49 50 NLOHMANN_JSON_SERIALIZE_ENUM(AddressState, { 51 {AddressState::Invalid, "Invalid"}, 52 {AddressState::Preferred, "Preferred"}, 53 {AddressState::Deprecated, "Deprecated"}, 54 {AddressState::Tentative, "Tentative"}, 55 {AddressState::Failed, "Failed"}, 56 }); 57 58 } 59 // clang-format on 60