xref: /aosp_15_r20/external/cronet/net/base/address_family.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2010 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #ifndef NET_BASE_ADDRESS_FAMILY_H_
6*6777b538SAndroid Build Coastguard Worker #define NET_BASE_ADDRESS_FAMILY_H_
7*6777b538SAndroid Build Coastguard Worker 
8*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h"
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker namespace net {
11*6777b538SAndroid Build Coastguard Worker 
12*6777b538SAndroid Build Coastguard Worker class IPAddress;
13*6777b538SAndroid Build Coastguard Worker 
14*6777b538SAndroid Build Coastguard Worker // Enum wrapper around the address family types supported by host resolver
15*6777b538SAndroid Build Coastguard Worker // procedures.
16*6777b538SAndroid Build Coastguard Worker enum AddressFamily {
17*6777b538SAndroid Build Coastguard Worker   ADDRESS_FAMILY_UNSPECIFIED,   // AF_UNSPEC
18*6777b538SAndroid Build Coastguard Worker   ADDRESS_FAMILY_IPV4,          // AF_INET
19*6777b538SAndroid Build Coastguard Worker   ADDRESS_FAMILY_IPV6,          // AF_INET6
20*6777b538SAndroid Build Coastguard Worker   ADDRESS_FAMILY_LAST = ADDRESS_FAMILY_IPV6
21*6777b538SAndroid Build Coastguard Worker };
22*6777b538SAndroid Build Coastguard Worker 
23*6777b538SAndroid Build Coastguard Worker // HostResolverFlags is a bitflag enum used by host resolver procedures to
24*6777b538SAndroid Build Coastguard Worker // determine the value of addrinfo.ai_flags and work around getaddrinfo
25*6777b538SAndroid Build Coastguard Worker // peculiarities.
26*6777b538SAndroid Build Coastguard Worker enum {
27*6777b538SAndroid Build Coastguard Worker   HOST_RESOLVER_CANONNAME = 1 << 0,  // AI_CANONNAME
28*6777b538SAndroid Build Coastguard Worker   // Hint to the resolver proc that only loopback addresses are configured.
29*6777b538SAndroid Build Coastguard Worker   HOST_RESOLVER_LOOPBACK_ONLY = 1 << 1,
30*6777b538SAndroid Build Coastguard Worker   // Indicate the address family was set because no IPv6 support was detected.
31*6777b538SAndroid Build Coastguard Worker   HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6 = 1 << 2,
32*6777b538SAndroid Build Coastguard Worker   // The resolver should avoid resolving using multicast protocols (LLMNR or
33*6777b538SAndroid Build Coastguard Worker   // mDNS).
34*6777b538SAndroid Build Coastguard Worker   HOST_RESOLVER_AVOID_MULTICAST = 1 << 3
35*6777b538SAndroid Build Coastguard Worker };
36*6777b538SAndroid Build Coastguard Worker typedef int HostResolverFlags;
37*6777b538SAndroid Build Coastguard Worker 
38*6777b538SAndroid Build Coastguard Worker // Returns AddressFamily for |address|.
39*6777b538SAndroid Build Coastguard Worker NET_EXPORT AddressFamily GetAddressFamily(const IPAddress& address);
40*6777b538SAndroid Build Coastguard Worker 
41*6777b538SAndroid Build Coastguard Worker // Maps the given AddressFamily to either AF_INET, AF_INET6 or AF_UNSPEC.
42*6777b538SAndroid Build Coastguard Worker NET_EXPORT int ConvertAddressFamily(AddressFamily address_family);
43*6777b538SAndroid Build Coastguard Worker 
44*6777b538SAndroid Build Coastguard Worker // Maps AF_INET, AF_INET6 or AF_UNSPEC to an AddressFamily.
45*6777b538SAndroid Build Coastguard Worker NET_EXPORT AddressFamily ToAddressFamily(int family);
46*6777b538SAndroid Build Coastguard Worker 
47*6777b538SAndroid Build Coastguard Worker }  // namespace net
48*6777b538SAndroid Build Coastguard Worker 
49*6777b538SAndroid Build Coastguard Worker #endif  // NET_BASE_ADDRESS_FAMILY_H_
50