From cb4265074f3dbe2c24813e0aef10b2bb7e88587c Mon Sep 17 00:00:00 2001 From: Rob Shearman Date: Tue, 7 Apr 2009 12:29:35 +0100 Subject: [PATCH] include: Add declaration of sockaddr_storage to ws2def.h. Move other declarations that belong in ws2def.h from winsock2.h. --- include/Makefile.in | 1 + include/winsock2.h | 23 +-------------- include/ws2def.h | 71 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 73 insertions(+), 22 deletions(-) create mode 100644 include/ws2def.h diff --git a/include/Makefile.in b/include/Makefile.in index 6c1878aede1..795e55ce611 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -473,6 +473,7 @@ SRCDIR_INCLUDES = \ wmistr.h \ wnaspi32.h \ wownt32.h \ + ws2def.h \ ws2ipdef.h \ ws2spi.h \ ws2tcpip.h \ diff --git a/include/winsock2.h b/include/winsock2.h index b73fde3734a..d54e8a894a0 100644 --- a/include/winsock2.h +++ b/include/winsock2.h @@ -47,6 +47,7 @@ #include #undef __WINE_WINSOCK2__ +#include #ifdef __cplusplus extern "C" { @@ -421,28 +422,6 @@ typedef struct _BLOB { } BLOB, *LPBLOB; #endif -#ifndef __CSADDR_DEFINED__ -#define __CSADDR_DEFINED__ - -typedef struct _SOCKET_ADDRESS { - LPSOCKADDR lpSockaddr; - INT iSockaddrLength; -} SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS; - -typedef struct _CSADDR_INFO { - SOCKET_ADDRESS LocalAddr; - SOCKET_ADDRESS RemoteAddr; - INT iSocketType; - INT iProtocol; -} CSADDR_INFO, *PCSADDR_INFO, *LPCSADDR_INFO; -#endif - -/*socket address list */ -typedef struct _SOCKET_ADDRESS_LIST { - INT iAddressCount; - SOCKET_ADDRESS Address[1]; -} SOCKET_ADDRESS_LIST, *LPSOCKET_ADDRESS_LIST; - /* addressfamily protocol pairs */ typedef struct _AFPROTOCOLS { INT iAddressFamily; diff --git a/include/ws2def.h b/include/ws2def.h new file mode 100644 index 00000000000..f2f72232be9 --- /dev/null +++ b/include/ws2def.h @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2009 Robert Shearman + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef _WS2DEF_ +#define _WS2DEF_ + +/* FIXME: #include */ + +#ifdef USE_WS_PREFIX +#define WS(x) WS_##x +#else +#define WS(x) x +#endif + +#ifndef __CSADDR_DEFINED__ +#define __CSADDR_DEFINED__ + +typedef struct _SOCKET_ADDRESS { + LPSOCKADDR lpSockaddr; + INT iSockaddrLength; +} SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS; + +typedef struct _CSADDR_INFO { + SOCKET_ADDRESS LocalAddr; + SOCKET_ADDRESS RemoteAddr; + INT iSocketType; + INT iProtocol; +} CSADDR_INFO, *PCSADDR_INFO, *LPCSADDR_INFO; +#endif + +#ifdef USE_WS_PREFIX +#define WS__SS_MAXSIZE 128 +#define WS__SS_ALIGNSIZE (sizeof(__int64)) +#define WS__SS_PAD1SIZE (WS__SS_ALIGNSIZE - sizeof(short)) +#define WS__SS_PAD2SIZE (WS__SS_MAXSIZE - 2 * WS__SS_ALIGNSIZE) +#else +#define _SS_MAXSIZE 128 +#define _SS_ALIGNSIZE (sizeof(__int64)) +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(short)) +#define _SS_PAD2SIZE (_SS_MAXSIZE - 2 * _SS_ALIGNSIZE) +#endif + +typedef struct WS(sockaddr_storage) { + short ss_family; + char __ss_pad1[WS(_SS_PAD1SIZE)]; + __int64 __ss_align; + char __ss_pad2[WS(_SS_PAD2SIZE)]; +} SOCKADDR_STORAGE, *PSOCKADDR_STORAGE, *LPSOCKADDR_STORAGE; + +/*socket address list */ +typedef struct _SOCKET_ADDRESS_LIST { + INT iAddressCount; + SOCKET_ADDRESS Address[1]; +} SOCKET_ADDRESS_LIST, *LPSOCKET_ADDRESS_LIST; + +#endif /* _WS2DEF_ */