1 // Copyright 2022 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "quiche/common/quiche_ip_address_family.h" 6 7 #include "quiche/common/platform/api/quiche_bug_tracker.h" 8 9 #if defined(_WIN32) 10 #include <winsock2.h> 11 #else 12 #include <sys/socket.h> 13 #endif // defined(_WIN32) 14 15 namespace quiche { 16 ToPlatformAddressFamily(IpAddressFamily family)17int ToPlatformAddressFamily(IpAddressFamily family) { 18 switch (family) { 19 case IpAddressFamily::IP_V4: 20 return AF_INET; 21 case IpAddressFamily::IP_V6: 22 return AF_INET6; 23 case IpAddressFamily::IP_UNSPEC: 24 return AF_UNSPEC; 25 default: 26 QUICHE_BUG(quic_bug_10126_1) 27 << "Invalid IpAddressFamily " << static_cast<int32_t>(family); 28 return AF_UNSPEC; 29 } 30 } 31 FromPlatformAddressFamily(int family)32IpAddressFamily FromPlatformAddressFamily(int family) { 33 switch (family) { 34 case AF_INET: 35 return IpAddressFamily::IP_V4; 36 case AF_INET6: 37 return IpAddressFamily::IP_V6; 38 case AF_UNSPEC: 39 return IpAddressFamily::IP_UNSPEC; 40 default: 41 QUICHE_BUG(quic_FromPlatformAddressFamily_unrecognized_family) 42 << "Invalid platform address family int " << family; 43 return IpAddressFamily::IP_UNSPEC; 44 } 45 } 46 47 } // namespace quiche 48