1 #pragma once 2 3 #include <boost/asio/ip/address.hpp> 4 #include <boost/asio/ip/address_v4.hpp> 5 #include <boost/asio/ip/address_v6.hpp> 6 7 #include <string> 8 9 namespace redfish 10 { 11 namespace ip_util 12 { 13 14 /** 15 * @brief Converts boost::asio::ip::address to string 16 * Will automatically convert IPv4-mapped IPv6 address back to IPv4. 17 * 18 * @param[in] ipAddr IP address to convert 19 * 20 * @return IP address string 21 */ 22 inline std::string toString(const boost::asio::ip::address& ipAddr) 23 { 24 if (ipAddr.is_v6() && ipAddr.to_v6().is_v4_mapped()) 25 { 26 return boost::asio::ip::make_address_v4(boost::asio::ip::v4_mapped, 27 ipAddr.to_v6()) 28 .to_string(); 29 } 30 return ipAddr.to_string(); 31 } 32 33 } // namespace ip_util 34 } // namespace redfish 35