19fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* WINSOCK.H--definitions to be used with the WINSOCK.DLL 29fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Copyright (c) 1993-1995, Microsoft Corp. All rights reserved. 39fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * 49fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * This header file corresponds to version 1.1 of the Windows Sockets specification. 59fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * 69fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * This file includes parts which are Copyright (c) 1982-1986 Regents 79fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * of the University of California. All rights reserved. The 89fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Berkeley Software License Agreement specifies the terms and 99fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * conditions for redistribution. 109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * 119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef _WINSOCKAPI_ 149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define _WINSOCKAPI_ 159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FAR 179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PASCAL 189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Basic system type definitions, taken from the BSD file sys/types.h. 219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef unsigned char u_char; 239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef unsigned short u_short; 249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef unsigned int u_int; 259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef unsigned long u_long; 269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * The new type to be used in all 299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * instances which refer to sockets. 309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef u_int SOCKET; 329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream// FIXME 349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#if 0 359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Select uses arrays of SOCKETs. These macros manipulate such 379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * arrays. FD_SETSIZE may be defined by the user before including 389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * this file, but the default here should be >= 64. 399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * 409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * CAVEAT IMPLEMENTOR and USER: THESE MACROS AND TYPES MUST BE 419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * INCLUDED IN WINSOCK.H EXACTLY AS SHOWN HERE. 429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifndef FD_SETSIZE 449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_SETSIZE 64 459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif /* FD_SETSIZE */ 469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct fd_set { 489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_int fd_count; /* how many are SET? */ 499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream SOCKET fd_array[FD_SETSIZE]; /* an array of SOCKETs */ 509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} fd_set; 519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifdef __cplusplus 539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamextern "C" { 549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif 559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamextern int PASCAL FAR __WSAFDIsSet(SOCKET, fd_set FAR *); 579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifdef __cplusplus 599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} 609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif 619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_CLR(fd, set) do { \ 649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_int __i; \ 659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \ 669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream if (((fd_set FAR *)(set))->fd_array[__i] == fd) { \ 679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream while (__i < ((fd_set FAR *)(set))->fd_count-1) { \ 689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream ((fd_set FAR *)(set))->fd_array[__i] = \ 699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream ((fd_set FAR *)(set))->fd_array[__i+1]; \ 709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream __i++; \ 719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream } \ 729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream ((fd_set FAR *)(set))->fd_count--; \ 739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream break; \ 749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream } \ 759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream } \ 769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} while(0) 779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_SET(fd, set) do { \ 799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) \ 809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream ((fd_set FAR *)(set))->fd_array[((fd_set FAR *)(set))->fd_count++]=(fd);\ 819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} while(0) 829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_ZERO(set) (((fd_set FAR *)(set))->fd_count=0) 849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set)) 869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure used in select() call, taken from the BSD file sys/time.h. 899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct timeval { 919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream long tv_sec; /* seconds */ 929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream long tv_usec; /* and microseconds */ 939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Operations on timevals. 979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * 989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * NB: timercmp does not work for >= or <=. 999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 1009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) 1019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define timercmp(tvp, uvp, cmp) \ 1029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream ((tvp)->tv_sec cmp (uvp)->tv_sec || \ 1039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec) 1049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 1059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif 1069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 1089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Commands for ioctlsocket(), taken from the BSD file fcntl.h. 1099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * 1109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * 1119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Ioctl's have the command encoded in the lower word, 1129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * and the size of any in or out parameters in the upper 1139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * word. The high 2 bits of the upper word are used 1149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * to encode the in/out status of the parameter; for now 1159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * we restrict parameters to at most 128 bytes. 1169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 1179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */ 1189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IOC_VOID 0x20000000 /* no parameters */ 1199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IOC_OUT 0x40000000 /* copy out parameters */ 1209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IOC_IN 0x80000000 /* copy in parameters */ 1219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IOC_INOUT (IOC_IN|IOC_OUT) 1229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* 0x20000000 distinguishes new & 1239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream old ioctl's */ 1249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) 1259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) 1279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) 1299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FIONREAD _IOR('f', 127, u_long) /* get # bytes to read */ 1319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FIONBIO _IOW('f', 126, u_long) /* set/clear non-blocking i/o */ 1329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FIOASYNC _IOW('f', 125, u_long) /* set/clear async i/o */ 1339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Socket I/O Controls */ 1359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SIOCSHIWAT _IOW('s', 0, u_long) /* set high watermark */ 1369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SIOCGHIWAT _IOR('s', 1, u_long) /* get high watermark */ 1379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SIOCSLOWAT _IOW('s', 2, u_long) /* set low watermark */ 1389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SIOCGLOWAT _IOR('s', 3, u_long) /* get low watermark */ 1399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SIOCATMARK _IOR('s', 7, u_long) /* at oob mark? */ 1409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 1429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structures returned by network data base library, taken from the 1439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * BSD file netdb.h. All addresses are supplied in host order, and 1449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * returned in network order (suitable for use in system calls). 1459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 1469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct hostent { 1489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * h_name; /* official name of host */ 1499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * FAR * h_aliases; /* alias list */ 1509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream short h_addrtype; /* host address type */ 1519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream short h_length; /* length of address */ 1529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * FAR * h_addr_list; /* list of addresses */ 1539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define h_addr h_addr_list[0] /* address, for backward compat */ 1549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 1559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 1579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * It is assumed here that a network number 1589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * fits in 32 bits. 1599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 1609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct netent { 1619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * n_name; /* official name of net */ 1629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * FAR * n_aliases; /* alias list */ 1639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream short n_addrtype; /* net address type */ 1649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_long n_net; /* network # */ 1659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 1669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct servent { 1689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * s_name; /* official service name */ 1699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * FAR * s_aliases; /* alias list */ 1709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream short s_port; /* port # */ 1719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * s_proto; /* protocol to use */ 1729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 1739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct protoent { 1759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * p_name; /* official protocol name */ 1769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * FAR * p_aliases; /* alias list */ 1779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream short p_proto; /* protocol # */ 1789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 1799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 1819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Constants and structures defined by the internet system, 1829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Per RFC 790, September 1981, taken from the BSD file netinet/in.h. 1839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 1849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 1869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Protocols 1879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 1889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_IP 0 /* dummy for IP */ 1899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_ICMP 1 /* control message protocol */ 1909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_GGP 2 /* gateway^2 (deprecated) */ 1919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_TCP 6 /* tcp */ 1929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_PUP 12 /* pup */ 1939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_UDP 17 /* user datagram protocol */ 1949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_IDP 22 /* xns idp */ 1959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_ND 77 /* UNOFFICIAL net disk proto */ 1969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 1979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_RAW 255 /* raw IP packet */ 1989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPROTO_MAX 256 1999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Port/socket numbers: network standard functions 2029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_ECHO 7 2049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_DISCARD 9 2059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_SYSTAT 11 2069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_DAYTIME 13 2079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_NETSTAT 15 2089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_FTP 21 2099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_TELNET 23 2109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_SMTP 25 2119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_TIMESERVER 37 2129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_NAMESERVER 42 2139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_WHOIS 43 2149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_MTP 57 2159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Port/socket numbers: host specific functions 2189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_TFTP 69 2209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_RJE 77 2219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_FINGER 79 2229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_TTYLINK 87 2239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_SUPDUP 95 2249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * UNIX TCP sockets 2279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_EXECSERVER 512 2299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_LOGINSERVER 513 2309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_CMDSERVER 514 2319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_EFSSERVER 520 2329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * UNIX UDP sockets 2359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_BIFFUDP 512 2379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_WHOSERVER 513 2389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_ROUTESERVER 520 2399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* 520+1 also used */ 2409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Ports < IPPORT_RESERVED are reserved for 2439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * privileged processes (e.g. root). 2449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IPPORT_RESERVED 1024 2469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Link numbers 2499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IMPLINK_IP 155 2519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IMPLINK_LOWEXPER 156 2529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IMPLINK_HIGHEXPER 158 2539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Internet address (old style... should be updated) 2569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct in_addr { 2589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream union { 2599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; 2609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream struct { u_short s_w1,s_w2; } S_un_w; 2619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_long S_addr; 2629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream } S_un; 2639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define s_addr S_un.S_addr 2649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* can be used for most tcp & ip code */ 2659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define s_host S_un.S_un_b.s_b2 2669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* host on imp */ 2679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define s_net S_un.S_un_b.s_b1 2689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* network */ 2699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define s_imp S_un.S_un_w.s_w2 2709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* imp */ 2719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define s_impno S_un.S_un_b.s_b4 2729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* imp # */ 2739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define s_lh S_un.S_un_b.s_b3 2749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream /* logical host */ 2759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 2769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 2789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Definitions of bits in internet address integers. 2799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * On subnets, the decomposition of addresses to host and net parts 2809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * is done according to subnet mask, not the masks here. 2819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 2829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSA(i) (((long)(i) & 0x80000000) == 0) 2839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSA_NET 0xff000000 2849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSA_NSHIFT 24 2859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSA_HOST 0x00ffffff 2869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSA_MAX 128 2879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSB(i) (((long)(i) & 0xc0000000) == 0x80000000) 2899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSB_NET 0xffff0000 2909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSB_NSHIFT 16 2919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSB_HOST 0x0000ffff 2929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSB_MAX 65536 2939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSC(i) (((long)(i) & 0xe0000000) == 0xc0000000) 2959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSC_NET 0xffffff00 2969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSC_NSHIFT 8 2979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IN_CLASSC_HOST 0x000000ff 2989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 2999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define INADDR_ANY (u_long)0x00000000 3009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define INADDR_LOOPBACK 0x7f000001 3019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define INADDR_BROADCAST (u_long)0xffffffff 3029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define INADDR_NONE 0xffffffff 3039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Socket address, internet style. 3069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct sockaddr_in { 3089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream short sin_family; 3099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_short sin_port; 3109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream struct in_addr sin_addr; 3119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char sin_zero[8]; 3129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 3139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSADESCRIPTION_LEN 256 3159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSASYS_STATUS_LEN 128 3169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Options for use with [gs]etsockopt at the IP level. 3209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_OPTIONS 1 /* set/get IP per-packet options */ 3229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_MULTICAST_IF 2 /* set/get IP multicast interface */ 3239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_MULTICAST_TTL 3 /* set/get IP multicast timetolive */ 3249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_MULTICAST_LOOP 4 /* set/get IP multicast loopback */ 3259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_ADD_MEMBERSHIP 5 /* add an IP group membership */ 3269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_DROP_MEMBERSHIP 6 /* drop an IP group membership */ 3279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */ 3299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */ 3309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define IP_MAX_MEMBERSHIPS 20 /* per socket; must fit in one mbuf */ 3319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP. 3349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct ip_mreq { 3369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream struct in_addr imr_multiaddr; /* IP multicast address of group */ 3379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream struct in_addr imr_interface; /* local IP address of interface */ 3389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 3399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Definitions related to sockets: types, address families, options, 3429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * taken from the BSD file sys/socket.h. 3439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * This is used instead of -1, since the 3479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * SOCKET type is unsigned. 3489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define INVALID_SOCKET (SOCKET)(~0) 3509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOCKET_ERROR (-1) 3519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Types 3549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOCK_STREAM 1 /* stream socket */ 3569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOCK_DGRAM 2 /* datagram socket */ 3579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOCK_RAW 3 /* raw-protocol interface */ 3589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOCK_RDM 4 /* reliably-delivered message */ 3599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOCK_SEQPACKET 5 /* sequenced packet stream */ 3609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Option flags per-socket. 3639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_DEBUG 0x0001 /* turn on debugging info recording */ 3659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_ACCEPTCONN 0x0002 /* socket has had listen() */ 3669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_REUSEADDR 0x0004 /* allow local address reuse */ 3679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_KEEPALIVE 0x0008 /* keep connections alive */ 3689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_DONTROUTE 0x0010 /* just use interface addresses */ 3699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_BROADCAST 0x0020 /* permit sending of broadcast msgs */ 3709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_USELOOPBACK 0x0040 /* bypass hardware when possible */ 3719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_LINGER 0x0080 /* linger on close if data present */ 3729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_OOBINLINE 0x0100 /* leave received OOB data in line */ 3739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_DONTLINGER (u_int)(~SO_LINGER) 3759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Additional options. 3789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_SNDBUF 0x1001 /* send buffer size */ 3809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_RCVBUF 0x1002 /* receive buffer size */ 3819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_SNDLOWAT 0x1003 /* send low-water mark */ 3829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_RCVLOWAT 0x1004 /* receive low-water mark */ 3839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_SNDTIMEO 0x1005 /* send timeout */ 3849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_RCVTIMEO 0x1006 /* receive timeout */ 3859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_ERROR 0x1007 /* get error status and clear */ 3869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_TYPE 0x1008 /* get socket type */ 3879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 3889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 3899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Options for connect and disconnect data and options. Used only by 3909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * non-TCP/IP transports such as DECNet, OSI TP4, etc. 3919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 3929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_CONNDATA 0x7000 3939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_CONNOPT 0x7001 3949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_DISCDATA 0x7002 3959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_DISCOPT 0x7003 3969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_CONNDATALEN 0x7004 3979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_CONNOPTLEN 0x7005 3989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_DISCDATALEN 0x7006 3999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_DISCOPTLEN 0x7007 4009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Option for opening sockets for synchronous access. 4039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_OPENTYPE 0x7008 4059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_SYNCHRONOUS_ALERT 0x10 4079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_SYNCHRONOUS_NONALERT 0x20 4089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Other NT-specific options. 4119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_MAXDG 0x7009 4139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SO_MAXPATHDG 0x700A 4149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * TCP options. 4179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define TCP_NODELAY 0x0001 4199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define TCP_BSDURGENT 0x7000 4209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Address families. 4239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_UNSPEC 0 /* unspecified */ 4259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_UNIX 1 /* local to host (pipes, portals) */ 4269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_INET 2 /* internetwork: UDP, TCP, etc. */ 4279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_IMPLINK 3 /* arpanet imp addresses */ 4289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_PUP 4 /* pup protocols: e.g. BSP */ 4299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_CHAOS 5 /* mit CHAOS protocols */ 4309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_IPX 6 /* IPX and SPX */ 4319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_NS 6 /* XEROX NS protocols */ 4329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_ISO 7 /* ISO protocols */ 4339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_OSI AF_ISO /* OSI is ISO */ 4349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_ECMA 8 /* european computer manufacturers */ 4359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_DATAKIT 9 /* datakit protocols */ 4369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_CCITT 10 /* CCITT protocols, X.25 etc */ 4379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_SNA 11 /* IBM SNA */ 4389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_DECnet 12 /* DECnet */ 4399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_DLI 13 /* Direct data link interface */ 4409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_LAT 14 /* LAT */ 4419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_HYLINK 15 /* NSC Hyperchannel */ 4429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_APPLETALK 16 /* AppleTalk */ 4439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_NETBIOS 17 /* NetBios-style addresses */ 4449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_VOICEVIEW 18 /* VoiceView */ 4459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define AF_MAX 19 4479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure used by kernel to store most 4509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * addresses. 4519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct sockaddr { 4539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_short sa_family; /* address family */ 4549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char sa_data[14]; /* up to 14 bytes of direct address */ 4559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 4569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure used by kernel to pass protocol 4599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * information in raw sockets. 4609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct sockproto { 4629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_short sp_family; /* address family */ 4639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_short sp_protocol; /* protocol */ 4649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 4659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Protocol families, same as address families for now. 4689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_UNSPEC AF_UNSPEC 4709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_UNIX AF_UNIX 4719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_INET AF_INET 4729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_IMPLINK AF_IMPLINK 4739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_PUP AF_PUP 4749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_CHAOS AF_CHAOS 4759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_NS AF_NS 4769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_IPX AF_IPX 4779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_ISO AF_ISO 4789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_OSI AF_OSI 4799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_ECMA AF_ECMA 4809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_DATAKIT AF_DATAKIT 4819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_CCITT AF_CCITT 4829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_SNA AF_SNA 4839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_DECnet AF_DECnet 4849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_DLI AF_DLI 4859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_LAT AF_LAT 4869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_HYLINK AF_HYLINK 4879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_APPLETALK AF_APPLETALK 4889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_VOICEVIEW AF_VOICEVIEW 4899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define PF_MAX AF_MAX 4919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 4929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 4939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Structure used for manipulating linger option. 4949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 4959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct linger { 4969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_short l_onoff; /* option on/off */ 4979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream u_short l_linger; /* linger time */ 4989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream}; 4999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Level number for (get/set)sockopt() to apply to socket itself. 5029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOL_SOCKET 0xffff /* options for socket level */ 5049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Maximum queue length specifiable by listen. 5079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define SOMAXCONN 5 5099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define MSG_OOB 0x1 /* process out-of-band data */ 5119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define MSG_PEEK 0x2 /* peek at incoming message */ 5129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define MSG_DONTROUTE 0x4 /* send without using routing tables */ 5139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define MSG_MAXIOVLEN 16 5159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define MSG_PARTIAL 0x8000 /* partial send or recv for message xport */ 5179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Define constant based on rfc883, used by gethostbyxxxx() calls. 5209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define MAXGETHOSTSTRUCT 1024 5229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Define flags to be used with the WSAAsyncSelect() call. 5259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_READ 0x01 5279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_WRITE 0x02 5289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_OOB 0x04 5299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_ACCEPT 0x08 5309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_CONNECT 0x10 5319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define FD_CLOSE 0x20 5329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * All Windows Sockets error constants are biased by WSABASEERR from 5359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * the "normal" 5369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSABASEERR 10000 5389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Windows Sockets definitions of regular Microsoft C error constants 5409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEINTR (WSABASEERR+4) 5429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEBADF (WSABASEERR+9) 5439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEACCES (WSABASEERR+13) 5449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEFAULT (WSABASEERR+14) 5459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEINVAL (WSABASEERR+22) 5469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEMFILE (WSABASEERR+24) 5479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Windows Sockets definitions of regular Berkeley error constants 5509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEWOULDBLOCK (WSABASEERR+35) 5529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEINPROGRESS (WSABASEERR+36) 5539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEALREADY (WSABASEERR+37) 5549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENOTSOCK (WSABASEERR+38) 5559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEDESTADDRREQ (WSABASEERR+39) 5569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEMSGSIZE (WSABASEERR+40) 5579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEPROTOTYPE (WSABASEERR+41) 5589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENOPROTOOPT (WSABASEERR+42) 5599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEPROTONOSUPPORT (WSABASEERR+43) 5609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAESOCKTNOSUPPORT (WSABASEERR+44) 5619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEOPNOTSUPP (WSABASEERR+45) 5629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEPFNOSUPPORT (WSABASEERR+46) 5639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEAFNOSUPPORT (WSABASEERR+47) 5649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEADDRINUSE (WSABASEERR+48) 5659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEADDRNOTAVAIL (WSABASEERR+49) 5669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENETDOWN (WSABASEERR+50) 5679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENETUNREACH (WSABASEERR+51) 5689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENETRESET (WSABASEERR+52) 5699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAECONNABORTED (WSABASEERR+53) 5709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAECONNRESET (WSABASEERR+54) 5719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENOBUFS (WSABASEERR+55) 5729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEISCONN (WSABASEERR+56) 5739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENOTCONN (WSABASEERR+57) 5749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAESHUTDOWN (WSABASEERR+58) 5759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAETOOMANYREFS (WSABASEERR+59) 5769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAETIMEDOUT (WSABASEERR+60) 5779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAECONNREFUSED (WSABASEERR+61) 5789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAELOOP (WSABASEERR+62) 5799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENAMETOOLONG (WSABASEERR+63) 5809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEHOSTDOWN (WSABASEERR+64) 5819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEHOSTUNREACH (WSABASEERR+65) 5829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAENOTEMPTY (WSABASEERR+66) 5839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEPROCLIM (WSABASEERR+67) 5849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEUSERS (WSABASEERR+68) 5859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEDQUOT (WSABASEERR+69) 5869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAESTALE (WSABASEERR+70) 5879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEREMOTE (WSABASEERR+71) 5889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAEDISCON (WSABASEERR+101) 5909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Extended Windows Sockets error constant definitions 5939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 5949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSASYSNOTREADY (WSABASEERR+91) 5959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAVERNOTSUPPORTED (WSABASEERR+92) 5969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSANOTINITIALISED (WSABASEERR+93) 5979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 5989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 5999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Error return codes from gethostbyname() and gethostbyaddr() 6009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * (when using the resolver). Note that these errors are 6019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * retrieved via WSAGetLastError() and must therefore follow 6029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * the rules for avoiding clashes with error numbers from 6039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * specific implementations or language run-time systems. 6049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * For this reason the codes are based at WSABASEERR+1001. 6059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Note also that [WSA]NO_ADDRESS is defined only for 6069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * compatibility purposes. 6079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 6089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define h_errno WSAGetLastError() 6109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Authoritative Answer: Host not found */ 6129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSAHOST_NOT_FOUND (WSABASEERR+1001) 6139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define HOST_NOT_FOUND WSAHOST_NOT_FOUND 6149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Non-Authoritative: Host not found, or SERVERFAIL */ 6169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSATRY_AGAIN (WSABASEERR+1002) 6179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define TRY_AGAIN WSATRY_AGAIN 6189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Non recoverable errors, FORMERR, REFUSED, NOTIMP */ 6209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSANO_RECOVERY (WSABASEERR+1003) 6219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define NO_RECOVERY WSANO_RECOVERY 6229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Valid name, no data record of requested type */ 6249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSANO_DATA (WSABASEERR+1004) 6259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define NO_DATA WSANO_DATA 6269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* no address, look for MX record */ 6289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define WSANO_ADDRESS WSANO_DATA 6299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define NO_ADDRESS WSANO_ADDRESS 6309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* 6329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Windows Sockets errors redefined as regular Berkeley error constants. 6339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * These are commented out in Windows NT to avoid conflicts with errno.h. 6349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream * Use the WSA constants instead. 6359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream */ 6369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#if 0 6379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EWOULDBLOCK WSAEWOULDBLOCK 6389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EINPROGRESS WSAEINPROGRESS 6399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EALREADY WSAEALREADY 6409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENOTSOCK WSAENOTSOCK 6419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EDESTADDRREQ WSAEDESTADDRREQ 6429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EMSGSIZE WSAEMSGSIZE 6439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EPROTOTYPE WSAEPROTOTYPE 6449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENOPROTOOPT WSAENOPROTOOPT 6459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EPROTONOSUPPORT WSAEPROTONOSUPPORT 6469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ESOCKTNOSUPPORT WSAESOCKTNOSUPPORT 6479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EOPNOTSUPP WSAEOPNOTSUPP 6489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EPFNOSUPPORT WSAEPFNOSUPPORT 6499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EAFNOSUPPORT WSAEAFNOSUPPORT 6509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EADDRINUSE WSAEADDRINUSE 6519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EADDRNOTAVAIL WSAEADDRNOTAVAIL 6529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENETDOWN WSAENETDOWN 6539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENETUNREACH WSAENETUNREACH 6549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENETRESET WSAENETRESET 6559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ECONNABORTED WSAECONNABORTED 6569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ECONNRESET WSAECONNRESET 6579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENOBUFS WSAENOBUFS 6589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EISCONN WSAEISCONN 6599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENOTCONN WSAENOTCONN 6609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ESHUTDOWN WSAESHUTDOWN 6619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ETOOMANYREFS WSAETOOMANYREFS 6629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ETIMEDOUT WSAETIMEDOUT 6639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ECONNREFUSED WSAECONNREFUSED 6649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ELOOP WSAELOOP 6659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENAMETOOLONG WSAENAMETOOLONG 6669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EHOSTDOWN WSAEHOSTDOWN 6679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EHOSTUNREACH WSAEHOSTUNREACH 6689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ENOTEMPTY WSAENOTEMPTY 6699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EPROCLIM WSAEPROCLIM 6709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EUSERS WSAEUSERS 6719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EDQUOT WSAEDQUOT 6729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define ESTALE WSAESTALE 6739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#define EREMOTE WSAEREMOTE 6749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif 6759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Socket function prototypes */ 6779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifdef __cplusplus 6799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamextern "C" { 6809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif 6819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamSOCKET PASCAL FAR accept (SOCKET s, struct sockaddr FAR *addr, 6839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream int FAR *addrlen); 6849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR bind (SOCKET s, const struct sockaddr FAR *addr, int namelen); 6869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR closesocket (SOCKET s); 6889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR connect (SOCKET s, const struct sockaddr FAR *name, int namelen); 6909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR ioctlsocket (SOCKET s, long cmd, u_long FAR *argp); 6929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR getpeername (SOCKET s, struct sockaddr FAR *name, 6949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream int FAR * namelen); 6959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR getsockname (SOCKET s, struct sockaddr FAR *name, 6979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream int FAR * namelen); 6989fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 6999fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR getsockopt (SOCKET s, int level, int optname, 7009fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream char FAR * optval, int FAR *optlen); 7019fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7029fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamu_long PASCAL FAR htonl (u_long hostlong); 7039fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7049fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamu_short PASCAL FAR htons (u_short hostshort); 7059fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7069fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamunsigned long PASCAL FAR inet_addr (const char FAR * cp); 7079fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7089fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamchar FAR * PASCAL FAR inet_ntoa (struct in_addr in); 7099fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7109fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR listen (SOCKET s, int backlog); 7119fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7129fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamu_long PASCAL FAR ntohl (u_long netlong); 7139fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7149fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamu_short PASCAL FAR ntohs (u_short netshort); 7159fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7169fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR recv (SOCKET s, char FAR * buf, int len, int flags); 7179fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7189fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR recvfrom (SOCKET s, char FAR * buf, int len, int flags, 7199fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream struct sockaddr FAR *from, int FAR * fromlen); 7209fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7219fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#if 0 7229fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR select (int nfds, fd_set FAR *readfds, fd_set FAR *writefds, 7239fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream fd_set FAR *exceptfds, const struct timeval FAR *timeout); 7249fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif 7259fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7269fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR send (SOCKET s, const char FAR * buf, int len, int flags); 7279fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7289fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR sendto (SOCKET s, const char FAR * buf, int len, int flags, 7299fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream const struct sockaddr FAR *to, int tolen); 7309fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7319fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR setsockopt (SOCKET s, int level, int optname, 7329fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream const char FAR * optval, int optlen); 7339fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7349fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR shutdown (SOCKET s, int how); 7359fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7369fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamSOCKET PASCAL FAR socket (int af, int type, int protocol); 7379fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7389fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Database function prototypes */ 7399fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7409fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct hostent FAR * PASCAL FAR gethostbyaddr(const char FAR * addr, 7419fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream int len, int type); 7429fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7439fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct hostent FAR * PASCAL FAR gethostbyname(const char FAR * name); 7449fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7459fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamint PASCAL FAR gethostname (char FAR * name, int namelen); 7469fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7479fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct servent FAR * PASCAL FAR getservbyport(int port, const char FAR * proto); 7489fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7499fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct servent FAR * PASCAL FAR getservbyname(const char FAR * name, 7509fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream const char FAR * proto); 7519fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7529fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct protoent FAR * PASCAL FAR getprotobynumber(int proto); 7539fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7549fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamstruct protoent FAR * PASCAL FAR getprotobyname(const char FAR * name); 7559fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7569fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#ifdef __cplusplus 7579fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream} 7589fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif 7599fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7609fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream/* Microsoft Windows Extended data types */ 7619fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct sockaddr SOCKADDR; 7629fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct sockaddr *PSOCKADDR; 7639fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct sockaddr FAR *LPSOCKADDR; 7649fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7659fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct sockaddr_in SOCKADDR_IN; 7669fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct sockaddr_in *PSOCKADDR_IN; 7679fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct sockaddr_in FAR *LPSOCKADDR_IN; 7689fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7699fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct linger LINGER; 7709fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct linger *PLINGER; 7719fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct linger FAR *LPLINGER; 7729fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7739fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct in_addr IN_ADDR; 7749fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct in_addr *PIN_ADDR; 7759fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct in_addr FAR *LPIN_ADDR; 7769fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7779fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct fd_set FD_SET; 7789fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct fd_set *PFD_SET; 7799fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct fd_set FAR *LPFD_SET; 7809fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7819fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct hostent HOSTENT; 7829fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct hostent *PHOSTENT; 7839fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct hostent FAR *LPHOSTENT; 7849fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7859fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct servent SERVENT; 7869fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct servent *PSERVENT; 7879fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct servent FAR *LPSERVENT; 7889fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7899fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct protoent PROTOENT; 7909fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct protoent *PPROTOENT; 7919fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct protoent FAR *LPPROTOENT; 7929fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7939fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct timeval TIMEVAL; 7949fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct timeval *PTIMEVAL; 7959fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstreamtypedef struct timeval FAR *LPTIMEVAL; 7969fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream 7979fd67c44777b350dc56f3e70c88963b0d966ffc7quake upstream#endif /* _WINSOCKAPI_ */ 798