iphlpapi: Add a configure check for struct __res_state.
This commit is contained in:
parent
4f1c0e9355
commit
c7dd313d75
|
@ -14792,6 +14792,20 @@ _ACEOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
ac_fn_c_check_type "$LINENO" "struct __res_state" "ac_cv_type_struct___res_state" "#ifdef HAVE_RESOLV_H
|
||||||
|
#include <resolv.h>
|
||||||
|
#endif
|
||||||
|
"
|
||||||
|
if test "x$ac_cv_type_struct___res_state" = xyes; then :
|
||||||
|
|
||||||
|
cat >>confdefs.h <<_ACEOF
|
||||||
|
#define HAVE_STRUCT___RES_STATE 1
|
||||||
|
_ACEOF
|
||||||
|
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
ac_fn_c_check_member "$LINENO" "struct __res_state" "_u._ext.nscount6" "ac_cv_member_struct___res_state__u__ext_nscount6" "#ifdef HAVE_RESOLV_H
|
ac_fn_c_check_member "$LINENO" "struct __res_state" "_u._ext.nscount6" "ac_cv_member_struct___res_state__u__ext_nscount6" "#ifdef HAVE_RESOLV_H
|
||||||
#include <resolv.h>
|
#include <resolv.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2344,6 +2344,12 @@ AC_CHECK_MEMBERS([struct sockaddr_in6.sin6_scope_id],,,
|
||||||
#include <netinet/in.h>
|
#include <netinet/in.h>
|
||||||
#endif])
|
#endif])
|
||||||
|
|
||||||
|
dnl Check for struct __res_state
|
||||||
|
AC_CHECK_TYPES([struct __res_state],,,
|
||||||
|
[#ifdef HAVE_RESOLV_H
|
||||||
|
#include <resolv.h>
|
||||||
|
#endif])
|
||||||
|
|
||||||
dnl Check for _u._ext.nscount6
|
dnl Check for _u._ext.nscount6
|
||||||
AC_CHECK_MEMBERS([struct __res_state._u._ext.nscount6],,,
|
AC_CHECK_MEMBERS([struct __res_state._u._ext.nscount6],,,
|
||||||
[#ifdef HAVE_RESOLV_H
|
[#ifdef HAVE_RESOLV_H
|
||||||
|
|
|
@ -63,14 +63,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(iphlpapi);
|
||||||
#define INADDR_NONE ~0UL
|
#define INADDR_NONE ~0UL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* call res_init() just once because of a bug in Mac OS X 10.4 */
|
|
||||||
/* Call once per thread on systems that have per-thread _res. */
|
|
||||||
static void initialise_resolver(void)
|
|
||||||
{
|
|
||||||
if ((_res.options & RES_INIT) == 0)
|
|
||||||
res_init();
|
|
||||||
}
|
|
||||||
|
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
* AddIPAddress (IPHLPAPI.@)
|
* AddIPAddress (IPHLPAPI.@)
|
||||||
*
|
*
|
||||||
|
@ -933,6 +925,15 @@ static ULONG adapterAddressesFromIndex(ULONG family, ULONG flags, IF_INDEX index
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_STRUCT___RES_STATE
|
||||||
|
/* call res_init() just once because of a bug in Mac OS X 10.4 */
|
||||||
|
/* Call once per thread on systems that have per-thread _res. */
|
||||||
|
static void initialise_resolver(void)
|
||||||
|
{
|
||||||
|
if ((_res.options & RES_INIT) == 0)
|
||||||
|
res_init();
|
||||||
|
}
|
||||||
|
|
||||||
static int get_dns_servers( SOCKADDR_STORAGE *servers, int num, BOOL ip4_only )
|
static int get_dns_servers( SOCKADDR_STORAGE *servers, int num, BOOL ip4_only )
|
||||||
{
|
{
|
||||||
int i, ip6_count = 0;
|
int i, ip6_count = 0;
|
||||||
|
@ -977,6 +978,13 @@ static int get_dns_servers( SOCKADDR_STORAGE *servers, int num, BOOL ip4_only )
|
||||||
}
|
}
|
||||||
return addr - servers;
|
return addr - servers;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
static int get_dns_servers( SOCKADDR_STORAGE *servers, int num, BOOL ip4_only )
|
||||||
|
{
|
||||||
|
FIXME("Unimplemented on this system\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static ULONG get_dns_server_addresses(PIP_ADAPTER_DNS_SERVER_ADDRESS address, ULONG *len)
|
static ULONG get_dns_server_addresses(PIP_ADAPTER_DNS_SERVER_ADDRESS address, ULONG *len)
|
||||||
{
|
{
|
||||||
|
@ -1015,6 +1023,7 @@ static ULONG get_dns_server_addresses(PIP_ADAPTER_DNS_SERVER_ADDRESS address, UL
|
||||||
return ERROR_SUCCESS;
|
return ERROR_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_STRUCT___RES_STATE
|
||||||
static BOOL is_ip_address_string(const char *str)
|
static BOOL is_ip_address_string(const char *str)
|
||||||
{
|
{
|
||||||
struct in_addr in;
|
struct in_addr in;
|
||||||
|
@ -1023,13 +1032,17 @@ static BOOL is_ip_address_string(const char *str)
|
||||||
ret = inet_aton(str, &in);
|
ret = inet_aton(str, &in);
|
||||||
return ret != 0;
|
return ret != 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static ULONG get_dns_suffix(WCHAR *suffix, ULONG *len)
|
static ULONG get_dns_suffix(WCHAR *suffix, ULONG *len)
|
||||||
{
|
{
|
||||||
ULONG size, i;
|
ULONG size;
|
||||||
const char *found_suffix = "";
|
const char *found_suffix = "";
|
||||||
/* Always return a NULL-terminated string, even if it's empty. */
|
/* Always return a NULL-terminated string, even if it's empty. */
|
||||||
|
|
||||||
|
#ifdef HAVE_STRUCT___RES_STATE
|
||||||
|
{
|
||||||
|
ULONG i;
|
||||||
initialise_resolver();
|
initialise_resolver();
|
||||||
for (i = 0; !*found_suffix && i < MAXDNSRCH + 1 && _res.dnsrch[i]; i++)
|
for (i = 0; !*found_suffix && i < MAXDNSRCH + 1 && _res.dnsrch[i]; i++)
|
||||||
{
|
{
|
||||||
|
@ -1039,6 +1052,8 @@ static ULONG get_dns_suffix(WCHAR *suffix, ULONG *len)
|
||||||
if (!is_ip_address_string(_res.dnsrch[i]))
|
if (!is_ip_address_string(_res.dnsrch[i]))
|
||||||
found_suffix = _res.dnsrch[i];
|
found_suffix = _res.dnsrch[i];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
size = MultiByteToWideChar( CP_UNIXCP, 0, found_suffix, -1, NULL, 0 ) * sizeof(WCHAR);
|
size = MultiByteToWideChar( CP_UNIXCP, 0, found_suffix, -1, NULL, 0 ) * sizeof(WCHAR);
|
||||||
if (!suffix || *len < size)
|
if (!suffix || *len < size)
|
||||||
|
|
|
@ -912,6 +912,9 @@
|
||||||
/* Define to 1 if the system has the type `struct xinpgen'. */
|
/* Define to 1 if the system has the type `struct xinpgen'. */
|
||||||
#undef HAVE_STRUCT_XINPGEN
|
#undef HAVE_STRUCT_XINPGEN
|
||||||
|
|
||||||
|
/* Define to 1 if the system has the type `struct __res_state'. */
|
||||||
|
#undef HAVE_STRUCT___RES_STATE
|
||||||
|
|
||||||
/* Define to 1 if `_u._ext.nscount6' is a member of `struct __res_state'. */
|
/* Define to 1 if `_u._ext.nscount6' is a member of `struct __res_state'. */
|
||||||
#undef HAVE_STRUCT___RES_STATE__U__EXT_NSCOUNT6
|
#undef HAVE_STRUCT___RES_STATE__U__EXT_NSCOUNT6
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue