| 1 |
/* |
| 2 |
|
| 3 |
Definitions for winsock 1.1 |
| 4 |
|
| 5 |
Portions Copyright (c) 1980, 1983, 1988, 1993 |
| 6 |
The Regents of the University of California. All rights reserved. |
| 7 |
|
| 8 |
Portions Copyright (c) 1993 by Digital Equipment Corporation. |
| 9 |
*/ |
| 10 |
|
| 11 |
#ifndef _WINSOCK_H |
| 12 |
#define _WINSOCK_H |
| 13 |
#if __GNUC__ >=3 |
| 14 |
#pragma GCC system_header |
| 15 |
#endif |
| 16 |
|
| 17 |
#define _GNU_H_WINDOWS32_SOCKETS |
| 18 |
|
| 19 |
#include <windows.h> |
| 20 |
|
| 21 |
#ifdef __cplusplus |
| 22 |
extern "C" { |
| 23 |
#endif |
| 24 |
|
| 25 |
#if !defined ( _BSDTYPES_DEFINED ) |
| 26 |
/* also defined in gmon.h and in cygwin's sys/types */ |
| 27 |
typedef unsigned char u_char; |
| 28 |
typedef unsigned short u_short; |
| 29 |
typedef unsigned int u_int; |
| 30 |
typedef unsigned long u_long; |
| 31 |
#define _BSDTYPES_DEFINED |
| 32 |
#endif /* !defined _BSDTYPES_DEFINED */ |
| 33 |
typedef u_int SOCKET; |
| 34 |
#ifndef FD_SETSIZE |
| 35 |
#define FD_SETSIZE 64 |
| 36 |
#endif |
| 37 |
|
| 38 |
/* shutdown() how types */ |
| 39 |
#define SD_RECEIVE 0x00 |
| 40 |
#define SD_SEND 0x01 |
| 41 |
#define SD_BOTH 0x02 |
| 42 |
|
| 43 |
#ifndef _SYS_TYPES_FD_SET |
| 44 |
/* fd_set may have be defined by the newlib <sys/types.h> |
| 45 |
* if __USE_W32_SOCKETS not defined. |
| 46 |
*/ |
| 47 |
#ifdef fd_set |
| 48 |
#undef fd_set |
| 49 |
#endif |
| 50 |
typedef struct fd_set { |
| 51 |
u_int fd_count; |
| 52 |
SOCKET fd_array[FD_SETSIZE]; |
| 53 |
} fd_set; |
| 54 |
int PASCAL __WSAFDIsSet(SOCKET,fd_set*); |
| 55 |
#ifndef FD_CLR |
| 56 |
#define FD_CLR(fd,set) do { u_int __i;\ |
| 57 |
for (__i = 0; __i < ((fd_set *)(set))->fd_count ; __i++) {\ |
| 58 |
if (((fd_set *)(set))->fd_array[__i] == (fd)) {\ |
| 59 |
while (__i < ((fd_set *)(set))->fd_count-1) {\ |
| 60 |
((fd_set*)(set))->fd_array[__i] = ((fd_set*)(set))->fd_array[__i+1];\ |
| 61 |
__i++;\ |
| 62 |
}\ |
| 63 |
((fd_set*)(set))->fd_count--;\ |
| 64 |
break;\ |
| 65 |
}\ |
| 66 |
}\ |
| 67 |
} while (0) |
| 68 |
#endif |
| 69 |
#ifndef FD_SET |
| 70 |
#define FD_SET(fd, set) do { \ |
| 71 |
if (((fd_set *)(set))->fd_count < FD_SETSIZE) \ |
| 72 |
((fd_set *)(set))->fd_array[((fd_set *)(set))->fd_count++]=(fd);\ |
| 73 |
}while (0) |
| 74 |
#endif |
| 75 |
#ifndef FD_ZERO |
| 76 |
#define FD_ZERO(set) (((fd_set *)(set))->fd_count=0) |
| 77 |
#endif |
| 78 |
#ifndef FD_ISSET |
| 79 |
#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set *)(set)) |
| 80 |
#endif |
| 81 |
#elif !defined(USE_SYS_TYPES_FD_SET) |
| 82 |
#warning "fd_set and associated macros have been defined in sys/types. \ |
| 83 |
This can cause runtime problems with W32 sockets" |
| 84 |
#endif /* ndef _SYS_TYPES_FD_SET */ |
| 85 |
|
| 86 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
| 87 |
#ifndef _TIMEVAL_DEFINED /* also in sys/time.h */ |
| 88 |
#define _TIMEVAL_DEFINED |
| 89 |
struct timeval { |
| 90 |
long tv_sec; |
| 91 |
long tv_usec; |
| 92 |
}; |
| 93 |
#define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec) |
| 94 |
#define timercmp(tvp, uvp, cmp) \ |
| 95 |
(((tvp)->tv_sec != (uvp)->tv_sec) ? \ |
| 96 |
((tvp)->tv_sec cmp (uvp)->tv_sec) : \ |
| 97 |
((tvp)->tv_usec cmp (uvp)->tv_usec)) |
| 98 |
#define timerclear(tvp) (tvp)->tv_sec = (tvp)->tv_usec = 0 |
| 99 |
#endif /* _TIMEVAL_DEFINED */ |
| 100 |
struct hostent { |
| 101 |
char *h_name; |
| 102 |
char **h_aliases; |
| 103 |
short h_addrtype; |
| 104 |
short h_length; |
| 105 |
char **h_addr_list; |
| 106 |
#define h_addr h_addr_list[0] |
| 107 |
}; |
| 108 |
struct linger { |
| 109 |
u_short l_onoff; |
| 110 |
u_short l_linger; |
| 111 |
}; |
| 112 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
| 113 |
#define IOCPARM_MASK 0x7f |
| 114 |
#define IOC_VOID 0x20000000 |
| 115 |
#define IOC_OUT 0x40000000 |
| 116 |
#define IOC_IN 0x80000000 |
| 117 |
#define IOC_INOUT (IOC_IN|IOC_OUT) |
| 118 |
|
| 119 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
| 120 |
#define _IO(x,y) (IOC_VOID|((x)<<8)|(y)) |
| 121 |
#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) |
| 122 |
#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y)) |
| 123 |
#define FIONBIO _IOW('f', 126, u_long) |
| 124 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
| 125 |
|
| 126 |
#define FIONREAD _IOR('f', 127, u_long) |
| 127 |
#define FIOASYNC _IOW('f', 125, u_long) |
| 128 |
#define SIOCSHIWAT _IOW('s', 0, u_long) |
| 129 |
#define SIOCGHIWAT _IOR('s', 1, u_long) |
| 130 |
#define SIOCSLOWAT _IOW('s', 2, u_long) |
| 131 |
#define SIOCGLOWAT _IOR('s', 3, u_long) |
| 132 |
#define SIOCATMARK _IOR('s', 7, u_long) |
| 133 |
|
| 134 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
| 135 |
struct netent { |
| 136 |
char * n_name; |
| 137 |
char **n_aliases; |
| 138 |
short n_addrtype; |
| 139 |
u_long n_net; |
| 140 |
}; |
| 141 |
struct servent { |
| 142 |
char *s_name; |
| 143 |
char **s_aliases; |
| 144 |
short s_port; |
| 145 |
char *s_proto; |
| 146 |
}; |
| 147 |
struct protoent { |
| 148 |
char *p_name; |
| 149 |
char **p_aliases; |
| 150 |
short p_proto; |
| 151 |
}; |
| 152 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
| 153 |
|
| 154 |
#define IPPROTO_IP 0 |
| 155 |
#define IPPROTO_ICMP 1 |
| 156 |
#define IPPROTO_IGMP 2 |
| 157 |
#define IPPROTO_GGP 3 |
| 158 |
#define IPPROTO_TCP 6 |
| 159 |
#define IPPROTO_PUP 12 |
| 160 |
#define IPPROTO_UDP 17 |
| 161 |
#define IPPROTO_IDP 22 |
| 162 |
#define IPPROTO_ND 77 |
| 163 |
#define IPPROTO_RAW 255 |
| 164 |
#define IPPROTO_MAX 256 |
| 165 |
#define IPPORT_ECHO 7 |
| 166 |
#define IPPORT_DISCARD 9 |
| 167 |
#define IPPORT_SYSTAT 11 |
| 168 |
#define IPPORT_DAYTIME 13 |
| 169 |
#define IPPORT_NETSTAT 15 |
| 170 |
#define IPPORT_FTP 21 |
| 171 |
#define IPPORT_TELNET 23 |
| 172 |
#define IPPORT_SMTP 25 |
| 173 |
#define IPPORT_TIMESERVER 37 |
| 174 |
#define IPPORT_NAMESERVER 42 |
| 175 |
#define IPPORT_WHOIS 43 |
| 176 |
#define IPPORT_MTP 57 |
| 177 |
#define IPPORT_TFTP 69 |
| 178 |
#define IPPORT_RJE 77 |
| 179 |
#define IPPORT_FINGER 79 |
| 180 |
#define IPPORT_TTYLINK 87 |
| 181 |
#define IPPORT_SUPDUP 95 |
| 182 |
#define IPPORT_EXECSERVER 512 |
| 183 |
#define IPPORT_LOGINSERVER 513 |
| 184 |
#define IPPORT_CMDSERVER 514 |
| 185 |
#define IPPORT_EFSSERVER 520 |
| 186 |
#define IPPORT_BIFFUDP 512 |
| 187 |
#define IPPORT_WHOSERVER 513 |
| 188 |
#define IPPORT_ROUTESERVER 520 |
| 189 |
#define IPPORT_RESERVED 1024 |
| 190 |
#define IMPLINK_IP 155 |
| 191 |
#define IMPLINK_LOWEXPER 156 |
| 192 |
#define IMPLINK_HIGHEXPER 158 |
| 193 |
struct in_addr { |
| 194 |
union { |
| 195 |
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; |
| 196 |
struct { u_short s_w1,s_w2; } S_un_w; |
| 197 |
u_long S_addr; |
| 198 |
} S_un; |
| 199 |
#define s_addr S_un.S_addr |
| 200 |
#define s_host S_un.S_un_b.s_b2 |
| 201 |
#define s_net S_un.S_un_b.s_b1 |
| 202 |
#define s_imp S_un.S_un_w.s_w2 |
| 203 |
#define s_impno S_un.S_un_b.s_b4 |
| 204 |
#define s_lh S_un.S_un_b.s_b3 |
| 205 |
}; |
| 206 |
#define IN_CLASSA(i) (((long)(i)&0x80000000) == 0) |
| 207 |
#define IN_CLASSA_NET 0xff000000 |
| 208 |
#define IN_CLASSA_NSHIFT 24 |
| 209 |
#define IN_CLASSA_HOST 0x00ffffff |
| 210 |
#define IN_CLASSA_MAX 128 |
| 211 |
#define IN_CLASSB(i) (((long)(i)&0xc0000000)==0x80000000) |
| 212 |
#define IN_CLASSB_NET 0xffff0000 |
| 213 |
#define IN_CLASSB_NSHIFT 16 |
| 214 |
#define IN_CLASSB_HOST 0x0000ffff |
| 215 |
#define IN_CLASSB_MAX 65536 |
| 216 |
#define IN_CLASSC(i) (((long)(i)&0xe0000000)==0xc0000000) |
| 217 |
#define IN_CLASSC_NET 0xffffff00 |
| 218 |
#define IN_CLASSC_NSHIFT 8 |
| 219 |
#define IN_CLASSC_HOST 0xff |
| 220 |
#define INADDR_ANY (u_long)0 |
| 221 |
#define INADDR_LOOPBACK 0x7f000001 |
| 222 |
#define INADDR_BROADCAST (u_long)0xffffffff |
| 223 |
#define INADDR_NONE 0xffffffff |
| 224 |
struct sockaddr_in { |
| 225 |
short sin_family; |
| 226 |
u_short sin_port; |
| 227 |
struct in_addr sin_addr; |
| 228 |
char sin_zero[8]; |
| 229 |
}; |
| 230 |
#define WSADESCRIPTION_LEN 256 |
| 231 |
#define WSASYS_STATUS_LEN 128 |
| 232 |
typedef struct WSAData { |
| 233 |
WORD wVersion; |
| 234 |
WORD wHighVersion; |
| 235 |
char szDescription[WSADESCRIPTION_LEN+1]; |
| 236 |
char szSystemStatus[WSASYS_STATUS_LEN+1]; |
| 237 |
unsigned short iMaxSockets; |
| 238 |
unsigned short iMaxUdpDg; |
| 239 |
char * lpVendorInfo; |
| 240 |
} WSADATA; |
| 241 |
typedef WSADATA *LPWSADATA; |
| 242 |
|
| 243 |
#ifndef __INSIDE_MSYS__ |
| 244 |
#define IP_OPTIONS 1 |
| 245 |
#define SO_DEBUG 1 |
| 246 |
#define SO_ACCEPTCONN 2 |
| 247 |
#define SO_REUSEADDR 4 |
| 248 |
#define SO_KEEPALIVE 8 |
| 249 |
#define SO_DONTROUTE 16 |
| 250 |
#define SO_BROADCAST 32 |
| 251 |
#define SO_USELOOPBACK 64 |
| 252 |
#define SO_LINGER 128 |
| 253 |
#define SO_OOBINLINE 256 |
| 254 |
#define SO_DONTLINGER (u_int)(~SO_LINGER) |
| 255 |
#define SO_SNDBUF 0x1001 |
| 256 |
#define SO_RCVBUF 0x1002 |
| 257 |
#define SO_SNDLOWAT 0x1003 |
| 258 |
#define SO_RCVLOWAT 0x1004 |
| 259 |
#define SO_SNDTIMEO 0x1005 |
| 260 |
#define SO_RCVTIMEO 0x1006 |
| 261 |
#define SO_ERROR 0x1007 |
| 262 |
#define SO_TYPE 0x1008 |
| 263 |
#endif /* !__INSIDE_MSYS__ */ |
| 264 |
/* |
| 265 |
* Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll). |
| 266 |
* They will cause errors or unexpected results if used with the |
| 267 |
* (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h. |
| 268 |
*/ |
| 269 |
#define IP_MULTICAST_IF 2 |
| 270 |
#define IP_MULTICAST_TTL 3 |
| 271 |
#define IP_MULTICAST_LOOP 4 |
| 272 |
#define IP_ADD_MEMBERSHIP 5 |
| 273 |
#define IP_DROP_MEMBERSHIP 6 |
| 274 |
|
| 275 |
#define IP_DEFAULT_MULTICAST_TTL 1 |
| 276 |
#define IP_DEFAULT_MULTICAST_LOOP 1 |
| 277 |
#define IP_MAX_MEMBERSHIPS 20 |
| 278 |
struct ip_mreq { |
| 279 |
struct in_addr imr_multiaddr; |
| 280 |
struct in_addr imr_interface; |
| 281 |
}; |
| 282 |
#define INVALID_SOCKET (SOCKET)(~0) |
| 283 |
#define SOCKET_ERROR (-1) |
| 284 |
#define SOCK_STREAM 1 |
| 285 |
#define SOCK_DGRAM 2 |
| 286 |
#define SOCK_RAW 3 |
| 287 |
#define SOCK_RDM 4 |
| 288 |
#define SOCK_SEQPACKET 5 |
| 289 |
#define TCP_NODELAY 0x0001 |
| 290 |
#define AF_UNSPEC 0 |
| 291 |
#define AF_UNIX 1 |
| 292 |
#define AF_INET 2 |
| 293 |
#define AF_IMPLINK 3 |
| 294 |
#define AF_PUP 4 |
| 295 |
#define AF_CHAOS 5 |
| 296 |
#define AF_IPX 6 |
| 297 |
#define AF_NS 6 |
| 298 |
#define AF_ISO 7 |
| 299 |
#define AF_OSI AF_ISO |
| 300 |
#define AF_ECMA 8 |
| 301 |
#define AF_DATAKIT 9 |
| 302 |
#define AF_CCITT 10 |
| 303 |
#define AF_SNA 11 |
| 304 |
#define AF_DECnet 12 |
| 305 |
#define AF_DLI 13 |
| 306 |
#define AF_LAT 14 |
| 307 |
#define AF_HYLINK 15 |
| 308 |
#define AF_APPLETALK 16 |
| 309 |
#define AF_NETBIOS 17 |
| 310 |
#define AF_VOICEVIEW 18 |
| 311 |
#define AF_FIREFOX 19 |
| 312 |
#define AF_UNKNOWN1 20 |
| 313 |
#define AF_BAN 21 |
| 314 |
#define AF_ATM 22 |
| 315 |
#define AF_INET6 23 |
| 316 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
| 317 |
#define AF_MAX 24 |
| 318 |
struct sockaddr { |
| 319 |
u_short sa_family; |
| 320 |
char sa_data[14]; |
| 321 |
}; |
| 322 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
| 323 |
|
| 324 |
struct sockproto { |
| 325 |
u_short sp_family; |
| 326 |
u_short sp_protocol; |
| 327 |
}; |
| 328 |
#define PF_UNSPEC AF_UNSPEC |
| 329 |
#define PF_UNIX AF_UNIX |
| 330 |
#define PF_INET AF_INET |
| 331 |
#define PF_IMPLINK AF_IMPLINK |
| 332 |
#define PF_PUP AF_PUP |
| 333 |
#define PF_CHAOS AF_CHAOS |
| 334 |
#define PF_NS AF_NS |
| 335 |
#define PF_IPX AF_IPX |
| 336 |
#define PF_ISO AF_ISO |
| 337 |
#define PF_OSI AF_OSI |
| 338 |
#define PF_ECMA AF_ECMA |
| 339 |
#define PF_DATAKIT AF_DATAKIT |
| 340 |
#define PF_CCITT AF_CCITT |
| 341 |
#define PF_SNA AF_SNA |
| 342 |
#define PF_DECnet AF_DECnet |
| 343 |
#define PF_DLI AF_DLI |
| 344 |
#define PF_LAT AF_LAT |
| 345 |
#define PF_HYLINK AF_HYLINK |
| 346 |
#define PF_APPLETALK AF_APPLETALK |
| 347 |
#define PF_VOICEVIEW AF_VOICEVIEW |
| 348 |
#define PF_FIREFOX AF_FIREFOX |
| 349 |
#define PF_UNKNOWN1 AF_UNKNOWN1 |
| 350 |
#define PF_BAN AF_BAN |
| 351 |
#define PF_ATM AF_ATM |
| 352 |
#define PF_INET6 AF_INET6 |
| 353 |
#define PF_MAX AF_MAX |
| 354 |
#define SOL_SOCKET 0xffff |
| 355 |
#define SOMAXCONN 5 |
| 356 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
| 357 |
#define MSG_OOB 1 |
| 358 |
#define MSG_PEEK 2 |
| 359 |
#define MSG_DONTROUTE 4 |
| 360 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
| 361 |
#define MSG_MAXIOVLEN 16 |
| 362 |
#define MSG_PARTIAL 0x8000 |
| 363 |
#define MAXGETHOSTSTRUCT 1024 |
| 364 |
#define FD_READ 1 |
| 365 |
#define FD_WRITE 2 |
| 366 |
#define FD_OOB 4 |
| 367 |
#define FD_ACCEPT 8 |
| 368 |
#define FD_CONNECT 16 |
| 369 |
#define FD_CLOSE 32 |
| 370 |
#ifndef WSABASEERR |
| 371 |
#define WSABASEERR 10000 |
| 372 |
#define WSAEINTR (WSABASEERR+4) |
| 373 |
#define WSAEBADF (WSABASEERR+9) |
| 374 |
#define WSAEACCES (WSABASEERR+13) |
| 375 |
#define WSAEFAULT (WSABASEERR+14) |
| 376 |
#define WSAEINVAL (WSABASEERR+22) |
| 377 |
#define WSAEMFILE (WSABASEERR+24) |
| 378 |
#define WSAEWOULDBLOCK (WSABASEERR+35) |
| 379 |
#define WSAEINPROGRESS (WSABASEERR+36) |
| 380 |
#define WSAEALREADY (WSABASEERR+37) |
| 381 |
#define WSAENOTSOCK (WSABASEERR+38) |
| 382 |
#define WSAEDESTADDRREQ (WSABASEERR+39) |
| 383 |
#define WSAEMSGSIZE (WSABASEERR+40) |
| 384 |
#define WSAEPROTOTYPE (WSABASEERR+41) |
| 385 |
#define WSAENOPROTOOPT (WSABASEERR+42) |
| 386 |
#define WSAEPROTONOSUPPORT (WSABASEERR+43) |
| 387 |
#define WSAESOCKTNOSUPPORT (WSABASEERR+44) |
| 388 |
#define WSAEOPNOTSUPP (WSABASEERR+45) |
| 389 |
#define WSAEPFNOSUPPORT (WSABASEERR+46) |
| 390 |
#define WSAEAFNOSUPPORT (WSABASEERR+47) |
| 391 |
#define WSAEADDRINUSE (WSABASEERR+48) |
| 392 |
#define WSAEADDRNOTAVAIL (WSABASEERR+49) |
| 393 |
#define WSAENETDOWN (WSABASEERR+50) |
| 394 |
#define WSAENETUNREACH (WSABASEERR+51) |
| 395 |
#define WSAENETRESET (WSABASEERR+52) |
| 396 |
#define WSAECONNABORTED (WSABASEERR+53) |
| 397 |
#define WSAECONNRESET (WSABASEERR+54) |
| 398 |
#define WSAENOBUFS (WSABASEERR+55) |
| 399 |
#define WSAEISCONN (WSABASEERR+56) |
| 400 |
#define WSAENOTCONN (WSABASEERR+57) |
| 401 |
#define WSAESHUTDOWN (WSABASEERR+58) |
| 402 |
#define WSAETOOMANYREFS (WSABASEERR+59) |
| 403 |
#define WSAETIMEDOUT (WSABASEERR+60) |
| 404 |
#define WSAECONNREFUSED (WSABASEERR+61) |
| 405 |
#define WSAELOOP (WSABASEERR+62) |
| 406 |
#define WSAENAMETOOLONG (WSABASEERR+63) |
| 407 |
#define WSAEHOSTDOWN (WSABASEERR+64) |
| 408 |
#define WSAEHOSTUNREACH (WSABASEERR+65) |
| 409 |
#define WSAENOTEMPTY (WSABASEERR+66) |
| 410 |
#define WSAEPROCLIM (WSABASEERR+67) |
| 411 |
#define WSAEUSERS (WSABASEERR+68) |
| 412 |
#define WSAEDQUOT (WSABASEERR+69) |
| 413 |
#define WSAESTALE (WSABASEERR+70) |
| 414 |
#define WSAEREMOTE (WSABASEERR+71) |
| 415 |
#define WSAEDISCON (WSABASEERR+101) |
| 416 |
#define WSASYSNOTREADY (WSABASEERR+91) |
| 417 |
#define WSAVERNOTSUPPORTED (WSABASEERR+92) |
| 418 |
#define WSANOTINITIALISED (WSABASEERR+93) |
| 419 |
#define WSAHOST_NOT_FOUND (WSABASEERR+1001) |
| 420 |
#define WSATRY_AGAIN (WSABASEERR+1002) |
| 421 |
#define WSANO_RECOVERY (WSABASEERR+1003) |
| 422 |
#define WSANO_DATA (WSABASEERR+1004) |
| 423 |
#endif /* !WSABASEERR */ |
| 424 |
|
| 425 |
#define WSANO_ADDRESS WSANO_DATA |
| 426 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
| 427 |
#define h_errno WSAGetLastError() |
| 428 |
#define HOST_NOT_FOUND WSAHOST_NOT_FOUND |
| 429 |
#define TRY_AGAIN WSATRY_AGAIN |
| 430 |
#define NO_RECOVERY WSANO_RECOVERY |
| 431 |
#define NO_DATA WSANO_DATA |
| 432 |
#define NO_ADDRESS WSANO_ADDRESS |
| 433 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
| 434 |
SOCKET PASCAL accept(SOCKET,struct sockaddr*,int*); |
| 435 |
int PASCAL bind(SOCKET,const struct sockaddr*,int); |
| 436 |
int PASCAL closesocket(SOCKET); |
| 437 |
int PASCAL connect(SOCKET,const struct sockaddr*,int); |
| 438 |
int PASCAL ioctlsocket(SOCKET,long,u_long *); |
| 439 |
int PASCAL getpeername(SOCKET,struct sockaddr*,int*); |
| 440 |
int PASCAL getsockname(SOCKET,struct sockaddr*,int*); |
| 441 |
int PASCAL getsockopt(SOCKET,int,int,char*,int*); |
| 442 |
unsigned long PASCAL inet_addr(const char*); |
| 443 |
DECLARE_STDCALL_P(char *) inet_ntoa(struct in_addr); |
| 444 |
int PASCAL listen(SOCKET,int); |
| 445 |
int PASCAL recv(SOCKET,char*,int,int); |
| 446 |
int PASCAL recvfrom(SOCKET,char*,int,int,struct sockaddr*,int*); |
| 447 |
int PASCAL send(SOCKET,const char*,int,int); |
| 448 |
int PASCAL sendto(SOCKET,const char*,int,int,const struct sockaddr*,int); |
| 449 |
int PASCAL setsockopt(SOCKET,int,int,const char*,int); |
| 450 |
int PASCAL shutdown(SOCKET,int); |
| 451 |
SOCKET PASCAL socket(int,int,int); |
| 452 |
DECLARE_STDCALL_P(struct hostent *) gethostbyaddr(const char*,int,int); |
| 453 |
DECLARE_STDCALL_P(struct hostent *) gethostbyname(const char*); |
| 454 |
DECLARE_STDCALL_P(struct servent *) getservbyport(int,const char*); |
| 455 |
DECLARE_STDCALL_P(struct servent *) getservbyname(const char*,const char*); |
| 456 |
DECLARE_STDCALL_P(struct protoent *) getprotobynumber(int); |
| 457 |
DECLARE_STDCALL_P(struct protoent *) getprotobyname(const char*); |
| 458 |
int PASCAL WSAStartup(WORD,LPWSADATA); |
| 459 |
int PASCAL WSACleanup(void); |
| 460 |
void PASCAL WSASetLastError(int); |
| 461 |
int PASCAL WSAGetLastError(void); |
| 462 |
BOOL PASCAL WSAIsBlocking(void); |
| 463 |
int PASCAL WSAUnhookBlockingHook(void); |
| 464 |
FARPROC PASCAL WSASetBlockingHook(FARPROC); |
| 465 |
int PASCAL WSACancelBlockingCall(void); |
| 466 |
HANDLE PASCAL WSAAsyncGetServByName(HWND,u_int,const char*,const char*,char*,int); |
| 467 |
HANDLE PASCAL WSAAsyncGetServByPort(HWND,u_int,int,const char*,char*,int); |
| 468 |
HANDLE PASCAL WSAAsyncGetProtoByName(HWND,u_int,const char*,char*,int); |
| 469 |
HANDLE PASCAL WSAAsyncGetProtoByNumber(HWND,u_int,int,char*,int); |
| 470 |
HANDLE PASCAL WSAAsyncGetHostByName(HWND,u_int,const char*,char*,int); |
| 471 |
HANDLE PASCAL WSAAsyncGetHostByAddr(HWND,u_int,const char*,int,int,char*,int); |
| 472 |
int PASCAL WSACancelAsyncRequest(HANDLE); |
| 473 |
int PASCAL WSAAsyncSelect(SOCKET,HWND,u_int,long); |
| 474 |
#if !(defined (__INSIDE_CYGWIN__) || defined (__INSIDE_MSYS__)) |
| 475 |
u_long PASCAL htonl(u_long); |
| 476 |
u_long PASCAL ntohl(u_long); |
| 477 |
u_short PASCAL htons(u_short); |
| 478 |
u_short PASCAL ntohs(u_short); |
| 479 |
int PASCAL select(int nfds,fd_set*,fd_set*,fd_set*,const struct timeval*); |
| 480 |
int PASCAL gethostname(char*,int); |
| 481 |
#endif /* ! (__INSIDE_CYGWIN__ || __INSIDE_MSYS__) */ |
| 482 |
|
| 483 |
#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e) |
| 484 |
#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error) |
| 485 |
#define WSAGETASYNCBUFLEN(l) LOWORD(l) |
| 486 |
#define WSAGETASYNCERROR(l) HIWORD(l) |
| 487 |
#define WSAGETSELECTEVENT(l) LOWORD(l) |
| 488 |
#define WSAGETSELECTERROR(l) HIWORD(l) |
| 489 |
|
| 490 |
typedef struct sockaddr SOCKADDR; |
| 491 |
typedef struct sockaddr *PSOCKADDR; |
| 492 |
typedef struct sockaddr *LPSOCKADDR; |
| 493 |
typedef struct sockaddr_in SOCKADDR_IN; |
| 494 |
typedef struct sockaddr_in *PSOCKADDR_IN; |
| 495 |
typedef struct sockaddr_in *LPSOCKADDR_IN; |
| 496 |
typedef struct linger LINGER; |
| 497 |
typedef struct linger *PLINGER; |
| 498 |
typedef struct linger *LPLINGER; |
| 499 |
typedef struct in_addr IN_ADDR; |
| 500 |
typedef struct in_addr *PIN_ADDR; |
| 501 |
typedef struct in_addr *LPIN_ADDR; |
| 502 |
typedef struct fd_set FD_SET; |
| 503 |
typedef struct fd_set *PFD_SET; |
| 504 |
typedef struct fd_set *LPFD_SET; |
| 505 |
typedef struct hostent HOSTENT; |
| 506 |
typedef struct hostent *PHOSTENT; |
| 507 |
typedef struct hostent *LPHOSTENT; |
| 508 |
typedef struct servent SERVENT; |
| 509 |
typedef struct servent *PSERVENT; |
| 510 |
typedef struct servent *LPSERVENT; |
| 511 |
typedef struct protoent PROTOENT; |
| 512 |
typedef struct protoent *PPROTOENT; |
| 513 |
typedef struct protoent *LPPROTOENT; |
| 514 |
typedef struct timeval TIMEVAL; |
| 515 |
typedef struct timeval *PTIMEVAL; |
| 516 |
typedef struct timeval *LPTIMEVAL; |
| 517 |
|
| 518 |
#ifdef __cplusplus |
| 519 |
} |
| 520 |
#endif |
| 521 |
/* |
| 522 |
* Recent MSDN docs indicate that the MS-specific extensions exported from |
| 523 |
* mswsock.dll (AcceptEx, TransmitFile. WSARecEx and GetAcceptExSockaddrs) are |
| 524 |
* declared in mswsock.h. These extensions are not supported on W9x or WinCE. |
| 525 |
* However, code using WinSock 1.1 API may expect the declarations and |
| 526 |
* associated defines to be in this header. Thus we include mswsock.h here. |
| 527 |
* |
| 528 |
* When linking against the WinSock 1.1 lib, wsock32.dll, the mswsock functions |
| 529 |
* are automatically routed to mswsock.dll (on platforms with support). |
| 530 |
* The WinSock 2 lib, ws2_32.dll, does not contain any references to |
| 531 |
* the mswsock extensions. |
| 532 |
*/ |
| 533 |
|
| 534 |
#include <mswsock.h> |
| 535 |
|
| 536 |
#endif |