| /* |
| * 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 <inaddr.h> */ |
| |
| #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_ */ |