bsocketh.inc 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. type
  2. SOCKLEN_T = __socklen_t;
  3. PSOCKLEN_T = ^SOCKLEN_T;
  4. const
  5. INVALID_SOCKET = -1;
  6. SOCKET_ERROR = -1;
  7. INADDR_ANY = 0;
  8. INADDR_BROADCAST = -1;
  9. INADDR_NONE = $FFFFFFFF;
  10. Type
  11. __socket_type = (
  12. SOCK_STREAM := 1,
  13. SOCK_DGRAM := 2,
  14. SOCK_RAW := 3,
  15. SOCK_RDM := 4,
  16. SOCK_SEQPACKET := 5,
  17. SOCK_PACKET := 10
  18. );
  19. Const
  20. PF_UNSPEC = 0;
  21. PF_LOCAL = 1;
  22. PF_UNIX = PF_LOCAL;
  23. PF_FILE = PF_LOCAL;
  24. PF_INET = 2;
  25. PF_AX25 = 3;
  26. PF_IPX = 4;
  27. PF_APPLETALK = 5;
  28. PF_NETROM = 6;
  29. PF_BRIDGE = 7;
  30. PF_ATMPVC = 8;
  31. PF_X25 = 9;
  32. PF_INET6 = 10;
  33. PF_ROSE = 11;
  34. PF_DECnet = 12;
  35. PF_NETBEUI = 13;
  36. PF_SECURITY = 14;
  37. PF_KEY = 15;
  38. PF_NETLINK = 16;
  39. PF_ROUTE = PF_NETLINK;
  40. PF_PACKET = 17;
  41. PF_ASH = 18;
  42. PF_ECONET = 19;
  43. PF_ATMSVC = 20;
  44. PF_SNA = 22;
  45. PF_IRDA = 23;
  46. PF_PPPOX = 24;
  47. PF_WANPIPE = 25;
  48. PF_BLUETOOTH = 31;
  49. PF_MAX = 32;
  50. AF_UNSPEC = PF_UNSPEC;
  51. AF_LOCAL = PF_LOCAL;
  52. AF_UNIX = PF_UNIX;
  53. AF_FILE = PF_FILE;
  54. AF_INET = PF_INET;
  55. AF_AX25 = PF_AX25;
  56. AF_IPX = PF_IPX;
  57. AF_APPLETALK = PF_APPLETALK;
  58. AF_NETROM = PF_NETROM;
  59. AF_BRIDGE = PF_BRIDGE;
  60. AF_ATMPVC = PF_ATMPVC;
  61. AF_X25 = PF_X25;
  62. AF_INET6 = PF_INET6;
  63. AF_ROSE = PF_ROSE;
  64. AF_DECnet = PF_DECnet;
  65. AF_NETBEUI = PF_NETBEUI;
  66. AF_SECURITY = PF_SECURITY;
  67. AF_KEY = PF_KEY;
  68. AF_NETLINK = PF_NETLINK;
  69. AF_ROUTE = PF_ROUTE;
  70. AF_PACKET = PF_PACKET;
  71. AF_ASH = PF_ASH;
  72. AF_ECONET = PF_ECONET;
  73. AF_ATMSVC = PF_ATMSVC;
  74. AF_SNA = PF_SNA;
  75. AF_IRDA = PF_IRDA;
  76. AF_PPPOX = PF_PPPOX;
  77. AF_WANPIPE = PF_WANPIPE;
  78. AF_BLUETOOTH = PF_BLUETOOTH;
  79. AF_MAX = PF_MAX;
  80. SOL_RAW = 255;
  81. SOL_DECNET = 261;
  82. SOL_X25 = 262;
  83. SOL_PACKET = 263;
  84. SOL_ATM = 264;
  85. SOL_AAL = 265;
  86. SOL_IRDA = 266;
  87. SOMAXCONN = 128;
  88. Type
  89. __ss_aligntype = __uint32_t;
  90. const
  91. _SS_SIZE = 128;
  92. _SS_PADSIZE = _SS_SIZE - (2 * SizeOf(__ss_aligntype));
  93. type
  94. { // replaced by structure down below.
  95. // Why borland decided to change it is a mystery to me :/
  96. sockaddr = record
  97. sa_family : sa_family_t ;
  98. sa_data : array [0..13] of char;
  99. end;
  100. }
  101. // redefined as osockaddr.
  102. osockaddr = record
  103. sa_family : sa_family_t ;
  104. sa_data : array [0..13] of char;
  105. end;
  106. Psockaddr_storage = ^sockaddr_storage;
  107. sockaddr_storage = record
  108. __ss__family : sa_family_t;
  109. __ss_align : __ss_aligntype;
  110. __ss_padding : array[0..(_SS_PADSIZE)-1] of char;
  111. end;
  112. Const
  113. MSG_OOB = $01;
  114. MSG_PEEK = $02;
  115. MSG_DONTROUTE = $04;
  116. MSG_TRYHARD = MSG_DONTROUTE;
  117. MSG_CTRUNC = $08;
  118. MSG_PROXY = $10;
  119. MSG_TRUNC = $20;
  120. MSG_DONTWAIT = $40;
  121. MSG_EOR = $80;
  122. MSG_WAITALL = $100;
  123. MSG_FIN = $200;
  124. MSG_SYN = $400;
  125. MSG_CONFIRM = $800;
  126. MSG_RST = $1000;
  127. MSG_ERRQUEUE = $2000;
  128. MSG_NOSIGNAL = $4000;
  129. MSG_MORE = $8000;
  130. type
  131. Pmsghdr = ^msghdr;
  132. msghdr = record
  133. msg_name : pointer;
  134. msg_namelen : socklen_t;
  135. msg_iov : Piovec;
  136. msg_iovlen : longint;
  137. msg_control : pointer;
  138. msg_controllen : socklen_t;
  139. msg_flags : longint;
  140. end;
  141. Pcmsghdr = ^cmsghdr;
  142. cmsghdr = record
  143. cmsg_len : size_t;
  144. cmsg_level : longint;
  145. cmsg_type : longint;
  146. end;
  147. function CMSG_DATA(cmsg : pointer) : Pbyte;
  148. function CMSG_NXTHDR(mhdr: Pmsghdr; cmsg: Pcmsghdr): Pcmsghdr;
  149. function CMSG_FIRSTHDR(mhdr: Pmsghdr): Pcmsghdr;
  150. function CMSG_ALIGN(len: size_t): size_t;
  151. function CMSG_SPACE(len: size_t): size_t;
  152. function CMSG_LEN(len: size_t): size_t;
  153. function __cmsg_nxthdr(__mhdr:Pmsghdr; __cmsg:Pcmsghdr):Pcmsghdr;cdecl;external clib name '__cmsg_nxthdr';
  154. const
  155. SCM_RIGHTS = $01;
  156. SCM_CREDENTIALS = $02;
  157. SCM_CONNECT = $03;
  158. type
  159. Pucred = ^ucred;
  160. ucred = record
  161. pid : pid_t;
  162. uid : uid_t;
  163. gid : gid_t;
  164. end;
  165. Plinger = ^linger;
  166. linger = record
  167. l_onoff : longint;
  168. l_linger : longint;
  169. end;
  170. { ---------------------------------------------------------------------
  171. Borland compatibility types
  172. ---------------------------------------------------------------------}
  173. type
  174. SunB = record
  175. s_b1,
  176. s_b2,
  177. s_b3,
  178. s_b4: u_char;
  179. end;
  180. SunW = record
  181. s_w1,
  182. s_w2: u_short;
  183. end;
  184. in_addr = record
  185. case Integer of
  186. 0: (S_un_b: SunB);
  187. 1: (S_un_w: SunW);
  188. 2: (S_addr: u_long);
  189. end;
  190. TInAddr = in_addr;
  191. PInAddr = ^TInAddr;
  192. sockaddr = {packed} record
  193. case Integer of
  194. 0: (sa_family: sa_family_t;
  195. sa_data: packed array[0..13] of Byte);
  196. 1: (sin_family: sa_family_t;
  197. sin_port: u_short;
  198. sin_addr: TInAddr;
  199. sin_zero: packed array[0..7] of Byte);
  200. end;
  201. TSockAddr = sockaddr;
  202. PSockAddr = ^TSockAddr;
  203. TMessageHeader = msghdr;
  204. PMessageHeader = ^TMessageHeader;
  205. TCMessageHeader = cmsghdr;
  206. PCMessageHeader = ^TCMessageHeader;
  207. sockaddr_in = sockaddr;
  208. Psockaddr_in = ^sockaddr;
  209. TSockAddrIn = sockaddr_in;
  210. PSockAddrIn = ^TSockAddrIn;
  211. TSocket = longint;
  212. function SA_LEN(const buf): Cardinal; // Untyped buffer; this is *unsafe*.
  213. function __libc_sa_len(__af: sa_family_t): Integer; cdecl;external clib name '__libc_sa_len';
  214. { Borland compatibility }
  215. Type
  216. PSocketLength = ^socklen_t;