blob: 3b1896b397dd625dbc068901ca31ca63e03c344d [file] [log] [blame]
#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