diff --git a/reactos/include/sockets.h b/reactos/include/sockets.h deleted file mode 100644 index 13f86a3567a..00000000000 --- a/reactos/include/sockets.h +++ /dev/null @@ -1,958 +0,0 @@ -/* - Sockets.h - - Windows Sockets specification version 1.1 - - Copyright (C) 1996 Free Software Foundation, Inc. - Thanks to Linux header files for supplying many needed definitions - - Author: Scott Christley - Date: 1996 - - This file is part of the Windows32 API Library. - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 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 - Library General Public License for more details. - - If you are interested in a warranty or support for this source code, - contact Scott Christley for more information. - - You should have received a copy of the GNU Library General Public - License along with this library; see the file COPYING.LIB. - If not, write to the Free Software Foundation, - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ - -/*- - * Portions Copyright (c) 1980, 1983, 1988, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * - - * Portions Copyright (c) 1993 by Digital Equipment Corporation. - * - * Permission to use, copy, modify and distribute this software for any - * purpose with or without fee is hereby granted, provided that the above - * copyright notice and this permission notice appear in all copies, and that - * the name of Digital Equipment Corporation not be used in advertising or - * publicity pertaining to distribution of the document or software without - * specific, written prior permission. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL - * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL DIGITAL EQUIPMENT - * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS - * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS - * SOFTWARE. - * - - * --Copyright-- - */ - -#ifndef _GNU_H_WINDOWS32_SOCKETS -#define _GNU_H_WINDOWS32_SOCKETS - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* BSD */ -#ifndef _SYS_TYPES_H -typedef unsigned char u_char; -typedef unsigned short u_short; -typedef unsigned int u_int; -typedef unsigned long u_long; -#endif - -/* - Default maximium number of sockets. - Define this before including Sockets.h to increase; this does not - mean that the underlying Windows Sockets implementation has to - support that many! - */ -#ifndef FD_SETSIZE -#define FD_SETSIZE 64 -#endif /* !FD_SETSIZE */ - -/* - These macros are critical to the usage of Windows Sockets. - According to the documentation, a SOCKET is no longer represented - by a "small non-negative integer"; so all programs MUST use these - macros for setting, initializing, clearing and checking the - fd_set structures. - */ - -typedef u_int SOCKET; - -/* fd_set may have been defined by the newlib . */ -#ifdef fd_set -#undef fd_set -#endif -typedef struct fd_set { - u_int fd_count; - SOCKET fd_array[FD_SETSIZE]; -} fd_set; - -/* Internal function, not documented except in winsock.h */ -extern int PASCAL __WSAFDIsSet(SOCKET, fd_set*); - -#ifdef FD_CLR -#undef FD_CLR -#endif -#define FD_CLR(fd, set) do { \ - u_int __i; \ - for (__i = 0; __i < ((fd_set*)(set))->fd_count ; __i++) { \ - if (((fd_set*)(set))->fd_array[__i] == fd) { \ - while (__i < ((fd_set*)(set))->fd_count-1) { \ - ((fd_set*)(set))->fd_array[__i] = \ - ((fd_set*)(set))->fd_array[__i+1]; \ - __i++; \ - } \ - ((fd_set*)(set))->fd_count--; \ - break; \ - } \ - } \ -} while(0) - -#ifdef FD_SET -#undef FD_SET -#endif -#define FD_SET(fd, set) do { \ - if (((fd_set*)(set))->fd_count < FD_SETSIZE) \ - ((fd_set*)(set))->fd_array[((fd_set*)(set))->fd_count++]=(fd);\ -} while(0) - -#ifdef FD_ZERO -#undef FD_ZERO -#endif -#define FD_ZERO(set) (((fd_set*)(set))->fd_count=0) - -#ifdef FD_ISSET -#undef FD_ISSET -#endif -#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set*)(set)) - -/* - time structures - */ -struct timeval { - long tv_sec; /* seconds */ - long tv_usec; /* microseconds */ -}; -struct timezone { - int tz_minuteswest; /* minutes west of Greenwich */ - int tz_dsttime; /* type of dst correction */ -}; - -/* - Operations on timevals. - - NB: timercmp does not work for >= or <=. - */ -#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) -#define timercmp(tvp, uvp, cmp) \ - (((tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec) \ - || (tvp)->tv_sec cmp (uvp)->tv_sec) -#define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) - -/* - ioctl command encoding. - Some of this is different than what Linux has - */ -#define IOCPARM_MASK 0x7f -#define IOC_VOID 0x20000000 -#define IOC_OUT 0x40000000 -#define IOC_IN 0x80000000 -#define IOC_INOUT (IOC_IN | IOC_OUT) - -/* _IO(magic, subcode) */ -#define _IO(c,d) (IOC_VOID | ((c)<<8) | (d)) -/* _IOXX(magic, subcode, arg_t) */ -#define _IOW(c,d,t) (IOC_IN | (((long)sizeof(t) & IOCPARM_MASK)<<16) | \ - ((c)<<8) | (d)) -#define _IOR(c,d,t) (IOC_OUT | (((long)sizeof(t) & IOCPARM_MASK)<<16) | \ - ((c)<<8) | (d)) - -/* - This stuff is hard-coded on Linux - But winsock.h uses the macros defined above - */ -#define FIONREAD _IOR('f', 127, u_long) -#define FIONBIO _IOW('f', 126, u_long) -#define FIOASYNC _IOW('f', 125, u_long) - -#define SIOCSHIWAT _IOW('s', 0, u_long) -#define SIOCGHIWAT _IOR('s', 1, u_long) -#define SIOCSLOWAT _IOW('s', 2, u_long) -#define SIOCGLOWAT _IOR('s', 3, u_long) -#define SIOCATMARK _IOR('s', 7, u_long) - -/* - Structures returned by network data base library, taken from the - BSD file netdb.h. All addresses are supplied in host order, and - returned in network order (suitable for use in system calls). - - Slight modifications for differences between Linux and winsock.h - */ - -struct hostent { - char *h_name; /* official name of host */ - char **h_aliases; /* alias list */ - short h_addrtype; /* host address type */ - short h_length; /* length of address */ - char **h_addr_list; /* list of addresses */ -#define h_addr h_addr_list[0] /* address, for backward compat */ -}; - -/* - * Assumption here is that a network number - * fits in an unsigned long -- someday that won't be true! - */ -struct netent { - char *n_name; /* official name of net */ - char **n_aliases; /* alias list */ - short n_addrtype; /* net address type */ - u_long n_net; /* network # */ -}; - -struct servent { - char *s_name; /* official service name */ - char **s_aliases; /* alias list */ - short s_port; /* port # */ - char *s_proto; /* protocol to use */ -}; - -struct protoent { - char *p_name; /* official protocol name */ - char **p_aliases; /* alias list */ - short p_proto; /* protocol # */ -}; - -/* - Standard well-known IP protocols. - For some reason there are differences between Linx and winsock.h - */ -enum { - IPPROTO_IP = 0, - IPPROTO_ICMP = 1, - IPPROTO_GGP = 2, /* huh? */ - IPPROTO_IPIP = 4, - IPPROTO_TCP = 6, /* Transmission Control Protocol */ - IPPROTO_EGP = 8, - IPPROTO_PUP = 12, - IPPROTO_UDP = 17, /* User Datagram Protocol */ - IPPROTO_IDP = 22, - IPPROTO_ND = 77, /* This one was in winsock.h */ - - IPPROTO_RAW = 255, /* raw IP packets */ - IPPROTO_MAX -}; - -/* Standard well-known ports */ -enum { - IPPORT_ECHO = 7, - IPPORT_DISCARD = 9, - IPPORT_SYSTAT = 11, - IPPORT_DAYTIME = 13, - IPPORT_NETSTAT = 15, - IPPORT_FTP = 21, - IPPORT_TELNET = 23, - IPPORT_SMTP = 25, - IPPORT_TIMESERVER = 37, - IPPORT_NAMESERVER = 42, - IPPORT_WHOIS = 43, - IPPORT_MTP = 57, - - IPPORT_TFTP = 69, - IPPORT_RJE = 77, - IPPORT_FINGER = 79, - IPPORT_TTYLINK = 87, - IPPORT_SUPDUP = 95, - - IPPORT_EXECSERVER = 512, - IPPORT_LOGINSERVER = 513, - IPPORT_CMDSERVER = 514, - IPPORT_EFSSERVER = 520, - - /* UDP ports. */ - IPPORT_BIFFUDP = 512, - IPPORT_WHOSERVER = 513, - IPPORT_ROUTESERVER = 520, - - /* Ports less than this value are reservered for privileged processes. */ - IPPORT_RESERVED = 1024, - - /* Ports greater than this value are reserved for - (non-privileged) processes */ - IPPORT_USERRESERVED = 5000 -}; - -/* Link numbers. */ -#define IMPLINK_IP 155 -#define IMPLINK_LOWEXPER 156 -#define IMPLINK_HIGHEXPER 158 - -/* Linux uses a simple unsigned long int, but winsock.h ... */ -struct in_addr { - union { - struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; - struct { u_short s_w1,s_w2; } S_un_w; - u_long S_addr; - } S_un; -#define s_addr S_un.S_addr -#define s_host S_un.S_un_b.s_b2 -#define s_net S_un.S_un_b.s_b1 -#define s_imp S_un.S_un_w.s_w2 -#define s_impno S_un.S_un_b.s_b4 -#define s_lh S_un.S_un_b.s_b3 -}; - -/* - Definitions of bits in internet address integers. - On subnets, host and network parts are found according - to the subnet mask, not these masks. - */ -#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) -#define IN_CLASSA_NET 0xff000000 -#define IN_CLASSA_NSHIFT 24 -#define IN_CLASSA_HOST 0x00ffffff -#define IN_CLASSA_MAX 128 - -#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) -#define IN_CLASSB_NET 0xffff0000 -#define IN_CLASSB_NSHIFT 16 -#define IN_CLASSB_HOST 0x0000ffff -#define IN_CLASSB_MAX 65536 - -#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) -#define IN_CLASSC_NET 0xffffff00 -#define IN_CLASSC_NSHIFT 8 -#define IN_CLASSC_HOST 0x000000ff - -#define INADDR_ANY (u_long)0x00000000 -#define INADDR_LOOPBACK 0x7f000001 -#define INADDR_BROADCAST (u_long)0xffffffff -#define INADDR_NONE 0xffffffff - -/* - Structure describing an Internet (IP) socket address. - */ -struct sockaddr_in { - short sin_family; - u_short sin_port; - struct in_addr sin_addr; - char sin_zero[8]; -}; - -/* - EVERYTHING FROM THIS POINT IS MAINLY SPECIFIC TO Win32 - - Structure which holds the detail for the underlying Window Sockets - implementation. Set when WSAStartup() is called. - */ -#define WSADESCRIPTION_LEN 256 -#define WSASYS_STATUS_LEN 128 - -typedef struct WSAData { - WORD wVersion; - WORD wHighVersion; - char szDescription[WSADESCRIPTION_LEN+1]; - char szSystemStatus[WSASYS_STATUS_LEN+1]; - unsigned short iMaxSockets; - unsigned short iMaxUdpDg; - char *lpVendorInfo; -} WSADATA, *LPWSADATA; - -#define IP_OPTIONS 1 -#define IP_MULTICAST_IF 2 -#define IP_MULTICAST_TTL 3 -#define IP_MULTICAST_LOOP 4 -#define IP_ADD_MEMBERSHIP 5 -#define IP_DROP_MEMBERSHIP 6 - -#define IP_DEFAULT_MULTICAST_TTL 1 -#define IP_DEFAULT_MULTICAST_LOOP 1 -#define IP_MAX_MEMBERSHIPS 20 - -struct ip_mreq { - struct in_addr imr_multiaddr; - struct in_addr imr_interface; -}; - -/* - * Definitions related to sockets: types, address families, options, - * taken from the BSD file sys/socket.h. - */ - -/* - * This is used instead of -1, since the - * SOCKET type is unsigned. - */ -#define INVALID_SOCKET (SOCKET)(~0) -#define SOCKET_ERROR (-1) - -/* Socket types. */ -#define SOCK_STREAM 1 -#define SOCK_DGRAM 2 -#define SOCK_RAW 3 -#define SOCK_RDM 4 -#define SOCK_SEQPACKET 5 - -/* For setsockoptions(2) */ -#define SO_DEBUG 0x0001 -#define SO_ACCEPTCONN 0x0002 -#define SO_REUSEADDR 0x0004 -#define SO_KEEPALIVE 0x0008 -#define SO_DONTROUTE 0x0010 -#define SO_BROADCAST 0x0020 -#define SO_USELOOPBACK 0x0040 -#define SO_LINGER 0x0080 -#define SO_OOBINLINE 0x0100 - -#define SO_DONTLINGER (u_int)(~SO_LINGER) - -/* - * Additional options. - */ -#define SO_SNDBUF 0x1001 /* send buffer size */ -#define SO_RCVBUF 0x1002 /* receive buffer size */ -#define SO_SNDLOWAT 0x1003 /* send low-water mark */ -#define SO_RCVLOWAT 0x1004 /* receive low-water mark */ -#define SO_SNDTIMEO 0x1005 /* send timeout */ -#define SO_RCVTIMEO 0x1006 /* receive timeout */ -#define SO_ERROR 0x1007 /* get error status and clear */ -#define SO_TYPE 0x1008 /* get socket type */ - -/* - * Options for connect and disconnect data and options. Used only by - * non-TCP/IP transports such as DECNet, OSI TP4, etc. - */ -#define SO_CONNDATA 0x7000 -#define SO_CONNOPT 0x7001 -#define SO_DISCDATA 0x7002 -#define SO_DISCOPT 0x7003 -#define SO_CONNDATALEN 0x7004 -#define SO_CONNOPTLEN 0x7005 -#define SO_DISCDATALEN 0x7006 -#define SO_DISCOPTLEN 0x7007 - -/* - * Option for opening sockets for synchronous access. - */ -#define SO_OPENTYPE 0x7008 - -#define SO_SYNCHRONOUS_ALERT 0x10 -#define SO_SYNCHRONOUS_NONALERT 0x20 - -/* - * Other NT-specific options. - */ -#define SO_MAXDG 0x7009 -#define SO_MAXPATHDG 0x700A - -/* - * TCP options. - */ -#define TCP_NODELAY 0x0001 -#define TCP_BSDURGENT 0x7000 - -/* - * Address families. - */ -#define AF_UNSPEC 0 /* unspecified */ -#define AF_UNIX 1 /* local to host (pipes, portals) */ -#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ -#define AF_IMPLINK 3 /* arpanet imp addresses */ -#define AF_PUP 4 /* pup protocols: e.g. BSP */ -#define AF_CHAOS 5 /* mit CHAOS protocols */ -#define AF_IPX 6 /* IPX and SPX */ -#define AF_NS 6 /* XEROX NS protocols */ -#define AF_ISO 7 /* ISO protocols */ -#define AF_OSI AF_ISO /* OSI is ISO */ -#define AF_ECMA 8 /* european computer manufacturers */ -#define AF_DATAKIT 9 /* datakit protocols */ -#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ -#define AF_SNA 11 /* IBM SNA */ -#define AF_DECnet 12 /* DECnet */ -#define AF_DLI 13 /* Direct data link interface */ -#define AF_LAT 14 /* LAT */ -#define AF_HYLINK 15 /* NSC Hyperchannel */ -#define AF_APPLETALK 16 /* AppleTalk */ -#define AF_NETBIOS 17 /* NetBios-style addresses */ - -#define AF_MAX 18 - -/* - * Structure used by kernel to store most - * addresses. - */ -struct sockaddr { - u_short sa_family; - char sa_data[14]; -}; - -/* - * Structure used by kernel to pass protocol - * information in raw sockets. - */ -struct sockproto { - u_short sp_family; - u_short sp_protocol; -}; - -/* - * Protocol families, same as address families for now. - */ -#define PF_UNSPEC AF_UNSPEC -#define PF_UNIX AF_UNIX -#define PF_INET AF_INET -#define PF_IMPLINK AF_IMPLINK -#define PF_PUP AF_PUP -#define PF_CHAOS AF_CHAOS -#define PF_NS AF_NS -#define PF_IPX AF_IPX -#define PF_ISO AF_ISO -#define PF_OSI AF_OSI -#define PF_ECMA AF_ECMA -#define PF_DATAKIT AF_DATAKIT -#define PF_CCITT AF_CCITT -#define PF_SNA AF_SNA -#define PF_DECnet AF_DECnet -#define PF_DLI AF_DLI -#define PF_LAT AF_LAT -#define PF_HYLINK AF_HYLINK -#define PF_APPLETALK AF_APPLETALK - -#define PF_MAX AF_MAX - -/* - * Structure used for manipulating linger option. - */ -struct linger { - u_short l_onoff; - u_short l_linger; -}; - -/* - * Level number for (get/set)sockopt() to apply to socket itself. - */ -#define SOL_SOCKET 0xffff /* options for socket level */ - -/* - * Maximum queue length specifiable by listen. - */ -#define SOMAXCONN 5 - -#define MSG_OOB 0x1 /* process out-of-band data */ -#define MSG_PEEK 0x2 /* peek at incoming message */ -#define MSG_DONTROUTE 0x4 /* send without using routing tables */ - -#define MSG_MAXIOVLEN 16 - -#define MSG_PARTIAL 0x8000 /* partial send or recv for message xport */ - -/* - * Define constant based on rfc883, used by gethostbyxxxx() calls. - */ -#define MAXGETHOSTSTRUCT 1024 -#ifndef MAXHOSTNAMELEN -#define MAXHOSTNAMELEN MAXGETHOSTSTRUCT -#endif - -/* - * Define flags to be used with the WSAAsyncSelect() call. - */ -#define FD_READ 0x01 -#define FD_WRITE 0x02 -#define FD_OOB 0x04 -#define FD_ACCEPT 0x08 -#define FD_CONNECT 0x10 -#define FD_CLOSE 0x20 - -/* - * All Windows Sockets error constants are biased by WSABASEERR from - * the "normal" - */ -#define WSABASEERR 10000 -/* - * Windows Sockets definitions of regular Microsoft C error constants - */ -#define WSAEINTR (WSABASEERR+4) -#define WSAEBADF (WSABASEERR+9) -#define WSAEACCES (WSABASEERR+13) -#define WSAEFAULT (WSABASEERR+14) -#define WSAEINVAL (WSABASEERR+22) -#define WSAEMFILE (WSABASEERR+24) - -/* - * Windows Sockets definitions of regular Berkeley error constants - */ -#define WSAEWOULDBLOCK (WSABASEERR+35) -#define WSAEINPROGRESS (WSABASEERR+36) -#define WSAEALREADY (WSABASEERR+37) -#define WSAENOTSOCK (WSABASEERR+38) -#define WSAEDESTADDRREQ (WSABASEERR+39) -#define WSAEMSGSIZE (WSABASEERR+40) -#define WSAEPROTOTYPE (WSABASEERR+41) -#define WSAENOPROTOOPT (WSABASEERR+42) -#define WSAEPROTONOSUPPORT (WSABASEERR+43) -#define WSAESOCKTNOSUPPORT (WSABASEERR+44) -#define WSAEOPNOTSUPP (WSABASEERR+45) -#define WSAEPFNOSUPPORT (WSABASEERR+46) -#define WSAEAFNOSUPPORT (WSABASEERR+47) -#define WSAEADDRINUSE (WSABASEERR+48) -#define WSAEADDRNOTAVAIL (WSABASEERR+49) -#define WSAENETDOWN (WSABASEERR+50) -#define WSAENETUNREACH (WSABASEERR+51) -#define WSAENETRESET (WSABASEERR+52) -#define WSAECONNABORTED (WSABASEERR+53) -#define WSAECONNRESET (WSABASEERR+54) -#define WSAENOBUFS (WSABASEERR+55) -#define WSAEISCONN (WSABASEERR+56) -#define WSAENOTCONN (WSABASEERR+57) -#define WSAESHUTDOWN (WSABASEERR+58) -#define WSAETOOMANYREFS (WSABASEERR+59) -#define WSAETIMEDOUT (WSABASEERR+60) -#define WSAECONNREFUSED (WSABASEERR+61) -#define WSAELOOP (WSABASEERR+62) -#define WSAENAMETOOLONG (WSABASEERR+63) -#define WSAEHOSTDOWN (WSABASEERR+64) -#define WSAEHOSTUNREACH (WSABASEERR+65) -#define WSAENOTEMPTY (WSABASEERR+66) -#define WSAEPROCLIM (WSABASEERR+67) -#define WSAEUSERS (WSABASEERR+68) -#define WSAEDQUOT (WSABASEERR+69) -#define WSAESTALE (WSABASEERR+70) -#define WSAEREMOTE (WSABASEERR+71) - -#define WSAEDISCON (WSABASEERR+101) - -/* - * Extended Windows Sockets error constant definitions - */ -#define WSASYSNOTREADY (WSABASEERR+91) -#define WSAVERNOTSUPPORTED (WSABASEERR+92) -#define WSANOTINITIALISED (WSABASEERR+93) - -/* - * Error return codes from gethostbyname() and gethostbyaddr() - * (when using the resolver). Note that these errors are - * retrieved via WSAGetLastError() and must therefore follow - * the rules for avoiding clashes with error numbers from - * specific implementations or language run-time systems. - * For this reason the codes are based at WSABASEERR+1001. - * Note also that [WSA]NO_ADDRESS is defined only for - * compatibility purposes. - */ - -#define h_errno WSAGetLastError() - -/* Authoritative Answer: Host not found */ -#define WSAHOST_NOT_FOUND (WSABASEERR+1001) -#define HOST_NOT_FOUND WSAHOST_NOT_FOUND - -/* Non-Authoritative: Host not found, or SERVERFAIL */ -#define WSATRY_AGAIN (WSABASEERR+1002) -#define TRY_AGAIN WSATRY_AGAIN - -/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ -#define WSANO_RECOVERY (WSABASEERR+1003) -#define NO_RECOVERY WSANO_RECOVERY - -/* Valid name, no data record of requested type */ -#define WSANO_DATA (WSABASEERR+1004) -#define NO_DATA WSANO_DATA - -/* no address, look for MX record */ -#define WSANO_ADDRESS WSANO_DATA -#define NO_ADDRESS WSANO_ADDRESS - -/* - * Windows Sockets errors redefined as regular Berkeley error constants. - * These are commented out in Windows NT to avoid conflicts with errno.h. - * Use the WSA constants instead. - */ -#if 0 -#define EWOULDBLOCK WSAEWOULDBLOCK -#define EINPROGRESS WSAEINPROGRESS -#define EALREADY WSAEALREADY -#define ENOTSOCK WSAENOTSOCK -#define EDESTADDRREQ WSAEDESTADDRREQ -#define EMSGSIZE WSAEMSGSIZE -#define EPROTOTYPE WSAEPROTOTYPE -#define ENOPROTOOPT WSAENOPROTOOPT -#define EPROTONOSUPPORT WSAEPROTONOSUPPORT -#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT -#define EOPNOTSUPP WSAEOPNOTSUPP -#define EPFNOSUPPORT WSAEPFNOSUPPORT -#define EAFNOSUPPORT WSAEAFNOSUPPORT -#define EADDRINUSE WSAEADDRINUSE -#define EADDRNOTAVAIL WSAEADDRNOTAVAIL -#define ENETDOWN WSAENETDOWN -#define ENETUNREACH WSAENETUNREACH -#define ENETRESET WSAENETRESET -#define ECONNABORTED WSAECONNABORTED -#define ECONNRESET WSAECONNRESET -#define ENOBUFS WSAENOBUFS -#define EISCONN WSAEISCONN -#define ENOTCONN WSAENOTCONN -#define ESHUTDOWN WSAESHUTDOWN -#define ETOOMANYREFS WSAETOOMANYREFS -#define ETIMEDOUT WSAETIMEDOUT -#define ECONNREFUSED WSAECONNREFUSED -#define ELOOP WSAELOOP -#define ENAMETOOLONG WSAENAMETOOLONG -#define EHOSTDOWN WSAEHOSTDOWN -#define EHOSTUNREACH WSAEHOSTUNREACH -#define ENOTEMPTY WSAENOTEMPTY -#define EPROCLIM WSAEPROCLIM -#define EUSERS WSAEUSERS -#define EDQUOT WSAEDQUOT -#define ESTALE WSAESTALE -#define EREMOTE WSAEREMOTE -#endif - -/* Socket function prototypes */ - -SOCKET PASCAL accept (SOCKET s, struct sockaddr *addr, - int *addrlen); - -int PASCAL bind (SOCKET s, const struct sockaddr *addr, int namelen); - -int PASCAL closesocket (SOCKET s); - -int PASCAL connect (SOCKET s, const struct sockaddr *name, int namelen); - -int PASCAL ioctlsocket (SOCKET s, long cmd, u_long *argp); - -int PASCAL getpeername (SOCKET s, struct sockaddr *name, - int * namelen); - -int PASCAL getsockname (SOCKET s, struct sockaddr *name, - int * namelen); - -int PASCAL getsockopt (SOCKET s, int level, int optname, - char * optval, int *optlen); - -u_long PASCAL htonl (u_long hostlong); - -u_short PASCAL htons (u_short hostshort); - -unsigned long PASCAL inet_addr (const char * cp); - -char * PASCAL inet_ntoa (struct in_addr in); - -int PASCAL listen (SOCKET s, int backlog); - -u_long PASCAL ntohl (u_long netlong); - -/* For some reason WSOCK.LIB has ntohs defined as a 4 byte paramter?! */ -#ifdef _WIN32 -u_short PASCAL ntohs (u_long netshort); -#else -u_short PASCAL ntohs (u_short netshort); -#endif /* _WIN32 */ - -int PASCAL recv (SOCKET s, char * buf, int len, int flags); - -int PASCAL recvfrom (SOCKET s, char * buf, int len, int flags, - struct sockaddr *from, int * fromlen); - -int PASCAL select (int nfds, fd_set *readfds, fd_set *writefds, - fd_set *exceptfds, const struct timeval *timeout); - -int PASCAL send (SOCKET s, const char * buf, int len, int flags); - -int PASCAL sendto (SOCKET s, const char * buf, int len, int flags, - const struct sockaddr *to, int tolen); - -int PASCAL setsockopt (SOCKET s, int level, int optname, - const char * optval, int optlen); - -int PASCAL shutdown (SOCKET s, int how); - -SOCKET PASCAL socket (int af, int type, int protocol); - -/* Database function prototypes */ - -struct hostent * PASCAL gethostbyaddr(const char * addr, - int len, int type); - -struct hostent * PASCAL gethostbyname(const char * name); - -int PASCAL gethostname (char * name, int namelen); - -struct servent * PASCAL getservbyport(int port, const char * proto); - -struct servent * PASCAL getservbyname(const char * name, - const char * proto); - -struct protoent * PASCAL getprotobynumber(int proto); - -struct protoent * PASCAL getprotobyname(const char * name); - -/* Microsoft Windows Extension function prototypes */ - -int PASCAL WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData); - -int PASCAL WSACleanup(void); - -void PASCAL WSASetLastError(int iError); - -int PASCAL WSAGetLastError(void); - -WINBOOL PASCAL WSAIsBlocking(void); - -int PASCAL WSAUnhookBlockingHook(void); - -FARPROC PASCAL WSASetBlockingHook(FARPROC lpBlockFunc); - -int PASCAL WSACancelBlockingCall(void); - -HANDLE PASCAL WSAAsyncGetServByName(HWND hWnd, u_int wMsg, - const char * name, - const char * proto, - char * buf, int buflen); - -HANDLE PASCAL WSAAsyncGetServByPort(HWND hWnd, u_int wMsg, int port, - const char * proto, char * buf, - int buflen); - -HANDLE PASCAL WSAAsyncGetProtoByName(HWND hWnd, u_int wMsg, - const char * name, char * buf, - int buflen); - -HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND hWnd, u_int wMsg, - int number, char * buf, - int buflen); - -HANDLE PASCAL WSAAsyncGetHostByName(HWND hWnd, u_int wMsg, - const char * name, char * buf, - int buflen); - -HANDLE PASCAL WSAAsyncGetHostByAddr(HWND hWnd, u_int wMsg, - const char * addr, int len, int type, - char * buf, int buflen); - -int PASCAL WSACancelAsyncRequest(HANDLE hAsyncTaskHandle); - -int PASCAL WSAAsyncSelect(SOCKET s, HWND hWnd, u_int wMsg, - long lEvent); - -int PASCAL WSARecvEx (SOCKET s, char * buf, int len, int *flags); - -/* Microsoft Windows Extended data types */ -typedef struct sockaddr SOCKADDR; -typedef struct sockaddr *PSOCKADDR; -typedef struct sockaddr *LPSOCKADDR; - -typedef struct sockaddr_in SOCKADDR_IN; -typedef struct sockaddr_in *PSOCKADDR_IN; -typedef struct sockaddr_in *LPSOCKADDR_IN; - -typedef struct linger LINGER; -typedef struct linger *PLINGER; -typedef struct linger *LPLINGER; - -typedef struct in_addr IN_ADDR; -typedef struct in_addr *PIN_ADDR; -typedef struct in_addr *LPIN_ADDR; - -typedef struct fd_set FD_SET; -typedef struct fd_set *PFD_SET; -typedef struct fd_set *LPFD_SET; - -typedef struct hostent HOSTENT; -typedef struct hostent *PHOSTENT; -typedef struct hostent *LPHOSTENT; - -typedef struct servent SERVENT; -typedef struct servent *PSERVENT; -typedef struct servent *LPSERVENT; - -typedef struct protoent PROTOENT; -typedef struct protoent *PPROTOENT; -typedef struct protoent *LPPROTOENT; - -typedef struct timeval TIMEVAL; -typedef struct timeval *PTIMEVAL; -typedef struct timeval *LPTIMEVAL; - -/* - * Windows message parameter composition and decomposition - * macros. - * - * WSAMAKEASYNCREPLY is intended for use by the Windows Sockets implementation - * when constructing the response to a WSAAsyncGetXByY() routine. - */ -#define WSAMAKEASYNCREPLY(buflen,error) MAKELONG(buflen,error) -/* - * WSAMAKESELECTREPLY is intended for use by the Windows Sockets implementation - * when constructing the response to WSAAsyncSelect(). - */ -#define WSAMAKESELECTREPLY(event,error) MAKELONG(event,error) -/* - * WSAGETASYNCBUFLEN is intended for use by the Windows Sockets application - * to extract the buffer length from the lParam in the response - * to a WSAGetXByY(). - */ -#define WSAGETASYNCBUFLEN(lParam) LOWORD(lParam) -/* - * WSAGETASYNCERROR is intended for use by the Windows Sockets application - * to extract the error code from the lParam in the response - * to a WSAGetXByY(). - */ -#define WSAGETASYNCERROR(lParam) HIWORD(lParam) -/* - * WSAGETSELECTEVENT is intended for use by the Windows Sockets application - * to extract the event code from the lParam in the response - * to a WSAAsyncSelect(). - */ -#define WSAGETSELECTEVENT(lParam) LOWORD(lParam) -/* - * WSAGETSELECTERROR is intended for use by the Windows Sockets application - * to extract the error code from the lParam in the response - * to a WSAAsyncSelect(). - */ -#define WSAGETSELECTERROR(lParam) HIWORD(lParam) - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* _GNU_H_WINDOWS32_SOCKETS */