]> git.proxmox.com Git - rustc.git/blame - vendor/libc/src/unix/linux_like/android/mod.rs
New upstream version 1.44.1+dfsg1
[rustc.git] / vendor / libc / src / unix / linux_like / android / mod.rs
CommitLineData
476ff2be
SL
1//! Android-specific definitions for linux-like values
2
476ff2be
SL
3pub type clock_t = ::c_long;
4pub type time_t = ::c_long;
5pub type suseconds_t = ::c_long;
476ff2be
SL
6pub type off_t = ::c_long;
7pub type blkcnt_t = ::c_ulong;
8pub type blksize_t = ::c_ulong;
9pub type nlink_t = u32;
10pub type useconds_t = u32;
476ff2be
SL
11pub type pthread_t = ::c_long;
12pub type pthread_mutexattr_t = ::c_long;
041b39d2 13pub type pthread_rwlockattr_t = ::c_long;
476ff2be 14pub type pthread_condattr_t = ::c_long;
416331ca 15pub type pthread_key_t = ::c_int;
476ff2be
SL
16pub type fsfilcnt_t = ::c_ulong;
17pub type fsblkcnt_t = ::c_ulong;
18pub type nfds_t = ::c_uint;
19pub type rlim_t = ::c_ulong;
20pub type dev_t = ::c_ulong;
21pub type ino_t = ::c_ulong;
22pub type __CPU_BITTYPE = ::c_ulong;
8bb4bdeb 23pub type idtype_t = ::c_int;
ea8adc8c 24pub type loff_t = ::c_longlong;
dfeec247
XL
25pub type __kernel_loff_t = ::c_longlong;
26pub type __kernel_pid_t = ::c_int;
476ff2be
SL
27
28s! {
476ff2be
SL
29 pub struct stack_t {
30 pub ss_sp: *mut ::c_void,
31 pub ss_flags: ::c_int,
32 pub ss_size: ::size_t
33 }
34
476ff2be
SL
35 pub struct __fsid_t {
36 __val: [::c_int; 2],
37 }
38
39 pub struct msghdr {
40 pub msg_name: *mut ::c_void,
8bb4bdeb 41 pub msg_namelen: ::socklen_t,
476ff2be
SL
42 pub msg_iov: *mut ::iovec,
43 pub msg_iovlen: ::size_t,
44 pub msg_control: *mut ::c_void,
45 pub msg_controllen: ::size_t,
46 pub msg_flags: ::c_int,
47 }
48
8bb4bdeb
XL
49 pub struct cmsghdr {
50 pub cmsg_len: ::size_t,
51 pub cmsg_level: ::c_int,
52 pub cmsg_type: ::c_int,
53 }
54
476ff2be
SL
55 pub struct termios {
56 pub c_iflag: ::tcflag_t,
57 pub c_oflag: ::tcflag_t,
58 pub c_cflag: ::tcflag_t,
59 pub c_lflag: ::tcflag_t,
60 pub c_line: ::cc_t,
61 pub c_cc: [::cc_t; ::NCCS],
62 }
63
abe05a73
XL
64 pub struct termios2 {
65 pub c_iflag: ::tcflag_t,
66 pub c_oflag: ::tcflag_t,
67 pub c_cflag: ::tcflag_t,
68 pub c_lflag: ::tcflag_t,
69 pub c_line: ::cc_t,
70 pub c_cc: [::cc_t; 19],
71 pub c_ispeed: ::speed_t,
72 pub c_ospeed: ::speed_t,
73 }
74
476ff2be
SL
75 pub struct flock {
76 pub l_type: ::c_short,
77 pub l_whence: ::c_short,
78 pub l_start: ::off_t,
79 pub l_len: ::off_t,
80 pub l_pid: ::pid_t,
81 }
82
dfeec247
XL
83 pub struct flock64 {
84 pub l_type: ::c_short,
85 pub l_whence: ::c_short,
86 pub l_start: ::__kernel_loff_t,
87 pub l_len: ::__kernel_loff_t,
88 pub l_pid: ::__kernel_pid_t,
89 }
90
476ff2be
SL
91 pub struct cpu_set_t {
92 #[cfg(target_pointer_width = "64")]
93 __bits: [__CPU_BITTYPE; 16],
94 #[cfg(target_pointer_width = "32")]
95 __bits: [__CPU_BITTYPE; 1],
96 }
97
98 pub struct sem_t {
99 count: ::c_uint,
8bb4bdeb
XL
100 #[cfg(target_pointer_width = "64")]
101 __reserved: [::c_int; 3],
476ff2be
SL
102 }
103
476ff2be
SL
104 pub struct exit_status {
105 pub e_termination: ::c_short,
106 pub e_exit: ::c_short,
107 }
108
8bb4bdeb
XL
109 pub struct statvfs {
110 pub f_bsize: ::c_ulong,
111 pub f_frsize: ::c_ulong,
112 pub f_blocks: ::fsblkcnt_t,
113 pub f_bfree: ::fsblkcnt_t,
114 pub f_bavail: ::fsblkcnt_t,
115 pub f_files: ::fsfilcnt_t,
116 pub f_ffree: ::fsfilcnt_t,
117 pub f_favail: ::fsfilcnt_t,
118 pub f_fsid: ::c_ulong,
119 pub f_flag: ::c_ulong,
120 pub f_namemax: ::c_ulong,
121 #[cfg(target_pointer_width = "64")]
122 __f_reserved: [u32; 6],
123 }
3b2f2976
XL
124
125 pub struct signalfd_siginfo {
416331ca
XL
126 pub ssi_signo: u32,
127 pub ssi_errno: i32,
128 pub ssi_code: i32,
129 pub ssi_pid: u32,
130 pub ssi_uid: u32,
131 pub ssi_fd: i32,
132 pub ssi_tid: u32,
133 pub ssi_band: u32,
134 pub ssi_overrun: u32,
135 pub ssi_trapno: u32,
136 pub ssi_status: i32,
137 pub ssi_int: i32,
3b2f2976
XL
138 pub ssi_ptr: ::c_ulonglong,
139 pub ssi_utime: ::c_ulonglong,
140 pub ssi_stime: ::c_ulonglong,
141 pub ssi_addr: ::c_ulonglong,
416331ca
XL
142 pub ssi_addr_lsb: u16,
143 _pad2: u16,
144 pub ssi_syscall: i32,
145 pub ssi_call_addr: u64,
146 pub ssi_arch: u32,
147 _pad: [u8; 28],
3b2f2976 148 }
abe05a73
XL
149
150 pub struct ucred {
151 pub pid: ::pid_t,
152 pub uid: ::uid_t,
153 pub gid: ::gid_t,
154 }
2c00a5a8
XL
155
156 pub struct genlmsghdr {
8faf50e0
XL
157 pub cmd: u8,
158 pub version: u8,
159 pub reserved: u16,
2c00a5a8
XL
160 }
161
162 pub struct nlmsghdr {
8faf50e0
XL
163 pub nlmsg_len: u32,
164 pub nlmsg_type: u16,
165 pub nlmsg_flags: u16,
166 pub nlmsg_seq: u32,
167 pub nlmsg_pid: u32,
2c00a5a8
XL
168 }
169
170 pub struct nlmsgerr {
8faf50e0
XL
171 pub error: ::c_int,
172 pub msg: nlmsghdr,
2c00a5a8
XL
173 }
174
175 pub struct nl_pktinfo {
8faf50e0 176 pub group: u32,
2c00a5a8
XL
177 }
178
179 pub struct nl_mmap_req {
8faf50e0
XL
180 pub nm_block_size: ::c_uint,
181 pub nm_block_nr: ::c_uint,
182 pub nm_frame_size: ::c_uint,
183 pub nm_frame_nr: ::c_uint,
2c00a5a8
XL
184 }
185
186 pub struct nl_mmap_hdr {
8faf50e0
XL
187 pub nm_status: ::c_uint,
188 pub nm_len: ::c_uint,
189 pub nm_group: u32,
190 pub nm_pid: u32,
191 pub nm_uid: u32,
192 pub nm_gid: u32,
2c00a5a8
XL
193 }
194
195 pub struct nlattr {
8faf50e0
XL
196 pub nla_len: u16,
197 pub nla_type: u16,
198 }
199
200 pub struct in6_pktinfo {
201 pub ipi6_addr: ::in6_addr,
202 pub ipi6_ifindex: ::c_int,
2c00a5a8 203 }
532ac7d7
XL
204
205 pub struct inotify_event {
206 pub wd: ::c_int,
416331ca
XL
207 pub mask: u32,
208 pub cookie: u32,
209 pub len: u32
532ac7d7 210 }
ba9703b0
XL
211
212 pub struct sock_extended_err {
213 pub ee_errno: u32,
214 pub ee_origin: u8,
215 pub ee_type: u8,
216 pub ee_code: u8,
217 pub ee_pad: u8,
218 pub ee_info: u32,
219 pub ee_data: u32,
220 }
532ac7d7
XL
221}
222
e74abb32 223s_no_extra_traits! {
416331ca
XL
224 pub struct sockaddr_nl {
225 pub nl_family: ::sa_family_t,
226 nl_pad: ::c_ushort,
227 pub nl_pid: u32,
228 pub nl_groups: u32
229 }
230
532ac7d7
XL
231 pub struct dirent {
232 pub d_ino: u64,
233 pub d_off: i64,
234 pub d_reclen: ::c_ushort,
235 pub d_type: ::c_uchar,
236 pub d_name: [::c_char; 256],
237 }
238
239 pub struct dirent64 {
240 pub d_ino: u64,
241 pub d_off: i64,
242 pub d_reclen: ::c_ushort,
243 pub d_type: ::c_uchar,
244 pub d_name: [::c_char; 256],
245 }
246
247 pub struct siginfo_t {
248 pub si_signo: ::c_int,
249 pub si_errno: ::c_int,
250 pub si_code: ::c_int,
251 pub _pad: [::c_int; 29],
252 _align: [usize; 0],
253 }
254
255 pub struct lastlog {
256 ll_time: ::time_t,
257 ll_line: [::c_char; UT_LINESIZE],
258 ll_host: [::c_char; UT_HOSTSIZE],
259 }
260
261 pub struct utmp {
262 pub ut_type: ::c_short,
263 pub ut_pid: ::pid_t,
264 pub ut_line: [::c_char; UT_LINESIZE],
265 pub ut_id: [::c_char; 4],
266 pub ut_user: [::c_char; UT_NAMESIZE],
267 pub ut_host: [::c_char; UT_HOSTSIZE],
268 pub ut_exit: exit_status,
269 pub ut_session: ::c_long,
270 pub ut_tv: ::timeval,
416331ca 271 pub ut_addr_v6: [i32; 4],
532ac7d7
XL
272 unused: [::c_char; 20],
273 }
274
275 pub struct sockaddr_alg {
276 pub salg_family: ::sa_family_t,
277 pub salg_type: [::c_uchar; 14],
278 pub salg_feat: u32,
279 pub salg_mask: u32,
280 pub salg_name: [::c_uchar; 64],
281 }
282
283 pub struct af_alg_iv {
284 pub ivlen: u32,
285 pub iv: [::c_uchar; 0],
286 }
287}
288
289cfg_if! {
290 if #[cfg(feature = "extra_traits")] {
416331ca
XL
291 impl PartialEq for sockaddr_nl {
292 fn eq(&self, other: &sockaddr_nl) -> bool {
293 self.nl_family == other.nl_family &&
294 self.nl_pid == other.nl_pid &&
295 self.nl_groups == other.nl_groups
296 }
297 }
298 impl Eq for sockaddr_nl {}
299 impl ::fmt::Debug for sockaddr_nl {
300 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
301 f.debug_struct("sockaddr_nl")
302 .field("nl_family", &self.nl_family)
303 .field("nl_pid", &self.nl_pid)
304 .field("nl_groups", &self.nl_groups)
305 .finish()
306 }
307 }
308 impl ::hash::Hash for sockaddr_nl {
309 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
310 self.nl_family.hash(state);
311 self.nl_pid.hash(state);
312 self.nl_groups.hash(state);
313 }
314 }
315
532ac7d7
XL
316 impl PartialEq for dirent {
317 fn eq(&self, other: &dirent) -> bool {
318 self.d_ino == other.d_ino
319 && self.d_off == other.d_off
320 && self.d_reclen == other.d_reclen
321 && self.d_type == other.d_type
322 && self
323 .d_name
324 .iter()
325 .zip(other.d_name.iter())
326 .all(|(a,b)| a == b)
327 }
328 }
329
330 impl Eq for dirent {}
331
332 impl ::fmt::Debug for dirent {
333 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
334 f.debug_struct("dirent")
335 .field("d_ino", &self.d_ino)
336 .field("d_off", &self.d_off)
337 .field("d_reclen", &self.d_reclen)
338 .field("d_type", &self.d_type)
339 // FIXME: .field("d_name", &self.d_name)
340 .finish()
341 }
342 }
343
344 impl ::hash::Hash for dirent {
345 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
346 self.d_ino.hash(state);
347 self.d_off.hash(state);
348 self.d_reclen.hash(state);
349 self.d_type.hash(state);
350 self.d_name.hash(state);
351 }
352 }
353
354 impl PartialEq for dirent64 {
355 fn eq(&self, other: &dirent64) -> bool {
356 self.d_ino == other.d_ino
357 && self.d_off == other.d_off
358 && self.d_reclen == other.d_reclen
359 && self.d_type == other.d_type
360 && self
361 .d_name
362 .iter()
363 .zip(other.d_name.iter())
364 .all(|(a,b)| a == b)
365 }
366 }
367
368 impl Eq for dirent64 {}
369
370 impl ::fmt::Debug for dirent64 {
371 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
372 f.debug_struct("dirent64")
373 .field("d_ino", &self.d_ino)
374 .field("d_off", &self.d_off)
375 .field("d_reclen", &self.d_reclen)
376 .field("d_type", &self.d_type)
377 // FIXME: .field("d_name", &self.d_name)
378 .finish()
379 }
380 }
381
382 impl ::hash::Hash for dirent64 {
383 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
384 self.d_ino.hash(state);
385 self.d_off.hash(state);
386 self.d_reclen.hash(state);
387 self.d_type.hash(state);
388 self.d_name.hash(state);
389 }
390 }
391
392 impl PartialEq for siginfo_t {
393 fn eq(&self, other: &siginfo_t) -> bool {
394 self.si_signo == other.si_signo
395 && self.si_errno == other.si_errno
396 && self.si_code == other.si_code
397 // Ignore _pad
398 // Ignore _align
399 }
400 }
401
402 impl Eq for siginfo_t {}
403
404 impl ::fmt::Debug for siginfo_t {
405 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
406 f.debug_struct("siginfo_t")
407 .field("si_signo", &self.si_signo)
408 .field("si_errno", &self.si_errno)
409 .field("si_code", &self.si_code)
410 // Ignore _pad
411 // Ignore _align
412 .finish()
413 }
414 }
415
416 impl ::hash::Hash for siginfo_t {
417 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
418 self.si_signo.hash(state);
419 self.si_errno.hash(state);
420 self.si_code.hash(state);
421 // Ignore _pad
422 // Ignore _align
423 }
424 }
425
426 impl PartialEq for lastlog {
427 fn eq(&self, other: &lastlog) -> bool {
428 self.ll_time == other.ll_time
429 && self
430 .ll_line
431 .iter()
432 .zip(other.ll_line.iter())
433 .all(|(a,b)| a == b)
434 && self
435 .ll_host
436 .iter()
437 .zip(other.ll_host.iter())
438 .all(|(a,b)| a == b)
439 }
440 }
441
442 impl Eq for lastlog {}
443
444 impl ::fmt::Debug for lastlog {
445 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
446 f.debug_struct("lastlog")
447 .field("ll_time", &self.ll_time)
448 .field("ll_line", &self.ll_line)
449 // FIXME: .field("ll_host", &self.ll_host)
450 .finish()
451 }
452 }
453
454 impl ::hash::Hash for lastlog {
455 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
456 self.ll_time.hash(state);
457 self.ll_line.hash(state);
458 self.ll_host.hash(state);
459 }
460 }
461
462 impl PartialEq for utmp {
463 fn eq(&self, other: &utmp) -> bool {
464 self.ut_type == other.ut_type
465 && self.ut_pid == other.ut_pid
466 && self
467 .ut_line
468 .iter()
469 .zip(other.ut_line.iter())
470 .all(|(a,b)| a == b)
471 && self.ut_id == other.ut_id
472 && self
473 .ut_user
474 .iter()
475 .zip(other.ut_user.iter())
476 .all(|(a,b)| a == b)
477 && self
478 .ut_host
479 .iter()
480 .zip(other.ut_host.iter())
481 .all(|(a,b)| a == b)
482 && self.ut_exit == other.ut_exit
483 && self.ut_session == other.ut_session
484 && self.ut_tv == other.ut_tv
485 && self.ut_addr_v6 == other.ut_addr_v6
486 && self.unused == other.unused
487 }
488 }
489
490 impl Eq for utmp {}
491
492 impl ::fmt::Debug for utmp {
493 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
494 f.debug_struct("utmp")
495 .field("ut_type", &self.ut_type)
496 .field("ut_pid", &self.ut_pid)
497 .field("ut_line", &self.ut_line)
498 .field("ut_id", &self.ut_id)
499 .field("ut_user", &self.ut_user)
500 // FIXME: .field("ut_host", &self.ut_host)
501 .field("ut_exit", &self.ut_exit)
502 .field("ut_session", &self.ut_session)
503 .field("ut_tv", &self.ut_tv)
504 .field("ut_addr_v6", &self.ut_addr_v6)
505 .field("unused", &self.unused)
506 .finish()
507 }
508 }
509
510 impl ::hash::Hash for utmp {
511 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
512 self.ut_type.hash(state);
513 self.ut_pid.hash(state);
514 self.ut_line.hash(state);
515 self.ut_id.hash(state);
516 self.ut_user.hash(state);
517 self.ut_host.hash(state);
518 self.ut_exit.hash(state);
519 self.ut_session.hash(state);
520 self.ut_tv.hash(state);
521 self.ut_addr_v6.hash(state);
522 self.unused.hash(state);
523 }
524 }
525
526 impl PartialEq for sockaddr_alg {
527 fn eq(&self, other: &sockaddr_alg) -> bool {
528 self.salg_family == other.salg_family
529 && self
530 .salg_type
531 .iter()
532 .zip(other.salg_type.iter())
533 .all(|(a, b)| a == b)
534 && self.salg_feat == other.salg_feat
535 && self.salg_mask == other.salg_mask
536 && self
537 .salg_name
538 .iter()
539 .zip(other.salg_name.iter())
540 .all(|(a, b)| a == b)
541 }
542 }
543
544 impl Eq for sockaddr_alg {}
545
546 impl ::fmt::Debug for sockaddr_alg {
547 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
548 f.debug_struct("sockaddr_alg")
549 .field("salg_family", &self.salg_family)
550 .field("salg_type", &self.salg_type)
551 .field("salg_feat", &self.salg_feat)
552 .field("salg_mask", &self.salg_mask)
553 .field("salg_name", &&self.salg_name[..])
554 .finish()
555 }
556 }
557
558 impl ::hash::Hash for sockaddr_alg {
559 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
560 self.salg_family.hash(state);
561 self.salg_type.hash(state);
562 self.salg_feat.hash(state);
563 self.salg_mask.hash(state);
564 self.salg_name.hash(state);
565 }
566 }
567
568 impl af_alg_iv {
569 fn as_slice(&self) -> &[u8] {
570 unsafe {
571 ::core::slice::from_raw_parts(
572 self.iv.as_ptr(),
573 self.ivlen as usize
574 )
575 }
576 }
577 }
578
579 impl PartialEq for af_alg_iv {
580 fn eq(&self, other: &af_alg_iv) -> bool {
581 *self.as_slice() == *other.as_slice()
582 }
583 }
584
585 impl Eq for af_alg_iv {}
586
587 impl ::fmt::Debug for af_alg_iv {
588 fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
589 f.debug_struct("af_alg_iv")
590 .field("iv", &self.as_slice())
591 .finish()
592 }
593 }
594
595 impl ::hash::Hash for af_alg_iv {
596 fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
597 self.as_slice().hash(state);
598 }
599 }
600 }
476ff2be
SL
601}
602
416331ca
XL
603pub const MADV_SOFT_OFFLINE: ::c_int = 101;
604pub const MS_NOUSER: ::c_ulong = 0xffffffff80000000;
605pub const MS_RMT_MASK: ::c_ulong = 0x02800051;
606
8bb4bdeb 607pub const O_TRUNC: ::c_int = 512;
8bb4bdeb 608pub const O_CLOEXEC: ::c_int = 0x80000;
ea8adc8c
XL
609pub const O_PATH: ::c_int = 0o10000000;
610pub const O_NOATIME: ::c_int = 0o1000000;
8bb4bdeb
XL
611
612pub const EBFONT: ::c_int = 59;
613pub const ENOSTR: ::c_int = 60;
614pub const ENODATA: ::c_int = 61;
615pub const ETIME: ::c_int = 62;
616pub const ENOSR: ::c_int = 63;
617pub const ENONET: ::c_int = 64;
618pub const ENOPKG: ::c_int = 65;
619pub const EREMOTE: ::c_int = 66;
620pub const ENOLINK: ::c_int = 67;
621pub const EADV: ::c_int = 68;
622pub const ESRMNT: ::c_int = 69;
623pub const ECOMM: ::c_int = 70;
624pub const EPROTO: ::c_int = 71;
625pub const EDOTDOT: ::c_int = 73;
626
8bb4bdeb 627pub const EPOLL_CLOEXEC: ::c_int = 0x80000;
041b39d2
XL
628pub const EPOLLONESHOT: ::c_int = 0x40000000;
629pub const EPOLLRDHUP: ::c_int = 0x00002000;
630pub const EPOLLWAKEUP: ::c_int = 0x20000000;
8bb4bdeb
XL
631
632pub const EFD_CLOEXEC: ::c_int = 0x80000;
633
476ff2be
SL
634pub const USER_PROCESS: ::c_short = 7;
635
416331ca
XL
636pub const FALLOC_FL_COLLAPSE_RANGE: ::c_int = 0x08;
637
476ff2be 638pub const BUFSIZ: ::c_uint = 1024;
416331ca 639pub const FILENAME_MAX: ::c_uint = 4096;
476ff2be
SL
640pub const FOPEN_MAX: ::c_uint = 20;
641pub const POSIX_FADV_DONTNEED: ::c_int = 4;
642pub const POSIX_FADV_NOREUSE: ::c_int = 5;
416331ca 643pub const L_tmpnam: ::c_uint = 4096;
476ff2be
SL
644pub const TMP_MAX: ::c_uint = 308915776;
645pub const _PC_LINK_MAX: ::c_int = 1;
646pub const _PC_MAX_CANON: ::c_int = 2;
647pub const _PC_MAX_INPUT: ::c_int = 3;
648pub const _PC_NAME_MAX: ::c_int = 4;
649pub const _PC_PATH_MAX: ::c_int = 5;
650pub const _PC_PIPE_BUF: ::c_int = 6;
041b39d2
XL
651pub const _PC_2_SYMLINKS: ::c_int = 7;
652pub const _PC_ALLOC_SIZE_MIN: ::c_int = 8;
653pub const _PC_REC_INCR_XFER_SIZE: ::c_int = 9;
654pub const _PC_REC_MAX_XFER_SIZE: ::c_int = 10;
655pub const _PC_REC_MIN_XFER_SIZE: ::c_int = 11;
656pub const _PC_REC_XFER_ALIGN: ::c_int = 12;
657pub const _PC_SYMLINK_MAX: ::c_int = 13;
476ff2be
SL
658pub const _PC_CHOWN_RESTRICTED: ::c_int = 14;
659pub const _PC_NO_TRUNC: ::c_int = 15;
660pub const _PC_VDISABLE: ::c_int = 16;
041b39d2
XL
661pub const _PC_ASYNC_IO: ::c_int = 17;
662pub const _PC_PRIO_IO: ::c_int = 18;
663pub const _PC_SYNC_IO: ::c_int = 19;
476ff2be
SL
664
665pub const FIONBIO: ::c_int = 0x5421;
666
667pub const _SC_ARG_MAX: ::c_int = 0;
668pub const _SC_BC_BASE_MAX: ::c_int = 1;
669pub const _SC_BC_DIM_MAX: ::c_int = 2;
670pub const _SC_BC_SCALE_MAX: ::c_int = 3;
671pub const _SC_BC_STRING_MAX: ::c_int = 4;
672pub const _SC_CHILD_MAX: ::c_int = 5;
673pub const _SC_CLK_TCK: ::c_int = 6;
674pub const _SC_COLL_WEIGHTS_MAX: ::c_int = 7;
675pub const _SC_EXPR_NEST_MAX: ::c_int = 8;
676pub const _SC_LINE_MAX: ::c_int = 9;
677pub const _SC_NGROUPS_MAX: ::c_int = 10;
678pub const _SC_OPEN_MAX: ::c_int = 11;
041b39d2 679pub const _SC_PASS_MAX: ::c_int = 12;
476ff2be
SL
680pub const _SC_2_C_BIND: ::c_int = 13;
681pub const _SC_2_C_DEV: ::c_int = 14;
682pub const _SC_2_C_VERSION: ::c_int = 15;
683pub const _SC_2_CHAR_TERM: ::c_int = 16;
684pub const _SC_2_FORT_DEV: ::c_int = 17;
685pub const _SC_2_FORT_RUN: ::c_int = 18;
686pub const _SC_2_LOCALEDEF: ::c_int = 19;
687pub const _SC_2_SW_DEV: ::c_int = 20;
688pub const _SC_2_UPE: ::c_int = 21;
689pub const _SC_2_VERSION: ::c_int = 22;
690pub const _SC_JOB_CONTROL: ::c_int = 23;
691pub const _SC_SAVED_IDS: ::c_int = 24;
692pub const _SC_VERSION: ::c_int = 25;
693pub const _SC_RE_DUP_MAX: ::c_int = 26;
694pub const _SC_STREAM_MAX: ::c_int = 27;
695pub const _SC_TZNAME_MAX: ::c_int = 28;
696pub const _SC_XOPEN_CRYPT: ::c_int = 29;
697pub const _SC_XOPEN_ENH_I18N: ::c_int = 30;
698pub const _SC_XOPEN_SHM: ::c_int = 31;
699pub const _SC_XOPEN_VERSION: ::c_int = 32;
700pub const _SC_XOPEN_XCU_VERSION: ::c_int = 33;
701pub const _SC_XOPEN_REALTIME: ::c_int = 34;
702pub const _SC_XOPEN_REALTIME_THREADS: ::c_int = 35;
703pub const _SC_XOPEN_LEGACY: ::c_int = 36;
704pub const _SC_ATEXIT_MAX: ::c_int = 37;
705pub const _SC_IOV_MAX: ::c_int = 38;
706pub const _SC_PAGESIZE: ::c_int = 39;
707pub const _SC_PAGE_SIZE: ::c_int = 40;
708pub const _SC_XOPEN_UNIX: ::c_int = 41;
041b39d2
XL
709pub const _SC_XBS5_ILP32_OFF32: ::c_int = 42;
710pub const _SC_XBS5_ILP32_OFFBIG: ::c_int = 43;
711pub const _SC_XBS5_LP64_OFF64: ::c_int = 44;
712pub const _SC_XBS5_LPBIG_OFFBIG: ::c_int = 45;
713pub const _SC_AIO_LISTIO_MAX: ::c_int = 46;
714pub const _SC_AIO_MAX: ::c_int = 47;
715pub const _SC_AIO_PRIO_DELTA_MAX: ::c_int = 48;
716pub const _SC_DELAYTIMER_MAX: ::c_int = 49;
717pub const _SC_MQ_OPEN_MAX: ::c_int = 50;
476ff2be 718pub const _SC_MQ_PRIO_MAX: ::c_int = 51;
041b39d2
XL
719pub const _SC_RTSIG_MAX: ::c_int = 52;
720pub const _SC_SEM_NSEMS_MAX: ::c_int = 53;
721pub const _SC_SEM_VALUE_MAX: ::c_int = 54;
722pub const _SC_SIGQUEUE_MAX: ::c_int = 55;
723pub const _SC_TIMER_MAX: ::c_int = 56;
724pub const _SC_ASYNCHRONOUS_IO: ::c_int = 57;
725pub const _SC_FSYNC: ::c_int = 58;
726pub const _SC_MAPPED_FILES: ::c_int = 59;
727pub const _SC_MEMLOCK: ::c_int = 60;
728pub const _SC_MEMLOCK_RANGE: ::c_int = 61;
729pub const _SC_MEMORY_PROTECTION: ::c_int = 62;
730pub const _SC_MESSAGE_PASSING: ::c_int = 63;
731pub const _SC_PRIORITIZED_IO: ::c_int = 64;
732pub const _SC_PRIORITY_SCHEDULING: ::c_int = 65;
733pub const _SC_REALTIME_SIGNALS: ::c_int = 66;
734pub const _SC_SEMAPHORES: ::c_int = 67;
735pub const _SC_SHARED_MEMORY_OBJECTS: ::c_int = 68;
736pub const _SC_SYNCHRONIZED_IO: ::c_int = 69;
737pub const _SC_TIMERS: ::c_int = 70;
476ff2be
SL
738pub const _SC_GETGR_R_SIZE_MAX: ::c_int = 71;
739pub const _SC_GETPW_R_SIZE_MAX: ::c_int = 72;
740pub const _SC_LOGIN_NAME_MAX: ::c_int = 73;
741pub const _SC_THREAD_DESTRUCTOR_ITERATIONS: ::c_int = 74;
742pub const _SC_THREAD_KEYS_MAX: ::c_int = 75;
743pub const _SC_THREAD_STACK_MIN: ::c_int = 76;
744pub const _SC_THREAD_THREADS_MAX: ::c_int = 77;
745pub const _SC_TTY_NAME_MAX: ::c_int = 78;
746pub const _SC_THREADS: ::c_int = 79;
747pub const _SC_THREAD_ATTR_STACKADDR: ::c_int = 80;
748pub const _SC_THREAD_ATTR_STACKSIZE: ::c_int = 81;
749pub const _SC_THREAD_PRIORITY_SCHEDULING: ::c_int = 82;
750pub const _SC_THREAD_PRIO_INHERIT: ::c_int = 83;
751pub const _SC_THREAD_PRIO_PROTECT: ::c_int = 84;
752pub const _SC_THREAD_SAFE_FUNCTIONS: ::c_int = 85;
041b39d2 753pub const _SC_NPROCESSORS_CONF: ::c_int = 96;
476ff2be 754pub const _SC_NPROCESSORS_ONLN: ::c_int = 97;
041b39d2
XL
755pub const _SC_PHYS_PAGES: ::c_int = 98;
756pub const _SC_AVPHYS_PAGES: ::c_int = 99;
757pub const _SC_MONOTONIC_CLOCK: ::c_int = 100;
476ff2be 758
8faf50e0
XL
759pub const _SC_2_PBS: ::c_int = 101;
760pub const _SC_2_PBS_ACCOUNTING: ::c_int = 102;
761pub const _SC_2_PBS_CHECKPOINT: ::c_int = 103;
762pub const _SC_2_PBS_LOCATE: ::c_int = 104;
763pub const _SC_2_PBS_MESSAGE: ::c_int = 105;
764pub const _SC_2_PBS_TRACK: ::c_int = 106;
765pub const _SC_ADVISORY_INFO: ::c_int = 107;
766pub const _SC_BARRIERS: ::c_int = 108;
767pub const _SC_CLOCK_SELECTION: ::c_int = 109;
768pub const _SC_CPUTIME: ::c_int = 110;
769pub const _SC_HOST_NAME_MAX: ::c_int = 111;
770pub const _SC_IPV6: ::c_int = 112;
771pub const _SC_RAW_SOCKETS: ::c_int = 113;
772pub const _SC_READER_WRITER_LOCKS: ::c_int = 114;
773pub const _SC_REGEXP: ::c_int = 115;
774pub const _SC_SHELL: ::c_int = 116;
775pub const _SC_SPAWN: ::c_int = 117;
776pub const _SC_SPIN_LOCKS: ::c_int = 118;
777pub const _SC_SPORADIC_SERVER: ::c_int = 119;
778pub const _SC_SS_REPL_MAX: ::c_int = 120;
779pub const _SC_SYMLOOP_MAX: ::c_int = 121;
780pub const _SC_THREAD_CPUTIME: ::c_int = 122;
781pub const _SC_THREAD_PROCESS_SHARED: ::c_int = 123;
782pub const _SC_THREAD_ROBUST_PRIO_INHERIT: ::c_int = 124;
783pub const _SC_THREAD_ROBUST_PRIO_PROTECT: ::c_int = 125;
784pub const _SC_THREAD_SPORADIC_SERVER: ::c_int = 126;
785pub const _SC_TIMEOUTS: ::c_int = 127;
786pub const _SC_TRACE: ::c_int = 128;
787pub const _SC_TRACE_EVENT_FILTER: ::c_int = 129;
788pub const _SC_TRACE_EVENT_NAME_MAX: ::c_int = 130;
789pub const _SC_TRACE_INHERIT: ::c_int = 131;
790pub const _SC_TRACE_LOG: ::c_int = 132;
791pub const _SC_TRACE_NAME_MAX: ::c_int = 133;
792pub const _SC_TRACE_SYS_MAX: ::c_int = 134;
793pub const _SC_TRACE_USER_EVENT_MAX: ::c_int = 135;
794pub const _SC_TYPED_MEMORY_OBJECTS: ::c_int = 136;
795pub const _SC_V7_ILP32_OFF32: ::c_int = 137;
796pub const _SC_V7_ILP32_OFFBIG: ::c_int = 138;
797pub const _SC_V7_LP64_OFF64: ::c_int = 139;
798pub const _SC_V7_LPBIG_OFFBIG: ::c_int = 140;
799pub const _SC_XOPEN_STREAMS: ::c_int = 141;
800pub const _SC_XOPEN_UUCP: ::c_int = 142;
801
476ff2be
SL
802pub const PTHREAD_MUTEX_NORMAL: ::c_int = 0;
803pub const PTHREAD_MUTEX_RECURSIVE: ::c_int = 1;
804pub const PTHREAD_MUTEX_ERRORCHECK: ::c_int = 2;
805pub const PTHREAD_MUTEX_DEFAULT: ::c_int = PTHREAD_MUTEX_NORMAL;
806
807pub const FIOCLEX: ::c_int = 0x5451;
416331ca 808pub const FIONCLEX: ::c_int = 0x5450;
476ff2be 809
476ff2be
SL
810pub const SIGCHLD: ::c_int = 17;
811pub const SIGBUS: ::c_int = 7;
812pub const SIGUSR1: ::c_int = 10;
813pub const SIGUSR2: ::c_int = 12;
814pub const SIGCONT: ::c_int = 18;
815pub const SIGSTOP: ::c_int = 19;
816pub const SIGTSTP: ::c_int = 20;
817pub const SIGURG: ::c_int = 23;
818pub const SIGIO: ::c_int = 29;
819pub const SIGSYS: ::c_int = 31;
820pub const SIGSTKFLT: ::c_int = 16;
e74abb32 821#[deprecated(since = "0.2.55", note = "Use SIGSYS instead")]
476ff2be
SL
822pub const SIGUNUSED: ::c_int = 31;
823pub const SIGTTIN: ::c_int = 21;
824pub const SIGTTOU: ::c_int = 22;
825pub const SIGXCPU: ::c_int = 24;
826pub const SIGXFSZ: ::c_int = 25;
827pub const SIGVTALRM: ::c_int = 26;
828pub const SIGPROF: ::c_int = 27;
829pub const SIGWINCH: ::c_int = 28;
830pub const SIGPOLL: ::c_int = 29;
831pub const SIGPWR: ::c_int = 30;
832pub const SIG_SETMASK: ::c_int = 2;
833pub const SIG_BLOCK: ::c_int = 0x000000;
834pub const SIG_UNBLOCK: ::c_int = 0x01;
835
836pub const RUSAGE_CHILDREN: ::c_int = -1;
837
838pub const LC_PAPER: ::c_int = 7;
839pub const LC_NAME: ::c_int = 8;
840pub const LC_ADDRESS: ::c_int = 9;
841pub const LC_TELEPHONE: ::c_int = 10;
842pub const LC_MEASUREMENT: ::c_int = 11;
843pub const LC_IDENTIFICATION: ::c_int = 12;
ba9703b0
XL
844pub const LC_PAPER_MASK: ::c_int = 1 << LC_PAPER;
845pub const LC_NAME_MASK: ::c_int = 1 << LC_NAME;
846pub const LC_ADDRESS_MASK: ::c_int = 1 << LC_ADDRESS;
847pub const LC_TELEPHONE_MASK: ::c_int = 1 << LC_TELEPHONE;
848pub const LC_MEASUREMENT_MASK: ::c_int = 1 << LC_MEASUREMENT;
849pub const LC_IDENTIFICATION_MASK: ::c_int = 1 << LC_IDENTIFICATION;
476ff2be 850pub const LC_ALL_MASK: ::c_int = ::LC_CTYPE_MASK
e74abb32
XL
851 | ::LC_NUMERIC_MASK
852 | ::LC_TIME_MASK
853 | ::LC_COLLATE_MASK
854 | ::LC_MONETARY_MASK
855 | ::LC_MESSAGES_MASK
856 | LC_PAPER_MASK
857 | LC_NAME_MASK
858 | LC_ADDRESS_MASK
859 | LC_TELEPHONE_MASK
860 | LC_MEASUREMENT_MASK
861 | LC_IDENTIFICATION_MASK;
476ff2be
SL
862
863pub const MAP_ANON: ::c_int = 0x0020;
864pub const MAP_ANONYMOUS: ::c_int = 0x0020;
865pub const MAP_GROWSDOWN: ::c_int = 0x0100;
866pub const MAP_DENYWRITE: ::c_int = 0x0800;
867pub const MAP_EXECUTABLE: ::c_int = 0x01000;
868pub const MAP_LOCKED: ::c_int = 0x02000;
869pub const MAP_NORESERVE: ::c_int = 0x04000;
870pub const MAP_POPULATE: ::c_int = 0x08000;
871pub const MAP_NONBLOCK: ::c_int = 0x010000;
872pub const MAP_STACK: ::c_int = 0x020000;
873
874pub const EDEADLK: ::c_int = 35;
875pub const ENAMETOOLONG: ::c_int = 36;
876pub const ENOLCK: ::c_int = 37;
877pub const ENOSYS: ::c_int = 38;
878pub const ENOTEMPTY: ::c_int = 39;
879pub const ELOOP: ::c_int = 40;
880pub const ENOMSG: ::c_int = 42;
881pub const EIDRM: ::c_int = 43;
882pub const ECHRNG: ::c_int = 44;
883pub const EL2NSYNC: ::c_int = 45;
884pub const EL3HLT: ::c_int = 46;
885pub const EL3RST: ::c_int = 47;
886pub const ELNRNG: ::c_int = 48;
887pub const EUNATCH: ::c_int = 49;
888pub const ENOCSI: ::c_int = 50;
889pub const EL2HLT: ::c_int = 51;
890pub const EBADE: ::c_int = 52;
891pub const EBADR: ::c_int = 53;
892pub const EXFULL: ::c_int = 54;
893pub const ENOANO: ::c_int = 55;
894pub const EBADRQC: ::c_int = 56;
895pub const EBADSLT: ::c_int = 57;
896
897pub const EMULTIHOP: ::c_int = 72;
898pub const EBADMSG: ::c_int = 74;
899pub const EOVERFLOW: ::c_int = 75;
900pub const ENOTUNIQ: ::c_int = 76;
901pub const EBADFD: ::c_int = 77;
902pub const EREMCHG: ::c_int = 78;
903pub const ELIBACC: ::c_int = 79;
904pub const ELIBBAD: ::c_int = 80;
905pub const ELIBSCN: ::c_int = 81;
906pub const ELIBMAX: ::c_int = 82;
907pub const ELIBEXEC: ::c_int = 83;
908pub const EILSEQ: ::c_int = 84;
909pub const ERESTART: ::c_int = 85;
910pub const ESTRPIPE: ::c_int = 86;
911pub const EUSERS: ::c_int = 87;
912pub const ENOTSOCK: ::c_int = 88;
913pub const EDESTADDRREQ: ::c_int = 89;
914pub const EMSGSIZE: ::c_int = 90;
915pub const EPROTOTYPE: ::c_int = 91;
916pub const ENOPROTOOPT: ::c_int = 92;
917pub const EPROTONOSUPPORT: ::c_int = 93;
918pub const ESOCKTNOSUPPORT: ::c_int = 94;
919pub const EOPNOTSUPP: ::c_int = 95;
8bb4bdeb 920pub const ENOTSUP: ::c_int = EOPNOTSUPP;
476ff2be
SL
921pub const EPFNOSUPPORT: ::c_int = 96;
922pub const EAFNOSUPPORT: ::c_int = 97;
923pub const EADDRINUSE: ::c_int = 98;
924pub const EADDRNOTAVAIL: ::c_int = 99;
925pub const ENETDOWN: ::c_int = 100;
926pub const ENETUNREACH: ::c_int = 101;
927pub const ENETRESET: ::c_int = 102;
928pub const ECONNABORTED: ::c_int = 103;
929pub const ECONNRESET: ::c_int = 104;
930pub const ENOBUFS: ::c_int = 105;
931pub const EISCONN: ::c_int = 106;
932pub const ENOTCONN: ::c_int = 107;
933pub const ESHUTDOWN: ::c_int = 108;
934pub const ETOOMANYREFS: ::c_int = 109;
935pub const ETIMEDOUT: ::c_int = 110;
936pub const ECONNREFUSED: ::c_int = 111;
937pub const EHOSTDOWN: ::c_int = 112;
938pub const EHOSTUNREACH: ::c_int = 113;
939pub const EALREADY: ::c_int = 114;
940pub const EINPROGRESS: ::c_int = 115;
941pub const ESTALE: ::c_int = 116;
942pub const EUCLEAN: ::c_int = 117;
943pub const ENOTNAM: ::c_int = 118;
944pub const ENAVAIL: ::c_int = 119;
945pub const EISNAM: ::c_int = 120;
946pub const EREMOTEIO: ::c_int = 121;
947pub const EDQUOT: ::c_int = 122;
948pub const ENOMEDIUM: ::c_int = 123;
949pub const EMEDIUMTYPE: ::c_int = 124;
950pub const ECANCELED: ::c_int = 125;
951pub const ENOKEY: ::c_int = 126;
952pub const EKEYEXPIRED: ::c_int = 127;
953pub const EKEYREVOKED: ::c_int = 128;
954pub const EKEYREJECTED: ::c_int = 129;
955pub const EOWNERDEAD: ::c_int = 130;
956pub const ENOTRECOVERABLE: ::c_int = 131;
957
958pub const SOCK_STREAM: ::c_int = 1;
959pub const SOCK_DGRAM: ::c_int = 2;
960pub const SOCK_SEQPACKET: ::c_int = 5;
abe05a73
XL
961pub const SOCK_DCCP: ::c_int = 6;
962pub const SOCK_PACKET: ::c_int = 10;
476ff2be
SL
963
964pub const SOL_SOCKET: ::c_int = 1;
8bb4bdeb
XL
965pub const SOL_SCTP: ::c_int = 132;
966pub const SOL_IPX: ::c_int = 256;
967pub const SOL_AX25: ::c_int = 257;
968pub const SOL_ATALK: ::c_int = 258;
969pub const SOL_NETROM: ::c_int = 259;
970pub const SOL_ROSE: ::c_int = 260;
971
abe05a73
XL
972/* DCCP socket options */
973pub const DCCP_SOCKOPT_PACKET_SIZE: ::c_int = 1;
974pub const DCCP_SOCKOPT_SERVICE: ::c_int = 2;
975pub const DCCP_SOCKOPT_CHANGE_L: ::c_int = 3;
976pub const DCCP_SOCKOPT_CHANGE_R: ::c_int = 4;
977pub const DCCP_SOCKOPT_GET_CUR_MPS: ::c_int = 5;
978pub const DCCP_SOCKOPT_SERVER_TIMEWAIT: ::c_int = 6;
979pub const DCCP_SOCKOPT_SEND_CSCOV: ::c_int = 10;
980pub const DCCP_SOCKOPT_RECV_CSCOV: ::c_int = 11;
981pub const DCCP_SOCKOPT_AVAILABLE_CCIDS: ::c_int = 12;
982pub const DCCP_SOCKOPT_CCID: ::c_int = 13;
983pub const DCCP_SOCKOPT_TX_CCID: ::c_int = 14;
984pub const DCCP_SOCKOPT_RX_CCID: ::c_int = 15;
985pub const DCCP_SOCKOPT_QPOLICY_ID: ::c_int = 16;
986pub const DCCP_SOCKOPT_QPOLICY_TXQLEN: ::c_int = 17;
987pub const DCCP_SOCKOPT_CCID_RX_INFO: ::c_int = 128;
988pub const DCCP_SOCKOPT_CCID_TX_INFO: ::c_int = 192;
989
990/// maximum number of services provided on the same listening port
991pub const DCCP_SERVICE_LIST_MAX_LEN: ::c_int = 32;
992
476ff2be
SL
993pub const SO_REUSEADDR: ::c_int = 2;
994pub const SO_TYPE: ::c_int = 3;
995pub const SO_ERROR: ::c_int = 4;
996pub const SO_DONTROUTE: ::c_int = 5;
997pub const SO_BROADCAST: ::c_int = 6;
998pub const SO_SNDBUF: ::c_int = 7;
999pub const SO_RCVBUF: ::c_int = 8;
1000pub const SO_KEEPALIVE: ::c_int = 9;
1001pub const SO_OOBINLINE: ::c_int = 10;
041b39d2 1002pub const SO_PRIORITY: ::c_int = 12;
476ff2be 1003pub const SO_LINGER: ::c_int = 13;
041b39d2 1004pub const SO_BSDCOMPAT: ::c_int = 14;
476ff2be 1005pub const SO_REUSEPORT: ::c_int = 15;
041b39d2
XL
1006pub const SO_PASSCRED: ::c_int = 16;
1007pub const SO_PEERCRED: ::c_int = 17;
476ff2be
SL
1008pub const SO_RCVLOWAT: ::c_int = 18;
1009pub const SO_SNDLOWAT: ::c_int = 19;
1010pub const SO_RCVTIMEO: ::c_int = 20;
1011pub const SO_SNDTIMEO: ::c_int = 21;
041b39d2
XL
1012pub const SO_BINDTODEVICE: ::c_int = 25;
1013pub const SO_TIMESTAMP: ::c_int = 29;
476ff2be 1014pub const SO_ACCEPTCONN: ::c_int = 30;
041b39d2 1015pub const SO_SNDBUFFORCE: ::c_int = 32;
3b2f2976 1016pub const SO_RCVBUFFORCE: ::c_int = 33;
041b39d2
XL
1017pub const SO_MARK: ::c_int = 36;
1018pub const SO_PROTOCOL: ::c_int = 38;
1019pub const SO_DOMAIN: ::c_int = 39;
1020pub const SO_RXQ_OVFL: ::c_int = 40;
1021pub const SO_PEEK_OFF: ::c_int = 42;
1022pub const SO_BUSY_POLL: ::c_int = 46;
476ff2be 1023
0731742a
XL
1024pub const IPTOS_ECN_NOTECT: u8 = 0x00;
1025
476ff2be
SL
1026pub const O_ACCMODE: ::c_int = 3;
1027pub const O_APPEND: ::c_int = 1024;
1028pub const O_CREAT: ::c_int = 64;
1029pub const O_EXCL: ::c_int = 128;
1030pub const O_NOCTTY: ::c_int = 256;
1031pub const O_NONBLOCK: ::c_int = 2048;
1032pub const O_SYNC: ::c_int = 0x101000;
476ff2be
SL
1033pub const O_ASYNC: ::c_int = 0x2000;
1034pub const O_NDELAY: ::c_int = 0x800;
041b39d2 1035pub const O_DSYNC: ::c_int = 4096;
476ff2be
SL
1036
1037pub const NI_MAXHOST: ::size_t = 1025;
1038
1039pub const NCCS: usize = 19;
1040pub const TCSBRKP: ::c_int = 0x5425;
1041pub const TCSANOW: ::c_int = 0;
1042pub const TCSADRAIN: ::c_int = 0x1;
1043pub const TCSAFLUSH: ::c_int = 0x2;
476ff2be
SL
1044pub const VEOF: usize = 4;
1045pub const VEOL: usize = 11;
1046pub const VEOL2: usize = 16;
1047pub const VMIN: usize = 6;
1048pub const IEXTEN: ::tcflag_t = 0x00008000;
1049pub const TOSTOP: ::tcflag_t = 0x00000100;
1050pub const FLUSHO: ::tcflag_t = 0x00001000;
041b39d2 1051pub const EXTPROC: ::tcflag_t = 0o200000;
476ff2be
SL
1052
1053pub const ADFS_SUPER_MAGIC: ::c_long = 0x0000adf5;
1054pub const AFFS_SUPER_MAGIC: ::c_long = 0x0000adff;
1055pub const CODA_SUPER_MAGIC: ::c_long = 0x73757245;
1056pub const CRAMFS_MAGIC: ::c_long = 0x28cd3d45;
1057pub const EFS_SUPER_MAGIC: ::c_long = 0x00414a53;
1058pub const EXT2_SUPER_MAGIC: ::c_long = 0x0000ef53;
1059pub const EXT3_SUPER_MAGIC: ::c_long = 0x0000ef53;
1060pub const EXT4_SUPER_MAGIC: ::c_long = 0x0000ef53;
1061pub const HPFS_SUPER_MAGIC: ::c_long = 0xf995e849;
1062pub const HUGETLBFS_MAGIC: ::c_long = 0x958458f6;
1063pub const ISOFS_SUPER_MAGIC: ::c_long = 0x00009660;
1064pub const JFFS2_SUPER_MAGIC: ::c_long = 0x000072b6;
1065pub const MINIX_SUPER_MAGIC: ::c_long = 0x0000137f;
1066pub const MINIX_SUPER_MAGIC2: ::c_long = 0x0000138f;
1067pub const MINIX2_SUPER_MAGIC: ::c_long = 0x00002468;
1068pub const MINIX2_SUPER_MAGIC2: ::c_long = 0x00002478;
1069pub const MSDOS_SUPER_MAGIC: ::c_long = 0x00004d44;
1070pub const NCP_SUPER_MAGIC: ::c_long = 0x0000564c;
1071pub const NFS_SUPER_MAGIC: ::c_long = 0x00006969;
1072pub const OPENPROM_SUPER_MAGIC: ::c_long = 0x00009fa1;
1073pub const PROC_SUPER_MAGIC: ::c_long = 0x00009fa0;
1074pub const QNX4_SUPER_MAGIC: ::c_long = 0x0000002f;
1075pub const REISERFS_SUPER_MAGIC: ::c_long = 0x52654973;
1076pub const SMB_SUPER_MAGIC: ::c_long = 0x0000517b;
1077pub const TMPFS_MAGIC: ::c_long = 0x01021994;
1078pub const USBDEVICE_SUPER_MAGIC: ::c_long = 0x00009fa2;
1079
476ff2be
SL
1080pub const MAP_HUGETLB: ::c_int = 0x040000;
1081
1082pub const PTRACE_TRACEME: ::c_int = 0;
1083pub const PTRACE_PEEKTEXT: ::c_int = 1;
1084pub const PTRACE_PEEKDATA: ::c_int = 2;
1085pub const PTRACE_PEEKUSER: ::c_int = 3;
1086pub const PTRACE_POKETEXT: ::c_int = 4;
1087pub const PTRACE_POKEDATA: ::c_int = 5;
1088pub const PTRACE_POKEUSER: ::c_int = 6;
1089pub const PTRACE_CONT: ::c_int = 7;
1090pub const PTRACE_KILL: ::c_int = 8;
1091pub const PTRACE_SINGLESTEP: ::c_int = 9;
1092pub const PTRACE_ATTACH: ::c_int = 16;
1093pub const PTRACE_DETACH: ::c_int = 17;
1094pub const PTRACE_SYSCALL: ::c_int = 24;
1095pub const PTRACE_SETOPTIONS: ::c_int = 0x4200;
1096pub const PTRACE_GETEVENTMSG: ::c_int = 0x4201;
1097pub const PTRACE_GETSIGINFO: ::c_int = 0x4202;
1098pub const PTRACE_SETSIGINFO: ::c_int = 0x4203;
476ff2be
SL
1099
1100pub const EFD_NONBLOCK: ::c_int = 0x800;
1101
1102pub const F_GETLK: ::c_int = 5;
1103pub const F_GETOWN: ::c_int = 9;
1104pub const F_SETOWN: ::c_int = 8;
1105pub const F_SETLK: ::c_int = 6;
1106pub const F_SETLKW: ::c_int = 7;
69743fb6
XL
1107pub const F_RDLCK: ::c_int = 0;
1108pub const F_WRLCK: ::c_int = 1;
1109pub const F_UNLCK: ::c_int = 2;
ba9703b0
XL
1110pub const F_OFD_GETLK: ::c_int = 36;
1111pub const F_OFD_SETLK: ::c_int = 37;
1112pub const F_OFD_SETLKW: ::c_int = 38;
69743fb6 1113
416331ca
XL
1114pub const RLIMIT_CPU: ::c_int = 0;
1115pub const RLIMIT_FSIZE: ::c_int = 1;
1116pub const RLIMIT_DATA: ::c_int = 2;
1117pub const RLIMIT_STACK: ::c_int = 3;
1118pub const RLIMIT_CORE: ::c_int = 4;
1119pub const RLIMIT_LOCKS: ::c_int = 10;
1120pub const RLIMIT_SIGPENDING: ::c_int = 11;
1121pub const RLIMIT_MSGQUEUE: ::c_int = 12;
1122pub const RLIMIT_NICE: ::c_int = 13;
1123pub const RLIMIT_RTPRIO: ::c_int = 14;
1124
dfeec247
XL
1125pub const RLIM_INFINITY: ::rlim_t = !0;
1126
476ff2be
SL
1127pub const TCGETS: ::c_int = 0x5401;
1128pub const TCSETS: ::c_int = 0x5402;
1129pub const TCSETSW: ::c_int = 0x5403;
1130pub const TCSETSF: ::c_int = 0x5404;
1131pub const TCGETA: ::c_int = 0x5405;
1132pub const TCSETA: ::c_int = 0x5406;
1133pub const TCSETAW: ::c_int = 0x5407;
1134pub const TCSETAF: ::c_int = 0x5408;
1135pub const TCSBRK: ::c_int = 0x5409;
1136pub const TCXONC: ::c_int = 0x540A;
1137pub const TCFLSH: ::c_int = 0x540B;
1138pub const TIOCGSOFTCAR: ::c_int = 0x5419;
1139pub const TIOCSSOFTCAR: ::c_int = 0x541A;
1140pub const TIOCINQ: ::c_int = 0x541B;
1141pub const TIOCLINUX: ::c_int = 0x541C;
1142pub const TIOCGSERIAL: ::c_int = 0x541E;
1143pub const TIOCEXCL: ::c_int = 0x540C;
1144pub const TIOCNXCL: ::c_int = 0x540D;
1145pub const TIOCSCTTY: ::c_int = 0x540E;
1146pub const TIOCGPGRP: ::c_int = 0x540F;
1147pub const TIOCSPGRP: ::c_int = 0x5410;
1148pub const TIOCOUTQ: ::c_int = 0x5411;
1149pub const TIOCSTI: ::c_int = 0x5412;
1150pub const TIOCGWINSZ: ::c_int = 0x5413;
1151pub const TIOCSWINSZ: ::c_int = 0x5414;
1152pub const TIOCMGET: ::c_int = 0x5415;
1153pub const TIOCMBIS: ::c_int = 0x5416;
1154pub const TIOCMBIC: ::c_int = 0x5417;
1155pub const TIOCMSET: ::c_int = 0x5418;
1156pub const FIONREAD: ::c_int = 0x541B;
1157pub const TIOCCONS: ::c_int = 0x541D;
1158
2c00a5a8
XL
1159pub const ST_RDONLY: ::c_ulong = 1;
1160pub const ST_NOSUID: ::c_ulong = 2;
1161pub const ST_NODEV: ::c_ulong = 4;
1162pub const ST_NOEXEC: ::c_ulong = 8;
1163pub const ST_SYNCHRONOUS: ::c_ulong = 16;
1164pub const ST_MANDLOCK: ::c_ulong = 64;
1165pub const ST_NOATIME: ::c_ulong = 1024;
1166pub const ST_NODIRATIME: ::c_ulong = 2048;
1167pub const ST_RELATIME: ::c_ulong = 4096;
1168
476ff2be 1169pub const RTLD_NOLOAD: ::c_int = 0x4;
476ff2be
SL
1170
1171pub const SEM_FAILED: *mut sem_t = 0 as *mut sem_t;
1172
ba9703b0
XL
1173pub const AI_PASSIVE: ::c_int = 0x00000001;
1174pub const AI_CANONNAME: ::c_int = 0x00000002;
1175pub const AI_NUMERICHOST: ::c_int = 0x00000004;
1176pub const AI_NUMERICSERV: ::c_int = 0x00000008;
1177pub const AI_MASK: ::c_int = AI_PASSIVE
1178 | AI_CANONNAME
1179 | AI_NUMERICHOST
1180 | AI_NUMERICSERV
1181 | AI_ADDRCONFIG;
1182pub const AI_ALL: ::c_int = 0x00000100;
1183pub const AI_V4MAPPED_CFG: ::c_int = 0x00000200;
1184pub const AI_ADDRCONFIG: ::c_int = 0x00000400;
1185pub const AI_V4MAPPED: ::c_int = 0x00000800;
1186pub const AI_DEFAULT: ::c_int = AI_V4MAPPED_CFG | AI_ADDRCONFIG;
1187
476ff2be
SL
1188pub const LINUX_REBOOT_MAGIC1: ::c_int = 0xfee1dead;
1189pub const LINUX_REBOOT_MAGIC2: ::c_int = 672274793;
1190pub const LINUX_REBOOT_MAGIC2A: ::c_int = 85072278;
1191pub const LINUX_REBOOT_MAGIC2B: ::c_int = 369367448;
1192pub const LINUX_REBOOT_MAGIC2C: ::c_int = 537993216;
1193
1194pub const LINUX_REBOOT_CMD_RESTART: ::c_int = 0x01234567;
1195pub const LINUX_REBOOT_CMD_HALT: ::c_int = 0xCDEF0123;
1196pub const LINUX_REBOOT_CMD_CAD_ON: ::c_int = 0x89ABCDEF;
1197pub const LINUX_REBOOT_CMD_CAD_OFF: ::c_int = 0x00000000;
1198pub const LINUX_REBOOT_CMD_POWER_OFF: ::c_int = 0x4321FEDC;
1199pub const LINUX_REBOOT_CMD_RESTART2: ::c_int = 0xA1B2C3D4;
1200pub const LINUX_REBOOT_CMD_SW_SUSPEND: ::c_int = 0xD000FCE2;
1201pub const LINUX_REBOOT_CMD_KEXEC: ::c_int = 0x45584543;
1202
1203pub const MCL_CURRENT: ::c_int = 0x0001;
1204pub const MCL_FUTURE: ::c_int = 0x0002;
1205
476ff2be 1206pub const CBAUD: ::tcflag_t = 0o0010017;
416331ca
XL
1207pub const TAB1: ::tcflag_t = 0x00000800;
1208pub const TAB2: ::tcflag_t = 0x00001000;
1209pub const TAB3: ::tcflag_t = 0x00001800;
1210pub const CR1: ::tcflag_t = 0x00000200;
1211pub const CR2: ::tcflag_t = 0x00000400;
1212pub const CR3: ::tcflag_t = 0x00000600;
1213pub const FF1: ::tcflag_t = 0x00008000;
1214pub const BS1: ::tcflag_t = 0x00002000;
1215pub const VT1: ::tcflag_t = 0x00004000;
476ff2be
SL
1216pub const VWERASE: usize = 14;
1217pub const VREPRINT: usize = 12;
1218pub const VSUSP: usize = 10;
1219pub const VSTART: usize = 8;
1220pub const VSTOP: usize = 9;
1221pub const VDISCARD: usize = 13;
1222pub const VTIME: usize = 5;
1223pub const IXON: ::tcflag_t = 0x00000400;
1224pub const IXOFF: ::tcflag_t = 0x00001000;
1225pub const ONLCR: ::tcflag_t = 0x4;
1226pub const CSIZE: ::tcflag_t = 0x00000030;
1227pub const CS6: ::tcflag_t = 0x00000010;
1228pub const CS7: ::tcflag_t = 0x00000020;
1229pub const CS8: ::tcflag_t = 0x00000030;
1230pub const CSTOPB: ::tcflag_t = 0x00000040;
1231pub const CREAD: ::tcflag_t = 0x00000080;
1232pub const PARENB: ::tcflag_t = 0x00000100;
1233pub const PARODD: ::tcflag_t = 0x00000200;
1234pub const HUPCL: ::tcflag_t = 0x00000400;
1235pub const CLOCAL: ::tcflag_t = 0x00000800;
1236pub const ECHOKE: ::tcflag_t = 0x00000800;
1237pub const ECHOE: ::tcflag_t = 0x00000010;
1238pub const ECHOK: ::tcflag_t = 0x00000020;
1239pub const ECHONL: ::tcflag_t = 0x00000040;
1240pub const ECHOPRT: ::tcflag_t = 0x00000400;
1241pub const ECHOCTL: ::tcflag_t = 0x00000200;
1242pub const ISIG: ::tcflag_t = 0x00000001;
1243pub const ICANON: ::tcflag_t = 0x00000002;
1244pub const PENDIN: ::tcflag_t = 0x00004000;
1245pub const NOFLSH: ::tcflag_t = 0x00000080;
041b39d2 1246pub const VSWTC: usize = 7;
e74abb32
XL
1247pub const OLCUC: ::tcflag_t = 0o000002;
1248pub const NLDLY: ::tcflag_t = 0o000400;
1249pub const CRDLY: ::tcflag_t = 0o003000;
041b39d2 1250pub const TABDLY: ::tcflag_t = 0o014000;
e74abb32
XL
1251pub const BSDLY: ::tcflag_t = 0o020000;
1252pub const FFDLY: ::tcflag_t = 0o100000;
1253pub const VTDLY: ::tcflag_t = 0o040000;
1254pub const XTABS: ::tcflag_t = 0o014000;
476ff2be 1255
8bb4bdeb
XL
1256pub const B0: ::speed_t = 0o000000;
1257pub const B50: ::speed_t = 0o000001;
1258pub const B75: ::speed_t = 0o000002;
1259pub const B110: ::speed_t = 0o000003;
1260pub const B134: ::speed_t = 0o000004;
1261pub const B150: ::speed_t = 0o000005;
1262pub const B200: ::speed_t = 0o000006;
1263pub const B300: ::speed_t = 0o000007;
1264pub const B600: ::speed_t = 0o000010;
1265pub const B1200: ::speed_t = 0o000011;
1266pub const B1800: ::speed_t = 0o000012;
1267pub const B2400: ::speed_t = 0o000013;
1268pub const B4800: ::speed_t = 0o000014;
1269pub const B9600: ::speed_t = 0o000015;
1270pub const B19200: ::speed_t = 0o000016;
1271pub const B38400: ::speed_t = 0o000017;
1272pub const EXTA: ::speed_t = B19200;
1273pub const EXTB: ::speed_t = B38400;
abe05a73 1274pub const BOTHER: ::speed_t = 0o010000;
8bb4bdeb
XL
1275pub const B57600: ::speed_t = 0o010001;
1276pub const B115200: ::speed_t = 0o010002;
1277pub const B230400: ::speed_t = 0o010003;
1278pub const B460800: ::speed_t = 0o010004;
1279pub const B500000: ::speed_t = 0o010005;
1280pub const B576000: ::speed_t = 0o010006;
1281pub const B921600: ::speed_t = 0o010007;
1282pub const B1000000: ::speed_t = 0o010010;
1283pub const B1152000: ::speed_t = 0o010011;
1284pub const B1500000: ::speed_t = 0o010012;
1285pub const B2000000: ::speed_t = 0o010013;
1286pub const B2500000: ::speed_t = 0o010014;
1287pub const B3000000: ::speed_t = 0o010015;
1288pub const B3500000: ::speed_t = 0o010016;
1289pub const B4000000: ::speed_t = 0o010017;
1290
2c00a5a8
XL
1291pub const EAI_AGAIN: ::c_int = 2;
1292pub const EAI_BADFLAGS: ::c_int = 3;
1293pub const EAI_FAIL: ::c_int = 4;
1294pub const EAI_FAMILY: ::c_int = 5;
1295pub const EAI_MEMORY: ::c_int = 6;
1296pub const EAI_NODATA: ::c_int = 7;
1297pub const EAI_NONAME: ::c_int = 8;
1298pub const EAI_SERVICE: ::c_int = 9;
1299pub const EAI_SOCKTYPE: ::c_int = 10;
476ff2be 1300pub const EAI_SYSTEM: ::c_int = 11;
2c00a5a8 1301pub const EAI_OVERFLOW: ::c_int = 14;
476ff2be
SL
1302
1303pub const NETLINK_ROUTE: ::c_int = 0;
1304pub const NETLINK_UNUSED: ::c_int = 1;
1305pub const NETLINK_USERSOCK: ::c_int = 2;
1306pub const NETLINK_FIREWALL: ::c_int = 3;
1307pub const NETLINK_SOCK_DIAG: ::c_int = 4;
1308pub const NETLINK_NFLOG: ::c_int = 5;
1309pub const NETLINK_XFRM: ::c_int = 6;
1310pub const NETLINK_SELINUX: ::c_int = 7;
1311pub const NETLINK_ISCSI: ::c_int = 8;
1312pub const NETLINK_AUDIT: ::c_int = 9;
1313pub const NETLINK_FIB_LOOKUP: ::c_int = 10;
1314pub const NETLINK_CONNECTOR: ::c_int = 11;
1315pub const NETLINK_NETFILTER: ::c_int = 12;
1316pub const NETLINK_IP6_FW: ::c_int = 13;
1317pub const NETLINK_DNRTMSG: ::c_int = 14;
1318pub const NETLINK_KOBJECT_UEVENT: ::c_int = 15;
1319pub const NETLINK_GENERIC: ::c_int = 16;
1320pub const NETLINK_SCSITRANSPORT: ::c_int = 18;
1321pub const NETLINK_ECRYPTFS: ::c_int = 19;
1322pub const NETLINK_RDMA: ::c_int = 20;
1323pub const NETLINK_CRYPTO: ::c_int = 21;
1324pub const NETLINK_INET_DIAG: ::c_int = NETLINK_SOCK_DIAG;
1325
1326pub const MAX_LINKS: ::c_int = 32;
1327
1328pub const NLM_F_REQUEST: ::c_int = 1;
1329pub const NLM_F_MULTI: ::c_int = 2;
1330pub const NLM_F_ACK: ::c_int = 4;
1331pub const NLM_F_ECHO: ::c_int = 8;
1332pub const NLM_F_DUMP_INTR: ::c_int = 16;
1333
1334pub const NLM_F_ROOT: ::c_int = 0x100;
1335pub const NLM_F_MATCH: ::c_int = 0x200;
1336pub const NLM_F_ATOMIC: ::c_int = 0x400;
1337pub const NLM_F_DUMP: ::c_int = NLM_F_ROOT | NLM_F_MATCH;
1338
1339pub const NLM_F_REPLACE: ::c_int = 0x100;
1340pub const NLM_F_EXCL: ::c_int = 0x200;
1341pub const NLM_F_CREATE: ::c_int = 0x400;
1342pub const NLM_F_APPEND: ::c_int = 0x800;
1343
1344pub const NLMSG_NOOP: ::c_int = 0x1;
1345pub const NLMSG_ERROR: ::c_int = 0x2;
1346pub const NLMSG_DONE: ::c_int = 0x3;
1347pub const NLMSG_OVERRUN: ::c_int = 0x4;
1348pub const NLMSG_MIN_TYPE: ::c_int = 0x10;
1349
dfeec247
XL
1350// linux/netfilter/nfnetlink.h
1351pub const NFNLGRP_NONE: ::c_int = 0;
1352pub const NFNLGRP_CONNTRACK_NEW: ::c_int = 1;
1353pub const NFNLGRP_CONNTRACK_UPDATE: ::c_int = 2;
1354pub const NFNLGRP_CONNTRACK_DESTROY: ::c_int = 3;
1355pub const NFNLGRP_CONNTRACK_EXP_NEW: ::c_int = 4;
1356pub const NFNLGRP_CONNTRACK_EXP_UPDATE: ::c_int = 5;
1357pub const NFNLGRP_CONNTRACK_EXP_DESTROY: ::c_int = 6;
1358pub const NFNLGRP_NFTABLES: ::c_int = 7;
1359pub const NFNLGRP_ACCT_QUOTA: ::c_int = 8;
1360
1361pub const NFNETLINK_V0: ::c_int = 0;
1362
1363pub const NFNL_SUBSYS_NONE: ::c_int = 0;
1364pub const NFNL_SUBSYS_CTNETLINK: ::c_int = 1;
1365pub const NFNL_SUBSYS_CTNETLINK_EXP: ::c_int = 2;
1366pub const NFNL_SUBSYS_QUEUE: ::c_int = 3;
1367pub const NFNL_SUBSYS_ULOG: ::c_int = 4;
1368pub const NFNL_SUBSYS_OSF: ::c_int = 5;
1369pub const NFNL_SUBSYS_IPSET: ::c_int = 6;
1370pub const NFNL_SUBSYS_ACCT: ::c_int = 7;
1371pub const NFNL_SUBSYS_CTNETLINK_TIMEOUT: ::c_int = 8;
1372pub const NFNL_SUBSYS_CTHELPER: ::c_int = 9;
1373pub const NFNL_SUBSYS_NFTABLES: ::c_int = 10;
1374pub const NFNL_SUBSYS_NFT_COMPAT: ::c_int = 11;
1375pub const NFNL_SUBSYS_COUNT: ::c_int = 12;
1376
1377pub const NFNL_MSG_BATCH_BEGIN: ::c_int = NLMSG_MIN_TYPE;
1378pub const NFNL_MSG_BATCH_END: ::c_int = NLMSG_MIN_TYPE + 1;
1379
1380// linux/netfilter/nfnetlink_log.h
1381pub const NFULNL_MSG_PACKET: ::c_int = 0;
1382pub const NFULNL_MSG_CONFIG: ::c_int = 1;
1383
1384pub const NFULA_UNSPEC: ::c_int = 0;
1385pub const NFULA_PACKET_HDR: ::c_int = 1;
1386pub const NFULA_MARK: ::c_int = 2;
1387pub const NFULA_TIMESTAMP: ::c_int = 3;
1388pub const NFULA_IFINDEX_INDEV: ::c_int = 4;
1389pub const NFULA_IFINDEX_OUTDEV: ::c_int = 5;
1390pub const NFULA_IFINDEX_PHYSINDEV: ::c_int = 6;
1391pub const NFULA_IFINDEX_PHYSOUTDEV: ::c_int = 7;
1392pub const NFULA_HWADDR: ::c_int = 8;
1393pub const NFULA_PAYLOAD: ::c_int = 9;
1394pub const NFULA_PREFIX: ::c_int = 10;
1395pub const NFULA_UID: ::c_int = 11;
1396pub const NFULA_SEQ: ::c_int = 12;
1397pub const NFULA_SEQ_GLOBAL: ::c_int = 13;
1398pub const NFULA_GID: ::c_int = 14;
1399pub const NFULA_HWTYPE: ::c_int = 15;
1400pub const NFULA_HWHEADER: ::c_int = 16;
1401pub const NFULA_HWLEN: ::c_int = 17;
1402pub const NFULA_CT: ::c_int = 18;
1403pub const NFULA_CT_INFO: ::c_int = 19;
1404
1405pub const NFULNL_CFG_CMD_NONE: ::c_int = 0;
1406pub const NFULNL_CFG_CMD_BIND: ::c_int = 1;
1407pub const NFULNL_CFG_CMD_UNBIND: ::c_int = 2;
1408pub const NFULNL_CFG_CMD_PF_BIND: ::c_int = 3;
1409pub const NFULNL_CFG_CMD_PF_UNBIND: ::c_int = 4;
1410
1411pub const NFULA_CFG_UNSPEC: ::c_int = 0;
1412pub const NFULA_CFG_CMD: ::c_int = 1;
1413pub const NFULA_CFG_MODE: ::c_int = 2;
1414pub const NFULA_CFG_NLBUFSIZ: ::c_int = 3;
1415pub const NFULA_CFG_TIMEOUT: ::c_int = 4;
1416pub const NFULA_CFG_QTHRESH: ::c_int = 5;
1417pub const NFULA_CFG_FLAGS: ::c_int = 6;
1418
1419pub const NFULNL_COPY_NONE: ::c_int = 0x00;
1420pub const NFULNL_COPY_META: ::c_int = 0x01;
1421pub const NFULNL_COPY_PACKET: ::c_int = 0x02;
1422
1423pub const NFULNL_CFG_F_SEQ: ::c_int = 0x0001;
1424pub const NFULNL_CFG_F_SEQ_GLOBAL: ::c_int = 0x0002;
1425pub const NFULNL_CFG_F_CONNTRACK: ::c_int = 0x0004;
1426
ba9703b0
XL
1427// linux/netfilter/nfnetlink_log.h
1428pub const NFQNL_MSG_PACKET: ::c_int = 0;
1429pub const NFQNL_MSG_VERDICT: ::c_int = 1;
1430pub const NFQNL_MSG_CONFIG: ::c_int = 2;
1431pub const NFQNL_MSG_VERDICT_BATCH: ::c_int = 3;
1432
1433pub const NFQA_UNSPEC: ::c_int = 0;
1434pub const NFQA_PACKET_HDR: ::c_int = 1;
1435pub const NFQA_VERDICT_HDR: ::c_int = 2;
1436pub const NFQA_MARK: ::c_int = 3;
1437pub const NFQA_TIMESTAMP: ::c_int = 4;
1438pub const NFQA_IFINDEX_INDEV: ::c_int = 5;
1439pub const NFQA_IFINDEX_OUTDEV: ::c_int = 6;
1440pub const NFQA_IFINDEX_PHYSINDEV: ::c_int = 7;
1441pub const NFQA_IFINDEX_PHYSOUTDEV: ::c_int = 8;
1442pub const NFQA_HWADDR: ::c_int = 9;
1443pub const NFQA_PAYLOAD: ::c_int = 10;
1444pub const NFQA_CT: ::c_int = 11;
1445pub const NFQA_CT_INFO: ::c_int = 12;
1446pub const NFQA_CAP_LEN: ::c_int = 13;
1447pub const NFQA_SKB_INFO: ::c_int = 14;
1448pub const NFQA_EXP: ::c_int = 15;
1449pub const NFQA_UID: ::c_int = 16;
1450pub const NFQA_GID: ::c_int = 17;
1451pub const NFQA_SECCTX: ::c_int = 18;
1452/*
1453 FIXME: These are not yet available in musl sanitized kernel headers and
1454 make the tests fail. Enable them once musl has them.
1455
1456 See https://github.com/rust-lang/libc/pull/1628 for more details.
1457pub const NFQA_VLAN: ::c_int = 19;
1458pub const NFQA_L2HDR: ::c_int = 20;
1459
1460pub const NFQA_VLAN_UNSPEC: ::c_int = 0;
1461pub const NFQA_VLAN_PROTO: ::c_int = 1;
1462pub const NFQA_VLAN_TCI: ::c_int = 2;
1463*/
1464
1465pub const NFQNL_CFG_CMD_NONE: ::c_int = 0;
1466pub const NFQNL_CFG_CMD_BIND: ::c_int = 1;
1467pub const NFQNL_CFG_CMD_UNBIND: ::c_int = 2;
1468pub const NFQNL_CFG_CMD_PF_BIND: ::c_int = 3;
1469pub const NFQNL_CFG_CMD_PF_UNBIND: ::c_int = 4;
1470
1471pub const NFQNL_COPY_NONE: ::c_int = 0;
1472pub const NFQNL_COPY_META: ::c_int = 1;
1473pub const NFQNL_COPY_PACKET: ::c_int = 2;
1474
1475pub const NFQA_CFG_UNSPEC: ::c_int = 0;
1476pub const NFQA_CFG_CMD: ::c_int = 1;
1477pub const NFQA_CFG_PARAMS: ::c_int = 2;
1478pub const NFQA_CFG_QUEUE_MAXLEN: ::c_int = 3;
1479pub const NFQA_CFG_MASK: ::c_int = 4;
1480pub const NFQA_CFG_FLAGS: ::c_int = 5;
1481
1482pub const NFQA_CFG_F_FAIL_OPEN: ::c_int = 0x0001;
1483pub const NFQA_CFG_F_CONNTRACK: ::c_int = 0x0002;
1484pub const NFQA_CFG_F_GSO: ::c_int = 0x0004;
1485pub const NFQA_CFG_F_UID_GID: ::c_int = 0x0008;
1486pub const NFQA_CFG_F_SECCTX: ::c_int = 0x0010;
1487pub const NFQA_CFG_F_MAX: ::c_int = 0x0020;
1488
1489pub const NFQA_SKB_CSUMNOTREADY: ::c_int = 0x0001;
1490pub const NFQA_SKB_GSO: ::c_int = 0x0002;
1491pub const NFQA_SKB_CSUM_NOTVERIFIED: ::c_int = 0x0004;
1492
2c00a5a8
XL
1493pub const GENL_NAMSIZ: ::c_int = 16;
1494
1495pub const GENL_MIN_ID: ::c_int = NLMSG_MIN_TYPE;
1496pub const GENL_MAX_ID: ::c_int = 1023;
1497
1498pub const GENL_ADMIN_PERM: ::c_int = 0x01;
1499pub const GENL_CMD_CAP_DO: ::c_int = 0x02;
1500pub const GENL_CMD_CAP_DUMP: ::c_int = 0x04;
1501pub const GENL_CMD_CAP_HASPOL: ::c_int = 0x08;
1502pub const GENL_UNS_ADMIN_PERM: ::c_int = 0x10;
1503
1504pub const GENL_ID_CTRL: ::c_int = NLMSG_MIN_TYPE;
1505pub const GENL_ID_VFS_DQUOT: ::c_int = NLMSG_MIN_TYPE + 1;
1506pub const GENL_ID_PMCRAID: ::c_int = NLMSG_MIN_TYPE + 2;
1507
1508pub const CTRL_CMD_UNSPEC: ::c_int = 0;
1509pub const CTRL_CMD_NEWFAMILY: ::c_int = 1;
1510pub const CTRL_CMD_DELFAMILY: ::c_int = 2;
1511pub const CTRL_CMD_GETFAMILY: ::c_int = 3;
1512pub const CTRL_CMD_NEWOPS: ::c_int = 4;
1513pub const CTRL_CMD_DELOPS: ::c_int = 5;
1514pub const CTRL_CMD_GETOPS: ::c_int = 6;
1515pub const CTRL_CMD_NEWMCAST_GRP: ::c_int = 7;
1516pub const CTRL_CMD_DELMCAST_GRP: ::c_int = 8;
1517pub const CTRL_CMD_GETMCAST_GRP: ::c_int = 9;
1518
1519pub const CTRL_ATTR_UNSPEC: ::c_int = 0;
1520pub const CTRL_ATTR_FAMILY_ID: ::c_int = 1;
1521pub const CTRL_ATTR_FAMILY_NAME: ::c_int = 2;
1522pub const CTRL_ATTR_VERSION: ::c_int = 3;
1523pub const CTRL_ATTR_HDRSIZE: ::c_int = 4;
1524pub const CTRL_ATTR_MAXATTR: ::c_int = 5;
1525pub const CTRL_ATTR_OPS: ::c_int = 6;
1526pub const CTRL_ATTR_MCAST_GROUPS: ::c_int = 7;
1527
1528pub const CTRL_ATTR_OP_UNSPEC: ::c_int = 0;
1529pub const CTRL_ATTR_OP_ID: ::c_int = 1;
1530pub const CTRL_ATTR_OP_FLAGS: ::c_int = 2;
1531
1532pub const CTRL_ATTR_MCAST_GRP_UNSPEC: ::c_int = 0;
1533pub const CTRL_ATTR_MCAST_GRP_NAME: ::c_int = 1;
1534pub const CTRL_ATTR_MCAST_GRP_ID: ::c_int = 2;
1535
476ff2be
SL
1536pub const NETLINK_ADD_MEMBERSHIP: ::c_int = 1;
1537pub const NETLINK_DROP_MEMBERSHIP: ::c_int = 2;
1538pub const NETLINK_PKTINFO: ::c_int = 3;
1539pub const NETLINK_BROADCAST_ERROR: ::c_int = 4;
1540pub const NETLINK_NO_ENOBUFS: ::c_int = 5;
1541pub const NETLINK_RX_RING: ::c_int = 6;
1542pub const NETLINK_TX_RING: ::c_int = 7;
1543
ff7c6d11
XL
1544pub const GRND_NONBLOCK: ::c_uint = 0x0001;
1545pub const GRND_RANDOM: ::c_uint = 0x0002;
1546
2c00a5a8
XL
1547pub const SECCOMP_MODE_DISABLED: ::c_uint = 0;
1548pub const SECCOMP_MODE_STRICT: ::c_uint = 1;
1549pub const SECCOMP_MODE_FILTER: ::c_uint = 2;
1550
476ff2be
SL
1551pub const NLA_F_NESTED: ::c_int = 1 << 15;
1552pub const NLA_F_NET_BYTEORDER: ::c_int = 1 << 14;
1553pub const NLA_TYPE_MASK: ::c_int = !(NLA_F_NESTED | NLA_F_NET_BYTEORDER);
1554
2c00a5a8
XL
1555pub const NLA_ALIGNTO: ::c_int = 4;
1556
8bb4bdeb 1557pub const SIGEV_THREAD_ID: ::c_int = 4;
476ff2be 1558
041b39d2
XL
1559pub const CIBAUD: ::tcflag_t = 0o02003600000;
1560pub const CBAUDEX: ::tcflag_t = 0o010000;
1561
1562pub const TIOCM_LE: ::c_int = 0x001;
1563pub const TIOCM_DTR: ::c_int = 0x002;
1564pub const TIOCM_RTS: ::c_int = 0x004;
1565pub const TIOCM_ST: ::c_int = 0x008;
1566pub const TIOCM_SR: ::c_int = 0x010;
1567pub const TIOCM_CTS: ::c_int = 0x020;
1568pub const TIOCM_CAR: ::c_int = 0x040;
1569pub const TIOCM_RNG: ::c_int = 0x080;
1570pub const TIOCM_DSR: ::c_int = 0x100;
1571pub const TIOCM_CD: ::c_int = TIOCM_CAR;
1572pub const TIOCM_RI: ::c_int = TIOCM_RNG;
1573
3b2f2976
XL
1574pub const POLLWRNORM: ::c_short = 0x100;
1575pub const POLLWRBAND: ::c_short = 0x200;
1576
1577pub const SFD_CLOEXEC: ::c_int = O_CLOEXEC;
1578pub const SFD_NONBLOCK: ::c_int = O_NONBLOCK;
1579
ea8adc8c
XL
1580pub const SOCK_NONBLOCK: ::c_int = O_NONBLOCK;
1581
1582pub const SO_ORIGINAL_DST: ::c_int = 80;
e74abb32
XL
1583pub const IP_ORIGDSTADDR: ::c_int = 20;
1584pub const IP_RECVORIGDSTADDR: ::c_int = IP_ORIGDSTADDR;
ba9703b0 1585pub const IPV6_FLOWINFO: ::c_int = 11;
e74abb32
XL
1586pub const IPV6_ORIGDSTADDR: ::c_int = 74;
1587pub const IPV6_RECVORIGDSTADDR: ::c_int = IPV6_ORIGDSTADDR;
532ac7d7
XL
1588pub const IPV6_FLOWLABEL_MGR: ::c_int = 32;
1589pub const IPV6_FLOWINFO_SEND: ::c_int = 33;
1590pub const IPV6_FLOWINFO_FLOWLABEL: ::c_int = 0x000fffff;
1591pub const IPV6_FLOWINFO_PRIORITY: ::c_int = 0x0ff00000;
dfeec247 1592
ea8adc8c
XL
1593pub const IUTF8: ::tcflag_t = 0x00004000;
1594pub const CMSPAR: ::tcflag_t = 0o10000000000;
1595pub const O_TMPFILE: ::c_int = 0o20000000 | O_DIRECTORY;
1596
ff7c6d11
XL
1597pub const MFD_CLOEXEC: ::c_uint = 0x0001;
1598pub const MFD_ALLOW_SEALING: ::c_uint = 0x0002;
0731742a 1599pub const MFD_HUGETLB: ::c_uint = 0x0004;
ff7c6d11 1600
2c00a5a8
XL
1601// linux/netfilter.h
1602pub const NF_DROP: ::c_int = 0;
e74abb32
XL
1603pub const NF_ACCEPT: ::c_int = 1;
1604pub const NF_STOLEN: ::c_int = 2;
1605pub const NF_QUEUE: ::c_int = 3;
1606pub const NF_REPEAT: ::c_int = 4;
1607pub const NF_STOP: ::c_int = 5;
2c00a5a8
XL
1608pub const NF_MAX_VERDICT: ::c_int = NF_STOP;
1609
1610pub const NF_VERDICT_MASK: ::c_int = 0x000000ff;
1611pub const NF_VERDICT_FLAG_QUEUE_BYPASS: ::c_int = 0x00008000;
1612
1613pub const NF_VERDICT_QMASK: ::c_int = 0xffff0000;
1614pub const NF_VERDICT_QBITS: ::c_int = 16;
1615
1616pub const NF_VERDICT_BITS: ::c_int = 16;
1617
1618pub const NF_INET_PRE_ROUTING: ::c_int = 0;
1619pub const NF_INET_LOCAL_IN: ::c_int = 1;
1620pub const NF_INET_FORWARD: ::c_int = 2;
1621pub const NF_INET_LOCAL_OUT: ::c_int = 3;
1622pub const NF_INET_POST_ROUTING: ::c_int = 4;
1623pub const NF_INET_NUMHOOKS: ::c_int = 5;
1624
1625pub const NF_NETDEV_INGRESS: ::c_int = 0;
1626pub const NF_NETDEV_NUMHOOKS: ::c_int = 1;
1627
1628pub const NFPROTO_UNSPEC: ::c_int = 0;
1629pub const NFPROTO_INET: ::c_int = 1;
1630pub const NFPROTO_IPV4: ::c_int = 2;
1631pub const NFPROTO_ARP: ::c_int = 3;
1632pub const NFPROTO_NETDEV: ::c_int = 5;
1633pub const NFPROTO_BRIDGE: ::c_int = 7;
1634pub const NFPROTO_IPV6: ::c_int = 10;
1635pub const NFPROTO_DECNET: ::c_int = 12;
1636pub const NFPROTO_NUMPROTO: ::c_int = 13;
1637
1638// linux/netfilter_ipv4.h
1639pub const NF_IP_PRE_ROUTING: ::c_int = 0;
1640pub const NF_IP_LOCAL_IN: ::c_int = 1;
1641pub const NF_IP_FORWARD: ::c_int = 2;
1642pub const NF_IP_LOCAL_OUT: ::c_int = 3;
1643pub const NF_IP_POST_ROUTING: ::c_int = 4;
1644pub const NF_IP_NUMHOOKS: ::c_int = 5;
1645
1646pub const NF_IP_PRI_FIRST: ::c_int = ::INT_MIN;
1647pub const NF_IP_PRI_CONNTRACK_DEFRAG: ::c_int = -400;
1648pub const NF_IP_PRI_RAW: ::c_int = -300;
1649pub const NF_IP_PRI_SELINUX_FIRST: ::c_int = -225;
1650pub const NF_IP_PRI_CONNTRACK: ::c_int = -200;
1651pub const NF_IP_PRI_MANGLE: ::c_int = -150;
1652pub const NF_IP_PRI_NAT_DST: ::c_int = -100;
1653pub const NF_IP_PRI_FILTER: ::c_int = 0;
1654pub const NF_IP_PRI_SECURITY: ::c_int = 50;
1655pub const NF_IP_PRI_NAT_SRC: ::c_int = 100;
1656pub const NF_IP_PRI_SELINUX_LAST: ::c_int = 225;
1657pub const NF_IP_PRI_CONNTRACK_HELPER: ::c_int = 300;
1658pub const NF_IP_PRI_CONNTRACK_CONFIRM: ::c_int = ::INT_MAX;
1659pub const NF_IP_PRI_LAST: ::c_int = ::INT_MAX;
1660
1661// linux/netfilter_ipv6.h
1662pub const NF_IP6_PRE_ROUTING: ::c_int = 0;
1663pub const NF_IP6_LOCAL_IN: ::c_int = 1;
1664pub const NF_IP6_FORWARD: ::c_int = 2;
1665pub const NF_IP6_LOCAL_OUT: ::c_int = 3;
1666pub const NF_IP6_POST_ROUTING: ::c_int = 4;
1667pub const NF_IP6_NUMHOOKS: ::c_int = 5;
1668
1669pub const NF_IP6_PRI_FIRST: ::c_int = ::INT_MIN;
1670pub const NF_IP6_PRI_CONNTRACK_DEFRAG: ::c_int = -400;
1671pub const NF_IP6_PRI_RAW: ::c_int = -300;
1672pub const NF_IP6_PRI_SELINUX_FIRST: ::c_int = -225;
1673pub const NF_IP6_PRI_CONNTRACK: ::c_int = -200;
1674pub const NF_IP6_PRI_MANGLE: ::c_int = -150;
1675pub const NF_IP6_PRI_NAT_DST: ::c_int = -100;
1676pub const NF_IP6_PRI_FILTER: ::c_int = 0;
1677pub const NF_IP6_PRI_SECURITY: ::c_int = 50;
1678pub const NF_IP6_PRI_NAT_SRC: ::c_int = 100;
1679pub const NF_IP6_PRI_SELINUX_LAST: ::c_int = 225;
1680pub const NF_IP6_PRI_CONNTRACK_HELPER: ::c_int = 300;
1681pub const NF_IP6_PRI_LAST: ::c_int = ::INT_MAX;
1682
ba9703b0
XL
1683// linux/netfilter_ipv6/ip6_tables.h
1684pub const IP6T_SO_ORIGINAL_DST: ::c_int = 80;
1685
2c00a5a8 1686// linux/netfilter/nf_tables.h
416331ca
XL
1687pub const NFT_TABLE_MAXNAMELEN: ::c_int = 256;
1688pub const NFT_CHAIN_MAXNAMELEN: ::c_int = 256;
1689pub const NFT_SET_MAXNAMELEN: ::c_int = 256;
1690pub const NFT_OBJ_MAXNAMELEN: ::c_int = 256;
2c00a5a8
XL
1691pub const NFT_USERDATA_MAXLEN: ::c_int = 256;
1692
1693pub const NFT_REG_VERDICT: ::c_int = 0;
1694pub const NFT_REG_1: ::c_int = 1;
1695pub const NFT_REG_2: ::c_int = 2;
1696pub const NFT_REG_3: ::c_int = 3;
1697pub const NFT_REG_4: ::c_int = 4;
1698pub const __NFT_REG_MAX: ::c_int = 5;
1699pub const NFT_REG32_00: ::c_int = 8;
1700pub const NFT_REG32_01: ::c_int = 9;
1701pub const NFT_REG32_02: ::c_int = 10;
1702pub const NFT_REG32_03: ::c_int = 11;
1703pub const NFT_REG32_04: ::c_int = 12;
1704pub const NFT_REG32_05: ::c_int = 13;
1705pub const NFT_REG32_06: ::c_int = 14;
1706pub const NFT_REG32_07: ::c_int = 15;
1707pub const NFT_REG32_08: ::c_int = 16;
1708pub const NFT_REG32_09: ::c_int = 17;
1709pub const NFT_REG32_10: ::c_int = 18;
1710pub const NFT_REG32_11: ::c_int = 19;
1711pub const NFT_REG32_12: ::c_int = 20;
1712pub const NFT_REG32_13: ::c_int = 21;
1713pub const NFT_REG32_14: ::c_int = 22;
1714pub const NFT_REG32_15: ::c_int = 23;
1715
1716pub const NFT_REG_SIZE: ::c_int = 16;
1717pub const NFT_REG32_SIZE: ::c_int = 4;
1718
1719pub const NFT_CONTINUE: ::c_int = -1;
1720pub const NFT_BREAK: ::c_int = -2;
1721pub const NFT_JUMP: ::c_int = -3;
1722pub const NFT_GOTO: ::c_int = -4;
1723pub const NFT_RETURN: ::c_int = -5;
1724
1725pub const NFT_MSG_NEWTABLE: ::c_int = 0;
1726pub const NFT_MSG_GETTABLE: ::c_int = 1;
1727pub const NFT_MSG_DELTABLE: ::c_int = 2;
1728pub const NFT_MSG_NEWCHAIN: ::c_int = 3;
1729pub const NFT_MSG_GETCHAIN: ::c_int = 4;
1730pub const NFT_MSG_DELCHAIN: ::c_int = 5;
1731pub const NFT_MSG_NEWRULE: ::c_int = 6;
1732pub const NFT_MSG_GETRULE: ::c_int = 7;
1733pub const NFT_MSG_DELRULE: ::c_int = 8;
1734pub const NFT_MSG_NEWSET: ::c_int = 9;
1735pub const NFT_MSG_GETSET: ::c_int = 10;
1736pub const NFT_MSG_DELSET: ::c_int = 11;
1737pub const NFT_MSG_NEWSETELEM: ::c_int = 12;
1738pub const NFT_MSG_GETSETELEM: ::c_int = 13;
1739pub const NFT_MSG_DELSETELEM: ::c_int = 14;
1740pub const NFT_MSG_NEWGEN: ::c_int = 15;
1741pub const NFT_MSG_GETGEN: ::c_int = 16;
1742pub const NFT_MSG_TRACE: ::c_int = 17;
1743pub const NFT_MSG_NEWOBJ: ::c_int = 18;
1744pub const NFT_MSG_GETOBJ: ::c_int = 19;
1745pub const NFT_MSG_DELOBJ: ::c_int = 20;
1746pub const NFT_MSG_GETOBJ_RESET: ::c_int = 21;
416331ca 1747pub const NFT_MSG_MAX: ::c_int = 25;
2c00a5a8
XL
1748
1749pub const NFT_SET_ANONYMOUS: ::c_int = 0x1;
1750pub const NFT_SET_CONSTANT: ::c_int = 0x2;
1751pub const NFT_SET_INTERVAL: ::c_int = 0x4;
1752pub const NFT_SET_MAP: ::c_int = 0x8;
1753pub const NFT_SET_TIMEOUT: ::c_int = 0x10;
1754pub const NFT_SET_EVAL: ::c_int = 0x20;
1755
1756pub const NFT_SET_POL_PERFORMANCE: ::c_int = 0;
1757pub const NFT_SET_POL_MEMORY: ::c_int = 1;
1758
1759pub const NFT_SET_ELEM_INTERVAL_END: ::c_int = 0x1;
1760
1761pub const NFT_DATA_VALUE: ::c_uint = 0;
1762pub const NFT_DATA_VERDICT: ::c_uint = 0xffffff00;
1763
1764pub const NFT_DATA_RESERVED_MASK: ::c_uint = 0xffffff00;
1765
1766pub const NFT_DATA_VALUE_MAXLEN: ::c_int = 64;
1767
1768pub const NFT_BYTEORDER_NTOH: ::c_int = 0;
1769pub const NFT_BYTEORDER_HTON: ::c_int = 1;
1770
1771pub const NFT_CMP_EQ: ::c_int = 0;
1772pub const NFT_CMP_NEQ: ::c_int = 1;
1773pub const NFT_CMP_LT: ::c_int = 2;
1774pub const NFT_CMP_LTE: ::c_int = 3;
1775pub const NFT_CMP_GT: ::c_int = 4;
1776pub const NFT_CMP_GTE: ::c_int = 5;
1777
1778pub const NFT_RANGE_EQ: ::c_int = 0;
1779pub const NFT_RANGE_NEQ: ::c_int = 1;
1780
ba9703b0 1781pub const NFT_LOOKUP_F_INV: ::c_int = 1 << 0;
2c00a5a8
XL
1782
1783pub const NFT_DYNSET_OP_ADD: ::c_int = 0;
1784pub const NFT_DYNSET_OP_UPDATE: ::c_int = 1;
1785
ba9703b0 1786pub const NFT_DYNSET_F_INV: ::c_int = 1 << 0;
2c00a5a8
XL
1787
1788pub const NFT_PAYLOAD_LL_HEADER: ::c_int = 0;
1789pub const NFT_PAYLOAD_NETWORK_HEADER: ::c_int = 1;
1790pub const NFT_PAYLOAD_TRANSPORT_HEADER: ::c_int = 2;
1791
1792pub const NFT_PAYLOAD_CSUM_NONE: ::c_int = 0;
1793pub const NFT_PAYLOAD_CSUM_INET: ::c_int = 1;
1794
1795pub const NFT_META_LEN: ::c_int = 0;
1796pub const NFT_META_PROTOCOL: ::c_int = 1;
1797pub const NFT_META_PRIORITY: ::c_int = 2;
1798pub const NFT_META_MARK: ::c_int = 3;
1799pub const NFT_META_IIF: ::c_int = 4;
1800pub const NFT_META_OIF: ::c_int = 5;
1801pub const NFT_META_IIFNAME: ::c_int = 6;
1802pub const NFT_META_OIFNAME: ::c_int = 7;
1803pub const NFT_META_IIFTYPE: ::c_int = 8;
1804pub const NFT_META_OIFTYPE: ::c_int = 9;
1805pub const NFT_META_SKUID: ::c_int = 10;
1806pub const NFT_META_SKGID: ::c_int = 11;
1807pub const NFT_META_NFTRACE: ::c_int = 12;
1808pub const NFT_META_RTCLASSID: ::c_int = 13;
1809pub const NFT_META_SECMARK: ::c_int = 14;
1810pub const NFT_META_NFPROTO: ::c_int = 15;
1811pub const NFT_META_L4PROTO: ::c_int = 16;
1812pub const NFT_META_BRI_IIFNAME: ::c_int = 17;
1813pub const NFT_META_BRI_OIFNAME: ::c_int = 18;
1814pub const NFT_META_PKTTYPE: ::c_int = 19;
1815pub const NFT_META_CPU: ::c_int = 20;
1816pub const NFT_META_IIFGROUP: ::c_int = 21;
1817pub const NFT_META_OIFGROUP: ::c_int = 22;
1818pub const NFT_META_CGROUP: ::c_int = 23;
1819pub const NFT_META_PRANDOM: ::c_int = 24;
1820
1821pub const NFT_CT_STATE: ::c_int = 0;
1822pub const NFT_CT_DIRECTION: ::c_int = 1;
1823pub const NFT_CT_STATUS: ::c_int = 2;
1824pub const NFT_CT_MARK: ::c_int = 3;
1825pub const NFT_CT_SECMARK: ::c_int = 4;
1826pub const NFT_CT_EXPIRATION: ::c_int = 5;
1827pub const NFT_CT_HELPER: ::c_int = 6;
1828pub const NFT_CT_L3PROTOCOL: ::c_int = 7;
1829pub const NFT_CT_SRC: ::c_int = 8;
1830pub const NFT_CT_DST: ::c_int = 9;
1831pub const NFT_CT_PROTOCOL: ::c_int = 10;
1832pub const NFT_CT_PROTO_SRC: ::c_int = 11;
1833pub const NFT_CT_PROTO_DST: ::c_int = 12;
1834pub const NFT_CT_LABELS: ::c_int = 13;
1835pub const NFT_CT_PKTS: ::c_int = 14;
1836pub const NFT_CT_BYTES: ::c_int = 15;
1837
1838pub const NFT_LIMIT_PKTS: ::c_int = 0;
1839pub const NFT_LIMIT_PKT_BYTES: ::c_int = 1;
1840
ba9703b0 1841pub const NFT_LIMIT_F_INV: ::c_int = 1 << 0;
2c00a5a8
XL
1842
1843pub const NFT_QUEUE_FLAG_BYPASS: ::c_int = 0x01;
1844pub const NFT_QUEUE_FLAG_CPU_FANOUT: ::c_int = 0x02;
1845pub const NFT_QUEUE_FLAG_MASK: ::c_int = 0x03;
1846
ba9703b0 1847pub const NFT_QUOTA_F_INV: ::c_int = 1 << 0;
2c00a5a8
XL
1848
1849pub const NFT_REJECT_ICMP_UNREACH: ::c_int = 0;
1850pub const NFT_REJECT_TCP_RST: ::c_int = 1;
1851pub const NFT_REJECT_ICMPX_UNREACH: ::c_int = 2;
1852
1853pub const NFT_REJECT_ICMPX_NO_ROUTE: ::c_int = 0;
1854pub const NFT_REJECT_ICMPX_PORT_UNREACH: ::c_int = 1;
1855pub const NFT_REJECT_ICMPX_HOST_UNREACH: ::c_int = 2;
1856pub const NFT_REJECT_ICMPX_ADMIN_PROHIBITED: ::c_int = 3;
1857
1858pub const NFT_NAT_SNAT: ::c_int = 0;
1859pub const NFT_NAT_DNAT: ::c_int = 1;
1860
1861pub const NFT_TRACETYPE_UNSPEC: ::c_int = 0;
1862pub const NFT_TRACETYPE_POLICY: ::c_int = 1;
1863pub const NFT_TRACETYPE_RETURN: ::c_int = 2;
1864pub const NFT_TRACETYPE_RULE: ::c_int = 3;
1865
1866pub const NFT_NG_INCREMENTAL: ::c_int = 0;
1867pub const NFT_NG_RANDOM: ::c_int = 1;
1868
1869pub const IFF_TUN: ::c_int = 0x0001;
1870pub const IFF_TAP: ::c_int = 0x0002;
1871pub const IFF_NO_PI: ::c_int = 0x1000;
1872
1873// start android/platform/bionic/libc/kernel/uapi/linux/if_ether.h
1874// from https://android.googlesource.com/
1875// platform/bionic/+/master/libc/kernel/uapi/linux/if_ether.h
1876pub const ETH_ALEN: ::c_int = 6;
1877pub const ETH_HLEN: ::c_int = 14;
1878pub const ETH_ZLEN: ::c_int = 60;
1879pub const ETH_DATA_LEN: ::c_int = 1500;
1880pub const ETH_FRAME_LEN: ::c_int = 1514;
1881pub const ETH_FCS_LEN: ::c_int = 4;
1882pub const ETH_MIN_MTU: ::c_int = 68;
1883pub const ETH_MAX_MTU: ::c_int = 0xFFFF;
1884pub const ETH_P_LOOP: ::c_int = 0x0060;
1885pub const ETH_P_PUP: ::c_int = 0x0200;
1886pub const ETH_P_PUPAT: ::c_int = 0x0201;
1887pub const ETH_P_TSN: ::c_int = 0x22F0;
1888pub const ETH_P_IP: ::c_int = 0x0800;
1889pub const ETH_P_X25: ::c_int = 0x0805;
1890pub const ETH_P_ARP: ::c_int = 0x0806;
1891pub const ETH_P_BPQ: ::c_int = 0x08FF;
1892pub const ETH_P_IEEEPUP: ::c_int = 0x0a00;
1893pub const ETH_P_IEEEPUPAT: ::c_int = 0x0a01;
1894pub const ETH_P_BATMAN: ::c_int = 0x4305;
1895pub const ETH_P_DEC: ::c_int = 0x6000;
1896pub const ETH_P_DNA_DL: ::c_int = 0x6001;
1897pub const ETH_P_DNA_RC: ::c_int = 0x6002;
1898pub const ETH_P_DNA_RT: ::c_int = 0x6003;
1899pub const ETH_P_LAT: ::c_int = 0x6004;
1900pub const ETH_P_DIAG: ::c_int = 0x6005;
1901pub const ETH_P_CUST: ::c_int = 0x6006;
1902pub const ETH_P_SCA: ::c_int = 0x6007;
1903pub const ETH_P_TEB: ::c_int = 0x6558;
1904pub const ETH_P_RARP: ::c_int = 0x8035;
1905pub const ETH_P_ATALK: ::c_int = 0x809B;
1906pub const ETH_P_AARP: ::c_int = 0x80F3;
1907pub const ETH_P_8021Q: ::c_int = 0x8100;
1908/* see rust-lang/libc#924 pub const ETH_P_ERSPAN: ::c_int = 0x88BE;*/
1909pub const ETH_P_IPX: ::c_int = 0x8137;
1910pub const ETH_P_IPV6: ::c_int = 0x86DD;
1911pub const ETH_P_PAUSE: ::c_int = 0x8808;
1912pub const ETH_P_SLOW: ::c_int = 0x8809;
1913pub const ETH_P_WCCP: ::c_int = 0x883E;
1914pub const ETH_P_MPLS_UC: ::c_int = 0x8847;
1915pub const ETH_P_MPLS_MC: ::c_int = 0x8848;
1916pub const ETH_P_ATMMPOA: ::c_int = 0x884c;
1917pub const ETH_P_PPP_DISC: ::c_int = 0x8863;
1918pub const ETH_P_PPP_SES: ::c_int = 0x8864;
1919pub const ETH_P_LINK_CTL: ::c_int = 0x886c;
1920pub const ETH_P_ATMFATE: ::c_int = 0x8884;
1921pub const ETH_P_PAE: ::c_int = 0x888E;
1922pub const ETH_P_AOE: ::c_int = 0x88A2;
1923pub const ETH_P_8021AD: ::c_int = 0x88A8;
1924pub const ETH_P_802_EX1: ::c_int = 0x88B5;
1925pub const ETH_P_TIPC: ::c_int = 0x88CA;
1926pub const ETH_P_MACSEC: ::c_int = 0x88E5;
1927pub const ETH_P_8021AH: ::c_int = 0x88E7;
1928pub const ETH_P_MVRP: ::c_int = 0x88F5;
1929pub const ETH_P_1588: ::c_int = 0x88F7;
1930pub const ETH_P_NCSI: ::c_int = 0x88F8;
1931pub const ETH_P_PRP: ::c_int = 0x88FB;
1932pub const ETH_P_FCOE: ::c_int = 0x8906;
1933/* see rust-lang/libc#924 pub const ETH_P_IBOE: ::c_int = 0x8915;*/
1934pub const ETH_P_TDLS: ::c_int = 0x890D;
1935pub const ETH_P_FIP: ::c_int = 0x8914;
1936pub const ETH_P_80221: ::c_int = 0x8917;
1937pub const ETH_P_HSR: ::c_int = 0x892F;
1938/* see rust-lang/libc#924 pub const ETH_P_NSH: ::c_int = 0x894F;*/
1939pub const ETH_P_LOOPBACK: ::c_int = 0x9000;
1940pub const ETH_P_QINQ1: ::c_int = 0x9100;
1941pub const ETH_P_QINQ2: ::c_int = 0x9200;
1942pub const ETH_P_QINQ3: ::c_int = 0x9300;
1943pub const ETH_P_EDSA: ::c_int = 0xDADA;
1944/* see rust-lang/libc#924 pub const ETH_P_IFE: ::c_int = 0xED3E;*/
1945pub const ETH_P_AF_IUCV: ::c_int = 0xFBFB;
1946pub const ETH_P_802_3_MIN: ::c_int = 0x0600;
1947pub const ETH_P_802_3: ::c_int = 0x0001;
1948pub const ETH_P_AX25: ::c_int = 0x0002;
1949pub const ETH_P_ALL: ::c_int = 0x0003;
1950pub const ETH_P_802_2: ::c_int = 0x0004;
1951pub const ETH_P_SNAP: ::c_int = 0x0005;
1952pub const ETH_P_DDCMP: ::c_int = 0x0006;
1953pub const ETH_P_WAN_PPP: ::c_int = 0x0007;
1954pub const ETH_P_PPP_MP: ::c_int = 0x0008;
1955pub const ETH_P_LOCALTALK: ::c_int = 0x0009;
1956pub const ETH_P_CAN: ::c_int = 0x000C;
1957pub const ETH_P_CANFD: ::c_int = 0x000D;
1958pub const ETH_P_PPPTALK: ::c_int = 0x0010;
1959pub const ETH_P_TR_802_2: ::c_int = 0x0011;
1960pub const ETH_P_MOBITEX: ::c_int = 0x0015;
1961pub const ETH_P_CONTROL: ::c_int = 0x0016;
1962pub const ETH_P_IRDA: ::c_int = 0x0017;
1963pub const ETH_P_ECONET: ::c_int = 0x0018;
1964pub const ETH_P_HDLC: ::c_int = 0x0019;
1965pub const ETH_P_ARCNET: ::c_int = 0x001A;
1966pub const ETH_P_DSA: ::c_int = 0x001B;
1967pub const ETH_P_TRAILER: ::c_int = 0x001C;
1968pub const ETH_P_PHONET: ::c_int = 0x00F5;
1969pub const ETH_P_IEEE802154: ::c_int = 0x00F6;
1970pub const ETH_P_CAIF: ::c_int = 0x00F7;
1971pub const ETH_P_XDSA: ::c_int = 0x00F8;
1972/* see rust-lang/libc#924 pub const ETH_P_MAP: ::c_int = 0x00F9;*/
1973// end android/platform/bionic/libc/kernel/uapi/linux/if_ether.h
1974
8faf50e0
XL
1975pub const SIOCADDRT: ::c_ulong = 0x0000890B;
1976pub const SIOCDELRT: ::c_ulong = 0x0000890C;
1977pub const SIOCGIFNAME: ::c_ulong = 0x00008910;
1978pub const SIOCSIFLINK: ::c_ulong = 0x00008911;
1979pub const SIOCGIFCONF: ::c_ulong = 0x00008912;
1980pub const SIOCGIFFLAGS: ::c_ulong = 0x00008913;
1981pub const SIOCSIFFLAGS: ::c_ulong = 0x00008914;
1982pub const SIOCGIFADDR: ::c_ulong = 0x00008915;
1983pub const SIOCSIFADDR: ::c_ulong = 0x00008916;
1984pub const SIOCGIFDSTADDR: ::c_ulong = 0x00008917;
1985pub const SIOCSIFDSTADDR: ::c_ulong = 0x00008918;
1986pub const SIOCGIFBRDADDR: ::c_ulong = 0x00008919;
1987pub const SIOCSIFBRDADDR: ::c_ulong = 0x0000891A;
1988pub const SIOCGIFNETMASK: ::c_ulong = 0x0000891B;
1989pub const SIOCSIFNETMASK: ::c_ulong = 0x0000891C;
1990pub const SIOCGIFMETRIC: ::c_ulong = 0x0000891D;
1991pub const SIOCSIFMETRIC: ::c_ulong = 0x0000891E;
1992pub const SIOCGIFMEM: ::c_ulong = 0x0000891F;
1993pub const SIOCSIFMEM: ::c_ulong = 0x00008920;
1994pub const SIOCGIFMTU: ::c_ulong = 0x00008921;
1995pub const SIOCSIFMTU: ::c_ulong = 0x00008922;
1996pub const SIOCSIFHWADDR: ::c_ulong = 0x00008924;
1997pub const SIOCGIFENCAP: ::c_ulong = 0x00008925;
1998pub const SIOCSIFENCAP: ::c_ulong = 0x00008926;
1999pub const SIOCGIFHWADDR: ::c_ulong = 0x00008927;
2000pub const SIOCGIFSLAVE: ::c_ulong = 0x00008929;
2001pub const SIOCSIFSLAVE: ::c_ulong = 0x00008930;
2002pub const SIOCADDMULTI: ::c_ulong = 0x00008931;
2003pub const SIOCDELMULTI: ::c_ulong = 0x00008932;
2004pub const SIOCDARP: ::c_ulong = 0x00008953;
2005pub const SIOCGARP: ::c_ulong = 0x00008954;
2006pub const SIOCSARP: ::c_ulong = 0x00008955;
2007pub const SIOCDRARP: ::c_ulong = 0x00008960;
2008pub const SIOCGRARP: ::c_ulong = 0x00008961;
2009pub const SIOCSRARP: ::c_ulong = 0x00008962;
2010pub const SIOCGIFMAP: ::c_ulong = 0x00008970;
2011pub const SIOCSIFMAP: ::c_ulong = 0x00008971;
2012
b7449926
XL
2013// linux/module.h
2014pub const MODULE_INIT_IGNORE_MODVERSIONS: ::c_uint = 0x0001;
2015pub const MODULE_INIT_IGNORE_VERMAGIC: ::c_uint = 0x0002;
2016
416331ca
XL
2017#[deprecated(
2018 since = "0.2.55",
2019 note = "ENOATTR is not available on Android; use ENODATA instead"
2020)]
b7449926
XL
2021pub const ENOATTR: ::c_int = ::ENODATA;
2022
532ac7d7
XL
2023// linux/if_alg.h
2024pub const ALG_SET_KEY: ::c_int = 1;
2025pub const ALG_SET_IV: ::c_int = 2;
2026pub const ALG_SET_OP: ::c_int = 3;
2027pub const ALG_SET_AEAD_ASSOCLEN: ::c_int = 4;
2028pub const ALG_SET_AEAD_AUTHSIZE: ::c_int = 5;
2029
2030pub const ALG_OP_DECRYPT: ::c_int = 0;
2031pub const ALG_OP_ENCRYPT: ::c_int = 1;
2032
2033// uapi/linux/inotify.h
e74abb32
XL
2034pub const IN_ACCESS: u32 = 0x0000_0001;
2035pub const IN_MODIFY: u32 = 0x0000_0002;
2036pub const IN_ATTRIB: u32 = 0x0000_0004;
2037pub const IN_CLOSE_WRITE: u32 = 0x0000_0008;
416331ca 2038pub const IN_CLOSE_NOWRITE: u32 = 0x0000_0010;
ba9703b0 2039pub const IN_CLOSE: u32 = IN_CLOSE_WRITE | IN_CLOSE_NOWRITE;
e74abb32
XL
2040pub const IN_OPEN: u32 = 0x0000_0020;
2041pub const IN_MOVED_FROM: u32 = 0x0000_0040;
2042pub const IN_MOVED_TO: u32 = 0x0000_0080;
ba9703b0 2043pub const IN_MOVE: u32 = IN_MOVED_FROM | IN_MOVED_TO;
e74abb32
XL
2044pub const IN_CREATE: u32 = 0x0000_0100;
2045pub const IN_DELETE: u32 = 0x0000_0200;
2046pub const IN_DELETE_SELF: u32 = 0x0000_0400;
2047pub const IN_MOVE_SELF: u32 = 0x0000_0800;
2048pub const IN_UNMOUNT: u32 = 0x0000_2000;
2049pub const IN_Q_OVERFLOW: u32 = 0x0000_4000;
2050pub const IN_IGNORED: u32 = 0x0000_8000;
2051pub const IN_ONLYDIR: u32 = 0x0100_0000;
2052pub const IN_DONT_FOLLOW: u32 = 0x0200_0000;
416331ca
XL
2053// pub const IN_EXCL_UNLINK: u32 = 0x0400_0000;
2054
2055// pub const IN_MASK_CREATE: u32 = 0x1000_0000;
2056// pub const IN_MASK_ADD: u32 = 0x2000_0000;
e74abb32
XL
2057pub const IN_ISDIR: u32 = 0x4000_0000;
2058pub const IN_ONESHOT: u32 = 0x8000_0000;
2059
ba9703b0 2060pub const IN_ALL_EVENTS: u32 = IN_ACCESS
e74abb32
XL
2061 | IN_MODIFY
2062 | IN_ATTRIB
2063 | IN_CLOSE_WRITE
2064 | IN_CLOSE_NOWRITE
2065 | IN_OPEN
2066 | IN_MOVED_FROM
2067 | IN_MOVED_TO
2068 | IN_DELETE
2069 | IN_CREATE
2070 | IN_DELETE_SELF
ba9703b0 2071 | IN_MOVE_SELF;
532ac7d7
XL
2072
2073pub const IN_CLOEXEC: ::c_int = O_CLOEXEC;
2074pub const IN_NONBLOCK: ::c_int = O_NONBLOCK;
2075
416331ca
XL
2076pub const FUTEX_WAIT: ::c_int = 0;
2077pub const FUTEX_WAKE: ::c_int = 1;
2078pub const FUTEX_FD: ::c_int = 2;
2079pub const FUTEX_REQUEUE: ::c_int = 3;
2080pub const FUTEX_CMP_REQUEUE: ::c_int = 4;
2081pub const FUTEX_WAKE_OP: ::c_int = 5;
2082pub const FUTEX_LOCK_PI: ::c_int = 6;
2083pub const FUTEX_UNLOCK_PI: ::c_int = 7;
2084pub const FUTEX_TRYLOCK_PI: ::c_int = 8;
2085pub const FUTEX_WAIT_BITSET: ::c_int = 9;
2086pub const FUTEX_WAKE_BITSET: ::c_int = 10;
2087pub const FUTEX_WAIT_REQUEUE_PI: ::c_int = 11;
2088pub const FUTEX_CMP_REQUEUE_PI: ::c_int = 12;
2089
2090pub const FUTEX_PRIVATE_FLAG: ::c_int = 128;
2091pub const FUTEX_CLOCK_REALTIME: ::c_int = 256;
2092pub const FUTEX_CMD_MASK: ::c_int =
2093 !(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME);
2094
ba9703b0
XL
2095// linux/errqueue.h
2096pub const SO_EE_ORIGIN_NONE: u8 = 0;
2097pub const SO_EE_ORIGIN_LOCAL: u8 = 1;
2098pub const SO_EE_ORIGIN_ICMP: u8 = 2;
2099pub const SO_EE_ORIGIN_ICMP6: u8 = 3;
2100pub const SO_EE_ORIGIN_TXSTATUS: u8 = 4;
2101pub const SO_EE_ORIGIN_TIMESTAMPING: u8 = SO_EE_ORIGIN_TXSTATUS;
2102
2103// errno.h
2104pub const EPERM: ::c_int = 1;
2105pub const ENOENT: ::c_int = 2;
2106pub const ESRCH: ::c_int = 3;
2107pub const EINTR: ::c_int = 4;
2108pub const EIO: ::c_int = 5;
2109pub const ENXIO: ::c_int = 6;
2110pub const E2BIG: ::c_int = 7;
2111pub const ENOEXEC: ::c_int = 8;
2112pub const EBADF: ::c_int = 9;
2113pub const ECHILD: ::c_int = 10;
2114pub const EAGAIN: ::c_int = 11;
2115pub const ENOMEM: ::c_int = 12;
2116pub const EACCES: ::c_int = 13;
2117pub const EFAULT: ::c_int = 14;
2118pub const ENOTBLK: ::c_int = 15;
2119pub const EBUSY: ::c_int = 16;
2120pub const EEXIST: ::c_int = 17;
2121pub const EXDEV: ::c_int = 18;
2122pub const ENODEV: ::c_int = 19;
2123pub const ENOTDIR: ::c_int = 20;
2124pub const EISDIR: ::c_int = 21;
2125pub const EINVAL: ::c_int = 22;
2126pub const ENFILE: ::c_int = 23;
2127pub const EMFILE: ::c_int = 24;
2128pub const ENOTTY: ::c_int = 25;
2129pub const ETXTBSY: ::c_int = 26;
2130pub const EFBIG: ::c_int = 27;
2131pub const ENOSPC: ::c_int = 28;
2132pub const ESPIPE: ::c_int = 29;
2133pub const EROFS: ::c_int = 30;
2134pub const EMLINK: ::c_int = 31;
2135pub const EPIPE: ::c_int = 32;
2136pub const EDOM: ::c_int = 33;
2137pub const ERANGE: ::c_int = 34;
2138pub const EWOULDBLOCK: ::c_int = EAGAIN;
2139
8bb4bdeb 2140f! {
532ac7d7
XL
2141 pub fn CMSG_NXTHDR(mhdr: *const msghdr,
2142 cmsg: *const cmsghdr) -> *mut cmsghdr {
2143 let next = (cmsg as usize
2144 + super::CMSG_ALIGN((*cmsg).cmsg_len as usize))
2145 as *mut cmsghdr;
2146 let max = (*mhdr).msg_control as usize
2147 + (*mhdr).msg_controllen as usize;
2148 if (next.offset(1)) as usize > max {
2149 0 as *mut cmsghdr
2150 } else {
2151 next as *mut cmsghdr
2152 }
2153 }
2154
476ff2be
SL
2155 pub fn CPU_ZERO(cpuset: &mut cpu_set_t) -> () {
2156 for slot in cpuset.__bits.iter_mut() {
2157 *slot = 0;
2158 }
2159 }
2160
2161 pub fn CPU_SET(cpu: usize, cpuset: &mut cpu_set_t) -> () {
532ac7d7 2162 let size_in___bits = 8 * ::mem::size_of_val(&cpuset.__bits[0]);
476ff2be
SL
2163 let (idx, offset) = (cpu / size_in___bits, cpu % size_in___bits);
2164 cpuset.__bits[idx] |= 1 << offset;
2165 ()
2166 }
2167
2168 pub fn CPU_CLR(cpu: usize, cpuset: &mut cpu_set_t) -> () {
532ac7d7 2169 let size_in___bits = 8 * ::mem::size_of_val(&cpuset.__bits[0]);
476ff2be
SL
2170 let (idx, offset) = (cpu / size_in___bits, cpu % size_in___bits);
2171 cpuset.__bits[idx] &= !(1 << offset);
2172 ()
2173 }
2174
2175 pub fn CPU_ISSET(cpu: usize, cpuset: &cpu_set_t) -> bool {
532ac7d7 2176 let size_in___bits = 8 * ::mem::size_of_val(&cpuset.__bits[0]);
476ff2be
SL
2177 let (idx, offset) = (cpu / size_in___bits, cpu % size_in___bits);
2178 0 != (cpuset.__bits[idx] & (1 << offset))
2179 }
2180
2181 pub fn CPU_EQUAL(set1: &cpu_set_t, set2: &cpu_set_t) -> bool {
2182 set1.__bits == set2.__bits
2183 }
041b39d2
XL
2184 pub fn major(dev: ::dev_t) -> ::c_int {
2185 ((dev >> 8) & 0xfff) as ::c_int
2186 }
2187 pub fn minor(dev: ::dev_t) -> ::c_int {
2188 ((dev & 0xff) | ((dev >> 12) & 0xfff00)) as ::c_int
2189 }
2190 pub fn makedev(ma: ::c_int, mi: ::c_int) -> ::dev_t {
2191 let ma = ma as ::dev_t;
2192 let mi = mi as ::dev_t;
2193 ((ma & 0xfff) << 8) | (mi & 0xff) | ((mi & 0xfff00) << 12)
2194 }
2c00a5a8
XL
2195
2196 pub fn NLA_ALIGN(len: ::c_int) -> ::c_int {
2197 return ((len) + NLA_ALIGNTO - 1) & !(NLA_ALIGNTO - 1)
2198 }
ba9703b0
XL
2199
2200 pub fn SO_EE_OFFENDER(ee: *const ::sock_extended_err) -> *mut ::sockaddr {
2201 ee.offset(1) as *mut ::sockaddr
2202 }
476ff2be
SL
2203}
2204
e74abb32
XL
2205extern "C" {
2206 pub fn getrlimit64(resource: ::c_int, rlim: *mut rlimit64) -> ::c_int;
2207 pub fn setrlimit64(resource: ::c_int, rlim: *const rlimit64) -> ::c_int;
416331ca
XL
2208 pub fn getrlimit(resource: ::c_int, rlim: *mut ::rlimit) -> ::c_int;
2209 pub fn setrlimit(resource: ::c_int, rlim: *const ::rlimit) -> ::c_int;
e74abb32
XL
2210 pub fn strerror_r(
2211 errnum: ::c_int,
2212 buf: *mut c_char,
2213 buflen: ::size_t,
2214 ) -> ::c_int;
2215
2216 pub fn gettimeofday(tp: *mut ::timeval, tz: *mut ::timezone) -> ::c_int;
2217 pub fn madvise(
2218 addr: *mut ::c_void,
2219 len: ::size_t,
2220 advice: ::c_int,
2221 ) -> ::c_int;
476ff2be 2222 pub fn ioctl(fd: ::c_int, request: ::c_int, ...) -> ::c_int;
e74abb32
XL
2223 pub fn msync(
2224 addr: *mut ::c_void,
2225 len: ::size_t,
2226 flags: ::c_int,
2227 ) -> ::c_int;
2228 pub fn mprotect(
2229 addr: *mut ::c_void,
2230 len: ::size_t,
2231 prot: ::c_int,
2232 ) -> ::c_int;
2233 pub fn recvfrom(
2234 socket: ::c_int,
2235 buf: *mut ::c_void,
2236 len: ::size_t,
2237 flags: ::c_int,
2238 addr: *mut ::sockaddr,
2239 addrlen: *mut ::socklen_t,
2240 ) -> ::ssize_t;
2241 pub fn getnameinfo(
2242 sa: *const ::sockaddr,
2243 salen: ::socklen_t,
2244 host: *mut ::c_char,
2245 hostlen: ::size_t,
2246 serv: *mut ::c_char,
2247 sevlen: ::size_t,
2248 flags: ::c_int,
2249 ) -> ::c_int;
476ff2be 2250 pub fn ptrace(request: ::c_int, ...) -> ::c_long;
416331ca
XL
2251 pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;
2252 pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;
476ff2be
SL
2253 pub fn __sched_cpualloc(count: ::size_t) -> *mut ::cpu_set_t;
2254 pub fn __sched_cpufree(set: *mut ::cpu_set_t);
e74abb32
XL
2255 pub fn __sched_cpucount(
2256 setsize: ::size_t,
2257 set: *const cpu_set_t,
2258 ) -> ::c_int;
476ff2be
SL
2259 pub fn sched_getcpu() -> ::c_int;
2260
2261 pub fn utmpname(name: *const ::c_char) -> ::c_int;
2262 pub fn setutent();
2263 pub fn getutent() -> *mut utmp;
8bb4bdeb 2264
e74abb32
XL
2265 pub fn posix_fallocate(
2266 fd: ::c_int,
2267 offset: ::off_t,
2268 len: ::off_t,
2269 ) -> ::c_int;
2270 pub fn signalfd(
2271 fd: ::c_int,
2272 mask: *const ::sigset_t,
2273 flags: ::c_int,
2274 ) -> ::c_int;
ea8adc8c 2275 pub fn syscall(num: ::c_long, ...) -> ::c_long;
e74abb32
XL
2276 pub fn sched_getaffinity(
2277 pid: ::pid_t,
2278 cpusetsize: ::size_t,
2279 cpuset: *mut cpu_set_t,
2280 ) -> ::c_int;
2281 pub fn sched_setaffinity(
2282 pid: ::pid_t,
2283 cpusetsize: ::size_t,
2284 cpuset: *const cpu_set_t,
2285 ) -> ::c_int;
ea8adc8c
XL
2286 pub fn epoll_create(size: ::c_int) -> ::c_int;
2287 pub fn epoll_create1(flags: ::c_int) -> ::c_int;
e74abb32
XL
2288 pub fn epoll_wait(
2289 epfd: ::c_int,
2290 events: *mut ::epoll_event,
2291 maxevents: ::c_int,
2292 timeout: ::c_int,
2293 ) -> ::c_int;
2294 pub fn epoll_ctl(
2295 epfd: ::c_int,
2296 op: ::c_int,
2297 fd: ::c_int,
2298 event: *mut ::epoll_event,
2299 ) -> ::c_int;
2300 pub fn pthread_getschedparam(
2301 native: ::pthread_t,
2302 policy: *mut ::c_int,
2303 param: *mut ::sched_param,
2304 ) -> ::c_int;
ea8adc8c
XL
2305 pub fn unshare(flags: ::c_int) -> ::c_int;
2306 pub fn umount(target: *const ::c_char) -> ::c_int;
2307 pub fn sched_get_priority_max(policy: ::c_int) -> ::c_int;
e74abb32
XL
2308 pub fn tee(
2309 fd_in: ::c_int,
2310 fd_out: ::c_int,
2311 len: ::size_t,
2312 flags: ::c_uint,
2313 ) -> ::ssize_t;
2314 pub fn settimeofday(
2315 tv: *const ::timeval,
2316 tz: *const ::timezone,
2317 ) -> ::c_int;
2318 pub fn splice(
2319 fd_in: ::c_int,
2320 off_in: *mut ::loff_t,
2321 fd_out: ::c_int,
2322 off_out: *mut ::loff_t,
2323 len: ::size_t,
2324 flags: ::c_uint,
2325 ) -> ::ssize_t;
ea8adc8c 2326 pub fn eventfd(init: ::c_uint, flags: ::c_int) -> ::c_int;
e74abb32
XL
2327 pub fn sched_rr_get_interval(pid: ::pid_t, tp: *mut ::timespec)
2328 -> ::c_int;
2329 pub fn sem_timedwait(
2330 sem: *mut sem_t,
2331 abstime: *const ::timespec,
2332 ) -> ::c_int;
2333 pub fn sem_getvalue(sem: *mut sem_t, sval: *mut ::c_int) -> ::c_int;
2334 pub fn sched_setparam(
2335 pid: ::pid_t,
2336 param: *const ::sched_param,
2337 ) -> ::c_int;
ea8adc8c
XL
2338 pub fn setns(fd: ::c_int, nstype: ::c_int) -> ::c_int;
2339 pub fn swapoff(puath: *const ::c_char) -> ::c_int;
e74abb32
XL
2340 pub fn vmsplice(
2341 fd: ::c_int,
2342 iov: *const ::iovec,
2343 nr_segs: ::size_t,
2344 flags: ::c_uint,
2345 ) -> ::ssize_t;
2346 pub fn mount(
2347 src: *const ::c_char,
2348 target: *const ::c_char,
2349 fstype: *const ::c_char,
2350 flags: ::c_ulong,
2351 data: *const ::c_void,
2352 ) -> ::c_int;
416331ca 2353 pub fn personality(persona: ::c_uint) -> ::c_int;
ea8adc8c
XL
2354 pub fn prctl(option: ::c_int, ...) -> ::c_int;
2355 pub fn sched_getparam(pid: ::pid_t, param: *mut ::sched_param) -> ::c_int;
e74abb32
XL
2356 pub fn ppoll(
2357 fds: *mut ::pollfd,
2358 nfds: nfds_t,
2359 timeout: *const ::timespec,
2360 sigmask: *const sigset_t,
2361 ) -> ::c_int;
2362 pub fn pthread_mutex_timedlock(
2363 lock: *mut pthread_mutex_t,
2364 abstime: *const ::timespec,
2365 ) -> ::c_int;
2366 pub fn clone(
2367 cb: extern "C" fn(*mut ::c_void) -> ::c_int,
2368 child_stack: *mut ::c_void,
2369 flags: ::c_int,
2370 arg: *mut ::c_void,
2371 ...
2372 ) -> ::c_int;
ea8adc8c 2373 pub fn sched_getscheduler(pid: ::pid_t) -> ::c_int;
e74abb32
XL
2374 pub fn clock_nanosleep(
2375 clk_id: ::clockid_t,
2376 flags: ::c_int,
2377 rqtp: *const ::timespec,
2378 rmtp: *mut ::timespec,
2379 ) -> ::c_int;
2380 pub fn pthread_attr_getguardsize(
2381 attr: *const ::pthread_attr_t,
2382 guardsize: *mut ::size_t,
2383 ) -> ::c_int;
ea8adc8c
XL
2384 pub fn sethostname(name: *const ::c_char, len: ::size_t) -> ::c_int;
2385 pub fn sched_get_priority_min(policy: ::c_int) -> ::c_int;
e74abb32
XL
2386 pub fn pthread_condattr_getpshared(
2387 attr: *const pthread_condattr_t,
2388 pshared: *mut ::c_int,
2389 ) -> ::c_int;
ea8adc8c
XL
2390 pub fn sysinfo(info: *mut ::sysinfo) -> ::c_int;
2391 pub fn umount2(target: *const ::c_char, flags: ::c_int) -> ::c_int;
e74abb32
XL
2392 pub fn pthread_setschedparam(
2393 native: ::pthread_t,
2394 policy: ::c_int,
2395 param: *const ::sched_param,
2396 ) -> ::c_int;
ea8adc8c 2397 pub fn swapon(path: *const ::c_char, swapflags: ::c_int) -> ::c_int;
e74abb32
XL
2398 pub fn sched_setscheduler(
2399 pid: ::pid_t,
2400 policy: ::c_int,
2401 param: *const ::sched_param,
2402 ) -> ::c_int;
2403 pub fn sendfile(
2404 out_fd: ::c_int,
2405 in_fd: ::c_int,
2406 offset: *mut off_t,
2407 count: ::size_t,
2408 ) -> ::ssize_t;
abe05a73
XL
2409 pub fn setfsgid(gid: ::gid_t) -> ::c_int;
2410 pub fn setfsuid(uid: ::uid_t) -> ::c_int;
ea8adc8c 2411 pub fn sigsuspend(mask: *const ::sigset_t) -> ::c_int;
e74abb32
XL
2412 pub fn getgrgid_r(
2413 gid: ::gid_t,
2414 grp: *mut ::group,
2415 buf: *mut ::c_char,
2416 buflen: ::size_t,
2417 result: *mut *mut ::group,
2418 ) -> ::c_int;
e74abb32 2419 pub fn sigaltstack(ss: *const stack_t, oss: *mut stack_t) -> ::c_int;
ea8adc8c 2420 pub fn sem_close(sem: *mut sem_t) -> ::c_int;
e74abb32
XL
2421 pub fn getgrnam_r(
2422 name: *const ::c_char,
2423 grp: *mut ::group,
2424 buf: *mut ::c_char,
2425 buflen: ::size_t,
2426 result: *mut *mut ::group,
2427 ) -> ::c_int;
e74abb32
XL
2428 pub fn pthread_sigmask(
2429 how: ::c_int,
2430 set: *const sigset_t,
2431 oldset: *mut sigset_t,
2432 ) -> ::c_int;
ea8adc8c
XL
2433 pub fn sem_open(name: *const ::c_char, oflag: ::c_int, ...) -> *mut sem_t;
2434 pub fn getgrnam(name: *const ::c_char) -> *mut ::group;
2435 pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int;
2436 pub fn sem_unlink(name: *const ::c_char) -> ::c_int;
2437 pub fn daemon(nochdir: ::c_int, noclose: ::c_int) -> ::c_int;
e74abb32
XL
2438 pub fn getpwnam_r(
2439 name: *const ::c_char,
2440 pwd: *mut passwd,
2441 buf: *mut ::c_char,
2442 buflen: ::size_t,
2443 result: *mut *mut passwd,
2444 ) -> ::c_int;
e74abb32
XL
2445 pub fn getpwuid_r(
2446 uid: ::uid_t,
2447 pwd: *mut passwd,
2448 buf: *mut ::c_char,
2449 buflen: ::size_t,
2450 result: *mut *mut passwd,
2451 ) -> ::c_int;
e74abb32
XL
2452 pub fn sigwait(set: *const sigset_t, sig: *mut ::c_int) -> ::c_int;
2453 pub fn pthread_atfork(
2454 prepare: ::Option<unsafe extern "C" fn()>,
2455 parent: ::Option<unsafe extern "C" fn()>,
2456 child: ::Option<unsafe extern "C" fn()>,
2457 ) -> ::c_int;
ea8adc8c 2458 pub fn getgrgid(gid: ::gid_t) -> *mut ::group;
e74abb32
XL
2459 pub fn getgrouplist(
2460 user: *const ::c_char,
2461 group: ::gid_t,
2462 groups: *mut ::gid_t,
2463 ngroups: *mut ::c_int,
2464 ) -> ::c_int;
ea8adc8c 2465 pub fn initgroups(user: *const ::c_char, group: ::gid_t) -> ::c_int;
e74abb32
XL
2466 pub fn pthread_mutexattr_getpshared(
2467 attr: *const pthread_mutexattr_t,
2468 pshared: *mut ::c_int,
2469 ) -> ::c_int;
e74abb32
XL
2470 pub fn popen(command: *const c_char, mode: *const c_char) -> *mut ::FILE;
2471 pub fn faccessat(
2472 dirfd: ::c_int,
2473 pathname: *const ::c_char,
2474 mode: ::c_int,
2475 flags: ::c_int,
2476 ) -> ::c_int;
2477 pub fn pthread_create(
2478 native: *mut ::pthread_t,
2479 attr: *const ::pthread_attr_t,
2480 f: extern "C" fn(*mut ::c_void) -> *mut ::c_void,
2481 value: *mut ::c_void,
2482 ) -> ::c_int;
ff7c6d11 2483 pub fn __errno() -> *mut ::c_int;
416331ca 2484 pub fn inotify_rm_watch(fd: ::c_int, wd: u32) -> ::c_int;
e74abb32
XL
2485 pub fn sendmmsg(
2486 sockfd: ::c_int,
2487 msgvec: *const ::mmsghdr,
2488 vlen: ::c_uint,
2489 flags: ::c_int,
2490 ) -> ::c_int;
2491 pub fn recvmmsg(
2492 sockfd: ::c_int,
2493 msgvec: *mut ::mmsghdr,
2494 vlen: ::c_uint,
2495 flags: ::c_int,
2496 timeout: *const ::timespec,
2497 ) -> ::c_int;
532ac7d7
XL
2498 pub fn inotify_init() -> ::c_int;
2499 pub fn inotify_init1(flags: ::c_int) -> ::c_int;
e74abb32
XL
2500 pub fn inotify_add_watch(
2501 fd: ::c_int,
2502 path: *const ::c_char,
2503 mask: u32,
2504 ) -> ::c_int;
476ff2be
SL
2505}
2506
2507cfg_if! {
2508 if #[cfg(target_pointer_width = "32")] {
2509 mod b32;
2510 pub use self::b32::*;
2511 } else if #[cfg(target_pointer_width = "64")] {
2512 mod b64;
2513 pub use self::b64::*;
2514 } else {
2515 // Unknown target_pointer_width
2516 }
2517}
416331ca
XL
2518
2519impl siginfo_t {
2520 pub unsafe fn si_value(&self) -> ::sigval {
2521 #[repr(C)]
2522 struct siginfo_timer {
2523 _si_signo: ::c_int,
2524 _si_errno: ::c_int,
2525 _si_code: ::c_int,
2526 _si_tid: ::c_int,
2527 _si_overrun: ::c_int,
2528 si_sigval: ::sigval,
2529 }
2530 (*(self as *const siginfo_t as *const siginfo_timer)).si_sigval
2531 }
2532}