140e9b92eSEd Tanous // SPDX-License-Identifier: Apache-2.0 240e9b92eSEd Tanous // SPDX-FileCopyrightText: Copyright OpenBMC Authors 30ec8b83dSEd Tanous #pragma once 40ec8b83dSEd Tanous #include <nlohmann/json.hpp> 50ec8b83dSEd Tanous 60ec8b83dSEd Tanous namespace ip_addresses 70ec8b83dSEd Tanous { 80ec8b83dSEd Tanous // clang-format off 90ec8b83dSEd Tanous 100ec8b83dSEd Tanous enum class IPv4AddressOrigin{ 110ec8b83dSEd Tanous Invalid, 120ec8b83dSEd Tanous Static, 130ec8b83dSEd Tanous DHCP, 140ec8b83dSEd Tanous BOOTP, 150ec8b83dSEd Tanous IPv4LinkLocal, 160ec8b83dSEd Tanous }; 170ec8b83dSEd Tanous 180ec8b83dSEd Tanous enum class IPv6AddressOrigin{ 190ec8b83dSEd Tanous Invalid, 200ec8b83dSEd Tanous Static, 210ec8b83dSEd Tanous DHCPv6, 220ec8b83dSEd Tanous LinkLocal, 230ec8b83dSEd Tanous SLAAC, 240ec8b83dSEd Tanous }; 250ec8b83dSEd Tanous 26*d1a3caa4SChandramohan Harkude enum class SubnetMask{ 27*d1a3caa4SChandramohan Harkude Invalid, 28*d1a3caa4SChandramohan Harkude }; 29*d1a3caa4SChandramohan Harkude 30*d1a3caa4SChandramohan Harkude enum class PrefixLength{ 31*d1a3caa4SChandramohan Harkude Invalid, 32*d1a3caa4SChandramohan Harkude }; 33*d1a3caa4SChandramohan Harkude 340ec8b83dSEd Tanous enum class AddressState{ 350ec8b83dSEd Tanous Invalid, 360ec8b83dSEd Tanous Preferred, 370ec8b83dSEd Tanous Deprecated, 380ec8b83dSEd Tanous Tentative, 390ec8b83dSEd Tanous Failed, 400ec8b83dSEd Tanous }; 410ec8b83dSEd Tanous 420ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(IPv4AddressOrigin, { 430ec8b83dSEd Tanous {IPv4AddressOrigin::Invalid, "Invalid"}, 440ec8b83dSEd Tanous {IPv4AddressOrigin::Static, "Static"}, 450ec8b83dSEd Tanous {IPv4AddressOrigin::DHCP, "DHCP"}, 460ec8b83dSEd Tanous {IPv4AddressOrigin::BOOTP, "BOOTP"}, 470ec8b83dSEd Tanous {IPv4AddressOrigin::IPv4LinkLocal, "IPv4LinkLocal"}, 480ec8b83dSEd Tanous }); 490ec8b83dSEd Tanous 500ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(IPv6AddressOrigin, { 510ec8b83dSEd Tanous {IPv6AddressOrigin::Invalid, "Invalid"}, 520ec8b83dSEd Tanous {IPv6AddressOrigin::Static, "Static"}, 530ec8b83dSEd Tanous {IPv6AddressOrigin::DHCPv6, "DHCPv6"}, 540ec8b83dSEd Tanous {IPv6AddressOrigin::LinkLocal, "LinkLocal"}, 550ec8b83dSEd Tanous {IPv6AddressOrigin::SLAAC, "SLAAC"}, 560ec8b83dSEd Tanous }); 570ec8b83dSEd Tanous 58*d1a3caa4SChandramohan Harkude NLOHMANN_JSON_SERIALIZE_ENUM(SubnetMask, { 59*d1a3caa4SChandramohan Harkude {SubnetMask::Invalid, "Invalid"}, 60*d1a3caa4SChandramohan Harkude }); 61*d1a3caa4SChandramohan Harkude 62*d1a3caa4SChandramohan Harkude NLOHMANN_JSON_SERIALIZE_ENUM(PrefixLength, { 63*d1a3caa4SChandramohan Harkude {PrefixLength::Invalid, "Invalid"}, 64*d1a3caa4SChandramohan Harkude }); 65*d1a3caa4SChandramohan Harkude 660ec8b83dSEd Tanous NLOHMANN_JSON_SERIALIZE_ENUM(AddressState, { 670ec8b83dSEd Tanous {AddressState::Invalid, "Invalid"}, 680ec8b83dSEd Tanous {AddressState::Preferred, "Preferred"}, 690ec8b83dSEd Tanous {AddressState::Deprecated, "Deprecated"}, 700ec8b83dSEd Tanous {AddressState::Tentative, "Tentative"}, 710ec8b83dSEd Tanous {AddressState::Failed, "Failed"}, 720ec8b83dSEd Tanous }); 730ec8b83dSEd Tanous 740ec8b83dSEd Tanous } 750ec8b83dSEd Tanous // clang-format on 76