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