1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- // Copyright 2019 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "components/openscreen_platform/network_util.h"
- #include <array>
- #include <memory>
- #include "base/notreached.h"
- #include "net/base/address_family.h"
- #include "net/base/ip_endpoint.h"
- #include "net/base/net_errors.h"
- namespace openscreen_platform {
- const net::IPAddress ToNetAddress(const openscreen::IPAddress& address) {
- switch (address.version()) {
- case openscreen::IPAddress::Version::kV4: {
- std::array<uint8_t, openscreen::IPAddress::kV4Size> bytes_v4;
- address.CopyToV4(bytes_v4.data());
- return net::IPAddress(bytes_v4.data(), bytes_v4.size());
- }
- case openscreen::IPAddress::Version::kV6: {
- std::array<uint8_t, openscreen::IPAddress::kV6Size> bytes_v6;
- address.CopyToV6(bytes_v6.data());
- return net::IPAddress(bytes_v6.data(), bytes_v6.size());
- }
- }
- }
- const net::IPEndPoint ToNetEndPoint(const openscreen::IPEndpoint& endpoint) {
- return net::IPEndPoint(ToNetAddress(endpoint.address), endpoint.port);
- }
- openscreen::IPAddress::Version ToOpenScreenVersion(
- const net::AddressFamily family) {
- switch (family) {
- case net::AddressFamily::ADDRESS_FAMILY_IPV6:
- return openscreen::IPAddress::Version::kV6;
- case net::AddressFamily::ADDRESS_FAMILY_IPV4:
- return openscreen::IPAddress::Version::kV4;
- case net::AddressFamily::ADDRESS_FAMILY_UNSPECIFIED:
- NOTREACHED();
- return openscreen::IPAddress::Version::kV4;
- }
- }
- const openscreen::IPEndpoint ToOpenScreenEndPoint(
- const net::IPEndPoint& endpoint) {
- const openscreen::IPAddress::Version version =
- ToOpenScreenVersion(endpoint.GetFamily());
- return openscreen::IPEndpoint{
- openscreen::IPAddress{version, endpoint.address().bytes().data()},
- endpoint.port()};
- }
- } // namespace openscreen_platform
|