Add LPADDRINFO, missing IP_* defines and missing APIs.

Enclose the API definitions in an extern "C" section.
Define function pointer types if INCL_WINSOCK_API_TYPEDEFS is defined.
Better stick to the types defined by the PSDK.
Update win32.api.
This commit is contained in:
Francois Gouget 2005-11-23 19:43:50 +01:00 committed by Alexandre Julliard
parent 5e7f77ea8b
commit 482df927ca
3 changed files with 86 additions and 25 deletions

View file

@ -3123,7 +3123,7 @@ static int convert_eai_u2w(int unixret) {
/***********************************************************************
* getaddrinfo (WS2_32.@)
*/
int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const ADDRINFOA *hints, ADDRINFOA **res)
int WINAPI WS_getaddrinfo(LPCSTR nodename, LPCSTR servname, const struct WS_addrinfo *hints, struct WS_addrinfo **res)
{
#if HAVE_GETADDRINFO
struct addrinfo *unixaires = NULL;
@ -3223,7 +3223,7 @@ outofmem:
/***********************************************************************
* GetAddrInfoW (WS2_32.@)
*/
int WINAPI GetAddrInfoW(LPCWSTR nodename, LPCWSTR servname, const ADDRINFOW *hints, ADDRINFOW **res)
int WINAPI GetAddrInfoW(LPCWSTR nodename, LPCWSTR servname, const ADDRINFOW *hints, PADDRINFOW *res)
{
FIXME("empty stub!\n");
return EAI_FAIL;

View file

@ -53,7 +53,7 @@ typedef struct WS(addrinfoW)
struct WS(addrinfoW)* ai_next;
} ADDRINFOW, *PADDRINFOW;
typedef ADDRINFOA ADDRINFO;
typedef ADDRINFOA ADDRINFO, *LPADDRINFO;
/*
* Multicast group information
@ -136,27 +136,39 @@ typedef struct _INTERFACE_INFO
#endif /* USE_WS_PREFIX */
#ifndef USE_WS_PREFIX
#define IP_OPTIONS 1
#define IP_HDRINCL 2
#define IP_TOS 3
#define IP_TTL 4
#define IP_MULTICAST_IF 9
#define IP_MULTICAST_TTL 10
#define IP_MULTICAST_LOOP 11
#define IP_ADD_MEMBERSHIP 12
#define IP_DROP_MEMBERSHIP 13
#define IP_DONTFRAGMENT 14
#define IP_OPTIONS 1
#define IP_HDRINCL 2
#define IP_TOS 3
#define IP_TTL 4
#define IP_MULTICAST_IF 9
#define IP_MULTICAST_TTL 10
#define IP_MULTICAST_LOOP 11
#define IP_ADD_MEMBERSHIP 12
#define IP_DROP_MEMBERSHIP 13
#define IP_DONTFRAGMENT 14
#define IP_ADD_SOURCE_MEMBERSHIP 15
#define IP_DROP_SOURCE_MEMBERSHIP 16
#define IP_BLOCK_SOURCE 17
#define IP_UNBLOCK_SOURCE 18
#define IP_PKTINFO 19
#define IP_RECEIVE_BROADCAST 22
#else
#define WS_IP_OPTIONS 1
#define WS_IP_HDRINCL 2
#define WS_IP_TOS 3
#define WS_IP_TTL 4
#define WS_IP_MULTICAST_IF 9
#define WS_IP_MULTICAST_TTL 10
#define WS_IP_MULTICAST_LOOP 11
#define WS_IP_ADD_MEMBERSHIP 12
#define WS_IP_DROP_MEMBERSHIP 13
#define WS_IP_DONTFRAGMENT 14
#define WS_IP_OPTIONS 1
#define WS_IP_HDRINCL 2
#define WS_IP_TOS 3
#define WS_IP_TTL 4
#define WS_IP_MULTICAST_IF 9
#define WS_IP_MULTICAST_TTL 10
#define WS_IP_MULTICAST_LOOP 11
#define WS_IP_ADD_MEMBERSHIP 12
#define WS_IP_DROP_MEMBERSHIP 13
#define WS_IP_DONTFRAGMENT 14
#define WS_IP_ADD_SOURCE_MEMBERSHIP 15
#define WS_IP_DROP_SOURCE_MEMBERSHIP 16
#define WS_IP_BLOCK_SOURCE 17
#define WS_IP_UNBLOCK_SOURCE 18
#define WS_IP_PKTINFO 19
#define WS_IP_RECEIVE_BROADCAST 22
#endif /* USE_WS_PREFIX */
/* Possible Windows flags for getaddrinfo() */
@ -190,7 +202,49 @@ typedef struct _INTERFACE_INFO
# define WS_EAI_SOCKTYPE WSAESOCKTNOSUPPORT
#endif
int WINAPI WS(getaddrinfo)(LPCSTR,LPCSTR,const ADDRINFOA *,ADDRINFOA **);
int WINAPI GetAddrInfoW(LPCWSTR,LPCWSTR,const ADDRINFOW *,ADDRINFOW **);
#ifdef __cplusplus
extern "C" {
#endif
void WINAPI WS(freeaddrinfo)(LPADDRINFO);
#define FreeAddrInfoA WS(freeaddrinfo)
void WINAPI FreeAddrInfoW(PADDRINFOW);
#define FreeAddrInfo WINELIB_NAME_AW(FreeAddrInfo)
int WINAPI WS(getaddrinfo)(const char*,const char*,const struct WS(addrinfo)*,struct WS(addrinfo)**);
#define GetAddrInfoA WS(getaddrinfo)
int WINAPI GetAddrInfoW(PCWSTR,PCWSTR,const ADDRINFOW*,PADDRINFOW*);
#define GetAddrInfo WINELIB_NAME_AW(GetAddrInfo)
int WINAPI WS(getnameinfo)(const struct sockaddr*,socklen_t,char*,DWORD,char*,DWORD,int);
#define GetNameInfoA WS(getnameinfo)
INT WINAPI GetNameInfoW(const SOCKADDR*,socklen_t,PWCHAR,DWORD,PWCHAR,DWORD,INT);
#define GetNameInfo WINELIB_NAME_AW(GetNameInfo)
/*
* Ws2tcpip Function Typedefs
*
* Remember to keep this section in sync with the
* prototypes above.
*/
#if INCL_WINSOCK_API_TYPEDEFS
typedef void (WINAPI *LPFN_FREEADDRINFO)(LPADDRINFO);
#define LPFN_FREEADDRINFOA LPFN_FREEADDRINFO
typedef void (WINAPI *LPFN_FREEADDRINFOW)(PADDRINFOW);
#define LPFN_FREEADDRINFOT WINELIB_NAME_AW(LPFN_FREEADDRINFO)
typedef int (WINAPI *LPFN_GETADDRINFO)(const char*,const char*,const struct WS(addrinfo)*,struct WS(addrinfo)**);
#define LPFN_GETADDRINFOA LPFN_GETADDRINFO
typedef int (WINAPI *LPFN_GETADDRINFOW)(PCWSTR,PCWSTR,const ADDRINFOW*,PADDRINFOW*);
#define LPFN_GETADDRINFOT WINELIB_NAME_AW(LPFN_GETADDRINFO)
typedef int (WINAPI *LPFN_GETNAMEINFO)(const struct sockaddr*,socklen_t,char*,DWORD,char*,DWORD,int);
#define LPFN_GETNAMEINFOA LPFN_GETNAMEINFO
typedef int (WINAPI *LPFN_GETNAMEINFOW)(const SOCKADDR*,socklen_t,PWCHAR,DWORD,PWCHAR,DWORD,INT);
#define LPFN_GETNAMEINFOT WINELIB_NAME_AW(LPFN_GETNAMEINFO)
#endif
#ifdef __cplusplus
}
#endif
#endif /* __WS2TCPIP__ */

View file

@ -2431,13 +2431,16 @@ SOCKET
%ptr
LPDWORD
LPINT
LPOVERLAPPED
LPTRANSMIT_FILE_BUFFERS
PVOID
struct sockaddr **
%void
void
VOID
%%msxml3.dll
@ -5185,6 +5188,7 @@ u_short
%ptr
ADDRINFOW *
FARPROC
INT *
LPCONDITIONPROC
@ -5209,8 +5213,11 @@ LPWSASERVICECLASSINFOA
LPWSASERVICECLASSINFOW
LPWSAQUERYSETA
LPWSAQUERYSETW
PADDRINFOW *
WS_fd_set *
int *
struct WS_addrinfo *
struct WS_addrinfo **
struct WS_hostent *
struct WS_protoent *
struct WS_servent *