| #pragma once |
| #include <cstdint> |
| #include <nlohmann/json.hpp> |
| |
| namespace ip_addresses |
| { |
| // clang-format off |
| |
| enum class IPv4AddressOrigin : std::uint8_t{ |
| Invalid, |
| Static, |
| DHCP, |
| BOOTP, |
| IPv4LinkLocal, |
| }; |
| |
| enum class IPv6AddressOrigin : std::uint8_t{ |
| Invalid, |
| Static, |
| DHCPv6, |
| LinkLocal, |
| SLAAC, |
| }; |
| |
| enum class AddressState : std::uint8_t{ |
| Invalid, |
| Preferred, |
| Deprecated, |
| Tentative, |
| Failed, |
| }; |
| |
| NLOHMANN_JSON_SERIALIZE_ENUM(IPv4AddressOrigin, { |
| {IPv4AddressOrigin::Invalid, "Invalid"}, |
| {IPv4AddressOrigin::Static, "Static"}, |
| {IPv4AddressOrigin::DHCP, "DHCP"}, |
| {IPv4AddressOrigin::BOOTP, "BOOTP"}, |
| {IPv4AddressOrigin::IPv4LinkLocal, "IPv4LinkLocal"}, |
| }); |
| |
| NLOHMANN_JSON_SERIALIZE_ENUM(IPv6AddressOrigin, { |
| {IPv6AddressOrigin::Invalid, "Invalid"}, |
| {IPv6AddressOrigin::Static, "Static"}, |
| {IPv6AddressOrigin::DHCPv6, "DHCPv6"}, |
| {IPv6AddressOrigin::LinkLocal, "LinkLocal"}, |
| {IPv6AddressOrigin::SLAAC, "SLAAC"}, |
| }); |
| |
| NLOHMANN_JSON_SERIALIZE_ENUM(AddressState, { |
| {AddressState::Invalid, "Invalid"}, |
| {AddressState::Preferred, "Preferred"}, |
| {AddressState::Deprecated, "Deprecated"}, |
| {AddressState::Tentative, "Tentative"}, |
| {AddressState::Failed, "Failed"}, |
| }); |
| |
| } // namespace ip_addresses |
| // clang-format on |