X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=extras%2Fvom%2Fvom%2Fapi_types.cpp;h=486ebdacb6def30e11b7bbbffddb7180cac15b0e;hb=37029305c671f4e2d091d6f6c22142634e409043;hp=4a81a41daa99b385228e1a1d3f0b677876085a7a;hpb=13b2ba2ad5527c8185dce368993a3877e7daf7a2;p=vpp.git diff --git a/extras/vom/vom/api_types.cpp b/extras/vom/vom/api_types.cpp index 4a81a41daa9..486ebdacb6d 100644 --- a/extras/vom/vom/api_types.cpp +++ b/extras/vom/vom/api_types.cpp @@ -17,6 +17,17 @@ namespace VOM { +void +to_api(const boost::asio::ip::address_v4& a, vapi_type_ip4_address& v) +{ + std::copy_n(std::begin(a.to_bytes()), a.to_bytes().size(), v); +} +void +to_api(const boost::asio::ip::address_v6& a, vapi_type_ip6_address& v) +{ + std::copy_n(std::begin(a.to_bytes()), a.to_bytes().size(), v); +} + void to_api(const ip_address_t& a, vapi_type_address& v) { @@ -43,10 +54,24 @@ to_api(const ip_address_t& a, } } -void -to_api(const boost::asio::ip::address& a, vapi_type_ip4_address& v) +boost::asio::ip::address_v6 +from_api(const vapi_type_ip6_address& v) +{ + std::array a; + std::copy(v, v + 16, std::begin(a)); + boost::asio::ip::address_v6 v6(a); + + return v6; +} + +boost::asio::ip::address_v4 +from_api(const vapi_type_ip4_address& v) { - memcpy(v, a.to_v4().to_bytes().data(), 4); + std::array a; + std::copy(v, v + 4, std::begin(a)); + boost::asio::ip::address_v4 v4(a); + + return v4; } ip_address_t