|  | // Copyright 2022 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 "quiche/common/quiche_ip_address_family.h" | 
|  |  | 
|  | #include "quiche/common/platform/api/quiche_bug_tracker.h" | 
|  |  | 
|  | #if defined(_WIN32) | 
|  | #include <winsock2.h> | 
|  | #else | 
|  | #include <sys/socket.h> | 
|  | #endif  // defined(_WIN32) | 
|  |  | 
|  | namespace quiche { | 
|  |  | 
|  | int ToPlatformAddressFamily(IpAddressFamily family) { | 
|  | switch (family) { | 
|  | case IpAddressFamily::IP_V4: | 
|  | return AF_INET; | 
|  | case IpAddressFamily::IP_V6: | 
|  | return AF_INET6; | 
|  | case IpAddressFamily::IP_UNSPEC: | 
|  | return AF_UNSPEC; | 
|  | default: | 
|  | QUICHE_BUG(quic_bug_10126_1) | 
|  | << "Invalid IpAddressFamily " << static_cast<int32_t>(family); | 
|  | return AF_UNSPEC; | 
|  | } | 
|  | } | 
|  |  | 
|  | IpAddressFamily FromPlatformAddressFamily(int family) { | 
|  | switch (family) { | 
|  | case AF_INET: | 
|  | return IpAddressFamily::IP_V4; | 
|  | case AF_INET6: | 
|  | return IpAddressFamily::IP_V6; | 
|  | case AF_UNSPEC: | 
|  | return IpAddressFamily::IP_UNSPEC; | 
|  | default: | 
|  | QUICHE_BUG(quic_FromPlatformAddressFamily_unrecognized_family) | 
|  | << "Invalid platform address family int " << family; | 
|  | return IpAddressFamily::IP_UNSPEC; | 
|  | } | 
|  | } | 
|  |  | 
|  | }  // namespace quiche |