DEADSOFTWARE

eb80349fee07c633fe69a904ac4a51aa757f050a
[bbcp.git] / BlackBox / _FreeBSDLinuxOpenBSD_ / Lin / Mod / gen-Net / Net.txt.templ
1 MODULE LinNet ["libc.so%%libver%%"];
3 (*
4 %%osname%%
5 %%machine%%
6 *)
8 CONST
9 NULL* = 0H;
11 SOCKET_ERROR* = -1;
12 INVALID_SOCKET* = -1;
14 INADDR_NONE* = -1;
15 INADDR_ANY* = 0;
17 (* socket domains *)
18 %%defs-af%%
19 (* socket types *)
20 %%defs-sock%%
21 (* socket protocols *)
22 %%defs-proto%%
23 (* socket options *)
24 %%defs-so%%
25 %%defs-shut%%
26 %%defs-sol%%
27 %%defs-msg%%
28 %%defs-somaxconn%%
29 (* addrinfo.ai_flags *)
30 %%defs-ai%%
31 (* getaddrinfo/getnameinfo/gai_strerror error codes *)
32 %%defs-eai%%
33 %%defs-fd_set-const%%
34 TYPE
35 u_int8_t = SHORTCHAR;
36 int8_t = SHORTCHAR;
37 uint16_t = SHORTINT;
38 (* PtrVoid, int, intFlags, short, socklen_t, size_t, ssize_t, in_addr_t, in_port_t, time_t, suseconds_t, nfds_t, sa_family_t *)
39 %%defs-basictypes%%
40 PtrSTR* = POINTER [untagged] TO ARRAY [untagged] OF SHORTCHAR;
42 SOCKET* = int;
44 (*
45 in_addr* = RECORD [untagged]
46 s_addr*: in_addr_t;
47 END;
48 *)
49 in_addr* = RECORD [untagged]
50 S_un*: RECORD [union]
51 S_un_b*: RECORD [untagged]
52 s_b1*: SHORTCHAR;
53 s_b2*: SHORTCHAR;
54 s_b3*: SHORTCHAR;
55 s_b4*: SHORTCHAR;
56 END;
57 S_un_w*: RECORD [untagged]
58 s_w1*: SHORTINT;
59 s_w2*: SHORTINT;
60 END;
61 S_addr*: in_addr_t;
62 END;
63 END;
65 Ptrsockaddr* = POINTER [untagged] TO sockaddr;
66 sockaddr* = RECORD [untagged]
67 %%fields-sockaddr%%
68 END;
70 Ptrsockaddr_storage = POINTER [untagged] TO sockaddr_storage;
71 sockaddr_storage* = RECORD [untagged]
72 %%fields-sockaddr_storage%%
73 END;
75 Ptrsockaddr_in* = POINTER [untagged] TO sockaddr_in;
76 sockaddr_in* = RECORD [untagged]
77 %%fields-sockaddr_in%%
78 END;
80 Ptraddrinfo* = POINTER [untagged] TO addrinfo;
81 addrinfo* = RECORD [untagged]
82 %%fields-addrinfo%%
83 END;
85 timeval* = RECORD [untagged]
86 (* Linux, FreeBSD, OpenBSD *)
87 tv_sec*: time_t; (* seconds *)
88 tv_usec*: suseconds_t; (* and microseconds *)
89 END;
91 pollfd* = RECORD [untagged]
92 (* Linux, FreeBSD, OpenBSD *)
93 fd*: int;
94 events*: short;
95 revents*: short;
96 END;
98 %%defs-fd_set-type%%
99 (* POSIX.1 *)
100 PROCEDURE [ccall] socket* (domain: int; type: int; protocol: int): SOCKET;
101 PROCEDURE [ccall] accept* (s: SOCKET; VAR addr: sockaddr; VAR addrlen: socklen_t): SOCKET;
102 PROCEDURE [ccall] bind* (s: SOCKET; VAR name: sockaddr; namelen: socklen_t): int;
103 PROCEDURE [ccall] connect* (s: SOCKET; VAR name: sockaddr; namelen: socklen_t): int;
104 PROCEDURE [ccall] getsockname* (s: SOCKET; VAR name: sockaddr; VAR namelen: socklen_t): int;
105 PROCEDURE [ccall] listen* (s: SOCKET; backlog: int): int;
106 PROCEDURE [ccall] recv* (s: SOCKET; buf: PtrVoid; len: size_t; flags: intFlags): ssize_t;
107 PROCEDURE [ccall] send* (s: SOCKET; msg: PtrVoid; len: size_t; flags: intFlags): ssize_t;
108 PROCEDURE [ccall] shutdown* (s: SOCKET; how: int): int;
109 PROCEDURE [ccall] getsockopt* (s: SOCKET; level: int; optname: intFlags; optval: PtrVoid; VAR [nil] optlen: socklen_t): int;
110 PROCEDURE [ccall] setsockopt* (s: SOCKET; level: int; optname: intFlags; optval: PtrVoid; optlen: socklen_t): int;
112 PROCEDURE [ccall] inet_addr* (cp: PtrSTR): in_addr_t;
113 PROCEDURE [ccall] htons* (host16: uint16_t): uint16_t;
115 PROCEDURE [ccall] select* (nfds: INTEGER; VAR [nil] readfds: fd_set; VAR [nil] writefds: fd_set; VAR [nil] exceptfds: fd_set; VAR timeout: timeval): int;
117 PROCEDURE [ccall] poll* (VAR fds: ARRAY [untagged] OF pollfd; nfds: nfds_t; timeout: int): int;
119 (*
120 PROCEDURE FD_ZERO (VAR set: Net.fd_set);
121 VAR i: INTEGER;
122 BEGIN
123 i := LEN(set); REPEAT DEC(i); set[i] := {} UNTIL i = 0
124 END FD_ZERO;
126 PROCEDURE FD_SET (fd: Net.SOCKET; VAR set: Net.fd_set);
127 BEGIN
128 INCL(set[fd DIV 32], fd MOD 32)
129 END FD_SET;
130 *)
132 (* POSIX.1g *)
133 PROCEDURE [ccall] getaddrinfo* (hostname: PtrSTR; servname: PtrSTR; VAR [nil] hints: addrinfo; VAR res: Ptraddrinfo): int;
134 PROCEDURE [ccall] freeaddrinfo* (ai: Ptraddrinfo);
136 PROCEDURE [ccall] gai_strerror* (ecode: int): PtrSTR;
138 END LinNet.