From 4815dd49bb1483af60dad347ff351db13178a21e Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 1 Feb 2007 15:54:40 +0000 Subject: * net.cc (ga_dup): New function, taken from ga_clone with v4-in-v6 mapping addition. (ga_clone): Just call ga_dup from here. (ga_duplist): New function to duplicate list of struct addrinfo. (ga_echeck): Don't check a_flags, it already happened in cygwin_getaddrinfo. (cygwin_freeaddrinfo): Always call ipv4_freeaddrinfo. (cygwin_getaddrinfo): Use new wincap.supports_all_posix_ai_flags flag rather than wincap.has_gaa_on_link_prefix. Always duplicate WinSock's addrinfo list to a self-allocated list. Handle AI_V4MAPPED for pre-Vista platforms supporting getaddrinfo. * wincap.h (wincapc::supports_all_posix_ai_flags): New element. * wincap.cc: Implement above element throughout. * include/netdb.h: Note how AI_ADDRCONFIG is not supported pre-Vista. Remove superfluous comment. --- winsup/cygwin/wincap.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'winsup/cygwin/wincap.cc') diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index 7e9f71069..b26c78f84 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -74,6 +74,7 @@ static NO_COPY wincaps wincap_unknown = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_95 = { @@ -139,6 +140,7 @@ static NO_COPY wincaps wincap_95 = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_95osr2 = { @@ -204,6 +206,7 @@ static NO_COPY wincaps wincap_95osr2 = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_98 = { @@ -269,6 +272,7 @@ static NO_COPY wincaps wincap_98 = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_98se = { @@ -334,6 +338,7 @@ static NO_COPY wincaps wincap_98se = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_me = { @@ -399,6 +404,7 @@ static NO_COPY wincaps wincap_me = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_nt3 = { @@ -464,6 +470,7 @@ static NO_COPY wincaps wincap_nt3 = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_nt4 = { @@ -529,6 +536,7 @@ static NO_COPY wincaps wincap_nt4 = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_nt4sp4 = { @@ -594,6 +602,7 @@ static NO_COPY wincaps wincap_nt4sp4 = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_2000 = { @@ -659,6 +668,7 @@ static NO_COPY wincaps wincap_2000 = { has_recycle_dot_bin:false, has_gaa_prefixes:false, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_xp = { @@ -724,6 +734,7 @@ static NO_COPY wincaps wincap_xp = { has_recycle_dot_bin:false, has_gaa_prefixes:true, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_2003 = { @@ -789,6 +800,7 @@ static NO_COPY wincaps wincap_2003 = { has_recycle_dot_bin:false, has_gaa_prefixes:true, has_gaa_on_link_prefix:false, + supports_all_posix_ai_flags:false, }; static NO_COPY wincaps wincap_vista = { @@ -854,6 +866,7 @@ static NO_COPY wincaps wincap_vista = { has_recycle_dot_bin:true, has_gaa_prefixes:true, has_gaa_on_link_prefix:true, + supports_all_posix_ai_flags:true, }; wincapc wincap __attribute__((section (".cygwin_dll_common"), shared)); -- cgit v1.2.3