address_family.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright (c) 2010 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. #ifndef NET_BASE_ADDRESS_FAMILY_H_
  5. #define NET_BASE_ADDRESS_FAMILY_H_
  6. #include "net/base/net_export.h"
  7. namespace net {
  8. class IPAddress;
  9. // Enum wrapper around the address family types supported by host resolver
  10. // procedures.
  11. enum AddressFamily {
  12. ADDRESS_FAMILY_UNSPECIFIED, // AF_UNSPEC
  13. ADDRESS_FAMILY_IPV4, // AF_INET
  14. ADDRESS_FAMILY_IPV6, // AF_INET6
  15. ADDRESS_FAMILY_LAST = ADDRESS_FAMILY_IPV6
  16. };
  17. // HostResolverFlags is a bitflag enum used by host resolver procedures to
  18. // determine the value of addrinfo.ai_flags and work around getaddrinfo
  19. // peculiarities.
  20. enum {
  21. HOST_RESOLVER_CANONNAME = 1 << 0, // AI_CANONNAME
  22. // Hint to the resolver proc that only loopback addresses are configured.
  23. HOST_RESOLVER_LOOPBACK_ONLY = 1 << 1,
  24. // Indicate the address family was set because no IPv6 support was detected.
  25. HOST_RESOLVER_DEFAULT_FAMILY_SET_DUE_TO_NO_IPV6 = 1 << 2,
  26. // The resolver should avoid resolving using multicast protocols (LLMNR or
  27. // mDNS).
  28. HOST_RESOLVER_AVOID_MULTICAST = 1 << 3
  29. };
  30. typedef int HostResolverFlags;
  31. // Returns AddressFamily for |address|.
  32. NET_EXPORT AddressFamily GetAddressFamily(const IPAddress& address);
  33. // Maps the given AddressFamily to either AF_INET, AF_INET6 or AF_UNSPEC.
  34. NET_EXPORT int ConvertAddressFamily(AddressFamily address_family);
  35. // Maps AF_INET, AF_INET6 or AF_UNSPEC to an AddressFamily.
  36. NET_EXPORT AddressFamily ToAddressFamily(int family);
  37. } // namespace net
  38. #endif // NET_BASE_ADDRESS_FAMILY_H_