IdStackConsts.pas 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  1. {
  2. $Project$
  3. $Workfile$
  4. $Revision$
  5. $DateUTC$
  6. $Id$
  7. This file is part of the Indy (Internet Direct) project, and is offered
  8. under the dual-licensing agreement described on the Indy website.
  9. (http://www.indyproject.org/)
  10. Copyright:
  11. (c) 1993-2005, Chad Z. Hower and the Indy Pit Crew. All rights reserved.
  12. }
  13. {
  14. $Log$
  15. }
  16. {
  17. Rev 1.0 2004.02.07 12:25:16 PM czhower
  18. Recheckin to fix case of filename
  19. Rev 1.1 2/7/2004 5:20:06 AM JPMugaas
  20. Added some constants that were pasted from other places. DotNET uses the
  21. standard Winsock 2 error consstants. We don't want to link to IdWInsock or
  22. Windows though because that causes other problems.
  23. Rev 1.0 2004.02.03 3:14:44 PM czhower
  24. Move and updates
  25. Rev 1.12 2003.12.28 6:53:46 PM czhower
  26. Added some consts.
  27. Rev 1.11 10/28/2003 9:14:54 PM BGooijen
  28. .net
  29. Rev 1.10 10/19/2003 10:46:18 PM BGooijen
  30. Added more consts
  31. Rev 1.9 10/19/2003 9:15:28 PM BGooijen
  32. added some SocketOptionName consts for dotnet
  33. Rev 1.8 10/19/2003 5:21:30 PM BGooijen
  34. SetSocketOption
  35. Rev 1.7 10/2/2003 7:31:18 PM BGooijen
  36. .net
  37. Rev 1.6 2003.10.02 10:16:32 AM czhower
  38. .Net
  39. Rev 1.5 2003.10.01 5:05:18 PM czhower
  40. .Net
  41. Rev 1.4 2003.10.01 1:12:40 AM czhower
  42. .Net
  43. Rev 1.3 2003.09.30 12:09:38 PM czhower
  44. DotNet changes.
  45. Rev 1.2 9/29/2003 10:28:30 PM BGooijen
  46. Added constants for DotNet
  47. Rev 1.1 12-14-2002 14:58:34 BGooijen
  48. Added definition for Id_SOCK_RDM and Id_SOCK_SEQPACKET
  49. Rev 1.0 11/13/2002 08:59:14 AM JPMugaas
  50. }
  51. unit IdStackConsts;
  52. interface
  53. {$I IdCompilerDefines.inc}
  54. {
  55. IMPORTANT!!!
  56. The new Posix units have platform specific stuff. Since this code and
  57. the definitions are not intented to be compiled in non-Unix-like operating
  58. systems, platform warnings are not going to be too helpful.
  59. }
  60. {$IFDEF USE_VCL_POSIX}
  61. {$I IdSymbolPlatformOff.inc}
  62. {$ENDIF}
  63. { This should be the only unit except OS Stack units that reference
  64. Winsock or lnxsock }
  65. uses
  66. //TODO: I'm not really sure how other platforms are supported with asockets header
  67. //Do I use the sockets unit or do something totally different for each platform
  68. {$IFDEF WINDOWS}
  69. IdWship6, //for some constants that supplement IdWinsock
  70. IdWinsock2;
  71. {$ENDIF}
  72. {$IFDEF OS2}
  73. pmwsock;
  74. {$ENDIF}
  75. {$IFDEF SOCKETTYPE_IS_CINT}
  76. IdCTypes,
  77. {$ENDIF}
  78. {$IFDEF NETWARE_CLIB}
  79. winsock; //not sure if this is correct
  80. {$ENDIF}
  81. {$IFDEF NETWARE_LIBC}
  82. winsock; //not sure if this is correct
  83. {$ENDIF}
  84. {$IFDEF MACOS_CLASSIC}
  85. {$ENDIF}
  86. {$IFDEF UNIX}
  87. {$IF DEFINED(USE_VCL_POSIX)}
  88. {
  89. IMPORTANT!!!
  90. The new Posix units have platform specific stuff. Since this code and
  91. the definitions are not intented to be compiled in non-Unix-like operating
  92. systems, platform warnings are not going to be too helpful.
  93. }
  94. {$I IdSymbolPlatformOff.inc}
  95. IdVCLPosixSupplemental,
  96. Posix.Errno, Posix.NetDB, Posix.NetinetIn, Posix.SysSocket;
  97. {$ELSEIF DEFINED(KYLIXCOMPAT)}
  98. libc;
  99. {$ELSEIF DEFINED(USE_BASEUNIX)}
  100. Sockets, BaseUnix, Unix; // FPC "native" Unix units.
  101. //Marco may want to change the socket interface unit
  102. //so we don't use the libc header.
  103. {$IFEND}
  104. {$ENDIF}
  105. type
  106. {$IFDEF USE_BASEUNIX}
  107. TSocket = cint; // TSocket is afaik not POSIX, so we have to add it
  108. // (Socket() returns a C int according to opengroup)
  109. {$ENDIF}
  110. TIdStackSocketHandle = {$IFDEF USE_VCL_POSIX}Integer{$ELSE}TSocket{$ENDIF};
  111. var
  112. Id_SO_True: Integer = 1;
  113. Id_SO_False: Integer = 0;
  114. const
  115. {$IFDEF UNIX}
  116. Id_IPV6_UNICAST_HOPS = IPV6_UNICAST_HOPS;
  117. Id_IPV6_MULTICAST_IF = IPV6_MULTICAST_IF;
  118. Id_IPV6_MULTICAST_HOPS = IPV6_MULTICAST_HOPS;
  119. Id_IPV6_MULTICAST_LOOP = IPV6_MULTICAST_LOOP;
  120. {$IFDEF LINUX}
  121. // These are probably leftovers from the non-final IPV6 KAME standard
  122. // in Linux. They only seem to exist in Linux, others use
  123. // the standarised versions.
  124. // Probably the JOIN_GROUP ones replaced these,
  125. // but they have different numbers in Linux, and possibly
  126. // also different behaviour?
  127. {$IFDEF USE_BASEUNIX}
  128. //In Linux, the libc.pp header maps the old values to new ones,
  129. //probably for consistancy. I'm doing this because we can't link
  130. //to Libc for Basic Unix stuff and some people may want to use this API
  131. //in Linux instead of the libc API.
  132. IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP;
  133. IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP;
  134. {$ENDIF}
  135. {$ELSE}
  136. // FIXME: Android compiler is using these definitions, but maybe some
  137. // EXTERNALSYM-work is needed above.
  138. IPV6_ADD_MEMBERSHIP = IPV6_JOIN_GROUP;
  139. {$EXTERNALSYM IPV6_ADD_MEMBERSHIP}
  140. IPV6_DROP_MEMBERSHIP = IPV6_LEAVE_GROUP;
  141. {$EXTERNALSYM IPV6_DROP_MEMBERSHIP}
  142. {$IFNDEF USE_VCL_POSIX}
  143. IPV6_CHECKSUM = 26;
  144. {$ENDIF}
  145. {$ENDIF}
  146. Id_IPV6_ADD_MEMBERSHIP = IPV6_ADD_MEMBERSHIP;
  147. Id_IPV6_DROP_MEMBERSHIP = IPV6_DROP_MEMBERSHIP;
  148. Id_IPV6_PKTINFO = IPV6_PKTINFO;
  149. Id_IPV6_HOPLIMIT = IPV6_HOPLIMIT;
  150. Id_IP_MULTICAST_TTL = IP_MULTICAST_TTL; // TODO integrate into IdStackConsts
  151. Id_IP_MULTICAST_LOOP = IP_MULTICAST_LOOP; // TODO integrate into IdStackConsts
  152. Id_IP_ADD_MEMBERSHIP = IP_ADD_MEMBERSHIP; // TODO integrate into IdStackConsts
  153. Id_IP_DROP_MEMBERSHIP = IP_DROP_MEMBERSHIP; // TODO integrate into IdStackConsts
  154. //In Windows CE 4.2, IP_HDRINCL may not be supported.
  155. Id_IP_HDR_INCLUDED = IP_HDRINCL; // TODO integrate into IdStackConsts
  156. {$ENDIF}
  157. {$IFDEF WINDOWS}
  158. Id_IPV6_HDRINCL = IPV6_HDRINCL;
  159. Id_IPV6_UNICAST_HOPS = IPV6_UNICAST_HOPS;
  160. Id_IPV6_MULTICAST_IF = IPV6_MULTICAST_IF;
  161. Id_IPV6_MULTICAST_HOPS = IPV6_MULTICAST_HOPS;
  162. Id_IPV6_MULTICAST_LOOP = IPV6_MULTICAST_LOOP;
  163. Id_IPV6_ADD_MEMBERSHIP = IPV6_ADD_MEMBERSHIP;
  164. Id_IPV6_DROP_MEMBERSHIP = IPV6_DROP_MEMBERSHIP;
  165. Id_IPV6_PKTINFO = IPV6_PKTINFO;
  166. Id_IPV6_HOPLIMIT = IPV6_HOPLIMIT;
  167. Id_IP_MULTICAST_TTL = 10; // TODO integrate into IdStackConsts FIX ERROR in IdWinsock
  168. Id_IP_MULTICAST_LOOP = 11; // TODO integrate into IdStackConsts FIX ERROR in IdWinsock
  169. Id_IP_ADD_MEMBERSHIP = 12; // TODO integrate into IdStackConsts FIX ERROR in IdWinsock
  170. Id_IP_DROP_MEMBERSHIP = 13; // TODO integrate into IdStackConsts FIX ERROR in IdWinsock
  171. Id_IP_HDR_INCLUDED = 2; // TODO integrate into IdStackConsts FIX ERROR in IdWinsock
  172. {$ENDIF}
  173. (*
  174. There seems to be an error in the correct values of multicast values in IdWinsock
  175. The values should be:
  176. ip_options = 1; //* set/get IP options */
  177. ip_hdrincl = 2; //* header is included with data */
  178. ip_tos = 3; //* IP type of service and preced*/
  179. ip_ttl = 4; //* IP time to live */
  180. ip_multicast_if = 9; //* set/get IP multicast i/f */
  181. ip_multicast_ttl = 10; //* set/get IP multicast ttl */
  182. ip_multicast_loop = 11; //*set/get IP multicast loopback */
  183. ip_add_membership = 12; //* add an IP group membership */
  184. ip_drop_membership = 13; //* drop an IP group membership */
  185. ip_dontfragment = 14; //* don't fragment IP datagrams */ {Do not Localize}
  186. *)
  187. {$IFDEF UNIX}
  188. TCP_NODELAY = 1;
  189. {$ENDIF}
  190. // Protocol Family
  191. {$IFDEF USE_VCL_POSIX}
  192. Id_PF_INET4 = AF_INET;
  193. Id_PF_INET6 = AF_INET6;
  194. {$ELSE}
  195. Id_PF_INET4 = PF_INET;
  196. Id_PF_INET6 = PF_INET6;
  197. {$ENDIF}
  198. {$IFDEF USE_BASEUNIX}
  199. // These constants are actually WinSock specific, not std TCP/IP
  200. // FPC doesn't emulate WinSock.
  201. INVALID_SOCKET = -1;
  202. SOCKET_ERROR = -1;
  203. {$ENDIF}
  204. // Socket Type
  205. {$IF DEFINED(SOCKETTYPE_IS_CINT)}
  206. type
  207. TIdSocketType = TIdC_INT;
  208. {$ELSEIF DEFINED(SOCKETTYPE_IS___SOCKETTYPE)}
  209. type
  210. TIdSocketType = __socket_type;
  211. {$ELSEIF DEFINED(SOCKETTYPE_IS_LONGINT)}
  212. type
  213. TIdSocketType = Integer;
  214. {$IFEND}
  215. const
  216. // {$IFDEF KYLIXCOMPAT}
  217. // Id_SOCK_STREAM = TIdSocketType(SOCK_STREAM); //1 /* stream socket */
  218. // Id_SOCK_DGRAM = TIdSocketType(SOCK_DGRAM); //2 /* datagram socket */
  219. // Id_SOCK_RAW = TIdSocketType(SOCK_RAW); //3 /* raw-protocol interface */
  220. // Id_SOCK_RDM = TIdSocketType(SOCK_RDM); //4 /* reliably-delivered message */
  221. // Id_SOCK_SEQPACKET = SOCK_SEQPACKET; //5 /* sequenced packet stream */
  222. // {$ELSE}
  223. // Id_SOCK_STREAM = SOCK_STREAM; //1 /* stream socket */
  224. // Id_SOCK_DGRAM = SOCK_DGRAM; //2 /* datagram socket */
  225. // Id_SOCK_RAW = SOCK_RAW; //3 /* raw-protocol interface */
  226. // Id_SOCK_RDM = SOCK_RDM; //4 /* reliably-delivered message */
  227. // Id_SOCK_SEQPACKET = SOCK_SEQPACKET; //5 /* sequenced packet stream */
  228. // {$ENDIF}
  229. Id_SOCK_UNKNOWN = TIdSocketType(0);
  230. Id_SOCK_STREAM = TIdSocketType(SOCK_STREAM); //1 /* stream socket */
  231. Id_SOCK_DGRAM = TIdSocketType(SOCK_DGRAM); //2 /* datagram socket */
  232. Id_SOCK_RAW = TIdSocketType(SOCK_RAW); //3 /* raw-protocol interface */
  233. {$IFNDEF USE_VCL_POSIX}
  234. Id_SOCK_RDM = TIdSocketType(SOCK_RDM); //4 /* reliably-delivered message */
  235. {$ENDIF}
  236. Id_SOCK_SEQPACKET = SOCK_SEQPACKET; //5 /* sequenced packet stream */
  237. type
  238. // IP Protocol type
  239. TIdSocketProtocol = Integer;
  240. TIdSocketOption = Integer;
  241. TIdSocketOptionLevel = Integer;
  242. const
  243. {$IFDEF OS2}
  244. Id_IPPROTO_GGP = IPPROTO_GGP; //OS/2 does something strange and we might wind up
  245. //supporting it later for all we know.
  246. {$ELSE}
  247. Id_IPPROTO_GGP = 3;// IPPROTO_GGP; may not be defined in some headers in FPC
  248. {$ENDIF}
  249. Id_IPPROTO_ICMP = IPPROTO_ICMP;
  250. Id_IPPROTO_ICMPV6 = IPPROTO_ICMPV6;
  251. {$IFNDEF USE_VCL_POSIX}
  252. Id_IPPROTO_IDP = IPPROTO_IDP;
  253. Id_IPPROTO_IGMP = IPPROTO_IGMP;
  254. {$ENDIF}
  255. Id_IPPROTO_IP = IPPROTO_IP;
  256. Id_IPPROTO_IPv6 = IPPROTO_IPV6;
  257. Id_IPPROTO_ND = 77; //IPPROTO_ND; is not defined in some headers in FPC
  258. Id_IPPROTO_PUP = IPPROTO_PUP;
  259. Id_IPPROTO_RAW = IPPROTO_RAW;
  260. Id_IPPROTO_TCP = IPPROTO_TCP;
  261. Id_IPPROTO_UDP = IPPROTO_UDP;
  262. Id_IPPROTO_MAX = IPPROTO_MAX;
  263. // Socket Option level
  264. Id_SOL_SOCKET = SOL_SOCKET;
  265. Id_SOL_IP = IPPROTO_IP;
  266. Id_SOL_IPv6 = IPPROTO_IPV6;
  267. Id_SOL_TCP = IPPROTO_TCP;
  268. Id_SOL_UDP = IPPROTO_UDP;
  269. // Socket options
  270. {$IFNDEF WINDOWS}
  271. SO_DONTLINGER = not SO_LINGER;
  272. {$EXTERNALSYM SO_DONTLINGER}
  273. {$ENDIF}
  274. Id_SO_BROADCAST = SO_BROADCAST;
  275. Id_SO_DEBUG = SO_DEBUG;
  276. Id_SO_DONTLINGER = SO_DONTLINGER;
  277. Id_SO_DONTROUTE = SO_DONTROUTE;
  278. Id_SO_ERROR = SO_ERROR;
  279. Id_SO_KEEPALIVE = SO_KEEPALIVE;
  280. Id_SO_LINGER = SO_LINGER;
  281. Id_SO_OOBINLINE = SO_OOBINLINE;
  282. Id_SO_RCVBUF = SO_RCVBUF;
  283. Id_SO_REUSEADDR = SO_REUSEADDR;
  284. {$IFDEF LINUX}
  285. // SO_REUSEPORT has different values on different platforms, but for
  286. // right now we are only interested in it on Linux (it is 512 on BSD)...
  287. Id_SO_REUSEPORT = 15;//SO_REUSEPORT; is not defined in some headers in FPC
  288. {$ENDIF}
  289. Id_SO_SNDBUF = SO_SNDBUF;
  290. Id_SO_TYPE = SO_TYPE;
  291. {$IFDEF WINDOWS}
  292. Id_SO_UPDATE_ACCEPT_CONTEXT = SO_UPDATE_ACCEPT_CONTEXT;
  293. Id_SO_UPDATE_CONNECT_CONTEXT = SO_UPDATE_CONNECT_CONTEXT;
  294. {$ENDIF}
  295. // Additional socket options
  296. Id_SO_RCVTIMEO = SO_RCVTIMEO;
  297. Id_SO_SNDTIMEO = SO_SNDTIMEO;
  298. Id_SO_IP_TTL = IP_TTL;
  299. {for some reason, the compiler doesn't accept INADDR_ANY below saying a constant is expected. }
  300. {$IFDEF USE_VCL_POSIX}
  301. Id_INADDR_ANY = 0;// INADDR_ANY;
  302. Id_INADDR_NONE = $ffffffff;// INADDR_NONE;
  303. {$ELSE}
  304. Id_INADDR_ANY = INADDR_ANY;
  305. Id_INADDR_NONE = INADDR_NONE;
  306. {$ENDIF}
  307. // TCP Options
  308. {$IFDEF USE_VCL_POSIX}
  309. INVALID_SOCKET = -1;
  310. SOCKET_ERROR = -1;
  311. {$ENDIF}
  312. Id_TCP_NODELAY = TCP_NODELAY;
  313. Id_INVALID_SOCKET = INVALID_SOCKET;
  314. Id_SOCKET_ERROR = SOCKET_ERROR;
  315. Id_SOCKETOPTIONLEVEL_TCP = Id_IPPROTO_TCP; // BGO: rename to Id_SOL_TCP
  316. {$IFDEF HAS_TCP_CORK}
  317. Id_TCP_CORK = TCP_CORK;
  318. {$ENDIF}
  319. {$IFDEF HAS_TCP_NOPUSH}
  320. Id_TCP_NOPUSH = TCP_NOPUSH;
  321. {$ENDIF}
  322. {$IFDEF HAS_TCP_KEEPIDLE}
  323. Id_TCP_KEEPIDLE = TCP_KEEPIDLE;
  324. {$ENDIF}
  325. {$IFDEF HAS_TCP_KEEPINTVL}
  326. Id_TCP_KEEPINTVL = TCP_KEEPINTVL;
  327. {$ENDIF}
  328. {$IFDEF USE_VCL_POSIX}
  329. // Shutdown Options
  330. // RLebeau 7/23/2019: Delphi 10.2 Tokyo defines SHUT_WR and SHUT_RDWR incorrectly
  331. // for Linux! So just define them manually... (Was this ever fixed in a later version?)
  332. Id_SD_Recv = 0{SHUT_RD};
  333. Id_SD_Send = 1{SHUT_WR};
  334. Id_SD_Both = 2{SHUT_RDWR};
  335. //
  336. //Temp defines. They should be in Delphi's Posix.Errno.pas
  337. ESOCKTNOSUPPORT = 44; //* Socket type not supported */
  338. {$EXTERNALSYM ESOCKTNOSUPPORT}
  339. EPFNOSUPPORT = 46; //* Protocol family not supported */
  340. {$EXTERNALSYM EPFNOSUPPORT}
  341. ESHUTDOWN = 58; //* Can't send after socket shutdown */
  342. {$EXTERNALSYM ESHUTDOWN}
  343. ETOOMANYREFS = 59; //* Too many references: can't splice */
  344. {$EXTERNALSYM ETOOMANYREFS}
  345. EHOSTDOWN = 64; //* Host is down */
  346. {$EXTERNALSYM EHOSTDOWN}
  347. //
  348. Id_WSAEINTR = EINTR;
  349. Id_WSAEBADF = EBADF;
  350. Id_WSAEACCES = EACCES;
  351. Id_WSAEFAULT = EFAULT;
  352. Id_WSAEINVAL = EINVAL;
  353. Id_WSAEMFILE = EMFILE;
  354. Id_WSAEAGAIN = EAGAIN;
  355. Id_WSAEWOULDBLOCK = EWOULDBLOCK;
  356. Id_WSAEINPROGRESS = EINPROGRESS;
  357. Id_WSAEALREADY = EALREADY;
  358. Id_WSAENOTSOCK = ENOTSOCK;
  359. Id_WSAEDESTADDRREQ = EDESTADDRREQ;
  360. Id_WSAEMSGSIZE = EMSGSIZE;
  361. Id_WSAEPROTOTYPE = EPROTOTYPE;
  362. Id_WSAENOPROTOOPT = ENOPROTOOPT;
  363. Id_WSAEPROTONOSUPPORT = EPROTONOSUPPORT;
  364. Id_WSAESOCKTNOSUPPORT = ESOCKTNOSUPPORT;
  365. Id_WSAEOPNOTSUPP = EOPNOTSUPP;
  366. Id_WSAEPFNOSUPPORT = EPFNOSUPPORT;
  367. Id_WSAEAFNOSUPPORT = EAFNOSUPPORT;
  368. Id_WSAEADDRINUSE = EADDRINUSE;
  369. Id_WSAEADDRNOTAVAIL = EADDRNOTAVAIL;
  370. Id_WSAENETDOWN = ENETDOWN;
  371. Id_WSAENETUNREACH = ENETUNREACH;
  372. Id_WSAENETRESET = ENETRESET;
  373. Id_WSAECONNABORTED = ECONNABORTED;
  374. Id_WSAECONNRESET = ECONNRESET;
  375. Id_WSAENOBUFS = ENOBUFS;
  376. Id_WSAEISCONN = EISCONN;
  377. Id_WSAENOTCONN = ENOTCONN;
  378. Id_WSAESHUTDOWN = ESHUTDOWN;
  379. Id_WSAETOOMANYREFS = ETOOMANYREFS;
  380. Id_WSAETIMEDOUT = ETIMEDOUT;
  381. Id_WSAECONNREFUSED = ECONNREFUSED;
  382. Id_WSAELOOP = ELOOP;
  383. Id_WSAENAMETOOLONG = ENAMETOOLONG;
  384. Id_WSAEHOSTDOWN = EHOSTDOWN;
  385. Id_WSAEHOSTUNREACH = EHOSTUNREACH;
  386. Id_WSAENOTEMPTY = ENOTEMPTY;
  387. {$ENDIF}
  388. {$IFDEF KYLIXCOMPAT}
  389. // Shutdown Options
  390. Id_SD_Recv = SHUT_RD;
  391. Id_SD_Send = SHUT_WR;
  392. Id_SD_Both = SHUT_RDWR;
  393. //
  394. Id_WSAEINTR = EINTR;
  395. Id_WSAEBADF = EBADF;
  396. Id_WSAEACCES = EACCES;
  397. Id_WSAEFAULT = EFAULT;
  398. Id_WSAEINVAL = EINVAL;
  399. Id_WSAEMFILE = EMFILE;
  400. Id_WSAEAGAIN = EAGAIN;
  401. Id_WSAEWOULDBLOCK = EWOULDBLOCK;
  402. Id_WSAEINPROGRESS = EINPROGRESS;
  403. Id_WSAEALREADY = EALREADY;
  404. Id_WSAENOTSOCK = ENOTSOCK;
  405. Id_WSAEDESTADDRREQ = EDESTADDRREQ;
  406. Id_WSAEMSGSIZE = EMSGSIZE;
  407. Id_WSAEPROTOTYPE = EPROTOTYPE;
  408. Id_WSAENOPROTOOPT = ENOPROTOOPT;
  409. Id_WSAEPROTONOSUPPORT = EPROTONOSUPPORT;
  410. Id_WSAESOCKTNOSUPPORT = ESOCKTNOSUPPORT;
  411. Id_WSAEOPNOTSUPP = EOPNOTSUPP;
  412. Id_WSAEPFNOSUPPORT = EPFNOSUPPORT;
  413. Id_WSAEAFNOSUPPORT = EAFNOSUPPORT;
  414. Id_WSAEADDRINUSE = EADDRINUSE;
  415. Id_WSAEADDRNOTAVAIL = EADDRNOTAVAIL;
  416. Id_WSAENETDOWN = ENETDOWN;
  417. Id_WSAENETUNREACH = ENETUNREACH;
  418. Id_WSAENETRESET = ENETRESET;
  419. Id_WSAECONNABORTED = ECONNABORTED;
  420. Id_WSAECONNRESET = ECONNRESET;
  421. Id_WSAENOBUFS = ENOBUFS;
  422. Id_WSAEISCONN = EISCONN;
  423. Id_WSAENOTCONN = ENOTCONN;
  424. Id_WSAESHUTDOWN = ESHUTDOWN;
  425. Id_WSAETOOMANYREFS = ETOOMANYREFS;
  426. Id_WSAETIMEDOUT = ETIMEDOUT;
  427. Id_WSAECONNREFUSED = ECONNREFUSED;
  428. Id_WSAELOOP = ELOOP;
  429. Id_WSAENAMETOOLONG = ENAMETOOLONG;
  430. Id_WSAEHOSTDOWN = EHOSTDOWN;
  431. Id_WSAEHOSTUNREACH = EHOSTUNREACH;
  432. Id_WSAENOTEMPTY = ENOTEMPTY;
  433. {$ENDIF}
  434. {$IFDEF USE_BASEUNIX}
  435. // Shutdown Options
  436. Id_SD_Recv = SHUT_RD;
  437. Id_SD_Send = SHUT_WR;
  438. Id_SD_Both = SHUT_RDWR;
  439. {$IFDEF BEOS}
  440. {work around incomplete definitions in BeOS FPC compiler.}
  441. EDESTADDRREQ = (B_POSIX_ERROR_BASE + 48);
  442. {$EXTERNALSYM EDESTADDRREQ}
  443. EHOSTDOWN = (B_POSIX_ERROR_BASE + 45);
  444. {$EXTERNALSYM EHOSTDOWN}
  445. ESysENOTSOCK = ENOTSOCK;
  446. ESysEDESTADDRREQ = EDESTADDRREQ;
  447. ESysEMSGSIZE = EMSGSIZE;
  448. ESysEOPNOTSUPP = EOPNOTSUPP;
  449. ESysEHOSTDOWN = EHOSTDOWN;
  450. {$ENDIF}
  451. //
  452. Id_WSAEINTR = ESysEINTR;
  453. Id_WSAEBADF = ESysEBADF;
  454. Id_WSAEACCES = ESysEACCES;
  455. Id_WSAEFAULT = ESysEFAULT;
  456. Id_WSAEINVAL = ESysEINVAL;
  457. Id_WSAEMFILE = ESysEMFILE;
  458. Id_WSAEAGAIN = ESysEAGAIN;
  459. Id_WSAEWOULDBLOCK = ESysEWOULDBLOCK;
  460. Id_WSAEINPROGRESS = ESysEINPROGRESS;
  461. Id_WSAEALREADY = ESysEALREADY;
  462. Id_WSAENOTSOCK = ESysENOTSOCK;
  463. Id_WSAEDESTADDRREQ = ESysEDESTADDRREQ;
  464. Id_WSAEMSGSIZE = ESysEMSGSIZE;
  465. Id_WSAEPROTOTYPE = ESysEPROTOTYPE;
  466. Id_WSAENOPROTOOPT = ESysENOPROTOOPT;
  467. Id_WSAEPROTONOSUPPORT = ESysEPROTONOSUPPORT;
  468. {$IFNDEF BEOS}
  469. Id_WSAESOCKTNOSUPPORT = ESysESOCKTNOSUPPORT;
  470. {$ENDIF}
  471. Id_WSAEOPNOTSUPP = ESysEOPNOTSUPP;
  472. Id_WSAEPFNOSUPPORT = ESysEPFNOSUPPORT;
  473. Id_WSAEAFNOSUPPORT = ESysEAFNOSUPPORT;
  474. Id_WSAEADDRINUSE = ESysEADDRINUSE;
  475. Id_WSAEADDRNOTAVAIL = ESysEADDRNOTAVAIL;
  476. Id_WSAENETDOWN = ESysENETDOWN;
  477. Id_WSAENETUNREACH = ESysENETUNREACH;
  478. Id_WSAENETRESET = ESysENETRESET;
  479. Id_WSAECONNABORTED = ESysECONNABORTED;
  480. Id_WSAECONNRESET = ESysECONNRESET;
  481. Id_WSAENOBUFS = ESysENOBUFS;
  482. Id_WSAEISCONN = ESysEISCONN;
  483. Id_WSAENOTCONN = ESysENOTCONN;
  484. Id_WSAESHUTDOWN = ESysESHUTDOWN;
  485. {$IFNDEF BEOS}
  486. Id_WSAETOOMANYREFS = ESysETOOMANYREFS;
  487. {$ENDIF}
  488. Id_WSAETIMEDOUT = ESysETIMEDOUT;
  489. Id_WSAECONNREFUSED = ESysECONNREFUSED;
  490. Id_WSAELOOP = ESysELOOP;
  491. Id_WSAENAMETOOLONG = ESysENAMETOOLONG;
  492. Id_WSAEHOSTDOWN = ESysEHOSTDOWN;
  493. Id_WSAEHOSTUNREACH = ESysEHOSTUNREACH;
  494. Id_WSAENOTEMPTY = ESysENOTEMPTY;
  495. {$ENDIF}
  496. {$IFDEF WINDOWS}
  497. // Shutdown Options
  498. Id_SD_Recv = 0;
  499. Id_SD_Send = 1;
  500. Id_SD_Both = 2;
  501. //
  502. Id_WSAEINTR = WSAEINTR;
  503. Id_WSAEBADF = WSAEBADF;
  504. Id_WSAEACCES = WSAEACCES;
  505. Id_WSAEFAULT = WSAEFAULT;
  506. Id_WSAEINVAL = WSAEINVAL;
  507. Id_WSAEMFILE = WSAEMFILE;
  508. Id_WSAEWOULDBLOCK = WSAEWOULDBLOCK;
  509. Id_WSAEINPROGRESS = WSAEINPROGRESS;
  510. Id_WSAEALREADY = WSAEALREADY;
  511. Id_WSAENOTSOCK = WSAENOTSOCK;
  512. Id_WSAEDESTADDRREQ = WSAEDESTADDRREQ;
  513. Id_WSAEMSGSIZE = WSAEMSGSIZE;
  514. Id_WSAEPROTOTYPE = WSAEPROTOTYPE;
  515. Id_WSAENOPROTOOPT = WSAENOPROTOOPT;
  516. Id_WSAEPROTONOSUPPORT = WSAEPROTONOSUPPORT;
  517. Id_WSAESOCKTNOSUPPORT = WSAESOCKTNOSUPPORT;
  518. Id_WSAEOPNOTSUPP = WSAEOPNOTSUPP;
  519. Id_WSAEPFNOSUPPORT = WSAEPFNOSUPPORT;
  520. Id_WSAEAFNOSUPPORT = WSAEAFNOSUPPORT;
  521. Id_WSAEADDRINUSE = WSAEADDRINUSE;
  522. Id_WSAEADDRNOTAVAIL = WSAEADDRNOTAVAIL;
  523. Id_WSAENETDOWN = WSAENETDOWN;
  524. Id_WSAENETUNREACH = WSAENETUNREACH;
  525. Id_WSAENETRESET = WSAENETRESET;
  526. Id_WSAECONNABORTED = WSAECONNABORTED;
  527. Id_WSAECONNRESET = WSAECONNRESET;
  528. Id_WSAENOBUFS = WSAENOBUFS;
  529. Id_WSAEISCONN = WSAEISCONN;
  530. Id_WSAENOTCONN = WSAENOTCONN;
  531. Id_WSAESHUTDOWN = WSAESHUTDOWN;
  532. Id_WSAETOOMANYREFS = WSAETOOMANYREFS;
  533. Id_WSAETIMEDOUT = WSAETIMEDOUT;
  534. Id_WSAECONNREFUSED = WSAECONNREFUSED;
  535. Id_WSAELOOP = WSAELOOP;
  536. Id_WSAENAMETOOLONG = WSAENAMETOOLONG;
  537. Id_WSAEHOSTDOWN = WSAEHOSTDOWN;
  538. Id_WSAEHOSTUNREACH = WSAEHOSTUNREACH;
  539. Id_WSAENOTEMPTY = WSAENOTEMPTY;
  540. {$ENDIF}
  541. implementation
  542. {$IFDEF USE_VCL_POSIX}
  543. {$I IdSymbolPlatformOn.inc}
  544. {$ENDIF}
  545. end.