xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/common/quiche_ip_address_family.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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)17 int 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)32 IpAddressFamily 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