diff --git a/deps/cares/cares.gyp b/deps/cares/cares.gyp index 053cdf8c8286ad..d654a896f56ffd 100644 --- a/deps/cares/cares.gyp +++ b/deps/cares/cares.gyp @@ -21,6 +21,8 @@ 'src/lib/ares__htable_strvp.h', 'src/lib/ares__htable_szvp.c', 'src/lib/ares__htable_szvp.h', + 'src/lib/ares__htable_vpvp.c', + 'src/lib/ares__htable_vpvp.h', 'src/lib/ares__iface_ips.c', 'src/lib/ares__iface_ips.h', 'src/lib/ares__llist.c', @@ -46,6 +48,7 @@ 'src/lib/ares_dns_record.c', 'src/lib/ares_dns_private.h', 'src/lib/ares_dns_write.c', + 'src/lib/ares_event_configchg.c', 'src/lib/ares_event.h', 'src/lib/ares_event_win32.h', 'src/lib/ares_event_epoll.c', @@ -113,6 +116,11 @@ 'src/tools/ares_getopt.c', 'src/tools/ares_getopt.h', ], + 'cares_sources_mac': [ + 'config/darwin/ares_config.h', + 'src/lib/ares_sysconfig_mac.c', + 'src/lib/thirdparty/apple/dnsinfo.h', + ], 'cares_sources_win': [ 'src/lib/config-win32.h', 'src/lib/windows_port.c', @@ -206,7 +214,9 @@ }], [ 'OS=="mac" or OS=="ios"', { 'include_dirs': [ 'config/darwin' ], - 'sources': [ 'config/darwin/ares_config.h' ] + 'sources': [ + '<@(cares_sources_mac)', + ] }], [ 'OS=="freebsd" or OS=="dragonflybsd"', { 'include_dirs': [ 'config/freebsd' ], diff --git a/deps/cares/src/lib/thirdparty/apple/dnsinfo.h b/deps/cares/src/lib/thirdparty/apple/dnsinfo.h new file mode 100644 index 00000000000000..d51c546f2f58ce --- /dev/null +++ b/deps/cares/src/lib/thirdparty/apple/dnsinfo.h @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2004-2006, 2008, 2009, 2011-2013, 2015-2018 Apple Inc. All rights reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + +#ifndef __DNSINFO_H__ +#define __DNSINFO_H__ + +/* + * These routines provide access to the systems DNS configuration + */ + +#include +#include +#include +#include +#include +#include + +#define DNSINFO_VERSION 20170629 + +#define DEFAULT_SEARCH_ORDER 200000 /* search order for the "default" resolver domain name */ + +#define DNS_PTR(type, name) \ + union { \ + type name; \ + uint64_t _ ## name ## _p; \ + } + +#define DNS_VAR(type, name) \ + type name + + +#pragma pack(4) +typedef struct { + struct in_addr address; + struct in_addr mask; +} dns_sortaddr_t; +#pragma pack() + + +#pragma pack(4) +typedef struct { + DNS_PTR(char *, domain); /* domain */ + DNS_VAR(int32_t, n_nameserver); /* # nameserver */ + DNS_PTR(struct sockaddr **, nameserver); + DNS_VAR(uint16_t, port); /* port (in host byte order) */ + DNS_VAR(int32_t, n_search); /* # search */ + DNS_PTR(char **, search); + DNS_VAR(int32_t, n_sortaddr); /* # sortaddr */ + DNS_PTR(dns_sortaddr_t **, sortaddr); + DNS_PTR(char *, options); /* options */ + DNS_VAR(uint32_t, timeout); /* timeout */ + DNS_VAR(uint32_t, search_order); /* search_order */ + DNS_VAR(uint32_t, if_index); + DNS_VAR(uint32_t, flags); + DNS_VAR(uint32_t, reach_flags); /* SCNetworkReachabilityFlags */ + DNS_VAR(uint32_t, service_identifier); + DNS_PTR(char *, cid); /* configuration identifer */ + DNS_PTR(char *, if_name); /* if_index interface name */ +} dns_resolver_t; +#pragma pack() + + +#define DNS_RESOLVER_FLAGS_REQUEST_A_RECORDS 0x0002 /* always requesting for A dns records in queries */ +#define DNS_RESOLVER_FLAGS_REQUEST_AAAA_RECORDS 0x0004 /* always requesting for AAAA dns records in queries */ + +#define DNS_RESOLVER_FLAGS_REQUEST_ALL_RECORDS \ + (DNS_RESOLVER_FLAGS_REQUEST_A_RECORDS | DNS_RESOLVER_FLAGS_REQUEST_AAAA_RECORDS) + +#define DNS_RESOLVER_FLAGS_SCOPED 0x1000 /* configuration is for scoped questions */ +#define DNS_RESOLVER_FLAGS_SERVICE_SPECIFIC 0x2000 /* configuration is service-specific */ +#define DNS_RESOLVER_FLAGS_SUPPLEMENTAL 0x4000 /* supplemental match configuration */ + + +#pragma pack(4) +typedef struct { + DNS_VAR(int32_t, n_resolver); /* resolver configurations */ + DNS_PTR(dns_resolver_t **, resolver); + DNS_VAR(int32_t, n_scoped_resolver); /* "scoped" resolver configurations */ + DNS_PTR(dns_resolver_t **, scoped_resolver); + DNS_VAR(uint64_t, generation); + DNS_VAR(int32_t, n_service_specific_resolver); + DNS_PTR(dns_resolver_t **, service_specific_resolver); + DNS_VAR(uint32_t, version); +} dns_config_t; +#pragma pack() + + +__BEGIN_DECLS + +/* + * DNS configuration access APIs + */ +const char * +dns_configuration_notify_key (void) API_AVAILABLE(macos(10.4), ios(2.0)); + +dns_config_t * +dns_configuration_copy (void) API_AVAILABLE(macos(10.4), ios(2.0)); + +void +dns_configuration_free (dns_config_t *config) API_AVAILABLE(macos(10.4), ios(2.0)); + +void +_dns_configuration_ack (dns_config_t *config, + const char *bundle_id) API_AVAILABLE(macos(10.8), ios(6.0)); + +__END_DECLS + +#endif /* __DNSINFO_H__ */