master
  1const std = @import("../std.zig");
  2
  3const SIG = std.c.SIG;
  4const caddr_t = std.c.caddr_t;
  5const gid_t = std.c.gid_t;
  6const iovec = std.c.iovec;
  7const pid_t = std.c.pid_t;
  8const socklen_t = std.c.socklen_t;
  9const uid_t = std.c.uid_t;
 10
 11pub extern "c" fn lwp_gettid() c_int;
 12pub extern "c" fn ptrace(request: c_int, pid: pid_t, addr: caddr_t, data: c_int) c_int;
 13pub extern "c" fn umtx_sleep(ptr: *const volatile c_int, value: c_int, timeout: c_int) c_int;
 14pub extern "c" fn umtx_wakeup(ptr: *const volatile c_int, count: c_int) c_int;
 15
 16pub const E = enum(u16) {
 17    /// No error occurred.
 18    SUCCESS = 0,
 19
 20    PERM = 1,
 21    NOENT = 2,
 22    SRCH = 3,
 23    INTR = 4,
 24    IO = 5,
 25    NXIO = 6,
 26    @"2BIG" = 7,
 27    NOEXEC = 8,
 28    BADF = 9,
 29    CHILD = 10,
 30    DEADLK = 11,
 31    NOMEM = 12,
 32    ACCES = 13,
 33    FAULT = 14,
 34    NOTBLK = 15,
 35    BUSY = 16,
 36    EXIST = 17,
 37    XDEV = 18,
 38    NODEV = 19,
 39    NOTDIR = 20,
 40    ISDIR = 21,
 41    INVAL = 22,
 42    NFILE = 23,
 43    MFILE = 24,
 44    NOTTY = 25,
 45    TXTBSY = 26,
 46    FBIG = 27,
 47    NOSPC = 28,
 48    SPIPE = 29,
 49    ROFS = 30,
 50    MLINK = 31,
 51    PIPE = 32,
 52    DOM = 33,
 53    RANGE = 34,
 54    /// This code is also used for `WOULDBLOCK`.
 55    AGAIN = 35,
 56    INPROGRESS = 36,
 57    ALREADY = 37,
 58    NOTSOCK = 38,
 59    DESTADDRREQ = 39,
 60    MSGSIZE = 40,
 61    PROTOTYPE = 41,
 62    NOPROTOOPT = 42,
 63    PROTONOSUPPORT = 43,
 64    SOCKTNOSUPPORT = 44,
 65    /// This code is also used for `NOTSUP`.
 66    OPNOTSUPP = 45,
 67    PFNOSUPPORT = 46,
 68    AFNOSUPPORT = 47,
 69    ADDRINUSE = 48,
 70    ADDRNOTAVAIL = 49,
 71    NETDOWN = 50,
 72    NETUNREACH = 51,
 73    NETRESET = 52,
 74    CONNABORTED = 53,
 75    CONNRESET = 54,
 76    NOBUFS = 55,
 77    ISCONN = 56,
 78    NOTCONN = 57,
 79    SHUTDOWN = 58,
 80    TOOMANYREFS = 59,
 81    TIMEDOUT = 60,
 82    CONNREFUSED = 61,
 83    LOOP = 62,
 84    NAMETOOLONG = 63,
 85    HOSTDOWN = 64,
 86    HOSTUNREACH = 65,
 87    NOTEMPTY = 66,
 88    PROCLIM = 67,
 89    USERS = 68,
 90    DQUOT = 69,
 91    STALE = 70,
 92    REMOTE = 71,
 93    BADRPC = 72,
 94    RPCMISMATCH = 73,
 95    PROGUNAVAIL = 74,
 96    PROGMISMATCH = 75,
 97    PROCUNAVAIL = 76,
 98    NOLCK = 77,
 99    NOSYS = 78,
100    FTYPE = 79,
101    AUTH = 80,
102    NEEDAUTH = 81,
103    IDRM = 82,
104    NOMSG = 83,
105    OVERFLOW = 84,
106    CANCELED = 85,
107    ILSEQ = 86,
108    NOATTR = 87,
109    DOOFUS = 88,
110    BADMSG = 89,
111    MULTIHOP = 90,
112    NOLINK = 91,
113    PROTO = 92,
114    NOMEDIUM = 93,
115    ASYNC = 99,
116    _,
117};
118
119pub const BADSIG = SIG.ERR;
120
121pub const sig_t = *const fn (i32) callconv(.c) void;
122
123pub const cmsgcred = extern struct {
124    pid: pid_t,
125    uid: uid_t,
126    euid: uid_t,
127    gid: gid_t,
128    ngroups: c_short,
129    groups: [16]gid_t,
130};
131pub const sf_hdtr = extern struct {
132    headers: [*]iovec,
133    hdr_cnt: c_int,
134    trailers: [*]iovec,
135    trl_cnt: c_int,
136};
137
138pub const MS_SYNC = 0;
139pub const MS_ASYNC = 1;
140pub const MS_INVALIDATE = 2;
141
142pub const POSIX_MADV_SEQUENTIAL = 2;
143pub const POSIX_MADV_RANDOM = 1;
144pub const POSIX_MADV_DONTNEED = 4;
145pub const POSIX_MADV_NORMAL = 0;
146pub const POSIX_MADV_WILLNEED = 3;
147
148// https://github.com/DragonFlyBSD/DragonFlyBSD/blob/6098912863ed4c7b3f70d7483910ce2956cf4ed3/sys/netinet/ip.h#L94
149pub const IP = struct {
150    pub const OPTIONS = 1;
151    pub const HDRINCL = 2;
152    pub const TOS = 3;
153    pub const TTL = 4;
154    pub const RECVOPTS = 5;
155    pub const RECVRETOPTS = 6;
156    pub const RECVDSTADDR = 7;
157    pub const SENDSRCADDR = RECVDSTADDR;
158    pub const RETOPTS = 8;
159    pub const MULTICAST_IF = 9;
160    pub const MULTICAST_TTL = 10;
161    pub const MULTICAST_LOOP = 11;
162    pub const ADD_MEMBERSHIP = 12;
163    pub const DROP_MEMBERSHIP = 13;
164    pub const MULTICAST_VIF = 14;
165    pub const RSVP_ON = 15;
166    pub const RSVP_OFF = 16;
167    pub const RSVP_VIF_ON = 17;
168    pub const RSVP_VIF_OFF = 18;
169    pub const PORTRANGE = 19;
170    pub const RECVIF = 20;
171    pub const FW_TBL_CREATE = 40;
172    pub const FW_TBL_DESTROY = 41;
173    pub const FW_TBL_ADD = 42;
174    pub const FW_TBL_DEL = 43;
175    pub const FW_TBL_FLUSH = 44;
176    pub const FW_TBL_GET = 45;
177    pub const FW_TBL_ZERO = 46;
178    pub const FW_TBL_EXPIRE = 47;
179    pub const FW_X = 49;
180    pub const FW_ADD = 50;
181    pub const FW_DEL = 51;
182    pub const FW_FLUSH = 52;
183    pub const FW_ZERO = 53;
184    pub const FW_GET = 54;
185    pub const FW_RESETLOG = 55;
186    pub const DUMMYNET_CONFIGURE = 60;
187    pub const DUMMYNET_DEL = 61;
188    pub const DUMMYNET_FLUSH = 62;
189    pub const DUMMYNET_GET = 64;
190    pub const RECVTTL = 65;
191    pub const MINTTL = 66;
192    pub const RECVTOS = 68;
193    // Same namespace, but these are arguments rather than option names
194    pub const DEFAULT_MULTICAST_TTL = 1;
195    pub const DEFAULT_MULTICAST_LOOP = 1;
196    pub const MAX_MEMBERSHIPS = 20;
197    pub const PORTRANGE_DEFAULT = 0;
198    pub const PORTRANGE_HIGH = 1;
199    pub const PORTRANGE_LOW = 2;
200};
201
202// https://github.com/DragonFlyBSD/DragonFlyBSD/blob/6098912863ed4c7b3f70d7483910ce2956cf4ed3/sys/netinet6/in6.h#L448
203pub const IPV6 = struct {
204    pub const UNICAST_HOPS = 4;
205    pub const MULTICAST_IF = 9;
206    pub const MULTICAST_HOPS = 10;
207    pub const MULTICAST_LOOP = 11;
208    pub const JOIN_GROUP = 12;
209    pub const LEAVE_GROUP = 13;
210    pub const PORTRANGE = 14;
211    pub const @"2292PKTINFO" = 19;
212    pub const @"2292HOPLIMIT" = 20;
213    pub const @"2292NEXTHOP" = 21;
214    pub const @"2292HOPOPTS" = 22;
215    pub const @"2292DSTOPTS" = 23;
216    pub const @"2292RTHDR" = 24;
217    pub const @"2292PKTOPTIONS" = 25;
218    pub const CHECKSUM = 26;
219    pub const V6ONLY = 27;
220    pub const BINDV6ONLY = V6ONLY;
221    pub const FW_ADD = 30;
222    pub const FW_DEL = 31;
223    pub const FW_FLUSH = 32;
224    pub const FW_ZERO = 33;
225    pub const FW_GET = 34;
226    pub const RTHDRDSTOPTS = 35;
227    pub const RECVPKTINFO = 36;
228    pub const RECVHOPLIMIT = 37;
229    pub const RECVRTHDR = 38;
230    pub const RECVHOPOPTS = 39;
231    pub const RECVDSTOPTS = 40;
232    pub const RECVRTHDRDSTOPTS = 41;
233    pub const USE_MIN_MTU = 42;
234    pub const RECVPATHMTU = 43;
235    pub const PATHMTU = 44;
236    pub const REACHCONF = 45;
237    pub const PKTINFO = 46;
238    pub const HOPLIMIT = 47;
239    pub const NEXTHOP = 48;
240    pub const HOPOPTS = 49;
241    pub const DSTOPTS = 50;
242    pub const RTHDR = 51;
243    pub const PKTOPTIONS = 52;
244    pub const RECVTCLASS = 57;
245    pub const AUTOFLOWLABEL = 59;
246    pub const TCLASS = 61;
247    pub const DONTFRAG = 62;
248    pub const PREFER_TEMPADDR = 63;
249    pub const MSFILTER = 74;
250    // Same namespace, but these are arguments rather than option names
251    pub const RTHDR_LOOSE = 0;
252    pub const RTHDR_STRICT = 1;
253    pub const RTHDR_TYPE_0 = 0;
254    pub const DEFAULT_MULTICAST_HOPS = 1;
255    pub const DEFAULT_MULTICAST_LOOP = 1;
256    pub const PORTRANGE_DEFAULT = 0;
257    pub const PORTRANGE_HIGH = 1;
258    pub const PORTRANGE_LOW = 2;
259};
260
261// https://github.com/DragonFlyBSD/DragonFlyBSD/blob/6098912863ed4c7b3f70d7483910ce2956cf4ed3/sys/netinet/ip.h#L94
262pub const IPTOS = struct {
263    pub const LOWDELAY = 0x10;
264    pub const THROUGHPUT = 0x08;
265    pub const RELIABILITY = 0x04;
266    pub const MINCOST = 0x02;
267    pub const CE = 0x01;
268    pub const ECT = 0x02;
269    pub const PREC_ROUTINE = DSCP_CS0;
270    pub const PREC_PRIORITY = DSCP_CS1;
271    pub const PREC_IMMEDIATE = DSCP_CS2;
272    pub const PREC_FLASH = DSCP_CS3;
273    pub const PREC_FLASHOVERRIDE = DSCP_CS4;
274    pub const PREC_CRITIC_ECP = DSCP_CS5;
275    pub const PREC_INTERNETCONTROL = DSCP_CS6;
276    pub const PREC_NETCONTROL = DSCP_CS7;
277    pub const DSCP_CS0 = 0x00;
278    pub const DSCP_CS1 = 0x20;
279    pub const DSCP_AF11 = 0x28;
280    pub const DSCP_AF12 = 0x30;
281    pub const DSCP_AF13 = 0x38;
282    pub const DSCP_CS2 = 0x40;
283    pub const DSCP_AF21 = 0x48;
284    pub const DSCP_AF22 = 0x50;
285    pub const DSCP_AF23 = 0x58;
286    pub const DSCP_CS3 = 0x60;
287    pub const DSCP_AF31 = 0x68;
288    pub const DSCP_AF32 = 0x70;
289    pub const DSCP_AF33 = 0x78;
290    pub const DSCP_CS4 = 0x80;
291    pub const DSCP_AF41 = 0x88;
292    pub const DSCP_AF42 = 0x90;
293    pub const DSCP_AF43 = 0x98;
294    pub const DSCP_CS5 = 0xa0;
295    pub const DSCP_VA = 0xb0;
296    pub const DSCP_EF = 0xb8;
297    pub const DSCP_CS6 = 0xc0;
298    pub const DSCP_CS7 = 0xe0;
299    pub const ECN_NOTECT = 0x00;
300    pub const ECN_ECT1 = 0x01;
301    pub const ECN_ECT0 = 0x02;
302    pub const ECN_CE = 0x03;
303    pub const ECN_MASK = 0x03;
304};